TelnetConnectAndNegotiate( string Host, NegotiateSettings NegotiateSettings, ConcurrentMessageQueue TelnetQueue, ToThread ToThread) { var sessionSettings = new SessionSettings(); TelnetLogList logList = null; bool breakLoop = false; // loop reading from NetworkStream and processing the telnet command. // loop until break flag is set. while (breakLoop == false) { var item = TelnetQueue.WaitAndPeek(); if ((item is TelnetCommand) == false) { break; } var telCmd = TelnetQueue.WaitAndDequeue() as TelnetCommand; byte[] responseBytes = null; { var rv = ProcessTelnetCommand(telCmd, NegotiateSettings); var cx = rv.Item1; responseBytes = rv.Item2; } if ((responseBytes != null) && (responseBytes.Length > 0)) { var dataMessage = new SendDataMessage(responseBytes); ToThread.PostInputMessage(dataMessage); } } return(new Tuple <SessionSettings, TelnetLogList>( sessionSettings, logList)); }
TelnetPrinterConnectAndNegotiate( string Host, NegotiateSettings NegotiateSettings, ConcurrentMessageQueue TelnetQueue, ServerConnectPack ConnectPack, bool doLog = false) { var sessionSettings = new SessionSettings(); TelnetLogList logList = null; // BgnTemp doLog = true; // EndTemp if (doLog == true) { logList = new TelnetLogList(); } bool breakLoop = false; // loop reading from NetworkStream and processing the telnet command. // loop until break flag is set. while (breakLoop == false) { var item = TelnetQueue.WaitAndPeek(); if ((item is TelnetCommand) == false) { break; } var telCmd = TelnetQueue.WaitAndDequeue() as TelnetCommand; byte[] responseBytes = null; { var rv = ProcessTelnetCommand(telCmd, NegotiateSettings, doLog); var cx = rv.Item1; responseBytes = rv.Item2; if (doLog == true) { logList.AddItems(rv.Item3); } } if ((responseBytes != null) && (responseBytes.Length > 0)) { WriteToHost(logList, responseBytes, ConnectPack.TcpClient.GetStream()); } } return(new Tuple <SessionSettings, TelnetLogList>( sessionSettings, logList)); }