Esempio n. 1
0
        /// <summary>
        /// send a stuts message
        /// </summary>
        /// <param name="myState"></param>
        /// <param name="myText"></param>
        public void SendStatusMessage(KaiTrade.Interfaces.Status myState, string myText)
        {
            try
            {
                driverLog.Info(Name + ":" +myState.ToString() +":" + myText);
                // update the base session status
                UpdateStatus("DriverStatus", "", "", "", myState, myText);

                IDriverStatusMessage myDSM;

                setupStatus(out myDSM, myState, myText);

                KaiTrade.Interfaces.IMessage statusMsg = new K2DataObjects.Message();
                statusMsg.Format = "XML";
                statusMsg.Label = "DriverStatus";
                statusMsg.Data = JsonConvert.SerializeObject(myDSM);
                SendStatusMessage(statusMsg);
                _lastStatus = statusMsg;
            }
            catch(Exception myE)
            {
                log.Error("SendStatusMessage", myE);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Send a status message to all of our clients
        /// </summary>
        /// <param name="myMessage"></param>
        public void SendStatusMessage(KaiTrade.Interfaces.IMessage myMessage)
        {
            try
            {
                // only preserve status messages - do not save an advisory
                if (myMessage.Label == "DriverStatus")
                {
                    _lastStatus = myMessage;
                }
                foreach (KaiTrade.Interfaces.IClient myClient in _clients)
                {
                    if (myClient != null)
                    {
                        try
                        {
                            myClient.OnStatusMessage(myMessage);
                        }
                        catch (Exception myE)
                        {
                            //m_Log.Error("SendStatusMessage - invoke", myE);
                        }
                    }
                }
            }
            catch (Exception myE)
            {
                log.Error("SendStatusMessage", myE);
            }

        }
Esempio n. 3
0
        /// <summary>
        /// Send a FIX style status message specifing all parameters
        /// </summary>
        /// <param name="myState"></param>
        /// <param name="myText"></param>
        /// <param name="myBegin"></param>
        /// <param name="mySID"></param>
        /// <param name="myTID"></param>
        /// <param name="myFixName"></param>
        public void SendStatusMessage(KaiTrade.Interfaces.Status myState, string myText, string myBegin, string mySID, string myTID, string myFixName)
        {
            try
            {
                // Update a FIX session status
                UpdateStatus(myFixName, myBegin, myTID, mySID, myState, myText);

                IDriverStatusMessage myDSM;

                setupStatus(out myDSM, myState, myText);

                IDriverSession mySession = new DriverSession();
                mySession.SessionName = myFixName;              
                mySession.BeginString = myBegin;
                mySession.SID = mySID;
                mySession.TID = myTID;
                mySession.UserName = myFixName;
                mySession.State = myState;
                mySession.Text = myText;
                myDSM.Sessions.Add(mySession);
                
                KaiTrade.Interfaces.IMessage statusMsg = new K2DataObjects.Message();
                statusMsg.Format = "XML";
                statusMsg.Label = "DriverStatus";
                statusMsg.Data = JsonConvert.SerializeObject(myDSM);
                SendStatusMessage(statusMsg);
                _lastStatus = statusMsg;
            }
            catch (Exception myE)
            {
                log.Error("SendStatusMessage", myE);
            }

        }
Esempio n. 4
0
        public DriverBase()
        {
            // Set up logging - will participate in the standard toolkit log
            log = log4net.LogManager.GetLogger("KaiTrade");

            wireLog = log4net.LogManager.GetLogger("KaiTradeWireLog");
            driverLog = log4net.LogManager.GetLogger("KaiDriverLog");

            _state = new DriverState();
            _facade = AppFacade.Instance();

            _clOrdIDOrderMap = new Dictionary<string, OrderContext>();
            _apiIDOrderMap = new Dictionary<string, OrderContext>();
            _pXContexts = new Dictionary<string, PXUpdateContext>();

            _clients = new List<KaiTrade.Interfaces.IClient>();
            _publisherRegister = new Dictionary<string, KaiTrade.Interfaces.IPublisher>();
            _productGenericNameRegister = new Dictionary<string, string>();
            _productRegister = new Dictionary<string, KaiTrade.Interfaces.IProduct>();
            _externalProduct = new Dictionary<string, object>();
            _sessions = new Dictionary<string, IDriverSession>();
            _priceAgregators = new Dictionary<string, List<IPriceAgregator>>();
            _identity = System.Guid.NewGuid().ToString();

            // setup the components info - used on status messages
            SetComponentInfo(out _module, this, this.m_ID, "DriverManager", 0, "");

            // creat a last status object - used to report status when requested
            _lastStatus = new K2DataObjects.Message();

            _lastStatus.Label = "Status";
            _lastStatus.Data = "Loaded";
            _lastStatus.AppState = (int)KaiTrade.Interfaces.Status.loaded;
            _activeContextMap = new Dictionary<string, OrderContext>();
            _runningState = new DriverStatus();


            log.Info("MainMessageHandler Created");

            pxUpdates = new BlockingCollection<KaiTrade.Interfaces.IPXUpdate>();
            _pxUpdateProcessor = new PxUpdateProcessor(this, pxUpdates);
            _pXUpdateThread = new Thread(_pxUpdateProcessor.ThreadRun);
            _pXUpdateThread.Start();

            replaceRequests = new BlockingCollection<RequestData>();
            _replaceProcessor = new OrderReplaceProcessor(this, replaceRequests);
            _replaceUpdateThread = new Thread(_replaceProcessor.ThreadRun);
            _replaceUpdateThread.Start();

            //private BlockingCollection<List<KaiTrade.Interfaces.IDOMSlot>> slotUpdates;
            inboundMessages = new BlockingCollection<KaiTrade.Interfaces.IMessage>();      
            _inboundProcessor = new MessageProcessorThread(this, inboundMessages);
            _inboundProcessorThread = new Thread(_inboundProcessor.ThreadRun);
            _inboundProcessorThread.Start();

            outboundMessages = new BlockingCollection<KaiTrade.Interfaces.IMessage>();
            _outboundProcessor = new MessageProcessorThread(ref _clients, outboundMessages);
            _outboundProcessorThread = new Thread(_outboundProcessor.ThreadRun);
            _outboundProcessorThread.Start();

        }