Beispiel #1
0
        /// <summary>
        /// TODO: Documentation StartAutoRefresh
        /// </summary>
        public void StartAutoRefresh(TurnManager turnManager)
        {
            this.refreshTimer = new Timer();
            this.refreshTimer.AutoReset = true;

            this.refreshTimer.Interval = (this.LifeTime * 1000) - 60000; // lifetime - 1min
            this.refreshTimer.Elapsed += new ElapsedEventHandler((sender, e) => { this.AutoRefresh(turnManager); });
            this.refreshTimer.Start();
        }
Beispiel #2
0
        /// <summary>
        /// TODO: Documentation ConnectionBind
        /// </summary>
        /// <param name="connectionId"></param>
        /// <param name="username"></param>
        /// <param name="password"></param>
        public void ConnectionBind(StunAttribute connectionId, String username, String password)
        {
            this.TurnTcpManager = new TurnManager(this.StunClient.ServerEP,
                                                  this.StunClient.ProtocolType,
                                                  this.StunClient.ClientCertificate,
                                                  this.StunClient.RemoteCertificateValidation);

            this.TurnTcpManager.OnAllocateSucceed += (object sender, TurnAllocation allocation, StunMessage sentMsg, StunMessage receivedMsg) =>
                {
                    StunMessage msg = new StunMessage(StunMethodType.ConnectionBind, StunMethodClass.Request, StunUtilities.NewTransactionId);

                    msg.Turn.ConnectionId = connectionId;
                    msg.Stun.Username = new UTF8Attribute(StunAttributeType.Username, allocation.Username);
                    msg.Stun.Realm = new UTF8Attribute(StunAttributeType.Realm, allocation.Realm);
                    msg.Stun.Nonce = new UTF8Attribute(StunAttributeType.Nonce, allocation.Nonce);

                    msg.AddMessageIntegrity(allocation.Password, true);

                    this.TurnTcpManager.StunClient.BeginSendMessage(msg, this.TurnTcpManager.StunClient.Socket);
                };

            this.TurnTcpManager.OnConnectionBindSucceed += (object sender, Socket connectedSocket, StunMessage receivedMsg) =>
                {
                    this.TurnTcpManager.Allocations.Clear();
                    this.TurnTcpManager.StunClient.Cancel = true;

                    if (this.OnConnectionBindSucceed != null)
                        this.OnConnectionBindSucceed(sender, connectedSocket, receivedMsg);
                };

            this.TurnTcpManager.Connect();
            this.TurnTcpManager.Allocate(username, password);
        }
Beispiel #3
0
        /// <summary>
        /// TODO: Documentation AutoRefresh
        /// </summary>
        /// <param name="turnManager"></param>
        private void AutoRefresh(TurnManager turnManager)
        {
            turnManager.RefreshAllocation(this, this.LifeTime);

            this.refreshTimer.Interval = (this.LifeTime * 1000) - 60000; // lifetime - 1min
        }
Beispiel #4
0
        /// <summary>
        /// TODO: Documentation AutoRefresh
        /// </summary>
        /// <param name="turnManager"></param>
        private void AutoRefresh(TurnManager turnManager)
        {
            turnManager.RefreshAllocation(this, this.LifeTime);

            this.refreshTimer.Interval = (this.LifeTime * 1000) - 60000; // lifetime - 1min
        }
        /// <summary>
        /// TODO: Documentation CreateTurnSession
        /// </summary>
        /// <param name="sid"></param>
        /// <param name="useTurnOnly"></param>
        private void CreateTurnSession(String sid, Boolean useTurnOnly)
        {
            TurnManager turnManager = new TurnManager(this.StunServerEP, ProtocolType.Tcp, this.TurnClientCertificate, this.TurnRemoteCertificateValidation);

            turnManager.OnAllocateSucceed += new TurnAllocateSuccessHandler(this.turnManager_OnAllocateSucceed);
            turnManager.OnAllocateFailed += new StunMessageReceptionHandler(this.turnManager_OnAllocateFailed);
            turnManager.OnConnectionAttemptReceived += new StunIndicationReceptionHandler(this.turnManager_OnConnectionAttemptReceived);
            turnManager.OnConnectionBindSucceed += new TurnConnectionBindSuccessHandler(this.turnManager_OnConnectionBindSucceed);

            turnManager.Connect();
            turnManager.Allocate(this.TurnUsername, this.TurnPassword);

            this.turnSessions.Add(sid, new TurnSession() { TurnManager = turnManager, UseTurnOnly = useTurnOnly });
        }