mirror of
https://github.com/PepperDash/PepperDashCore.git
synced 2026-01-11 19:44:44 +00:00
chore: removed some unused and incomplete com classes
This commit is contained in:
committed by
Andrew Welker
parent
03221b40ac
commit
56fd4b8718
@@ -1,104 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using Crestron.SimplSharp;
|
|
||||||
|
|
||||||
namespace PepperDash.Core
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Background class that manages debug features for sockets
|
|
||||||
/// </summary>
|
|
||||||
public static class CommStatic
|
|
||||||
{
|
|
||||||
static List<ISocketStatus> Sockets = new List<ISocketStatus>();
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Sets up the backing class. Adds console commands for S#Pro programs
|
|
||||||
/// </summary>
|
|
||||||
static CommStatic()
|
|
||||||
{
|
|
||||||
if (CrestronEnvironment.RuntimeEnvironment == eRuntimeEnvironment.SimplSharpPro)
|
|
||||||
{
|
|
||||||
CrestronConsole.AddNewConsoleCommand(SocketCommand, "socket", "socket commands: list, send, connect, disco",
|
|
||||||
ConsoleAccessLevelEnum.AccessOperator);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void SocketCommand(string s)
|
|
||||||
{
|
|
||||||
// 0 1 2
|
|
||||||
//socket command number/key/all param
|
|
||||||
//socket list
|
|
||||||
//socket send 4 ver -v\n
|
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(s))
|
|
||||||
return;
|
|
||||||
var tokens = s.Split(' ');
|
|
||||||
if (tokens.Length == 0)
|
|
||||||
return;
|
|
||||||
var command = tokens[0].ToLower();
|
|
||||||
if(command == "connect")
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
else if(command == "disco")
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
else if(command =="list")
|
|
||||||
{
|
|
||||||
CrestronConsole.ConsoleCommandResponse("{0} sockets", Sockets.Count);
|
|
||||||
if(Sockets.Count == 0)
|
|
||||||
return;
|
|
||||||
// get the longest key name, for formatting
|
|
||||||
var longestLength = Sockets.Aggregate("",
|
|
||||||
(max, cur) => max.Length > cur.Key.Length ? max : cur.Key).Length;
|
|
||||||
for(int i = 0; i < Sockets.Count; i++)
|
|
||||||
{
|
|
||||||
var sock = Sockets[i];
|
|
||||||
CrestronConsole.ConsoleCommandResponse("{0} {1} {2} {3}",
|
|
||||||
i, sock.Key, GetSocketType(sock), sock.ClientStatus);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if(command == "send")
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Helper for socket list, to show types
|
|
||||||
/// </summary>
|
|
||||||
static string GetSocketType(ISocketStatus sock)
|
|
||||||
{
|
|
||||||
if (sock is GenericSshClient)
|
|
||||||
return "SSH";
|
|
||||||
else if (sock is GenericTcpIpClient)
|
|
||||||
return "TCP-IP";
|
|
||||||
else
|
|
||||||
return "?";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="socket"></param>
|
|
||||||
public static void AddSocket(ISocketStatus socket)
|
|
||||||
{
|
|
||||||
if(!Sockets.Contains(socket))
|
|
||||||
Sockets.Add(socket);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="socket"></param>
|
|
||||||
public static void RemoveSocket(ISocketStatus socket)
|
|
||||||
{
|
|
||||||
if (Sockets.Contains(socket))
|
|
||||||
Sockets.Remove(socket);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,314 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using Crestron.SimplSharp;
|
|
||||||
using Crestron.SimplSharp.CrestronIO;
|
|
||||||
using Crestron.SimplSharp.Net.Http;
|
|
||||||
|
|
||||||
namespace PepperDash.Core
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Client for communicating with an HTTP Server Side Event pattern
|
|
||||||
/// </summary>
|
|
||||||
public class GenericHttpSseClient : ICommunicationReceiver
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Notifies when bytes have been received
|
|
||||||
/// </summary>
|
|
||||||
public event EventHandler<GenericCommMethodReceiveBytesArgs> BytesReceived;
|
|
||||||
/// <summary>
|
|
||||||
/// Notifies when text has been received
|
|
||||||
/// </summary>
|
|
||||||
public event EventHandler<GenericCommMethodReceiveTextArgs> TextReceived;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Indicates connection status
|
|
||||||
/// </summary>
|
|
||||||
public bool IsConnected
|
|
||||||
{
|
|
||||||
get;
|
|
||||||
private set;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Unique identifier for the instance
|
|
||||||
/// </summary>
|
|
||||||
public string Key
|
|
||||||
{
|
|
||||||
get;
|
|
||||||
private set;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Name for the instance
|
|
||||||
/// </summary>
|
|
||||||
public string Name
|
|
||||||
{
|
|
||||||
get;
|
|
||||||
private set;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// URL of the server
|
|
||||||
/// </summary>
|
|
||||||
public string Url { get; set; }
|
|
||||||
|
|
||||||
HttpClient Client;
|
|
||||||
HttpClientRequest Request;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Constructor
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="key"></param>
|
|
||||||
/// <param name="name"></param>
|
|
||||||
public GenericHttpSseClient(string key, string name)
|
|
||||||
{
|
|
||||||
Key = key;
|
|
||||||
Name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Connects to the server. Requires Url to be set first.
|
|
||||||
/// </summary>
|
|
||||||
public void Connect()
|
|
||||||
{
|
|
||||||
InitiateConnection(Url);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Disconnects from the server
|
|
||||||
/// </summary>
|
|
||||||
public void Disconnect()
|
|
||||||
{
|
|
||||||
CloseConnection(null);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Initiates connection to the server
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="url"></param>
|
|
||||||
public void InitiateConnection(string url)
|
|
||||||
{
|
|
||||||
CrestronInvoke.BeginInvoke(o =>
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if(string.IsNullOrEmpty(url))
|
|
||||||
{
|
|
||||||
Debug.Console(0, this, "Error connecting to Server. No URL specified");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Client = new HttpClient();
|
|
||||||
Request = new HttpClientRequest();
|
|
||||||
Client.Verbose = true;
|
|
||||||
Client.KeepAlive = true;
|
|
||||||
Request.Url.Parse(url);
|
|
||||||
Request.RequestType = RequestType.Get;
|
|
||||||
Request.Header.SetHeaderValue("Accept", "text/event-stream");
|
|
||||||
|
|
||||||
// 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!");
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
ErrorLog.Notice("Exception occured in AsyncWebPostHttps(): " + e.ToString());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Closes the connection to the server
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="s"></param>
|
|
||||||
public void CloseConnection(string s)
|
|
||||||
{
|
|
||||||
if (Client != null)
|
|
||||||
{
|
|
||||||
Client.Abort();
|
|
||||||
IsConnected = false;
|
|
||||||
|
|
||||||
Debug.Console(1, this, "Client Disconnected");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void GetRequestStreamCallback(HttpClientRequest request, HTTP_CALLBACK_ERROR error, object status)
|
|
||||||
{
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
// End the the async request operation and return the data stream
|
|
||||||
Stream requestStream = request.ThisClient.EndGetRequestStream(request, null);
|
|
||||||
// If this were something other than a GET we could write to the stream here
|
|
||||||
|
|
||||||
// Closing makes the request happen
|
|
||||||
requestStream.Close();
|
|
||||||
|
|
||||||
// Get a handle on the response stream.
|
|
||||||
request.ThisClient.BeginGetResponseStream(GetResponseStreamCallback, request, status);
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
ErrorLog.Notice("Exception occured in GetSecureRequestStreamCallback(): " + e.ToString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="request"></param>
|
|
||||||
/// <param name="error"></param>
|
|
||||||
/// <param name="status"></param>
|
|
||||||
private void GetResponseStreamCallback(HttpClientRequest request, HTTP_CALLBACK_ERROR error, object status)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
// This closes up the GetResponseStream async
|
|
||||||
var response = request.ThisClient.EndGetResponseStream(request);
|
|
||||||
|
|
||||||
response.DataConnection.OnBytesReceived += new EventHandler(DataConnection_OnBytesReceived);
|
|
||||||
|
|
||||||
IsConnected = true;
|
|
||||||
|
|
||||||
Debug.Console(1, this, "Client Disconnected");
|
|
||||||
|
|
||||||
Stream streamResponse = response.ContentStream;
|
|
||||||
// Object containing various states to be passed back to async callback below
|
|
||||||
RequestState asyncState = new RequestState();
|
|
||||||
asyncState.Request = request;
|
|
||||||
asyncState.Response = response;
|
|
||||||
asyncState.StreamResponse = streamResponse;
|
|
||||||
asyncState.HttpClient = request.ThisClient;
|
|
||||||
|
|
||||||
// This processes the ongoing data stream
|
|
||||||
Crestron.SimplSharp.CrestronIO.IAsyncResult asyncResult = null;
|
|
||||||
do
|
|
||||||
{
|
|
||||||
asyncResult = streamResponse.BeginRead(asyncState.BufferRead, 0, RequestState.BUFFER_SIZE,
|
|
||||||
new Crestron.SimplSharp.CrestronIO.AsyncCallback(ReadCallBack), asyncState);
|
|
||||||
}
|
|
||||||
while (asyncResult.CompletedSynchronously && !asyncState.Done);
|
|
||||||
|
|
||||||
//Console.WriteLine("\r\nExit Response Callback\r\n");
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
ErrorLog.Notice("Exception occured in GetSecureRequestStreamCallback(): " + e.ToString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void DataConnection_OnBytesReceived(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Debug.Console(1, this, "DataConnection OnBytesReceived Fired");
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ReadCallBack(Crestron.SimplSharp.CrestronIO.IAsyncResult asyncResult)
|
|
||||||
{
|
|
||||||
//we are getting back everything here, so cast the state from the call
|
|
||||||
RequestState requestState = asyncResult.AsyncState as RequestState;
|
|
||||||
Stream responseStream = requestState.StreamResponse;
|
|
||||||
|
|
||||||
int read = responseStream.EndRead(asyncResult);
|
|
||||||
// Read the HTML page and then print it to the console.
|
|
||||||
if (read > 0)
|
|
||||||
{
|
|
||||||
var bytes = requestState.BufferRead;
|
|
||||||
|
|
||||||
var bytesHandler = BytesReceived;
|
|
||||||
if (bytesHandler != null)
|
|
||||||
bytesHandler(this, new GenericCommMethodReceiveBytesArgs(bytes));
|
|
||||||
var textHandler = TextReceived;
|
|
||||||
if (textHandler != null)
|
|
||||||
{
|
|
||||||
var str = Encoding.GetEncoding(28591).GetString(bytes, 0, bytes.Length);
|
|
||||||
textHandler(this, new GenericCommMethodReceiveTextArgs(str));
|
|
||||||
}
|
|
||||||
|
|
||||||
//requestState.RequestData.Append(Encoding.ASCII.GetString(requestState.BufferRead, 0, read));
|
|
||||||
//CrestronConsole.PrintLine(requestState.RequestData.ToString());
|
|
||||||
|
|
||||||
//clear the byte array buffer used.
|
|
||||||
Array.Clear(requestState.BufferRead, 0, requestState.BufferRead.Length);
|
|
||||||
|
|
||||||
if (asyncResult.CompletedSynchronously)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
requestState.Done = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Stores the state of the request
|
|
||||||
/// </summary>
|
|
||||||
public class RequestState
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
public const int BUFFER_SIZE = 10000;
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
public byte[] BufferRead;
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
public HttpClient HttpClient;
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
public HttpClientRequest Request;
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
public HttpClientResponse Response;
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
public Stream StreamResponse;
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
public bool Done;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Constructor
|
|
||||||
/// </summary>
|
|
||||||
public RequestState()
|
|
||||||
{
|
|
||||||
BufferRead = new byte[BUFFER_SIZE];
|
|
||||||
HttpClient = null;
|
|
||||||
Request = null;
|
|
||||||
Response = null;
|
|
||||||
StreamResponse = null;
|
|
||||||
Done = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Waithandle for main thread.
|
|
||||||
/// </summary>
|
|
||||||
public class StreamAsyncTest
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
public CEvent wait_for_response = new CEvent(true, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user