本文整理汇总了Golang中net/rpc.Response类的典型用法代码示例。如果您正苦于以下问题:Golang Response类的具体用法?Golang Response怎么用?Golang Response使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Response类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: ReadResponseHeader
func (c *clientCodec) ReadResponseHeader(r *rpc.Response) error {
data, err := ReadRpc(c.rwc)
if err != nil {
return err
}
rsp := &PbRpcResponse{}
err = proto.Unmarshal(data, rsp)
if err != nil {
return err
}
c.rsp = rsp
r.Seq = rsp.GetId()
if rsp.GetResult() == nil {
if rsp.GetError() == "" {
r.Error = "Unknown error occurred"
} else {
r.Error = rsp.GetError()
}
}
return nil
}
示例2: Error
func (self *RPCServer) Error(s string) error {
var r rpc.Response
r.ServiceMethod = self.lastServiceMethod
r.Seq = self.lastSeq
r.Error = s
return self.codec.WriteResponse(&r, nil)
}
示例3: ReadResponseHeader
func (c *clientCodec) ReadResponseHeader(rpcres *rpc.Response) error {
f, err := read(c.r)
if err != nil {
return err
}
res := &Response{}
if err := proto.Unmarshal(f, res); err != nil {
return err
}
c.mutex.Lock()
p, ok := c.pending[res.GetId()]
if !ok {
c.mutex.Unlock()
return errors.New("invalid sequence number in response")
}
c.res = res
delete(c.pending, res.GetId())
c.mutex.Unlock()
rpcres.Seq = p.Seq
rpcres.ServiceMethod = p.ServiceMethod
rpcres.Error = res.GetError()
return nil
}
示例4: ReadResponseHeader
func (c *clientCodec) ReadResponseHeader(r *rpc.Response) error {
c.resp.reset()
if err := c.dec.Decode(&c.resp); err != nil {
return err
}
c.mutex.Lock()
r.ServiceMethod = c.pending[c.resp.Id]
delete(c.pending, c.resp.Id)
c.mutex.Unlock()
r.Error = ""
r.Seq = c.resp.Id
if c.resp.Error != nil {
x, ok := c.resp.Error.(string)
if !ok {
return fmt.Errorf("invalid error %v", c.resp.Error)
}
if x == "" {
x = "unspecified error"
}
r.Error = x
}
return nil
}
示例5: ReadResponseHeader
func (c *clientCodec) ReadResponseHeader(r *rpc.Response) error {
msg := <-c.msgs
c.resp.reset()
if err := json.Unmarshal(msg.Body, &c.resp); err != nil {
return err
}
seq, err := strconv.ParseUint(msg.CorrelationId, 0, 64)
if err != nil {
return err
}
c.Lock()
r.Seq = seq
r.ServiceMethod = c.pending[seq]
delete(c.pending, seq)
c.Unlock()
r.Error = ""
if c.resp.Error != nil || c.resp.Result == nil {
x, ok := c.resp.Error.(string)
if !ok {
return fmt.Errorf("invalid error %v", c.resp.Error)
}
if x == "" {
x = "unspecified error"
}
r.Error = x
}
return nil
}
示例6: Send
func (self *RPCServer) Send(obj interface{}) error {
var r rpc.Response
r.ServiceMethod = self.lastServiceMethod
r.Seq = self.lastSeq
r.Error = ""
return self.codec.WriteResponse(&r, obj)
}
示例7: ReadResponseHeader
func (c *clientCodec) ReadResponseHeader(r *rpc.Response) (err error) {
c.bufs.Reset()
// Read message
parts, err := c.sock.RecvMultipart(0)
if err != nil {
return
} else if len(parts) != 2 {
err = errors.New("Unexpected number of parts to reply: " + fmt.Sprintf("%d", len(parts)))
return
}
// log.Println("Client recieved multipart mesage:", Stringify(parts))
hdr := parts[0]
data := parts[1]
c.bufs.body.SetBuf(data)
h := new(Header)
c.bufs.header.SetBuf(hdr)
err = c.bufs.header.Unmarshal(h)
if err != nil {
return
}
r.Seq = h.GetId()
r.ServiceMethod = h.GetServiceMethod()
r.Error = h.GetError()
// log.Println("Client recieved service response:", r)
return nil
}
示例8: ReadResponseHeader
func (c *clientCodec) ReadResponseHeader(r *rpc.Response) error {
// If return err:
// - io.EOF will became ErrShutdown or io.ErrUnexpectedEOF
// - it will be returned as is for all pending calls
// - client will be shutdown
// So, return io.EOF as is, return *Error for all other errors.
if err := c.dec.Decode(&c.resp); err != nil {
if err == io.EOF {
return err
}
return NewError(errInternal.Code, err.Error())
}
if c.resp.ID == nil {
return c.resp.Error
}
c.mutex.Lock()
r.ServiceMethod = c.pending[*c.resp.ID]
delete(c.pending, *c.resp.ID)
c.mutex.Unlock()
r.Error = ""
r.Seq = *c.resp.ID
if c.resp.Error != nil {
r.Error = c.resp.Error.Error()
}
return nil
}
示例9: ReadResponseHeader
func (c *clientCodec) ReadResponseHeader(response *rpc.Response) error {
if c.enableOneway {
select {
case ow := <-c.onewayRequests:
response.ServiceMethod = ow.method
response.Seq = ow.seq
return nil
case _ = <-c.twowayRequests:
}
}
name, messageType, seq, err := c.conn.ReadMessageBegin()
if err != nil {
return err
}
response.ServiceMethod = name
response.Seq = uint64(seq)
if messageType == MessageTypeException {
exception := &ApplicationException{}
if err := DecodeStruct(c.conn, exception); err != nil {
return err
}
response.Error = exception.String()
return c.conn.ReadMessageEnd()
}
return nil
}
示例10: SendOkay
func (self *RPCServer) SendOkay() error {
var r rpc.Response
r.ServiceMethod = self.lastServiceMethod
r.Seq = self.lastSeq
r.Error = ""
return self.codec.WriteResponse(&r, "OK")
}
示例11: ReadResponseHeader
func (codec *clientCodec) ReadResponseHeader(response *rpc.Response) (err error) {
seq := <-codec.ready
httpResponse := codec.responses[seq]
if httpResponse.StatusCode < 200 || httpResponse.StatusCode >= 300 {
return fmt.Errorf("request error: bad status code - %d", httpResponse.StatusCode)
}
respData, err := ioutil.ReadAll(httpResponse.Body)
if err != nil {
return err
}
httpResponse.Body.Close()
resp := NewResponse(respData)
if resp.Failed() {
response.Error = fmt.Sprintf("%v", resp.Err())
}
codec.response = resp
response.Seq = seq
delete(codec.responses, seq)
return nil
}
示例12: writeResponse
func writeResponse(c *serverCodec) error {
head := rpc.Response{}
head.ServiceMethod = "TestFunc"
head.Seq = 2
head.Error = "call failed"
body := testpb.Result{}
body.Title = proto.String("www.zhihu.com")
return c.WriteResponse(&head, &body)
}
示例13: ReadResponseHeader
func (mux *multiplexCodec) ReadResponseHeader(res *rpc.Response) error {
select {
case err := <-mux.errorChan:
return err
case msg := <-mux.responseChan:
res.ServiceMethod = responseMethod
res.Seq = *msg.Sequence
}
return nil
}
示例14: ReadResponseHeader
func (c *clientCodec) ReadResponseHeader(r *rpc.Response) error {
var rsp protorpcpb.Response
if err := readFrame(c.rwc, &rsp); err != nil {
return err
}
r.ServiceMethod = rsp.GetMethod()
r.Seq = rsp.GetSeq()
r.Error = rsp.GetErr()
return nil
}
示例15: ReadResponseHeader
func (c *clientCodec) ReadResponseHeader(r *rpc.Response) error {
if err := c.readResponseHeader(&c.respHeader); err != nil {
return err
}
r.Seq = c.respHeader.Id
r.ServiceMethod = c.respHeader.GetMethod()
r.Error = c.respHeader.Error
return nil
}