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));
        }
Exemplo n.º 2
0
        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);
                }
            });
        }
Exemplo n.º 4
0
 public PrivateServerStatusController(PrivateServerHubConnection <TransporterHub> connection, PrivateServerHubConnection <SocketHub> socketConnection, ConcurrentDictionary <Guid, SocketConnection> socketConnectionDictionary)
 {
     this.connection                 = connection;
     this.socketConnection           = socketConnection;
     this.socketConnectionDictionary = socketConnectionDictionary;
 }