private void SendMessage(object message) { using (EneterTrace.Entering()) { byte[] aMessage = (byte[])message; HttpWebClient.Post(myUri, aMessage); } }
private void DoPolling() { using (EneterTrace.Entering()) { myIsListeningToResponses = true; myListeningToResponsesStartedEvent.Set(); try { // Create URI for polling. string aParameters = "?id=" + myResponseReceiverId; Uri aPollingUri = new Uri(myUri, aParameters); bool aServiceClosedConnection = false; while (!myStopReceivingRequestedFlag && !aServiceClosedConnection) { myStopPollingWaitingEvent.WaitOne(myPollingFrequencyMiliseconds); if (!myStopReceivingRequestedFlag) { // Send poll request to get messages from the service. WebResponse anHttpResponse = HttpWebClient.Get(aPollingUri); // Convert the response to the fast memory stream using (MemoryStream aBufferedResponse = new MemoryStream()) { Stream aResponseStream = anHttpResponse.GetResponseStream(); // Write the incoming response to the fast memory stream. StreamUtil.ReadToEnd(aResponseStream, aBufferedResponse); aBufferedResponse.Position = 0; // The response can contain more messages. while (!myStopReceivingRequestedFlag && !aServiceClosedConnection && aBufferedResponse.Position < aBufferedResponse.Length) { Action <MessageContext> aResponseHandler = myResponseMessageHandler; ProtocolMessage aProtocolMessage = myProtocolFormatter.DecodeMessage((Stream)aBufferedResponse); MessageContext aMessageContext = new MessageContext(aProtocolMessage, myUri.Host); if (aProtocolMessage != null && aProtocolMessage.MessageType == EProtocolMessageType.CloseConnectionRequest) { aServiceClosedConnection = true; } try { if (aResponseHandler != null) { aResponseHandler(aMessageContext); } } catch (Exception err) { EneterTrace.Warning(TracedObject + ErrorHandler.DetectedException, err); } } } } } } catch (WebException err) { string anErrorStatus = err.Status.ToString(); EneterTrace.Error(TracedObject + "detected an error during listening to response messages. Error status: '" + anErrorStatus + "'. ", err); } catch (Exception err) { EneterTrace.Error(TracedObject + ErrorHandler.FailedInListeningLoop, err); } myIsListeningToResponses = false; myListeningToResponsesStartedEvent.Reset(); // If the connection was closed from the service. if (!myStopReceivingRequestedFlag) { Action <MessageContext> aResponseHandler = myResponseMessageHandler; CleanConnection(false); try { aResponseHandler(null); } catch (Exception err) { EneterTrace.Warning(TracedObject + ErrorHandler.DetectedException, err); } } } }