public PrivateServer(PrivateServerHubConnection <TransporterHub> connection, ServerUri serverUri) { this.connection = connection; this.serverUri = serverUri; if (connection == null) { throw new NullReferenceException(nameof(connection)); } connection.HubConnection = new HubConnectionBuilder().WithUrl(connection.HubUrl).WithAutomaticReconnect().Build(); connection.HubConnection.On(Strings.GetRequestPacket, (Func <HttpRequestPacket, TextMapCarrier, Task>)(async(packet, carrier) => { var stream = connection.HubConnection.StreamAsync <byte[]>(Strings.SendRequestBody, packet.Id); await WebRequest(packet, carrier, async(s) => { await foreach (var ba in stream) { await s.WriteAsync(ba); } }).ConfigureAwait(false); })); connection.HubConnection.On <HttpRequestPacket, byte[], TextMapCarrier>(Strings.WebRequest, (packet, body, carrier) => WebrequestTask(packet, body, carrier)); }
public TransporterWebSocket(WebSocket webSocket, HttpContext context, Guid id) { this.Context = context ?? throw new ArgumentNullException(nameof(context)); if (!(Context.RequestServices.GetService(typeof(ConcurrentDictionary <Guid, SocketConnection>)) is ConcurrentDictionary <Guid, SocketConnection> connectionDictionary)) { throw new Exception("Requires ConnectionDictionary"); } ConnectionDictionary = connectionDictionary; if (!(Context.RequestServices.GetService(typeof(PrivateServerHubConnection <SocketHub>)) is PrivateServerHubConnection <SocketHub> pshc)) { throw new Exception($"Requires dependency {typeof(PrivateServerHubConnection<SocketHub>)}"); } this.privateServerHubConnection = pshc; this.socketConnection = new SocketConnection(webSocket, id, context); ConnectionDictionary.TryAdd(this.socketConnection.Id, this.socketConnection); }
public PrivateSocketServer(PrivateServerHubConnection <SocketHub> connection, ServerUri serverUri, ConcurrentDictionary <Guid, SocketConnection> connectionDictionary) { this.connection = connection; this.serverUri = serverUri; this.connectionDictionary = connectionDictionary; if (connection == null) { throw new NullReferenceException(nameof(connection)); } connection.HubConnection = new HubConnectionBuilder().WithUrl(connection.HubUrl).WithAutomaticReconnect().Build(); connection.HubConnection.On <Guid, SocketPacket>(Strings.TransporterToServer, (guid, packet) => { if (connectionDictionary.ContainsKey(guid)) // TODO: WTF? { connectionDictionary[guid].SocketWriter.Post(packet); } }); }
public PrivateServerStatusController(PrivateServerHubConnection <TransporterHub> connection, PrivateServerHubConnection <SocketHub> socketConnection, ConcurrentDictionary <Guid, SocketConnection> socketConnectionDictionary) { this.connection = connection; this.socketConnection = socketConnection; this.socketConnectionDictionary = socketConnectionDictionary; }