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  }