Minor updates to SseClient class

This commit is contained in:
Neil Dorin
2017-08-14 10:08:03 -06:00
parent 208e236308
commit 44c9bcb788
5 changed files with 37 additions and 21 deletions

Binary file not shown.

View File

@@ -4,6 +4,7 @@ using System.Linq;
using System.Text;
using Crestron.SimplSharp;
using Crestron.SimplSharp.CrestronIO;
using Crestron.SimplSharp.Net;
using Crestron.SimplSharp.Net.Http;
namespace PepperDash.Core
@@ -35,6 +36,8 @@ namespace PepperDash.Core
HttpClient Client;
HttpClientRequest Request;
Connection SseConnection;
public GenericHttpSseClient(string key, string name)
{
@@ -75,23 +78,38 @@ namespace PepperDash.Core
// In order to get a handle on the response stream, we have to get
// the request stream first. Boo
Client.BeginGetRequestStream(GetRequestStreamCallback, Request, null);
CrestronConsole.PrintLine("Request made!");
//CrestronConsole.PrintLine("Request made!");
}
catch (Exception e)
{
ErrorLog.Notice("Exception occured in AsyncWebPostHttps(): " + e.ToString());
ErrorLog.Notice("Exception occured in InitiateConnection(): " + e);
}
});
}
public void CloseConnection(string s)
{
if (Client != null)
try
{
Client.Abort();
IsConnected = false;
if (Client != null)
{
if (SseConnection != null)
{
// Gracefully dispose of any in use resources??
Debug.Console(1, this, "Client Disconnected");
SseConnection.Disconnect();
SseConnection.Close(true);
Client.Abort();
}
IsConnected = false;
Debug.Console(1, this, "Client Disconnected");
}
}
catch (Exception e)
{
Debug.Console(1, this, "Error Closing SSE Connection: {0}", e);
}
}
@@ -130,14 +148,10 @@ namespace PepperDash.Core
// This closes up the GetResponseStream async
var response = request.ThisClient.EndGetResponseStream(request);
response.DataConnection.OnBytesReceived += new EventHandler(DataConnection_OnBytesReceived);
IsConnected = true;
SseConnection = response.DataConnection;
Debug.Console(1, this, "Client Disconnected");
#warning Need to explore using a heartbeat to verify connection to the server
Stream streamResponse = response.ContentStream;
// Object containing various states to be passed back to async callback below
RequestState asyncState = new RequestState();
@@ -163,11 +177,6 @@ namespace PepperDash.Core
}
}
void DataConnection_OnBytesReceived(object sender, EventArgs e)
{
Debug.Console(1, this, "DataConnection OnBytesReceived Fired");
}
/// <summary>
///
/// </summary>
@@ -205,13 +214,20 @@ namespace PepperDash.Core
return;
}
Crestron.SimplSharp.CrestronIO.IAsyncResult asynchronousResult;
do
try
{
asynchronousResult = responseStream.BeginRead(requestState.BufferRead, 0, RequestState.BUFFER_SIZE,
new Crestron.SimplSharp.CrestronIO.AsyncCallback(ReadCallBack), requestState);
Crestron.SimplSharp.CrestronIO.IAsyncResult asynchronousResult;
do
{
asynchronousResult = responseStream.BeginRead(requestState.BufferRead, 0, RequestState.BUFFER_SIZE,
new Crestron.SimplSharp.CrestronIO.AsyncCallback(ReadCallBack), requestState);
}
while (asynchronousResult.CompletedSynchronously && !requestState.Done);
}
catch (Exception e)
{
Debug.Console(1, this, "Exception: {0}", e);
}
while (asynchronousResult.CompletedSynchronously && !requestState.Done);
}
else
{