mirror of
https://github.com/PepperDash/PepperDashCore.git
synced 2026-02-16 21:24:43 +00:00
Updated dynamic server class as I created simpl+ module
This commit is contained in:
Binary file not shown.
@@ -8,30 +8,6 @@ using PepperDash.Core;
|
|||||||
|
|
||||||
namespace PepperDash_Core
|
namespace PepperDash_Core
|
||||||
{
|
{
|
||||||
#region UNUSED OBJECT JUST IN CASE TILL DONE WITH CODING
|
|
||||||
//public class DynamicServer
|
|
||||||
//{
|
|
||||||
// public object Server
|
|
||||||
// {
|
|
||||||
// get
|
|
||||||
// {
|
|
||||||
// if(Secure)
|
|
||||||
// return secureServer;
|
|
||||||
// else
|
|
||||||
// return unsecureServer;
|
|
||||||
// }
|
|
||||||
// private set;
|
|
||||||
// }
|
|
||||||
// public bool Secure { get; set; }
|
|
||||||
// private TCPServer unsecureServer;
|
|
||||||
// private SecureTCPServer secureServer;
|
|
||||||
// public DynamicServer(bool secure)
|
|
||||||
// {
|
|
||||||
// Secure = secure;
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
public class DynamicTCPServer : Device
|
public class DynamicTCPServer : Device
|
||||||
{
|
{
|
||||||
#region Events
|
#region Events
|
||||||
@@ -49,7 +25,7 @@ namespace PepperDash_Core
|
|||||||
public bool Secure { get; set; }
|
public bool Secure { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// S+ Helper for Secure bool
|
/// S+ Helper for Secure bool. Parameter in SIMPL+ so there is no get, one way set from simpl+ Param to property in func main of SIMPL+
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public ushort uSecure
|
public ushort uSecure
|
||||||
{
|
{
|
||||||
@@ -62,20 +38,17 @@ namespace PepperDash_Core
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string status
|
||||||
|
{
|
||||||
|
get { return Secure ? SecureServer.State.ToString() : UnsecureServer.State.ToString(); }
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Bool showing if socket is connected
|
/// Bool showing if socket is connected
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool IsConnected
|
public bool IsConnected
|
||||||
{
|
{
|
||||||
get
|
get { return Secure ? SecureServer.State == ServerState.SERVER_CONNECTED : UnsecureServer.State == ServerState.SERVER_CONNECTED; }
|
||||||
{
|
|
||||||
if (Secure && SecureServer != null)
|
|
||||||
return SecureServer.State == ServerState.SERVER_CONNECTED;
|
|
||||||
else if (!Secure && UnsecureServer != null)
|
|
||||||
return UnsecureServer.State == ServerState.SERVER_CONNECTED;
|
|
||||||
else
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -91,15 +64,7 @@ namespace PepperDash_Core
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public bool IsListening
|
public bool IsListening
|
||||||
{
|
{
|
||||||
get
|
get { return Secure ? SecureServer.State == ServerState.SERVER_LISTENING : UnsecureServer.State == ServerState.SERVER_LISTENING; }
|
||||||
{
|
|
||||||
if (Secure && SecureServer != null)
|
|
||||||
return SecureServer.State == ServerState.SERVER_LISTENING;
|
|
||||||
else if (!Secure && UnsecureServer != null)
|
|
||||||
return UnsecureServer.State == ServerState.SERVER_LISTENING;
|
|
||||||
else
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public ushort MaxConnections { get; set; } // should be set by parameter in SIMPL+ in the MAIN method, Should not ever need to be configurable
|
public ushort MaxConnections { get; set; } // should be set by parameter in SIMPL+ in the MAIN method, Should not ever need to be configurable
|
||||||
@@ -117,15 +82,7 @@ namespace PepperDash_Core
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public ushort NumberOfClientsConnected
|
public ushort NumberOfClientsConnected
|
||||||
{
|
{
|
||||||
get
|
get { return Secure ? (ushort)SecureServer.NumberOfClientsConnected : (ushort)UnsecureServer.NumberOfClientsConnected; }
|
||||||
{
|
|
||||||
if (Secure && SecureServer != null)
|
|
||||||
return (ushort)SecureServer.NumberOfClientsConnected;
|
|
||||||
else if (!Secure && UnsecureServer != null)
|
|
||||||
return (ushort)UnsecureServer.NumberOfClientsConnected;
|
|
||||||
else
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -136,7 +93,7 @@ namespace PepperDash_Core
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// S+ helper
|
/// S+ helper
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public ushort UPort
|
public ushort uPort
|
||||||
{
|
{
|
||||||
get { return Convert.ToUInt16(Port); }
|
get { return Convert.ToUInt16(Port); }
|
||||||
set { Port = Convert.ToInt32(value); }
|
set { Port = Convert.ToInt32(value); }
|
||||||
@@ -173,9 +130,6 @@ namespace PepperDash_Core
|
|||||||
}
|
}
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
if (Secure && SecureServer != null && SecureServer.State == ServerState.SERVER_CONNECTED)
|
|
||||||
DisconnectAllClients();
|
|
||||||
if (!Secure && UnsecureServer != null && UnsecureServer.State == ServerState.SERVER_CONNECTED)
|
|
||||||
DisconnectAllClients();
|
DisconnectAllClients();
|
||||||
_SharedKey = value;
|
_SharedKey = value;
|
||||||
}
|
}
|
||||||
@@ -203,9 +157,6 @@ namespace PepperDash_Core
|
|||||||
get { return _OnlyAcceptConnectionFromAddress; }
|
get { return _OnlyAcceptConnectionFromAddress; }
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
if (Secure && SecureServer != null && SecureServer.State == ServerState.SERVER_CONNECTED)
|
|
||||||
DisconnectAllClients();
|
|
||||||
if (!Secure && UnsecureServer != null && UnsecureServer.State == ServerState.SERVER_CONNECTED)
|
|
||||||
DisconnectAllClients();
|
DisconnectAllClients();
|
||||||
MaxConnections = 1;
|
MaxConnections = 1;
|
||||||
_OnlyAcceptConnectionFromAddress = value;
|
_OnlyAcceptConnectionFromAddress = value;
|
||||||
@@ -229,20 +180,14 @@ namespace PepperDash_Core
|
|||||||
BufferSize = 2000;
|
BufferSize = 2000;
|
||||||
Secure = false;
|
Secure = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void CrestronEnvironment_ProgramStatusEventHandler(eProgramStatusEventType programEventType)
|
|
||||||
{
|
|
||||||
if (programEventType == eProgramStatusEventType.Stopping)
|
|
||||||
{
|
|
||||||
Debug.Console(1, this, "Program stopping. Closing server");
|
|
||||||
DisconnectAllClients();
|
|
||||||
StopListening();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Methods - Server Actions
|
#region Methods - Server Actions
|
||||||
|
public void Initialize(string key)
|
||||||
|
{
|
||||||
|
Key = key;
|
||||||
|
}
|
||||||
|
|
||||||
public void Listen()
|
public void Listen()
|
||||||
{
|
{
|
||||||
if (Port < 1 || Port > 65535)
|
if (Port < 1 || Port > 65535)
|
||||||
@@ -311,7 +256,7 @@ namespace PepperDash_Core
|
|||||||
{
|
{
|
||||||
if (ConnectedClientsIndexes.Count > 0)
|
if (ConnectedClientsIndexes.Count > 0)
|
||||||
{
|
{
|
||||||
if (Secure && SecureServer != null)
|
if (Secure)
|
||||||
{
|
{
|
||||||
foreach (uint i in ConnectedClientsIndexes)
|
foreach (uint i in ConnectedClientsIndexes)
|
||||||
{
|
{
|
||||||
@@ -319,7 +264,7 @@ namespace PepperDash_Core
|
|||||||
SecureServer.SendDataAsync(i, b, b.Length, SecureSendDataAsyncCallback);
|
SecureServer.SendDataAsync(i, b, b.Length, SecureSendDataAsyncCallback);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (!Secure && UnsecureServer != null)
|
else
|
||||||
{
|
{
|
||||||
foreach (uint i in ConnectedClientsIndexes)
|
foreach (uint i in ConnectedClientsIndexes)
|
||||||
{
|
{
|
||||||
@@ -337,12 +282,12 @@ namespace PepperDash_Core
|
|||||||
/// <param name="clientIndex"></param>
|
/// <param name="clientIndex"></param>
|
||||||
public void SendTextToClient(string text, uint clientIndex)
|
public void SendTextToClient(string text, uint clientIndex)
|
||||||
{
|
{
|
||||||
if (Secure && SecureServer != null)
|
if (Secure)
|
||||||
{
|
{
|
||||||
byte[] b = Encoding.ASCII.GetBytes(text);
|
byte[] b = Encoding.ASCII.GetBytes(text);
|
||||||
SecureServer.SendDataAsync(clientIndex, b, b.Length, SecureSendDataAsyncCallback);
|
SecureServer.SendDataAsync(clientIndex, b, b.Length, SecureSendDataAsyncCallback);
|
||||||
}
|
}
|
||||||
else if (!Secure && UnsecureServer != null)
|
else
|
||||||
{
|
{
|
||||||
byte[] b = Encoding.ASCII.GetBytes(text);
|
byte[] b = Encoding.ASCII.GetBytes(text);
|
||||||
UnsecureServer.SendDataAsync(clientIndex, b, b.Length, UnsecureSendDataAsyncCallback);
|
UnsecureServer.SendDataAsync(clientIndex, b, b.Length, UnsecureSendDataAsyncCallback);
|
||||||
@@ -400,7 +345,7 @@ namespace PepperDash_Core
|
|||||||
Debug.Console(0, "Sent Shared Key to client at {0}", mySecureTCPServer.GetAddressServerAcceptedConnectionFromForSpecificClient(clientIndex));
|
Debug.Console(0, "Sent Shared Key to client at {0}", mySecureTCPServer.GetAddressServerAcceptedConnectionFromForSpecificClient(clientIndex));
|
||||||
}
|
}
|
||||||
mySecureTCPServer.ReceiveDataAsync(clientIndex, SecureReceivedCallback);
|
mySecureTCPServer.ReceiveDataAsync(clientIndex, SecureReceivedCallback);
|
||||||
if (mySecureTCPServer.State != ServerState.SERVER_LISTENING && MaxConnections > 1)
|
if (mySecureTCPServer.State != ServerState.SERVER_LISTENING && MaxConnections > 1 && !ServerStopped)
|
||||||
SecureServer.WaitForConnectionAsync(IPAddress.Any, SecureConnectCallback);
|
SecureServer.WaitForConnectionAsync(IPAddress.Any, SecureConnectCallback);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -412,7 +357,7 @@ namespace PepperDash_Core
|
|||||||
Debug.Console(0, "Connected to client at {0}", myTCPServer.GetAddressServerAcceptedConnectionFromForSpecificClient(clientIndex));
|
Debug.Console(0, "Connected to client at {0}", myTCPServer.GetAddressServerAcceptedConnectionFromForSpecificClient(clientIndex));
|
||||||
myTCPServer.ReceiveDataAsync(clientIndex, UnsecureReceivedCallback);
|
myTCPServer.ReceiveDataAsync(clientIndex, UnsecureReceivedCallback);
|
||||||
}
|
}
|
||||||
if (myTCPServer.State != ServerState.SERVER_LISTENING && MaxConnections > 1)
|
if (myTCPServer.State != ServerState.SERVER_LISTENING && MaxConnections > 1 && !ServerStopped)
|
||||||
UnsecureServer.WaitForConnectionAsync(IPAddress.Any, UnsecureConnectCallback);
|
UnsecureServer.WaitForConnectionAsync(IPAddress.Any, UnsecureConnectCallback);
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
@@ -483,7 +428,7 @@ namespace PepperDash_Core
|
|||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Methods - EventHelper
|
#region Methods - EventHelpers/Callbacks
|
||||||
void onConnectionChange()
|
void onConnectionChange()
|
||||||
{
|
{
|
||||||
var handler = ClientConnectionChange;
|
var handler = ClientConnectionChange;
|
||||||
@@ -502,6 +447,16 @@ namespace PepperDash_Core
|
|||||||
if (handler != null)
|
if (handler != null)
|
||||||
TextReceived(this, new GenericCommMethodReceiveTextArgs(text));
|
TextReceived(this, new GenericCommMethodReceiveTextArgs(text));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CrestronEnvironment_ProgramStatusEventHandler(eProgramStatusEventType programEventType)
|
||||||
|
{
|
||||||
|
if (programEventType == eProgramStatusEventType.Stopping)
|
||||||
|
{
|
||||||
|
Debug.Console(1, this, "Program stopping. Closing server");
|
||||||
|
DisconnectAllClients();
|
||||||
|
StopListening();
|
||||||
|
}
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Binary file not shown.
Binary file not shown.
@@ -10,8 +10,8 @@
|
|||||||
<ArchiveName />
|
<ArchiveName />
|
||||||
</RequiredInfo>
|
</RequiredInfo>
|
||||||
<OptionalInfo>
|
<OptionalInfo>
|
||||||
<CompiledOn>3/15/2017 12:09:01 AM</CompiledOn>
|
<CompiledOn>3/15/2017 3:30:41 PM</CompiledOn>
|
||||||
<CompilerRev>1.0.6282.41670</CompilerRev>
|
<CompilerRev>1.0.6283.26120</CompilerRev>
|
||||||
</OptionalInfo>
|
</OptionalInfo>
|
||||||
<Plugin>
|
<Plugin>
|
||||||
<Version>Crestron.SIMPLSharp, Version=2.0.52.0, Culture=neutral, PublicKeyToken=812d080f93e2de10</Version>
|
<Version>Crestron.SIMPLSharp, Version=2.0.52.0, Culture=neutral, PublicKeyToken=812d080f93e2de10</Version>
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -1,4 +1,4 @@
|
|||||||
MainAssembly=PepperDash_Core.dll:5c64dc849bf12d4e264b1963b820aee1
|
MainAssembly=PepperDash_Core.dll:36d08f49a05b4a3b41534e1c11044524
|
||||||
MainAssemblyMinFirmwareVersion=1.007.0017
|
MainAssemblyMinFirmwareVersion=1.007.0017
|
||||||
MainAssemblyResource=SimplSharpData.dat:315526abf906cded47fb0c7510266a7e
|
MainAssemblyResource=SimplSharpData.dat:315526abf906cded47fb0c7510266a7e
|
||||||
ü
|
ü
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user