Пример #1
0
        private void ActiveFactory_ConnectionAccept(object sender, ConnectionEventArgs client)
        {
            Connection server;

            try
            {
                server = PassiveFactory.Take();
            }
            catch
            {
                ActiveFactory.Free(client.Connection);
                return;
            }
            ProcessConnections(client.Connection, server);
        }
Пример #2
0
        protected virtual void ProcessConnections(Connection client, Connection server)
        {
            try
            {
                var pair = MakePair();
                ConfigurePair(pair);

                pair.Client.SetupConnection(client, false);
                pair.Server.SetupConnection(server, false);

                Accepting?.Invoke(this, pair);

                pair.Initialize();
                pair.Client.Start();
                pair.Server.Start();

                Accepted?.Invoke(this, pair);
            }
            catch
            {
                ActiveFactory.Free(client);
                PassiveFactory.Free(server);
            }
        }