private void WaitForConnectionCallBack(IAsyncResult ar) { if (!this.isStopping) { this.pipeServer.EndWaitForConnection(ar); OnClientConnect(); IStreamString ss = new StreamString(this.pipeServer); var conArgs = new RequestDigestEventArgs() { StreamString = ss }; ConnectionStablished(this, conArgs); Stop(); OnClientDisconnect(); } }
/// <summary> /// When client is connected and we can interactuate with it. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected override void OnClientConnectionEstablished(object sender, RequestDigestEventArgs e) { String answer = ""; Boolean isSuccess = false; try { String receivedToken = e.StreamString.ReadString(); LogMessage(LogMessageEventArgs.Severity.Info, $"'{receivedToken}' received!"); if (receivedToken.ToUpper() == "PING") { answer = "PONG"; } else { answer = "COMMAND NOT FOUND"; } isSuccess = true; } catch (Exception ex) { LogMessage(LogMessageEventArgs.Severity.Error, $"Exception '{ex.Message}'!"); } finally { try { String responseMessage = ""; responseMessage = (isSuccess) ? answer : "FATAL ERROR"; e.StreamString.WriteString(responseMessage); } catch (Exception) { LogMessage(LogMessageEventArgs.Severity.Error, "Connection lost! Connection closed by client!"); } } }
protected virtual void OnClientConnectionEstablished(object sender, RequestDigestEventArgs e) { this.ConnectionEstablished?.Invoke(sender, e); }