// Write writes the data to the underlying connection func (c *boltConn) Write(b []byte) (n int, err error) { if err := c.conn.SetWriteDeadline(time.Now().Add(c.timeout)); err != nil { return 0, errors.Wrap(err, "An error occurred setting write deadline") } n, err = c.conn.Write(b) if log.GetLevel() >= log.TraceLevel { log.Tracef("Wrote %d of %d bytes to stream:\n\n%s\n", len(b), n, sprintByteHex(b[:n])) } if err != nil { err = errors.Wrap(err, "An error occurred writing to stream") } return n, err }
// Read reads the data from the underlying connection func (c *boltConn) Read(b []byte) (n int, err error) { if err := c.conn.SetReadDeadline(time.Now().Add(c.timeout)); err != nil { return 0, errors.Wrap(err, "An error occurred setting read deadline") } n, err = c.conn.Read(b) if log.GetLevel() >= log.TraceLevel { log.Tracef("Read %d bytes from stream:\n\n%s\n", n, sprintByteHex(b)) } if err != nil && err != io.EOF { err = errors.Wrap(err, "An error occurred reading from stream") } return n, err }
func (c *boltConn) consume() (interface{}, error) { log.Info("Consuming response from bolt stream") respInt, err := encoding.NewDecoder(c).Decode() if err != nil { return respInt, err } if log.GetLevel() >= log.TraceLevel { log.Tracef("Consumed Response: %#v", respInt) } if failure, isFail := respInt.(messages.FailureMessage); isFail { log.Errorf("Got failure message: %#v", failure) err := c.ackFailure(failure) if err != nil { return nil, err } return failure, errors.New("Got failure message: %#v", failure) } return respInt, err }