receiveData reads a message from session.
()
| 458 | |
| 459 | // receiveData reads a message from session. |
| 460 | func (c *Client) receiveData() ([]byte, error) { |
| 461 | type recv struct { |
| 462 | msg []byte |
| 463 | err error |
| 464 | } |
| 465 | |
| 466 | session := c.getSession() |
| 467 | if session == nil { |
| 468 | return nil, errors.New("not connected") |
| 469 | } |
| 470 | |
| 471 | done := make(chan recv, 1) |
| 472 | |
| 473 | go func() { |
| 474 | msg, err := session.Recv() |
| 475 | done <- recv{[]byte(msg), err} |
| 476 | }() |
| 477 | |
| 478 | select { |
| 479 | case r := <-done: |
| 480 | return r.msg, r.err |
| 481 | case err := <-c.interrupt: |
| 482 | return nil, err |
| 483 | } |
| 484 | } |
| 485 | |
| 486 | // processMessage processes a single message and calls a handler or callback. |
| 487 | func (c *Client) processMessage(data []byte) (msg *dnode.Message, fn interface{}, err error) { |
no test coverage detected