Skip to content
This repository was archived by the owner on Jul 18, 2025. It is now read-only.

Commit f6cb985

Browse files
committed
Move msgpack encoding into separate package
Signed-off-by: Derek McGowan <[email protected]> (github: dmcgowan)
1 parent 7a93b1c commit f6cb985

File tree

3 files changed

+13
-45
lines changed

3 files changed

+13
-45
lines changed

spdy/encode.go renamed to encoding/msgpack/codec.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package spdy
1+
package msgpack
22

33
import (
44
"encoding/binary"
@@ -224,13 +224,13 @@ func (p *cproducer) encodeExtended(iv reflect.Value) (i int, b []byte, e error)
224224
return 0, nil, nil
225225
}
226226

227-
// MsgpackCodec implements the libchan encoding using msgpack5.
228-
type MsgpackCodec struct{}
227+
// Codec implements the libchan encoding using msgpack5.
228+
type Codec struct{}
229229

230230
// NewEncoder returns a libchan encoder which encodes given objects
231231
// to msgpack5 on the given datastream using the given encoding
232232
// channel producer.
233-
func (codec *MsgpackCodec) NewEncoder(w io.Writer, p encoding.ChanProducer) encoding.Encoder {
233+
func (codec *Codec) NewEncoder(w io.Writer, p encoding.ChanProducer) encoding.Encoder {
234234
prd := &cproducer{p}
235235
encoder := msgpack.NewEncoder(w)
236236
exts := msgpack.NewExtensions()
@@ -242,7 +242,7 @@ func (codec *MsgpackCodec) NewEncoder(w io.Writer, p encoding.ChanProducer) enco
242242
// NewDecoder returns a libchan decoder which decodes objects from
243243
// the given data stream from msgpack5 into provided object using
244244
// the provided types for libchan interfaces.
245-
func (codec *MsgpackCodec) NewDecoder(r io.Reader, recv encoding.ChanReceiver, streamT, recvT, sendT reflect.Type) encoding.Decoder {
245+
func (codec *Codec) NewDecoder(r io.Reader, recv encoding.ChanReceiver, streamT, recvT, sendT reflect.Type) encoding.Decoder {
246246
rec := &creceiver{recv}
247247
decoder := msgpack.NewDecoder(r)
248248
exts := msgpack.NewExtensions()
@@ -259,6 +259,6 @@ func (codec *MsgpackCodec) NewDecoder(r io.Reader, recv encoding.ChanReceiver, s
259259
// NewRawMessage returns a transit object which will copy a
260260
// msgpack5 datastream and allow decoding that object
261261
// using a Decoder from the codec object.
262-
func (codec *MsgpackCodec) NewRawMessage() encoding.Decoder {
262+
func (codec *Codec) NewRawMessage() encoding.Decoder {
263263
return new(msgpack.RawMessage)
264264
}

spdy/pipe.go

Lines changed: 4 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,12 @@
11
package spdy
22

33
import (
4-
"io"
54
"net"
65

76
"github.com/docker/libchan"
7+
"github.com/docker/libchan/encoding/msgpack"
88
)
99

10-
type pipeSender struct {
11-
session libchan.Transport
12-
sender *sender
13-
}
14-
15-
type pipeReceiver struct {
16-
session libchan.Transport
17-
receiver *receiver
18-
}
19-
2010
// Pipe creates a top-level channel pipe using an in memory transport.
2111
func Pipe() (libchan.Receiver, libchan.Sender, error) {
2212
c1, c2 := net.Pipe()
@@ -25,13 +15,13 @@ func Pipe() (libchan.Receiver, libchan.Sender, error) {
2515
if err != nil {
2616
return nil, nil, err
2717
}
28-
t1 := NewTransport(s1, &MsgpackCodec{})
18+
t1 := NewTransport(s1, &msgpack.Codec{})
2919

3020
s2, err := NewSpdyStreamProvider(c2, true)
3121
if err != nil {
3222
return nil, nil, err
3323
}
34-
t2 := NewTransport(s2, &MsgpackCodec{})
24+
t2 := NewTransport(s2, &msgpack.Codec{})
3525

3626
var recv libchan.Receiver
3727
waitError := make(chan error)
@@ -55,28 +45,5 @@ func Pipe() (libchan.Receiver, libchan.Sender, error) {
5545
c2.Close()
5646
return nil, nil, receiveErr
5747
}
58-
return &pipeReceiver{t2, recv.(*receiver)}, &pipeSender{t1, send.(*sender)}, nil
59-
}
60-
61-
func (p *pipeSender) Send(message interface{}) error {
62-
return p.sender.Send(message)
63-
}
64-
65-
func (p *pipeSender) Close() error {
66-
err := p.sender.Close()
67-
if err != nil {
68-
return err
69-
}
70-
if closer, ok := p.session.(io.Closer); ok {
71-
return closer.Close()
72-
}
73-
return nil
74-
}
75-
76-
func (p *pipeReceiver) Receive(message interface{}) error {
77-
return p.receiver.Receive(message)
78-
}
79-
80-
func (p *pipeReceiver) SendTo(dst libchan.Sender) (int, error) {
81-
return p.receiver.SendTo(dst)
48+
return recv, send, nil
8249
}

spdy/session_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"time"
1111

1212
"github.com/docker/libchan"
13+
"github.com/docker/libchan/encoding/msgpack"
1314
)
1415

1516
type InOutMessage struct {
@@ -448,7 +449,7 @@ func ClientSendWrapper(f func(t *testing.T, c libchan.Sender, s libchan.Transpor
448449
if sessionErr != nil {
449450
t.Fatalf("Error creating session: %s", sessionErr)
450451
}
451-
session := NewTransport(provider, &MsgpackCodec{})
452+
session := NewTransport(provider, &msgpack.Codec{})
452453

453454
sender, senderErr := session.NewSendChannel()
454455
if senderErr != nil {
@@ -480,7 +481,7 @@ func ServerReceiveWrapper(f func(t *testing.T, c libchan.Receiver, s libchan.Tra
480481
if sessionErr != nil {
481482
t.Fatalf("Error creating session: %s", sessionErr)
482483
}
483-
session := NewTransport(provider, &MsgpackCodec{})
484+
session := NewTransport(provider, &msgpack.Codec{})
484485

485486
receiver, receiverErr := session.WaitReceiveChannel()
486487
if receiverErr != nil {

0 commit comments

Comments
 (0)