package mock import "io" import "time" import "bytes" import "git.tebibyte.media/sashakoshka/hopp" var _ hopp.Trans = new(Trans) // Trans is a mock transaction implementation. type Trans struct { // These arrays must be the same length. You can load this up // with messages to read, or deposit messages and retrieve them // here later. Methods []uint16 Messages [][]byte } func (this *Trans) Close() error { return nil } func (this *Trans) ID() int64 { return 56 } func (this *Trans) Send(method uint16, data []byte) error { this.Methods = append(this.Methods, method) this.Messages = append(this.Messages, data) return nil } func (this *Trans) SendWriter(method uint16) (io.WriteCloser, error) { return &transWriter { Buffer: new(bytes.Buffer), method: method, parent: this, }, nil } func (this *Trans) Receive() (method uint16, data []byte, err error) { if len(this.Methods) == 0 { return 0, nil, io.EOF } method = this.Methods[0] data = this.Messages[0] this.Methods = this.Methods[1:] this.Messages = this.Messages[1:] return method, data, nil } func (this *Trans) ReceiveReader() (method uint16, reader io.Reader, err error) { method, data, err := this.Receive() if err != nil { return 0, nil, err } return method, bytes.NewBuffer(data), nil } func (this *Trans) SetDeadline(time.Time) error { return nil } type transWriter struct { *bytes.Buffer method uint16 parent *Trans } func (this *transWriter) Close() error { return this.parent.Send(this.method, this.Bytes()) }