public void ProcessRegisterRequest()
        {
            logger.Debug("SIPRegistrarCore is running at " + _localSipAccount.MsgProtocol + ":" +
                         _localSipAccount.LocalIP + ":" + _localSipAccount.LocalPort);
            try
            {
                while (!Stop)
                {
                    if (m_registerQueue.Count > 0)
                    {
                        try
                        {
                            SIPNonInviteTransaction registrarTransaction = null;
                            lock (m_registerQueue)
                            {
                                registrarTransaction = m_registerQueue.Dequeue();
                            }

                            if (registrarTransaction != null)
                            {
                                DateTime startTime = DateTime.Now;
                                var      result    = Register(registrarTransaction);
                                var      duration  = DateTime.Now.Subtract(startTime);

                                RegisterComplete?.Invoke(duration.TotalMilliseconds,
                                                         registrarTransaction.TransactionRequest.Header.AuthenticationHeader != null);

                                logger.Debug("Camera[" + registrarTransaction.RemoteEndPoint + " deviceid:" +
                                             registrarTransaction.TransactionRequest.Header.To.ToURI.User +
                                             "] have completed registering GB service.");
                                //CacheDeviceItem(registrarTransaction.TransactionRequest);

                                //device alarm subscribe
                                DeviceAlarmSubscribe?.Invoke(registrarTransaction);
                            }
                        }
                        catch (InvalidOperationException invalidOpExcp)
                        {
                            // This occurs when the queue is empty.
                            logger.Warn("InvalidOperationException ProcessRegisterRequest Register Job. " +
                                        invalidOpExcp.Message);
                        }
                        catch (Exception regExcp)
                        {
                            logger.Error("Exception ProcessRegisterRequest Register Job. " + regExcp.Message);
                        }
                    }
                    else
                    {
                        m_registerARE.WaitOne(MAX_PROCESS_REGISTER_SLEEP);
                    }
                }

                logger.Warn("ProcessRegisterRequest thread " + Thread.CurrentThread.Name + " stopping.");
            }
            catch (Exception excp)
            {
                logger.Error("Exception ProcessRegisterRequest (" + Thread.CurrentThread.Name + "). " + excp.Message);
            }
        }
Example #2
0
        public void ProcessRegisterRequest()
        {
            logger.Debug("SIPRegistrarCoreService successfully Running at :" + _localSipAccount.LocalIP + ":" + _localSipAccount.LocalPort);
            try
            {
                while (!Stop)
                {
                    if (m_registerQueue.Count > 0)
                    {
                        try
                        {
                            SIPNonInviteTransaction registrarTransaction = null;
                            lock (m_registerQueue)
                            {
                                registrarTransaction = m_registerQueue.Dequeue();
                            }

                            if (registrarTransaction != null)
                            {
                                DateTime startTime = DateTime.Now;
                                var      result    = Register(registrarTransaction);
                                var      duration  = DateTime.Now.Subtract(startTime);
                                FireProxyLogEvent(new SIPMonitorConsoleEvent(SIPMonitorServerTypesEnum.Registrar, SIPMonitorEventTypesEnum.RegistrarTiming, "register result=" + result.ToString() + ", time=" + duration.TotalMilliseconds + "ms, user="******".", null));
                                RegisterComplete?.Invoke(duration.TotalMilliseconds, registrarTransaction.TransactionRequest.Header.AuthenticationHeader != null);
                            }
                        }
                        catch (InvalidOperationException invalidOpExcp)
                        {
                            // This occurs when the queue is empty.
                            logger.Warn("InvalidOperationException ProcessRegisterRequest Register Job. " + invalidOpExcp.Message);
                        }
                        catch (Exception regExcp)
                        {
                            logger.Error("Exception ProcessRegisterRequest Register Job. " + regExcp.Message);
                        }
                    }
                    else
                    {
                        m_registerARE.WaitOne(MAX_PROCESS_REGISTER_SLEEP);
                    }
                }

                logger.Warn("ProcessRegisterRequest thread " + Thread.CurrentThread.Name + " stopping.");
            }
            catch (Exception excp)
            {
                logger.Error("Exception ProcessRegisterRequest (" + Thread.CurrentThread.Name + "). " + excp.Message);
            }
        }
Example #3
0
        private void ProcessRegisterRequest(string threadName)
        {
            try
            {
                Thread.CurrentThread.Name = threadName;

                while (!Stop)
                {
                    if (m_registerQueue.Count > 0)
                    {
                        try
                        {
                            if (m_registerQueue.TryDequeue(out var registrarTransaction))
                            {
                                DateTime           startTime = DateTime.Now;
                                RegisterResultEnum result    = Register(registrarTransaction);
                                TimeSpan           duration  = DateTime.Now.Subtract(startTime);

                                RegisterComplete?.Invoke(duration.TotalMilliseconds, registrarTransaction.TransactionRequest.Header.AuthenticationHeader != null);
                            }
                        }
                        catch (Exception regExcp)
                        {
                            Logger.LogError("Exception ProcessRegisterRequest Register Job. " + regExcp.Message);
                        }
                    }
                    else
                    {
                        m_registerARE.WaitOne(MAX_PROCESS_REGISTER_SLEEP);
                    }
                }

                Logger.LogWarning("ProcessRegisterRequest thread " + Thread.CurrentThread.Name + " stopping.");
            }
            catch (Exception excp)
            {
                Logger.LogError("Exception ProcessRegisterRequest (" + Thread.CurrentThread.Name + "). " + excp);
            }
        }
 /// <summary>Called when the engine has completed registering the location and visilibity of the bundle.</summary>
 /// <param name="args">The arguments of the event.</param>
 public void OnRegisterComplete(WPFBootstrapperEventArgs <Wix.RegisterCompleteEventArgs> args)
 {
     RegisterComplete?.Invoke(this, args);
 }