public void OpenConnection(Action <MessageContext> responseMessageHandler) { using (EneterTrace.Entering()) { if (responseMessageHandler == null) { throw new ArgumentNullException("responseMessageHandler is null."); } using (ThreadLock.Lock(myConnectionManipulatorLock)) { try { mySender = new NamedPipeSender(myInputConnectorAddress, myTimeout); myResponseMessageHandler = responseMessageHandler; myResponseReceiver = new NamedPipeReceiver(myOutputConnectorAddress, 1, myTimeout, mySecurity); myResponseReceiver.StartListening(HandleResponseMessages); // Send the open connection request. object anEncodedMessage = myProtocolFormatter.EncodeOpenConnectionMessage(myOutputConnectorAddress); mySender.SendMessage(anEncodedMessage); } catch { CloseConnection(); throw; } } } }
public void StartListening(Action<MessageContext> messageHandler) { using (EneterTrace.Entering()) { if (messageHandler == null) { throw new ArgumentNullException("messageHandler is null."); } using (ThreadLock.Lock(myListeningManipulatorLock)) { try { myMessageHandler = messageHandler; myReceiver = new NamedPipeReceiver(myInputConnectorAddress, myNumberOfListeningInstances, myConnectionTimeout, mySecurity); myReceiver.StartListening(OnRequestMessageReceived); } catch { StopListening(); throw; } } } }