private static void SendClientResponse(PendingClientLicenseResponse clientLicenseResponse) { if (clientLicenseResponse != null) { EventLogManager.WriteToEventLog("Sending client license response", clientLicenseResponse.LicenseType.ToString() + ":" + clientLicenseResponse.IPAddress); var clientLicenseResponseAsEncodedXml = clientLicenseResponse.ToEncodedXml(); var clientEncodedLicenseResponseMessage = new PendingClientLicenseResponseMessage(); clientEncodedLicenseResponseMessage.Message = clientLicenseResponseAsEncodedXml; ConnectionManager.SendAsXML(clientEncodedLicenseResponseMessage, System.Net.IPAddress.Parse(clientLicenseResponse.IPAddress), 11000); EventLogManager.WriteToEventLog("Send client license response", clientLicenseResponse.LicenseType.ToString() + ":" + clientLicenseResponse.IPAddress); } }
private static void OnTCPReceive(IAsyncResult ar) { try { Socket clientSocket = (Socket)ar.AsyncState; var remoteIP = new IPEndPoint(((IPEndPoint)clientSocket.RemoteEndPoint).Address, 11000); var bytesRead = clientSocket.EndReceive(ar); clientSocket.Close(); var ms = new System.IO.MemoryStream(_byteData, 0, bytesRead); ms.Position = 0; var sr = new StreamReader(ms); var streamAsString = sr.ReadToEnd(); // streamAsString = streamAsString.Replace("<?", "<").Replace("?>", ">"); if (streamAsString.StartsWith("<")) { var xmlReader = new System.IO.StringReader(streamAsString); if (streamAsString.Contains("<PrinterRemoteControllerQuery")) { } else if (streamAsString.Contains("<PendingClientLicenseRequestMessage")) { var clientLicenseRequestMessage = (PendingClientLicenseRequestMessage.Deserialize(xmlReader)); var clientLicenseRequest = clientLicenseRequestMessage.DecodeToXml(); clientLicenseRequest.IPAddress = remoteIP.ToString().Split(':')[0]; AtumClientLicenseRequest?.Invoke(clientLicenseRequest); } else if (streamAsString.Contains("<PendingClientLicenseResponseMessage")) { var clientLicenseResponseMessage = (PendingClientLicenseResponseMessage.Deserialize(xmlReader)); var clientLicenseResponse = clientLicenseResponseMessage.DecodeToXml(); AtumClientLicenseResponse?.Invoke(clientLicenseResponse); } else if (streamAsString.Contains("<RemoveActiveClientLicenseRequest")) { var clientRemoveLicenseRequestMessage = (RemoveActiveClientLicenseRequestMessage.Deserialize(xmlReader)); var clientRemoveLicenseRequest = clientRemoveLicenseRequestMessage.DecodeToXml(); AtumClientRemoveLicenseRequest?.Invoke(clientRemoveLicenseRequest); } //else if (streamAsString.Contains("<ArrayOfRemoteControlAction")) //{ // var serializer = new System.Xml.Serialization.XmlSerializer(typeof(RemoteControlActions)); // var remoteControlActions = (RemoteControlActions)serializer.Deserialize(xmlReader); // remoteControlActions[0].RemoteHostIP = remoteIP.Address.ToString(); // if (AtumPrinterRemoteControlActionReceived != null) AtumPrinterRemoteControlActionReceived(remoteControlActions[0]); //} } else { ms.Position = 0; var remoteObject = _binFormatter.Deserialize(ms); var remoteObjectType = remoteObject.GetType().FullName; LoggingManager.WriteToLog("TCP Listener", "Received", remoteObjectType); switch (remoteObjectType) { case "Atum.DAL.Hardware.PrinterFirmwareResult": AtumFirmwareResults?.Invoke((PrinterFirmwareResult)remoteObject); break; case "Atum.DAL.Hardware.PrinterFirmware": AtumFirmwareQuery?.Invoke(remoteIP); break; case "Atum.DAL.Hardware.AtumV15Printer": AtumPrinterReceived?.Invoke((AtumPrinter)remoteObject); AtumPrinterV15Received?.Invoke((AtumPrinter)remoteObject); break; case "Atum.DAL.Print.PrintJob": PrintJobReceived?.Invoke(remoteObject, null); break; case "Atum.DAL.Remoting.PrinterAction": AtumPrinterActionReceived?.Invoke((PrinterAction)remoteObject); break; case "Atum.DAL.Hardware.PrinterControllerResult": AtumFirmwareResults?.Invoke((PrinterFirmwareResult)remoteObject); break; //case "Atum.DAL.Remoting.RemoteControlActions": // var remoteAction = (RemoteControlActions)remoteObject; // if (remoteAction.Count > 0) // { // if (AtumPrinterRemoteControlActionReceived != null) AtumPrinterRemoteControlActionReceived(remoteAction[0]); // } // break; //case "Atum.DAL.Remoting.RemoteControlDisplay": // var remoteDisplay = (RemoteControlDisplay)remoteObject; // if (AtumPrinterRemoteControlDisplayReceived != null) AtumPrinterRemoteControlDisplayReceived(remoteDisplay); // break; } } } catch (Exception ex) { Debug.WriteLine(ex.Message); } }