in Sources/NIOSSH/SSHMessages.swift [1479:1548]
mutating func writeChannelRequestMessage(_ message: SSHMessage.ChannelRequestMessage) -> Int {
var writtenBytes = 0
writtenBytes += self.writeInteger(message.recipientChannel)
switch message.type {
case .env:
writtenBytes += self.writeSSHString("env".utf8)
case .exec:
writtenBytes += self.writeSSHString("exec".utf8)
case .exitStatus:
writtenBytes += self.writeSSHString("exit-status".utf8)
case .exitSignal:
writtenBytes += self.writeSSHString("exit-signal".utf8)
case .ptyReq:
writtenBytes += self.writeSSHString("pty-req".utf8)
case .shell:
writtenBytes += self.writeSSHString("shell".utf8)
case .subsystem:
writtenBytes += self.writeSSHString("subsystem".utf8)
case .windowChange:
writtenBytes += self.writeSSHString("window-change".utf8)
case .xonXoff:
writtenBytes += self.writeSSHString("xon-xoff".utf8)
case .signal:
writtenBytes += self.writeSSHString("signal".utf8)
case .unknown:
preconditionFailure()
}
writtenBytes += self.writeSSHBoolean(message.wantReply)
switch message.type {
case .env(let name, let value):
writtenBytes += self.writeSSHString(name.utf8)
writtenBytes += self.writeSSHString(value.utf8)
case .exec(let command):
writtenBytes += self.writeSSHString(command.utf8)
case .exitStatus(let status):
writtenBytes += self.writeInteger(status)
case .exitSignal(let name, let coreDumped, let errorMessage, let language):
writtenBytes += self.writeSSHString(name.utf8)
writtenBytes += self.writeSSHBoolean(coreDumped)
writtenBytes += self.writeSSHString(errorMessage.utf8)
writtenBytes += self.writeSSHString(language.utf8)
case .ptyReq(let message):
writtenBytes += self.writeSSHString(message.termVariable.utf8)
writtenBytes += self.writeInteger(message.characterWidth)
writtenBytes += self.writeInteger(message.rowHeight)
writtenBytes += self.writeInteger(message.pixelWidth)
writtenBytes += self.writeInteger(message.pixelHeight)
writtenBytes += self.writeCompositeSSHString { $0.writeSSHTerminalModes(message.terminalModes) }
case .shell:
break
case .subsystem(let name):
writtenBytes += self.writeSSHString(name.utf8)
case .windowChange(let message):
writtenBytes += self.writeInteger(message.characterWidth)
writtenBytes += self.writeInteger(message.rowHeight)
writtenBytes += self.writeInteger(message.pixelWidth)
writtenBytes += self.writeInteger(message.pixelHeight)
case .xonXoff(let clientCanDo):
writtenBytes += self.writeSSHBoolean(clientCanDo)
case .signal(let name):
writtenBytes += self.writeSSHString(name.utf8)
case .unknown:
preconditionFailure()
}
return writtenBytes
}