private void serverSocket_OnCommandReceived(ITftpCommand command, EndPoint endpoint) { //Ignore all other commands if (!(command is ReadOrWriteRequest)) { return; } //Open a connection to the client ITransferChannel channel = TransferChannelFactory.CreateConnection(endpoint); //Create a wrapper for the transfer request ReadOrWriteRequest request = (ReadOrWriteRequest)command; ITftpTransfer transfer = null; transfer = request is ReadRequest ? (ITftpTransfer) new LocalReadTransfer(channel, request.Filename, request.Options) : new LocalWriteTransfer(channel, request.Filename, request.Options); if (command is ReadRequest) { RaiseOnReadRequest(transfer, endpoint); } else if (command is WriteRequest) { RaiseOnWriteRequest(transfer, endpoint); } else { throw new Exception("Unexpected tftp transfer request: " + command); } }
private void ServerSocket_OnCommandReceived(ITFtpCommand command, EndPoint endpoint) { // Ignore all other commands if (!(command is ReadOrWriteRequest)) { return; } // Open a connection to the client ITransferChannel channel = TransferChannelFactory.CreateConnection(endpoint); // Create a wrapper for the transfer request ReadOrWriteRequest request = (ReadOrWriteRequest)command; ITFtpTransfer transfer = request is ReadRequest ? (ITFtpTransfer) new LocalReadTransfer(channel, request.Filename, request.Options) : new LocalWriteTransfer(channel, request.Filename, request.Options); switch (command) { case ReadRequest _: RaiseOnReadRequest(transfer, endpoint); break; case WriteRequest _: RaiseOnWriteRequest(transfer, endpoint); break; default: throw new Exception($"Unexpected TFTP transfer request: {command}"); } }