mirror of
https://github.com/PepperDash/PepperDashCore.git
synced 2026-02-15 20:54:46 +00:00
Merge remote-tracking branch 'origin/master' into feature/sseclient
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -19,4 +19,5 @@ Thumbs.db
|
|||||||
obj/
|
obj/
|
||||||
[Rr]elease*/
|
[Rr]elease*/
|
||||||
_ReSharper*/
|
_ReSharper*/
|
||||||
SIMPLSharpLogs/
|
SIMPLSharpLogs/
|
||||||
|
*.projectinfo
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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
|
||||||
{
|
{
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user