Exemple #1
0
        public void Connect(IPEndPoint hostEndpoint, OnConnectionEstablished onConnectionEstablished = null,
                            OnConnectionFailure onConnectionFailure = null, OnDisconnected onDisconnected = null)
        {
            var connectionId = _transporter.Connect(hostEndpoint);

            _connections[connectionId] = new ConnectionRegistration {
                OnConnectionEstablished = onConnectionEstablished ?? EmptyOnConnectionEstablished,
                OnDisconnected          = onDisconnected ?? EmptyOnDisconnected
            };
        }
        public void Connect(IPEndPoint hostEndpoint,
                            OnConnectionEstablished onConnectionEstablished = null,
                            OnConnectionFailure onConnectionFailure         = null,
                            OnDisconnected onDisconnected = null)
        {
            var connectionRegistration = new ConnectionRegistration();

            connectionRegistration.Timestamp               = Time.realtimeSinceStartup;
            connectionRegistration.ConnectionId            = ConnectionId.NoConnection;
            connectionRegistration.PublicEndpoint          = hostEndpoint;
            connectionRegistration.OnConnectionEstablished = onConnectionEstablished ?? EmptyOnConnectionEstablished;
            connectionRegistration.OnConnectionFailure     = onConnectionFailure ?? EmptyOnConnectionFailure;
            connectionRegistration.OnDisconnected          = onDisconnected ?? EmptyOnDisconnected;

            var punchId = _natPunchClient.Punch(hostEndpoint, OnPunchSuccess, OnPunchFailure);

            _punchAttempts.Add(punchId, connectionRegistration);
        }
Exemple #3
0
        public ConnectionId Connect(IPEndPoint hostEndpoint,
                                    ApprovalSecret approvalSecret,
                                    OnConnectionEstablished onConnectionEstablished = null,
                                    OnConnectionFailure onConnectionFailure         = null,
                                    OnDisconnected onDisconnected = null)
        {
            var connectionId = _connectionIdPool.Take();

            _transporter.Connect(connectionId, approvalSecret, hostEndpoint);
            _connections[connectionId] = new ConnectionRegistration {
                Endpoint = hostEndpoint,
                OnConnectionEstablished = onConnectionEstablished ?? EmptyOnConnectionEstablished,
                OnConnectionFailure     = onConnectionFailure ?? EmptyOnConnectionFailure,
                OnDisconnected          = onDisconnected ?? EmptyOnDisconnected,
                Status = ConnectionStatus.Pending,
            };
            return(connectionId);
        }
 private void AddConnectionAttempt(ConnectionId connectionId, ConnectionRegistration registration)
 {
     registration.ConnectionId = connectionId;
     _connectionAttempts.Add(connectionId, registration);
     _connectionAttemptRegistrations.Add(registration);
 }
 private void CancelPunchAttempt(NatPunchId punchId, ConnectionRegistration registration)
 {
     _punchAttempts.Remove(punchId);
     _cancelledAttempts[registration.ConnectionId.Value] = ConnectionId.NoConnection;
     _connectionIdPool.Put(registration.ConnectionId);
 }
 private bool IsCancelled(ConnectionRegistration registration)
 {
     return(_cancelledAttempts[registration.ConnectionId.Value] == registration.ConnectionId);
 }