public void Stop()
        {
            if (!m_started)
            {
                return;
            }
            try
            {
                Log.WriteLine(LogLevel.Debug, "Stopping communication instance.");

                //  TODO notify the modules
                if (HasHttpEndpoints())
                {
                    StopHttpServer();
                }

                //  Unregister cloud storage
                memory_cloud = null;

                //  Shutdown message passing networking
                NativeNetwork.StopTrinityServer();

                //  Unregister communication instance
                Global.CommunicationInstance = null;
                var _config = TrinityConfig.CurrentClusterConfig;
                m_started = false;
                Log.WriteLine("{0} {1} is successfully stopped.", RunningMode, _config.MyInstanceId);
            }
            catch (Exception ex)
            {
                Log.WriteLine(LogLevel.Error, "CommunicationInstance: " + ex.ToString());
            }
        }
Example #2
0
        /// <summary>
        /// Stop listening for incoming connections.
        /// </summary>
        protected virtual void StopCommunicationListeners()
        {
            if (HasHttpEndpoints())
                StopHttpServer();

            //  Shutdown message passing networking
            NativeNetwork.StopTrinityServer();
        }
Example #3
0
        /// <summary>
        /// Starts a Trinity instance.
        /// </summary>
        public void Start()
        {
            lock (m_lock)
            {
                if (m_started)
                {
                    return;
                }
                try
                {
                    Log.WriteLine(LogLevel.Debug, "Starting communication instance.");
                    var _config = TrinityConfig.CurrentClusterConfig;

                    _config.RunningMode          = this.RunningMode;
                    Global.CommunicationInstance = this;

                    if (_InstanceList.Count == 0)
                    {
                        Log.WriteLine(LogLevel.Warning, "No distributed instances configured. Turning on local test mode.");
                        TrinityConfig.LocalTest = true;
                    }

                    //  Initialize message handlers
                    MessageHandlers.Initialize();
                    RegisterMessageHandler();

                    //  Initialize message passing networking
                    NativeNetwork.StartTrinityServer((UInt16)_config.ListeningPort);
                    Log.WriteLine("My IPEndPoint: " + _config.MyBoundIP + ":" + _config.ListeningPort);

                    //  Initialize cloud storage
                    memory_cloud = Global.CloudStorage;

                    //  Initialize the modules
                    _InitializeModules();

                    if (HasHttpEndpoints())
                    {
                        StartHttpServer();
                    }

                    Console.WriteLine("Working Directory: {0}", Global.MyAssemblyPath);
                    Console.WriteLine(_config.OutputCurrentConfig());
                    Console.WriteLine(TrinityConfig.OutputCurrentConfig());

                    m_started = true;
                    Log.WriteLine("{0} {1} is successfully started.", RunningMode, _config.MyInstanceId);
                    _RaiseStartedEvents();
                }
                catch (Exception ex)
                {
                    Log.WriteLine(LogLevel.Error, "CommunicationInstance: " + ex.ToString());
                }
            }
        }
Example #4
0
        /// <summary>
        /// Start listening for incoming connections. When this method is called,
        /// it is guaranteed that <see cref="MessageDispatcher"/> is available for consumption.
        /// </summary>
        protected virtual void StartCommunicationListeners()
        {
            var _config = TrinityConfig.CurrentClusterConfig;
            var _si = _config.GetMyServerInfo() ?? _config.GetMyProxyInfo();
            var _my_ip = Global.MyIPAddress;

            if (_si != null) _my_ip = NetworkUtility.Hostname2IPv4Address(_si.HostName);

            //  Initialize message passing networking
            NativeNetwork.StartTrinityServer((UInt16)_config.ListeningPort);
            //  XXX might not be accurate: NativeNetwork.StartTrinityServer listens on all servers.
            Log.WriteLine("My IPEndPoint: " + _my_ip + ":" + _config.ListeningPort);

            //  Initialize Http server
            if (HasHttpEndpoints())
                StartHttpServer();
        }