public void StopListener() { if (!isListening) { return; } try { isListening = false; listener.Stop(); listenerThread.Interrupt(); listenerThread.Abort(); } catch (Exception ex) { lock (this) { if (ErrorOccurred != null) { CPMErrorEventArgs err = new CPMErrorEventArgs(); err.Message = "Error: " + ex.Message; ErrorOccurred(this, err); } } } }
public void StartListener() { if (!isListening) { status += "Starting TCP listener. "; } isListening = true; listenerThread = new Thread(new ThreadStart(listenToPort)); try { listener.Start(); listenerThread.Start(); string result = OperationPerformer.Instance().Initialize(this); status += result; } catch (SocketException ex) { if (ErrorOccurred != null) { CPMErrorEventArgs args = new CPMErrorEventArgs(); args.Message = ex.Message; args.time = DateTime.Now; ErrorOccurred(this, args); } status = "Error occurred when starting TCP listener: " + ex.Message; isListening = false; return; } }
private void listenToPort() { status += "listenToPort() was called. "; while (isListening) { try { Socket skt = listener.AcceptSocket(); lock (sockets) { sockets.Add(skt); } new System.Threading.Thread(new System.Threading.ThreadStart(handleCommunication)).Start(); } catch (Exception ex) { if (ErrorOccurred != null) { CPMErrorEventArgs args = new CPMErrorEventArgs(); args.Message = ex.Message; args.time = DateTime.Now; ErrorOccurred(this, args); } } } }
public void reportError(string error) { if (ErrorOccurred != null) { CPMErrorEventArgs err = new CPMErrorEventArgs(); err.Message = error; ErrorOccurred(this, err); } }
private void handleCommunication() { try { System.Net.Sockets.Socket handlerSocket; lock (sockets) { handlerSocket = (Socket)sockets[(sockets.Count - 1)]; // get the last socket that was added sockets.RemoveAt((sockets.Count - 1)); } System.Net.Sockets.NetworkStream networkStream = new System.Net.Sockets.NetworkStream(handlerSocket); //' get the stream from that socket BinaryReader reader = new BinaryReader(networkStream); int length = reader.ReadInt32(); byte[] bytesToRead = reader.ReadBytes(length); String response = System.Text.Encoding.UTF8.GetString(bytesToRead); //CPMPayAgentService.LoggingLayer.PayAgentLogger.Instance().logError(response); operationresult res = performOperation(response, handlerSocket.RemoteEndPoint.ToString()); StringBuilder builder = new StringBuilder(); XmlWriter writer = XmlWriter.Create(builder); new XmlSerializer(typeof(operationresult)).Serialize(writer, res); //CPMPayAgentService.LoggingLayer.PayAgentLogger.Instance().logError(builder.ToString()); byte[] bytesToSend = System.Text.Encoding.UTF8.GetBytes(builder.ToString()); BinaryWriter binWriter = new BinaryWriter(networkStream); binWriter.Write(bytesToSend.Length); binWriter.Write(bytesToSend); binWriter.Flush(); binWriter.Close(); handlerSocket.Close(); } catch (Exception ex) { ////TODO: need to send it to named pipe as well if (ErrorOccurred != null) { CPMErrorEventArgs args = new CPMErrorEventArgs(); args.Message = "PerformOperation Error: " + ex.Message; args.time = DateTime.Now; ErrorOccurred(this, args); } status = "handleCommunication() error occurred: " + ex.Message; } status = "handleCommunication() was called. "; }
private void OnErrorOccurred(object sender, CPMErrorEventArgs args) { //eventLogCPM.WriteEntry(args.Message); CPMPayAgentService.LoggingLayer.PayAgentLogger.Instance().logError(args.Message); }