ThirdPartyResourceCodec should implement streaming.Framer

Wrappers must proxy NewFrameReader|Writer for now (until we potentially
refactor the codec factory to separate them).
pull/6/head
Clayton Coleman 2016-04-18 21:24:26 -04:00
parent e81663c824
commit a5ff573263
1 changed files with 24 additions and 0 deletions

View File

@ -33,6 +33,7 @@ import (
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/runtime/serializer/streaming"
)
type thirdPartyObjectConverter struct {
@ -202,6 +203,11 @@ type thirdPartyResourceDataCodec struct {
kind string
}
var (
_ runtime.Codec = &thirdPartyResourceDataCodec{}
_ streaming.Framer = &thirdPartyResourceDataCodec{}
)
func NewCodec(codec runtime.Codec, kind string) runtime.Codec {
return &thirdPartyResourceDataCodec{codec, kind}
}
@ -410,6 +416,24 @@ func (t *thirdPartyResourceDataCodec) EncodeToStream(obj runtime.Object, stream
}
}
// NewFrameWriter calls into the nested encoder to expose its framing
func (c *thirdPartyResourceDataCodec) NewFrameWriter(w io.Writer) io.Writer {
f, ok := c.delegate.(streaming.Framer)
if !ok {
return nil
}
return f.NewFrameWriter(w)
}
// NewFrameReader calls into the nested decoder to expose its framing
func (c *thirdPartyResourceDataCodec) NewFrameReader(r io.Reader) io.Reader {
f, ok := c.delegate.(streaming.Framer)
if !ok {
return nil
}
return f.NewFrameReader(r)
}
func NewObjectCreator(group, version string, delegate runtime.ObjectCreater) runtime.ObjectCreater {
return &thirdPartyResourceDataCreator{group, version, delegate}
}