func (server *serverCodec) WriteResponse(resp *rpc.Response, v interface{}) error { body, err := server.codec.codec.Marshal(v) if err != nil { return err } server.lock.RLock() route, ok := server.calls[resp.Seq] server.lock.RUnlock() if !ok { return errors.New("sequence dosen't have a route") } publishing := amqp.Publishing{ ReplyTo: resp.ServiceMethod, MessageId: route.messageID, CorrelationId: route.routing, Body: body, } if resp.Error != "" { publishing.Headers = amqp.Table{"error": resp.Error} } return server.channel.Publish( "", route.routing, false, false, publishing, ) }