SIPSorcery.Entities.SIPProviderBinding.SetProviderFields C# (CSharp) Method

SetProviderFields() public method

public SetProviderFields ( SIPProvider sipProvider ) : void
sipProvider SIPProvider
return void
        public void SetProviderFields(SIPProvider sipProvider)
        {
            ProviderID = sipProvider.ID;
            Owner = sipProvider.Owner;
            AdminMemberID = sipProvider.AdminMemberID;
            ProviderName = sipProvider.ProviderName;
            ProviderAuthUsername = (!sipProvider.ProviderAuthUsername.IsNullOrBlank()) ? sipProvider.ProviderAuthUsername : sipProvider.ProviderUsername;
            ProviderPassword = sipProvider.ProviderPassword;
            RegistrarServer = sipProvider.GetRegistrar();
            RegistrarRealm = (!sipProvider.RegisterRealm.IsNullOrBlank()) ? sipProvider.RegisterRealm : RegistrarServer.Host;
            ProviderOutboundProxy = sipProvider.ProviderOutboundProxy;

            if (sipProvider.RegisterEnabled)
            {
                BindingExpiry = (sipProvider.RegisterExpiry.HasValue) ? sipProvider.RegisterExpiry.Value : 0;
            }
            else
            {
                BindingExpiry = 0;
            }

            string bindingId = null;
            SIPURI binding = (!BindingURI.IsNullOrBlank()) ? SIPURI.ParseSIPURIRelaxed(BindingURI) : null;
            if (binding != null && binding.Parameters.Has(REGAGENT_CONTACT_ID_KEY))
            {
                bindingId = binding.Parameters.Get(REGAGENT_CONTACT_ID_KEY);
            }

            if (!sipProvider.RegisterContact.IsNullOrBlank())
            {
                binding = SIPURI.ParseSIPURI(sipProvider.RegisterContact);
                if (!bindingId.IsNullOrBlank())
                {
                    binding.Parameters.Set(REGAGENT_CONTACT_ID_KEY, bindingId);
                }

                if (binding != null)
                {
                    BindingURI = binding.ToString();
                }
                else
                {
                    BindingURI = null;
                    BindingExpiry = 0;
                }
            }
            else
            {
                // The register contact field on the SIP Provider is empty.
                // This condition needs to be trearted as the binding being disabled and it needs to be removed.
                BindingExpiry = 0;
            }
        }

Usage Example

Ejemplo n.º 1
0
        public static void SIPProviderUpdated(SIPProvider sipProvider)
        {
            try
            {
                logger.Debug("SIPProviderBindingSynchroniser SIPProviderUpdated for " + sipProvider.Owner + " and " + sipProvider.ProviderName + ".");

                using (SIPSorceryEntities sipSorceryEntities = new SIPSorceryEntities())
                {
                    SIPProviderBinding existingBinding = (from binding in sipSorceryEntities.SIPProviderBindings
                                                          where binding.ProviderID == sipProvider.ID
                                                          select binding).FirstOrDefault();

                    if (sipProvider.RegisterEnabled)
                    {
                        if (existingBinding == null)
                        {
                            AddNewBindingForProvider(sipSorceryEntities, sipProvider);
                        }
                        else
                        {
                            existingBinding.SetProviderFields(sipProvider);
                            existingBinding.NextRegistrationTime = DateTime.UtcNow.ToString("o");
                            sipSorceryEntities.SaveChanges();
                        }
                    }
                    else
                    {
                        if (existingBinding != null)
                        {
                            if (existingBinding.IsRegistered)
                            {
                                // Let the registration agent know the existing binding should be expired.
                                existingBinding.BindingExpiry        = 0;
                                existingBinding.NextRegistrationTime = DateTime.UtcNow.ToString("o");
                                sipSorceryEntities.SaveChanges();
                            }
                            else
                            {
                                sipSorceryEntities.SIPProviderBindings.DeleteObject(existingBinding);
                                sipSorceryEntities.SaveChanges();
                            }
                        }
                    }
                }
            }
            catch (Exception excp)
            {
                logger.Error("Exception SIPProviderBindingSynchroniser SIPProviderUpdated. " + excp.Message);
            }
        }
All Usage Examples Of SIPSorcery.Entities.SIPProviderBinding::SetProviderFields