Merge remote-tracking branch 'origin/master' into feature/sseclient

This commit is contained in:
Neil Dorin
2017-10-31 14:21:07 -06:00
7 changed files with 23 additions and 38 deletions

3
.gitignore vendored
View File

@@ -19,4 +19,5 @@ Thumbs.db
obj/ obj/
[Rr]elease*/ [Rr]elease*/
_ReSharper*/ _ReSharper*/
SIMPLSharpLogs/ SIMPLSharpLogs/
*.projectinfo

Binary file not shown.

View File

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