diff options
| author | Mirta <mirta@twine-s.com> | 2020-12-30 16:39:52 +0200 |
|---|---|---|
| committer | Mirta <mirta@twine-s.com> | 2020-12-30 16:39:52 +0200 |
| commit | 00a491d93733d4625ad329b2ba8237f445364b3f (patch) | |
| tree | 4b24c6fa78d7648f4bb7cefafa464bb0b063fec4 /Software/Visual_Studio/Web/Tango.MachineService/Hubs/ExternalBridgeHub.cs | |
| parent | 124ad4150f80c6846fdee41dbbda9848c105f6e5 (diff) | |
| download | Tango-00a491d9.tar.gz Tango-00a491d9.zip | |
merge
Diffstat (limited to 'Software/Visual_Studio/Web/Tango.MachineService/Hubs/ExternalBridgeHub.cs')
| -rw-r--r-- | Software/Visual_Studio/Web/Tango.MachineService/Hubs/ExternalBridgeHub.cs | 189 |
1 files changed, 0 insertions, 189 deletions
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/Hubs/ExternalBridgeHub.cs b/Software/Visual_Studio/Web/Tango.MachineService/Hubs/ExternalBridgeHub.cs deleted file mode 100644 index 9b7f734d2..000000000 --- a/Software/Visual_Studio/Web/Tango.MachineService/Hubs/ExternalBridgeHub.cs +++ /dev/null @@ -1,189 +0,0 @@ -using Microsoft.AspNet.SignalR; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using System.Web; -using Tango.Integration.ExternalBridge.Web; - -namespace Tango.MachineService.Hubs -{ - public class ExternalBridgeHub : Hub - { - private static List<ExternalBridgeInfo> _externalBridges; - private static List<MachineSession> _sessions; - - public class ExternalBridgeInfo - { - public String ConnectionID { get; set; } - public MachineInfo MachineInfo { get; set; } - } - - public class MachineSession - { - public String SessionID { get; set; } - public String ReceiverConnectionID { get; set; } - public String ControllerConnectionID { get; set; } - public ExternalBridgeInfo ExternalBridge { get; set; } - - public MachineSession() - { - SessionID = Guid.NewGuid().ToString(); - } - } - - static ExternalBridgeHub() - { - _externalBridges = new List<ExternalBridgeInfo>(); - _sessions = new List<MachineSession>(); - } - - public void RegisterMachine(MachineInfo machineInfo) - { - _externalBridges.RemoveAll(x => x.MachineInfo.SerialNumber == machineInfo.SerialNumber); - _sessions.RemoveAll(x => x.ExternalBridge.ConnectionID == Context.ConnectionId); - - machineInfo.IPAddress = GetIpAddress(); - - _externalBridges.Add(new ExternalBridgeInfo() - { - MachineInfo = machineInfo, - ConnectionID = Context.ConnectionId, - }); - } - - public void UnregisterMachine() - { - _externalBridges.RemoveAll(x => x.ConnectionID == Context.ConnectionId); - _sessions.RemoveAll(x => x.ExternalBridge.ConnectionID == Context.ConnectionId); - } - - public String Ping() - { - return "Ping"; - } - - public List<MachineInfo> GetAvailableMachines() - { - return _externalBridges.Select(x => x.MachineInfo).ToList(); - } - - public String CreateSession(String serialNumber) - { - var externalBridge = _externalBridges.SingleOrDefault(x => x.MachineInfo.SerialNumber == serialNumber); - - if (externalBridge != null) - { - var existingSession = GetSession(); - - if (existingSession != null) - { - _sessions.Remove(existingSession); - } - - MachineSession session = new MachineSession(); - session.ControllerConnectionID = Context.ConnectionId; - session.ExternalBridge = externalBridge; - _sessions.Add(session); - Clients.Client(externalBridge.ConnectionID).OnSessionCreated(session.SessionID); - return session.SessionID; - } - - return null; - } - - public void JoinSession(String sessionID) - { - var session = _sessions.SingleOrDefault(x => x.SessionID == sessionID); - - if (session != null) - { - session.ReceiverConnectionID = Context.ConnectionId; - Clients.Client(session.ControllerConnectionID).SessionCreated(); - } - } - - public void Write(List<byte[]> dataCollection) - { - var connectionID = GetOtherSideConnectionID(); - - if (connectionID != null) - { - Clients.Client(connectionID).DataAvailable(dataCollection); - } - } - - public void LeaveSession() - { - var connectionID = GetOtherSideConnectionID(); - ClearSession(); - Clients.Client(connectionID).OnSessionClosed(); - } - - public override Task OnDisconnected(bool stopCalled) - { - _externalBridges.RemoveAll(x => x.ConnectionID == Context.ConnectionId); - _sessions.RemoveAll(x => x.ControllerConnectionID == Context.ConnectionId || x.ReceiverConnectionID == Context.ConnectionId || x.ExternalBridge.ConnectionID == Context.ConnectionId); - return base.OnDisconnected(stopCalled); - } - - private void ClearSession() - { - _sessions.RemoveAll(x => x.ControllerConnectionID == Context.ConnectionId || x.ReceiverConnectionID == Context.ConnectionId); - } - - private MachineSession GetSession() - { - return _sessions.SingleOrDefault(x => x.ReceiverConnectionID == Context.ConnectionId || x.ControllerConnectionID == Context.ConnectionId); - } - - private String GetOtherSideConnectionID() - { - var session = GetSession(); - - if (session != null) - { - String connectionID = String.Empty; - - if (session.ReceiverConnectionID == Context.ConnectionId) - { - connectionID = session.ControllerConnectionID; - } - else - { - connectionID = session.ReceiverConnectionID; - } - - return connectionID; - } - - return null; - } - - protected string GetIpAddress() - { - try - { - string ipAddress; - object tempObject; - - Context.Request.Environment.TryGetValue("server.RemoteIpAddress", out tempObject); - - if (tempObject != null) - { - ipAddress = (string)tempObject; - } - else - { - ipAddress = ""; - } - - return ipAddress; - } - catch - { - return String.Empty; - } - } - } -}
\ No newline at end of file |
