github.com/Cloud-Foundations/Dominator@v0.3.4/hypervisor/rpcd/connectToVmSerialPort.go (about) 1 package rpcd 2 3 import ( 4 "github.com/Cloud-Foundations/Dominator/lib/errors" 5 "github.com/Cloud-Foundations/Dominator/lib/srpc" 6 "github.com/Cloud-Foundations/Dominator/proto/hypervisor" 7 ) 8 9 func (t *srpcType) ConnectToVmSerialPort(conn *srpc.Conn) error { 10 var request hypervisor.ConnectToVmSerialPortRequest 11 if err := conn.Decode(&request); err != nil { 12 return err 13 } 14 input, output, err := t.manager.ConnectToVmSerialPort(request.IpAddress, 15 conn.GetAuthInformation(), request.PortNumber) 16 if input != nil { 17 defer close(input) 18 } 19 e := conn.Encode(hypervisor.ConnectToVmSerialPortResponse{ 20 Error: errors.ErrorToString(err)}) 21 if e != nil { 22 return e 23 } 24 if e := conn.Flush(); e != nil { 25 return e 26 } 27 if err != nil { 28 return nil // Have successfully sent the error in the response message. 29 } 30 return connectChannelsToConnection(conn, input, output) 31 }