~rogpeppe/juju-core/themue-058-debug-log-api

« back to all changes in this revision

Viewing changes to rpc/server.go

  • Committer: Frank Mueller
  • Date: 2014-01-21 08:46:24 UTC
  • mfrom: (2152.1.76 juju-core)
  • Revision ID: frank.mueller@canonical.com-20140121084624-rv32dv6ufzul9h1b
debugger: merged trunk and added access to debugger API facade

Show diffs side-by-side

added added

removed removed

Lines of Context:
375
375
                }
376
376
                // We don't transform the error because there
377
377
                // may be no transformErrors function available.
378
 
                return conn.writeErrorResponse(hdr, err)
 
378
                return conn.writeErrorResponse(hdr, err, startTime)
379
379
        }
380
380
        var argp interface{}
381
381
        var arg reflect.Value
401
401
                // the error is actually a framing or syntax
402
402
                // problem, then the next ReadHeader should pick
403
403
                // up the problem and abort.
404
 
                return conn.writeErrorResponse(hdr, req.transformErrors(err))
 
404
                return conn.writeErrorResponse(hdr, req.transformErrors(err), startTime)
405
405
        }
406
406
        if conn.notifier != nil {
407
407
                if req.ParamsType != nil {
419
419
        conn.mutex.Unlock()
420
420
        if closing {
421
421
                // We're closing down - no new requests may be initiated.
422
 
                return conn.writeErrorResponse(hdr, req.transformErrors(ErrShutdown))
 
422
                return conn.writeErrorResponse(hdr, req.transformErrors(ErrShutdown), startTime)
423
423
        }
424
424
        return nil
425
425
}
426
426
 
427
 
func (conn *Conn) writeErrorResponse(reqHdr *Header, err error) error {
 
427
func (conn *Conn) writeErrorResponse(reqHdr *Header, err error, startTime time.Time) error {
428
428
        conn.sending.Lock()
429
429
        defer conn.sending.Unlock()
430
430
        hdr := &Header{
437
437
        }
438
438
        hdr.Error = err.Error()
439
439
        if conn.notifier != nil {
440
 
                conn.notifier.ServerReply(reqHdr.Request, hdr, struct{}{}, 0)
 
440
                conn.notifier.ServerReply(reqHdr.Request, hdr, struct{}{}, time.Since(startTime))
441
441
        }
442
442
        return conn.codec.WriteMessage(hdr, struct{}{})
443
443
}
484
484
        defer conn.srvPending.Done()
485
485
        rv, err := req.Call(req.hdr.Request.Id, arg)
486
486
        if err != nil {
487
 
                err = conn.writeErrorResponse(&req.hdr, req.transformErrors(err))
 
487
                err = conn.writeErrorResponse(&req.hdr, req.transformErrors(err), startTime)
488
488
        } else {
489
489
                hdr := &Header{
490
490
                        RequestId: req.hdr.RequestId,
496
496
                        rvi = struct{}{}
497
497
                }
498
498
                if conn.notifier != nil {
499
 
                        timeSpent := time.Since(startTime)
500
 
                        conn.notifier.ServerReply(req.hdr.Request, hdr, rvi, timeSpent)
 
499
                        conn.notifier.ServerReply(req.hdr.Request, hdr, rvi, time.Since(startTime))
501
500
                }
502
501
                conn.sending.Lock()
503
502
                err = conn.codec.WriteMessage(hdr, rvi)