func MarshalToStream(writer io.Writer, val interface{}) (err error) { buf := bytes2.NewChunkedWriter(DefaultBufferSize) if err = MarshalToBuffer(buf, val); err != nil { return err } _, err = buf.WriteTo(writer) return err }
func (cc *ClientCodec) WriteRequest(r *rpc.Request, body interface{}) error { buf := bytes2.NewChunkedWriter(DefaultBufferSize) if err := bson.MarshalToBuffer(buf, &RequestBson{r}); err != nil { return err } if err := bson.MarshalToBuffer(buf, body); err != nil { return err } _, err := buf.WriteTo(cc.rwc) return err }
// String prints a readable version of Query, and also truncates // data if it's too long func (query *Query) String() string { buf := bytes2.NewChunkedWriter(1024) fmt.Fprintf(buf, "Sql: %#v, BindVars: {", query.Sql) for k, v := range query.BindVariables { switch val := v.(type) { case []byte: fmt.Fprintf(buf, "%s: %#v, ", k, slimit(string(val))) case string: fmt.Fprintf(buf, "%s: %#v, ", k, slimit(val)) default: fmt.Fprintf(buf, "%s: %v, ", k, v) } } fmt.Fprintf(buf, "}") return string(buf.Bytes()) }
func Marshal(val interface{}) (encoded []byte, err error) { buf := bytes2.NewChunkedWriter(DefaultBufferSize) err = MarshalToBuffer(buf, val) return buf.Bytes(), err }
func NewServerCodec(conn io.ReadWriteCloser) rpc.ServerCodec { return &ServerCodec{conn, bytes2.NewChunkedWriter(DefaultBufferSize)} }