Ejemplo n.º 1
0
        public async Task StartListenerAsync()
        {
            Core.Log.LibVerbose("Starting Bot engine listener...");
            await Transport.ConnectAsync().ConfigureAwait(false);

            Core.Log.LibVerbose("Started.");
        }
Ejemplo n.º 2
0
        public IEnumerator Connect() => UniTask.ToCoroutine(async() =>
        {
            transport1.Scheme.Returns(new[] { "yomama" });
            transport2.Scheme.Returns(new[] { "kcp" });

            transport1.ConnectAsync(Arg.Any <Uri>())
            .Returns(UniTask.FromException <IConnection>(new ArgumentException("Invalid protocol")));

            // transport2 gives a connection
            transport2.ConnectAsync(Arg.Any <Uri>())
            .Returns(UniTask.FromResult(conn2));

            IConnection accepted1 = await transport.ConnectAsync(new Uri("kcp://localhost"));

            Assert.That(accepted1, Is.SameAs(conn2));
        });
Ejemplo n.º 3
0
        public async Task StartListenerAsync()
        {
            Core.Log.LibVerbose("Starting Bot engine listener...");
            await Transport.ConnectAsync().ConfigureAwait(false);

            OnConnected?.Invoke(this, EventArgs.Empty);
            Core.Log.LibVerbose("Started.");
        }
Ejemplo n.º 4
0
        public IEnumerator Connect() => RunAsync(async() =>
        {
            transport1.Supported.Returns(false);

            // transport2 gives a connection
            transport2.ConnectAsync(Arg.Any <Uri>())
            .Returns(Task.FromResult(conn2));

            IConnection accepted1 = await transport.ConnectAsync(new Uri("tcp4://localhost"));

            Assert.That(accepted1, Is.SameAs(conn2));
        });
Ejemplo n.º 5
0
        public async Task <RSocketClient> ConnectAsync()
        {
            await Transport.ConnectAsync();

            var server = RSocketProtocol.Handler2(this, Transport.Input, CancellationToken.None);

            ////TODO Move defaults to policy object
            new RSocketProtocol.Setup(keepalive: TimeSpan.FromSeconds(60), lifetime: TimeSpan.FromSeconds(180), metadataMimeType: "binary", dataMimeType: "binary").Write(Transport.Output);
            await Transport.Output.FlushAsync();

            return(this);
        }
Ejemplo n.º 6
0
        private void Init()
        {
            if (string.IsNullOrEmpty(Token))
            {
                Disconnect();
                return;
            }
            var args = new SocketAsyncEventArgs();

            args.RemoteEndPoint = new DnsEndPoint(DataHost, DataPort);
            args.Completed     += Transport_Connected;
            Transport.ConnectAsync(args);
        }
Ejemplo n.º 7
0
        private async void OnBroadcastReceived(EndPoint endPoint, ArraySegment <byte> buffer)
        {
            var msgParts = Encoding.ASCII.GetString(buffer.Array, buffer.Offset, buffer.Count).Split(':');
            var remoteId = Guid.Parse(msgParts[1]);

            if (_id == remoteId)
            {
                return;
            }

            var remoteIP       = ((IPEndPoint)endPoint).Address;
            var remotePort     = int.Parse(msgParts[2]);
            var remoteEndpoint = new IPEndPoint(remoteIP, remotePort);
            await _transport.ConnectAsync(remoteEndpoint);
        }
Ejemplo n.º 8
0
        public static async Task <DBusConnection> ConnectAsync(ClientSetupResult connectionContext, Action <Exception> onDisconnect, CancellationToken cancellationToken, IEnumerable <IClientObjectProvider> clientProviders)
        {
            var _entries = AddressEntry.ParseEntries(connectionContext.ConnectionAddress);

            if (_entries.Length == 0)
            {
                throw new ArgumentException("No addresses were found", nameof(connectionContext.ConnectionAddress));
            }

            Guid           _serverId = Guid.Empty;
            IMessageStream stream    = null;
            var            index     = 0;

            while (index < _entries.Length)
            {
                AddressEntry entry = _entries[index++];

                _serverId = entry.Guid;
                try
                {
                    stream = await Transport.ConnectAsync(entry, connectionContext, cancellationToken)
                             .TimeoutAfter(connectionContext.InitialTimeout)
                             .ConfigureAwait(false);
                }
                catch
                {
                    if (index < _entries.Length)
                    {
                        continue;
                    }
                    throw;
                }

                break;
            }
            return(await CreateAndConnectAsync(stream, onDisconnect, clientProviders, true, connectionContext.InitialTimeout));
        }