github.com/Cloud-Foundations/Dominator@v0.3.4/imageunpacker/rpcd/getRaw.go (about) 1 package rpcd 2 3 import ( 4 "io" 5 6 "github.com/Cloud-Foundations/Dominator/lib/srpc" 7 proto "github.com/Cloud-Foundations/Dominator/proto/imageunpacker" 8 ) 9 10 func (t *srpcType) GetRaw(conn *srpc.Conn) error { 11 var request proto.GetRawRequest 12 if err := conn.Decode(&request); err != nil { 13 return err 14 } 15 var reply proto.GetRawResponse 16 reader, length, err := t.unpacker.GetRaw(request.StreamName) 17 if err != nil { 18 reply.Error = err.Error() 19 return conn.Encode(reply) 20 } 21 defer reader.Close() 22 reply.Size = length 23 if err := conn.Encode(reply); err != nil { 24 return err 25 } 26 _, err = io.CopyN(conn, reader, int64(length)) 27 return err 28 }