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  }