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/
[Rr]elease*/
_ReSharper*/
SIMPLSharpLogs/
SIMPLSharpLogs/
*.projectinfo

Binary file not shown.

View File

@@ -4,7 +4,6 @@ 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
@@ -36,8 +35,6 @@ namespace PepperDash.Core
HttpClient Client;
HttpClientRequest Request;
Connection SseConnection;
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
// 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 InitiateConnection(): " + e);
ErrorLog.Notice("Exception occured in AsyncWebPostHttps(): " + e.ToString());
}
});
}
public void CloseConnection(string s)
{
try
if (Client != null)
{
if (Client != null)
{
if (SseConnection != null)
{
// Gracefully dispose of any in use resources??
Client.Abort();
IsConnected = false;
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);
Debug.Console(1, this, "Client Disconnected");
}
}
@@ -148,10 +130,14 @@ namespace PepperDash.Core
// This closes up the GetResponseStream async
var response = request.ThisClient.EndGetResponseStream(request);
SseConnection = response.DataConnection;
response.DataConnection.OnBytesReceived += new EventHandler(DataConnection_OnBytesReceived);
IsConnected = true;
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();
@@ -177,6 +163,11 @@ namespace PepperDash.Core
}
}
void DataConnection_OnBytesReceived(object sender, EventArgs e)
{
Debug.Console(1, this, "DataConnection OnBytesReceived Fired");
}
/// <summary>
///
/// </summary>
@@ -214,20 +205,13 @@ namespace PepperDash.Core
return;
}
try
Crestron.SimplSharp.CrestronIO.IAsyncResult asynchronousResult;
do
{
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);
asynchronousResult = responseStream.BeginRead(requestState.BufferRead, 0, RequestState.BUFFER_SIZE,
new Crestron.SimplSharp.CrestronIO.AsyncCallback(ReadCallBack), requestState);
}
while (asynchronousResult.CompletedSynchronously && !requestState.Done);
}
else
{