private void InitializeXcapPathParser() { if (pathParser == null) { pathParser = new XcapUriParser(); } pathParser.SetDefaultValue(); }
static void Main(string[] args) { var exePath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); ///////////////////////////////////////////////////////////////////////// serversManager = new ServersManager <HttpConnection>(new ServersManagerConfig()); serversManager.Bind(new ProtocolPort() { Protocol = ServerProtocol.Tcp, Port = 8080, }); serversManager.ServerAdded += ServersManager_ServerAdded; serversManager.ServerRemoved += ServersManager_ServerRemoved; serversManager.ServerInfo += ServersManager_ServerInfo; serversManager.NewConnection += ServersManager_NewConnection; serversManager.EndConnection += ServersManager_EndConnection; serversManager.Received += ServersManager_Received; serversManager.Sent += ServersManager_Sent; serversManager.Logger.Enable(exePath + @"\Log.pcap"); ///////////////////////////////////////////////////////////////////////// HttpMessage.BufferManager = new BufferManagerProxy(); ///////////////////////////////////////////////////////////////////////// Console.WriteLine(@"Loading DFA table..."); HttpMessageReader.LoadTables(exePath + @"\Http.Message.dfa"); XcapUriParser.LoadTables(exePath); ///////////////////////////////////////////////////////////////////////// xcapServer = new XcapServer(); xcapServer.AddHandler(new ResourceListsHandlerExample()); //xcapServer.AddHandler(new RlsServicesHandler()); ///////////////////////////////////////////////////////////////////////// httpServer = new HttpServer(); httpServer.SendAsync = serversManager.SendAsync; (httpServer as IHttpServerAgentRegistrar).Register(xcapServer, 0, true); ///////////////////////////////////////////////////////////////////////// Console.WriteLine(@"Starting..."); try { serversManager.Start(); Console.WriteLine(@"Started!"); } catch (Exception ex) { Console.WriteLine(@"Failed to start"); Console.WriteLine(@"Error: {0}", ex.Message); } ///////////////////////////////////////////////////////////////////////// Console.WriteLine(@"Press any key to stop server..."); Console.ReadKey(true); Console.WriteLine(); }
public Server() { #if !DEBUG crashHandler = new CrashHandler(); #endif HttpMessage.BufferManager = SipMessage.BufferManager = new BufferManagerProxy(); LoadConfiguration(); var configuration = SipServerConfigurationSection.GetSection(); if (configuration.AddToWindowsFirewall) { AddFirewallException(); } if (BufferManager.IsInitialized() == false) { BufferManager.Initialize(Math.Min((int)(GetTotalMemoryInBytes() / (1024 * 1024) / 2), 2048)); } if (Directory.Exists(configuration.AccountsPath) == false) { Directory.CreateDirectory(configuration.AccountsPath); } var initializer = new Initializer(ConfigurationMonitor_Changed); initializer.GetResults( out transportLayer, out transactionLayer, out locationService, out wcfService, out configurationMonitor, out trunkManager, out authorization, out userz, out adUsers, out mras, out httpServer, out accounts, out restapi, out proxyServerTU); if (configuration.IsActiveDirectoryEnabled) { accounts.ForEach((account) => { SetSpn(@"sip/" + account.DomainName); }); } RestapiUriParser.LoadTables(configuration.ExePath); XcapUriParser.LoadTables(configuration.ExePath); Http.Message.HttpMessageReader.InitializeAsync( (ms1) => { Sip.Message.SipMessageReader.InitializeAsync( (ms2) => { Tracer.WriteImportant(@"JIT-compilation Http.Message.dll " + (ms1 / 1000).ToString() + ", Sip.Message.dll: " + (ms2 / 1000).ToString() + " seconds."); try { transportLayer.Start(); Tracer.WriteImportant(@"Server started."); } catch (Exception ex) { Tracer.WriteException(@"Failed to start Servers Manager.", ex); } Initializer.ConfigureVoipProviders(trunkManager, configuration); }); }); }