示例#1
0
        public void Dispose()
        {
            if (m_Mgr != null)
            {
                m_Mgr.Dispose();
                m_Mgr = null;
            }
            if (m_DBMgr != null)
            {
                m_DBMgr.Dispose();
                m_DBMgr = null;
            }
            if (m_PumpMgr != null)
            {
                m_PumpMgr.Dispose();
                m_PumpMgr = null;
            }
            if (m_PumpMgrEx != null)
            {
                m_PumpMgrEx.Dispose();
                m_PumpMgrEx = null;
            }

            if (m_factory != null)
            {
                //m_factory.Dispose();
                m_factory = null;
            }
        }
示例#2
0
 //====================================================================
 void ReleasePumpManagerEx()
 {
     if (m_PumpMgrEx != null)
     {
         if (m_PumpMgrEx.IsConnected())
         {
             m_PumpMgrEx.Disconnect();
         }
         m_PumpMgrEx.Dispose();
     }
     m_PumpMgrEx = null;
 }
示例#3
0
 //====================================================================
 void ReleasePumpManager()
 {
     if (m_PumpMgr != null)
     {
         if (m_PumpMgr.IsConnected())
         {
             m_PumpMgr.Disconnect();
         }
         m_PumpMgr.Dispose();
     }
     m_PumpMgr = null;
 }
示例#4
0
        public ReturnCode CheckConnection(WorkerExecutionContext executionContext, bool pump = false)
        {
            // Check connection

            bool shouldConnect;

            if (_api == null)
            {
                _api          = _mt4Manager.CreateApi();
                shouldConnect = true;
            }
            else
            {
                shouldConnect = Ping() != ReturnCode.RET_OK;
            }

            // Connect

            if (shouldConnect)
            {
                var code = ConnectAndLogin();

                if (code != ReturnCode.RET_OK)
                {
                    executionContext.ContinuationDelay = ReconnectDelay;
                    return(code);
                }
            }

            if (pump && !_isPumpEnabled)
            {
                var code = RefreshSymbols(executionContext.CancellationToken);

                if (code != ReturnCode.RET_OK)
                {
                    LogError("Unable to enable pump because unable refresh symbols", code);
                    return(code);
                }

                code = Api.PumpingSwitchEx(OnPumpEx, 0);

                if (code != ReturnCode.RET_OK)
                {
                    LogError("Unable to enable pump because 'PumpingSwitchEx' method fails", code);
                    return(code);
                }

                _isPumpEnabled = true;
            }

            return(ReturnCode.RET_OK);
        }
示例#5
0
 public ManagerAPI(CManagerFactory factory)
 {
     m_factory = factory ?? throw new ArgumentNullException(nameof(factory));
     if (m_factory.IsValid() == false ||
         (m_PumpMgr = m_factory.Create()) == null ||
         (m_Mgr = m_factory.Create()) == null ||
         (m_PumpMgrEx = m_factory.Create()) == null)
     {
         m_isValid = false;
         return;
     }
     m_isValid = true;
     Debug.Assert(m_isValid);
 }
示例#6
0
 public void createDBMT4Manager()
 {
     Debug.Assert(m_DBMgr == null);
     m_DBMgr = m_factory.Create();
 }
示例#7
0
 public void Dispose()
 {
     _api?.Dispose();
     _api = null;
 }