// -----------------------------------------------------------------
        /// <summary>
        /// Initialise this shared module
        /// </summary>
        /// <param name="scene">this region is getting initialised</param>
        /// <param name="source">nini config, we are not using this</param>
        // -----------------------------------------------------------------
        public void Initialise(IConfigSource config)
        {
            try 
            {
                if ((m_config = config.Configs["Dispatcher"]) == null)
                {
                    // There is no configuration, the module is disabled
                    m_log.InfoFormat("[Dispatcher] no configuration info");
                    return;
                }

                m_enabled = m_config.GetBoolean("Enabled", m_enabled);
                if (m_enabled)
                {
                    IPAddress[] ips = Dns.GetHostAddresses(Dns.GetHostName());
                    m_host = ips[0].ToString();

                    m_host = m_config.GetString("HostAddress",m_host);
                    m_udpport = m_config.GetInt("UDPPort",m_udpport);
                    m_abinding = String.Format("{0}:{1}",m_host,m_udpport);

                    m_httppath = m_config.GetString("HTTPPath",m_httppath);
                    if (! m_httppath.StartsWith("/"))
                        m_httppath = "/" + m_httppath;
                    if (! m_httppath.EndsWith("/"))
                        m_httppath = m_httppath + "/";
                    m_sbinding = String.Format("http://{0}:{1}{2}",m_host,MainServer.Instance.Port,m_httppath);

                    m_maxRequestThreads = m_config.GetInt("MaxAsyncThreads",m_maxRequestThreads);
                    m_maxInterPingTime = m_config.GetInt("MaxInterPingTime",m_maxInterPingTime);

                    m_authorizer = new AuthHandlers(m_config,this);
                    m_infohandler = new InfoHandlers(m_config,this);
                    m_endpointhandler = new EndPointHandlers(m_config,this);

                    m_commands = new DispatcherCommandModule(m_config,this);
                }
            }
            catch (Exception e)
            {
                m_log.ErrorFormat("[Dispatcher] initialization error: {0}",e.Message);
                return;
            }

            m_log.WarnFormat("[Dispatcher] module {0} enabled, udp binding {1}, http binding {2}",
                             (m_enabled ? "is" : "is not"),m_abinding,m_sbinding);
        }
        // -----------------------------------------------------------------
        /// <summary>
        /// Initialise this shared module
        /// </summary>
        /// <param name="scene">this region is getting initialised</param>
        /// <param name="source">nini config, we are not using this</param>
        // -----------------------------------------------------------------
        public void Initialise(IConfigSource config)
        {
            try 
            {
                string configFileName = "Dispatcher.ini";
                string configFilePath;
                bool created;

                if (! Util.MergeConfigurationFile(config, configFileName, "", out configFilePath, out created))
                {
                    string exampleConfigFile = Path.Combine(AssemblyDirectory, "Dispatcher.ini.example");
                    m_log.WarnFormat("[Dispatcher] please edit configuration at {0} before running this module, an example can be found at {1}",
                                     configFilePath, exampleConfigFile);
                }

                if ((m_config = config.Configs["Dispatcher"]) == null)
                {
                    // There is no configuration, the module is disabled
                    m_log.InfoFormat("[Dispatcher] no configuration info, module disabled");
                    return;
                }

                m_enabled = m_config.GetBoolean("Enabled", m_enabled);
                if (m_enabled)
                {
                    IPAddress[] ips = Dns.GetHostAddresses(Dns.GetHostName());
                    m_host = ips[0].ToString();

                    m_host = m_config.GetString("HostAddress",m_host);
                    m_udpport = m_config.GetInt("UDPPort",m_udpport);
                    m_abinding = String.Format("{0}:{1}",m_host,m_udpport);

                    m_httppath = m_config.GetString("HTTPPath",m_httppath);
                    if (! m_httppath.StartsWith("/"))
                        m_httppath = "/" + m_httppath;
                    if (! m_httppath.EndsWith("/"))
                        m_httppath = m_httppath + "/";
                    m_sbinding = String.Format("http://{0}:{1}{2}",m_host,MainServer.Instance.Port,m_httppath);

                    m_maxRequestThreads = m_config.GetInt("MaxAsyncThreads",m_maxRequestThreads);
                    m_maxInterPingTime = m_config.GetInt("MaxInterPingTime",m_maxInterPingTime);

                    m_filterIPs = m_config.GetBoolean("UseIPAddressFiltering",m_filterIPs);
                    m_filterPattern = m_config.GetString("AcceptableIPAddressPattern",m_filterPattern);
                    if (! String.IsNullOrEmpty(m_filterPattern))
                    {
                        try
                        {
                            m_filterRegex = new Regex(m_filterPattern);
                            //m_log.DebugFormat("[Dispatcher] filtering ip addresses with pattern <{0}>",m_filterPattern);
                        }
                        catch (Exception e)
                        {
                            m_log.WarnFormat("[Dispatcher] failed to parse regular expression in AcceptableIPAddressPattern");
                            m_filterRegex = null;
                        }
                    }

                    m_authorizer = new AuthHandlers(m_config,this);
                    m_infohandler = new InfoHandlers(m_config,this);
                    m_endpointhandler = new EndPointHandlers(m_config,this);

                    m_commands = new DispatcherCommandModule(m_config,this);
                }
            }
            catch (Exception e)
            {
                m_log.ErrorFormat("[Dispatcher] initialization error: {0}",e.Message);
                return;
            }

            m_log.WarnFormat("[Dispatcher] module {0} enabled, udp binding {1}, http binding {2}",
                             (m_enabled ? "is" : "is not"),m_abinding,m_sbinding);
        }