//
        //
        //
        //
        #endregion//Public Methods


        #region Private Methods
        // *****************************************************************
        // ****                     Private Methods                     ****
        // *****************************************************************
        //
        //
        protected void ProcessRemoteEngineHubEvents(object sender, EventArgs eventArgs)
        {
            if (eventArgs is EngineEventArgs)
            {
                EngineEventArgs eventArg = (EngineEventArgs)eventArgs;
                switch (eventArg.MsgType)
                {
                case EngineEventArgs.EventType.NewEngine:
                    ProcessNewEngine(eventArg);
                    break;

                default:
                    if (eventArg.Status == EngineEventArgs.EventStatus.Confirm)     // TODO: pass fails too?
                    {
                        EngineEventArgs outEventArg = new EngineEventArgs();
                        eventArg.CopyTo(outEventArg);
                        outEventArg.EngineHubName = m_LocalStrategyHub.HubName;
                        ((StrategyHub)m_LocalStrategyHub).OnEngineChanged(outEventArg);
                    }
                    break;
                }
            }
            else
            {
                m_LocalStrategyHub.Log.NewEntry(LogLevel.Error, "ProcessRemoteEvents: Unknown event {0}", eventArgs);
            }
        }//ProcessRemoteEngineHubEvents
        public override void ProcessEvent(EventArgs eArgs)
        {
            if ((eArgs is EngineEventArgs) == false)
            {
                m_LocalStrategyHub.Log.NewEntry(LogLevel.Error, "ProcessEvent: Unknown event {0}", eArgs);
                return;
            }
            EngineEventArgs eventArgs = (EngineEventArgs)eArgs;

            if (eventArgs.Status == EngineEventArgs.EventStatus.Request)
            {
                if (eventArgs.EngineHubName.Equals(m_LocalStrategyHub.HubName))
                {
                    EngineEventArgs outEventArg = new EngineEventArgs();
                    eventArgs.CopyTo(outEventArg);
                    outEventArg.EngineHubName = m_RemoteExecutionHub.ServiceName;
                    m_RemoteExecutionHub.HubEventEnqueue(outEventArg);
                }
            }
            else
            {
                m_LocalStrategyHub.Log.NewEntry(LogLevel.Error, "ProcessEvent: Recieved non-request {0}", eventArgs);
            }
        }//ProcessEvent()