This repository was archived by the owner on Jul 18, 2025. It is now read-only.
File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -300,6 +300,10 @@ func (w *pipeSender) copyValue(v interface{}) (interface{}, error) {
300300 }
301301 case io.ReadWriteCloser :
302302 return w .copyByteStream (val )
303+ case io.ReadCloser :
304+ return w .copyByteReadStream (val )
305+ case io.WriteCloser :
306+ return w .copyByteWriteStream (val )
303307 case Sender :
304308 return w .copySender (val )
305309 case Receiver :
@@ -355,6 +359,31 @@ func (w *pipeSender) copyByteStream(stream io.ReadWriteCloser) (io.ReadWriteClos
355359 return streamCopy , nil
356360}
357361
362+ func (w * pipeSender ) copyByteReadStream (stream io.ReadCloser ) (io.ReadCloser , error ) {
363+ streamCopy , err := w .session .newByteStream ()
364+ if err != nil {
365+ return nil , err
366+ }
367+ go func () {
368+ io .Copy (streamCopy , stream )
369+ streamCopy .Close ()
370+ stream .Close ()
371+ }()
372+ return streamCopy , nil
373+ }
374+
375+ func (w * pipeSender ) copyByteWriteStream (stream io.WriteCloser ) (io.WriteCloser , error ) {
376+ streamCopy , err := w .session .newByteStream ()
377+ if err != nil {
378+ return nil , err
379+ }
380+ go func () {
381+ io .Copy (stream , streamCopy )
382+ stream .Close ()
383+ }()
384+ return streamCopy , nil
385+ }
386+
358387func (w * pipeSender ) copyChannelMessage (m map [string ]interface {}) (interface {}, error ) {
359388 mCopy := make (map [string ]interface {})
360389 for k , v := range m {
Original file line number Diff line number Diff line change @@ -38,6 +38,10 @@ func (c *channel) copyValue(v interface{}) (interface{}, error) {
3838 // Do nothing until socket support is added
3939 case io.ReadWriteCloser :
4040 return c .copyByteStream (val )
41+ case io.ReadCloser :
42+ return c .copyByteReadStream (val )
43+ case io.WriteCloser :
44+ return c .copyByteWriteStream (val )
4145 case libchan.Sender :
4246 return c .copySender (val )
4347 case libchan.Receiver :
@@ -93,6 +97,31 @@ func (c *channel) copyByteStream(stream io.ReadWriteCloser) (io.ReadWriteCloser,
9397 return streamCopy , nil
9498}
9599
100+ func (c * channel ) copyByteReadStream (stream io.ReadCloser ) (io.ReadCloser , error ) {
101+ streamCopy , err := c .session .createByteStream ()
102+ if err != nil {
103+ return nil , err
104+ }
105+ go func () {
106+ io .Copy (streamCopy , stream )
107+ streamCopy .Close ()
108+ stream .Close ()
109+ }()
110+ return streamCopy , nil
111+ }
112+
113+ func (c * channel ) copyByteWriteStream (stream io.WriteCloser ) (io.WriteCloser , error ) {
114+ streamCopy , err := c .session .createByteStream ()
115+ if err != nil {
116+ return nil , err
117+ }
118+ go func () {
119+ io .Copy (stream , streamCopy )
120+ stream .Close ()
121+ }()
122+ return streamCopy , nil
123+ }
124+
96125func (c * channel ) copyChannelMessage (m map [string ]interface {}) (interface {}, error ) {
97126 mCopy := make (map [string ]interface {})
98127 for k , v := range m {
You can’t perform that action at this time.
0 commit comments