Example #1
0
        /// <summary>
        /// Updates current connection status
        /// </summary>
        /// <param name="status"></param>
        /// <param name="x"></param>
        protected void SetConnectionStatus(ConnectionStatus status, Exception x = null)
        {
            var old = ConnectionStatus;

            if (ConnectionStatus == status)
            {
                return;
            }

            var ea = new ConnectionStatusEventArgs
            {
                Status    = status,
                Previous  = old,
                Exception = x
            };

            ConnectionStatus = status;

            OnConnectionStatusChanged(ea);

            if (x != null)
            {
                Logger.Error("TcpConnection disconnected by error: {0} {1} {2}", RemoteAddress, x.Message, x.StackTrace);
            }

            if (ConnectionStatus == ConnectionStatus.Disconnected)
            {
                Dispose();
            }
        }
Example #2
0
        void connection_ConnectionStatusChanged(object sender, ConnectionStatusEventArgs e)
        {
            var connection = (HyperServerConnection)sender;

            if (e.Status == ConnectionStatus.Disconnected)
            {
                Logger.Info("Session connection closed {0} {1}", SessionToken, connection.RemoteAddress);

                lock (_controlConnections)
                    lock (_transferConnections)
                    {
                        if (connection.IsControl)
                        {
                            _controlConnections.Remove(connection);
                            connection.SegmentRequested -= connection_SegmentRequested;

                            if (_controlConnections.Count == 0)
                            {
                                Logger.Info("No more control connections alive");
                            }
                        }
                        else
                        {
                            _transferConnections.Remove(connection);
                        }
                        if (_controlConnections.Count == 0 && _transferConnections.Count == 0)
                        {
                            OnClosed();
                        }
                    }

                connection.ConnectionStatusChanged -= connection_ConnectionStatusChanged;
            }
        }
        internal void QueueRobustConnectionNotification(int flags)
        {
            ConnectionStatusEventArgs privateData = null;

            switch (flags)
            {
            case 0x400:
                privateData = new ConnectionStatusEventArgs(ConnectionStatus.ConnectionRetrySucceeded);
                break;

            case 0x800:
                privateData = new ConnectionStatusEventArgs(ConnectionStatus.AutoDisconnectStarting);
                break;

            case 0x1000:
                privateData = new ConnectionStatusEventArgs(ConnectionStatus.InternalErrorAbort);
                break;

            case 0x40:
                privateData = new ConnectionStatusEventArgs(ConnectionStatus.AutoDisconnectSucceeded);
                break;

            case 0x100:
                privateData = new ConnectionStatusEventArgs(ConnectionStatus.NetworkFailureDetected);
                break;

            case 0x200:
                privateData = new ConnectionStatusEventArgs(ConnectionStatus.ConnectionRetryAttempt);
                break;
            }
            this.EnqueueAndStartProcessingThread(null, null, privateData);
        }
Example #4
0
 /// <summary>
 /// Called on connection status change
 /// </summary>
 /// <param name="e"></param>
 protected override void OnConnectionStatus(ConnectionStatusEventArgs e)
 {
     if (e.Status == ConnectionStatus.Connected || e.OldStatus == ConnectionStatus.Connecting)
     {
         lock (e.Connection.Accounts)
             foreach (Account account in e.Connection.Accounts)
             {
                 if (account.Name == AccountName)
                 {
                     lock (account.Positions)
                         foreach (Position positionTmp in account.Positions)
                         {
                             if (positionTmp.Instrument.IsEqual(Instrument))
                             {
                                 position = positionTmp;
                             }
                         }
                 }
             }
     }
     else if (e.Status == ConnectionStatus.Disconnected)
     {
         if (position != null && position.Account.Connection == e.Connection)
         {
             position = null;
             Value    = 0;
         }
     }
 }
Example #5
0
 /// <summary>
 /// Track reverse connection status.
 /// </summary>
 protected override void OnConnectionStatusChanged(object sender, ConnectionStatusEventArgs e)
 {
     lock (m_connections)
     {
         ReverseConnectProperty reverseConnection = null;
         if (m_connections.TryGetValue(e.EndpointUrl, out reverseConnection))
         {
             ServiceResult priorStatus = reverseConnection.ServiceResult;
             if (ServiceResult.IsBad(e.ChannelStatus))
             {
                 reverseConnection.ServiceResult = e.ChannelStatus;
                 if (e.ChannelStatus.Code == StatusCodes.BadTcpMessageTypeInvalid)
                 {
                     reverseConnection.State      = ReverseConnectState.Rejected;
                     reverseConnection.RejectTime = DateTime.UtcNow;
                     Utils.Trace($"Client Rejected Connection! [{reverseConnection.State}][{e.EndpointUrl}]");
                     return;
                 }
                 else
                 {
                     reverseConnection.State = ReverseConnectState.Closed;
                     Utils.Trace($"Connection Error! [{reverseConnection.State}][{e.EndpointUrl}]");
                     return;
                 }
             }
             reverseConnection.State = e.Closed ? ReverseConnectState.Closed : ReverseConnectState.Connected;
             Utils.Trace($"New Connection State! [{reverseConnection.State}][{e.EndpointUrl}]");
         }
         else
         {
             Utils.Trace($"Warning: Status changed for unknown connection: [{e.ChannelStatus}][{e.EndpointUrl}]");
         }
     }
 }
Example #6
0
 protected override void OnConnectionStatusUpdate(ConnectionStatusEventArgs connectionStatusUpdate)
 {
     if (connectionStatusUpdate.Status == ConnectionStatus.Connected)
     {
         Print("observed Connected at " + DateTime.Now);
         priceData.connectStatus = "Connected";
         priceData.connectTime   = DateTime.Now.ToShortTimeString();
         conMessage = "Connected";  conTime = DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString();
         updateConnection();
     }
     else if (connectionStatusUpdate.Status == ConnectionStatus.ConnectionLost)
     {
         Print("observed Connection lost at: " + DateTime.Now);
         priceData.connectStatus = "Connection lost";
         priceData.connectTime   = DateTime.Now.ToShortTimeString();
         conMessage = priceData.connectStatus; conTime = DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString();
         updateConnection();
     }
     else if (connectionStatusUpdate.Status == ConnectionStatus.Disconnected)
     {
         Print("observed Disconnected  at: " + DateTime.Now);
         priceData.connectStatus = "Disconnected";
         priceData.connectTime   = DateTime.Now.ToShortTimeString();
         conMessage = priceData.connectStatus; conTime = DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString();
         updateConnection();
     }
 }
Example #7
0
        private void TransferConnectionStatusChanged(object sender, ConnectionStatusEventArgs e)
        {
            if (e.Status == ConnectionStatus.Disconnected)
            {
                var transfer = (TransferConnection)sender;
                lock (_synRoot)
                {
                    _connections.Remove(transfer);

                    if (transfer.Direction == TransferDirection.Upload)
                    {
                        _uploadThreadsCount--;
                    }
                    if (transfer.Direction == TransferDirection.Download)
                    {
                        _downloadThreadsCount--;
                    }
                }

                transfer.ConnectionStatusChanged -= TransferConnectionStatusChanged;
                transfer.UploadItemNeeded        -= TransferUploadItemNeededHandler;
                transfer.UploadItemDispose       -= TransferUploadItemDisposeHandler;
                transfer.DirectionChanged        -= TransferDirectionChanged;
                transfer.DownloadItemNeeded      -= TransferDownloadItemNeeded;
                transfer.Authorization           -= TransferAuthorizationHandler;
                transfer.Error       -= TransferError;
                transfer.SlotRequest -= TransferSlotRequest;

                OnTransferRemoved(new TransferEventArgs {
                    Transfer = transfer, Exception = e.Exception
                });
            }
        }
Example #8
0
 /// <summary>
 /// Called on connection status change
 /// </summary>
 /// <param name="e"></param>
 protected override void OnConnectionStatus(ConnectionStatusEventArgs e)
 {
     if (e.Status == ConnectionStatus.Connected || e.OldStatus == ConnectionStatus.Connecting)
     {
         lock (e.Connection.Accounts)
             foreach (Account account in e.Connection.Accounts)
             {
                 if (account.Name == AccountName)
                 {
                     Value = 0;
                     lock (account.Executions)
                         foreach (Execution execution in account.Executions)
                         {
                             if (execution.Instrument.IsEqual(Instrument) && execution.Time.Date == DateTime.Now.Date)
                             {
                                 Value += execution.Quantity;
                             }
                         }
                 }
             }
     }
     else if (e.Status == ConnectionStatus.Disconnected)
     {
         lock (e.Connection.Accounts)
             foreach (Account account in e.Connection.Accounts)
             {
                 if (account.Name == AccountName)
                 {
                     Value = 0;
                 }
             }
     }
 }
Example #9
0
        protected override void OnConnectionStatusUpdate(ConnectionStatusEventArgs connectionStatusUpdate)
        {
            if (connectionStatusUpdate.PriceStatus == ConnectionStatus.Connected &&
                connectionStatusUpdate.Connection.InstrumentTypes.Contains(Instrument.MasterInstrument.InstrumentType) &&
                Bars.BarsType.IsTimeBased &&
                Bars.BarsType.IsIntraday)
            {
                connected = true;

                if (DisplayTime() && timer == null)
                {
                    ChartControl.Dispatcher.InvokeAsync(() =>
                    {
                        timer = new System.Windows.Threading.DispatcherTimer {
                            Interval = new TimeSpan(0, 0, 1), IsEnabled = true
                        };
                        timer.Tick += OnTimerTick;
                    });
                }
            }
            else if (connectionStatusUpdate.PriceStatus == ConnectionStatus.Disconnected)
            {
                connected = false;
            }
        }
Example #10
0
        //private void OnScreenOnListening()
        //{
        //    if (connection != null && agent != null && agent.Channels.Count > 0)
        //    {
        //        if (isPlaying)
        //        {
        //            audioPlayer.Stop();
        //            isPlaying = false;
        //        }
        //        else
        //        {
        //            feedback.Play(FeedbackType.Sound, "Tap");

        //            audioRecorder.StartRecording();
        //            actionButton.IsEnable = false;
        //        }
        //    }
        //}

        private void Connection_StatusChanged(object sender, ConnectionStatusEventArgs e)
        {
            if (e.Reason == ConnectionStatus.ConnectionClosed ||
                e.Reason == ConnectionStatus.ConnectionLost || e.Reason == ConnectionStatus.Unknown)
            {
                ShowMessage("Lost connection, will try to reconnect in 3 seconds");
                if (audioRecorder.isRecording)
                {
                    audioRecorder.StopRecording();
                    audioRecorder.isRecording = false;
                }

                if (isPlaying)
                {
                    audioPlayer.Stop();
                    isPlaying = false;
                }
                actionButton.IsEnable     = false;
                connection.DataReceived  -= Connection_DataReceived;
                connection.StatusChanged -= Connection_StatusChanged;
                connection.Close();
                connection = null;
                peer       = null;
                agent      = null;

                reconnectTimer.Start();
            }
        }
Example #11
0
        /// <summary>
        /// Called on connection status change
        /// </summary>
        /// <param name="e"></param>
        protected override void OnConnectionStatus(ConnectionStatusEventArgs e)
        {
            Value = 0;
            lock (Cbi.Globals.Connections)
                foreach (Connection connection in Cbi.Globals.Connections)
                {
                    if (connection.Status == ConnectionStatus.Connected || connection.Status == ConnectionStatus.ConnectionLost)
                    {
                        lock (connection.Accounts)
                            foreach (Account account in connection.Accounts)
                            {
                                if (account.Name == AccountName)
                                {
                                    executions.Clear();
                                    lock (account.Executions)
                                        foreach (Execution tmp in account.Executions)
                                        {
                                            if (tmp.Instrument.IsEqual(Instrument))
                                            {
                                                executions.Add(tmp);
                                            }
                                        }

                                    Value = Strategy.SystemPerformance.Calculate(executions, Cbi.Commission.ApplyCommissionToProfitLoss).AllTrades.TradesPerformance.Currency.CumProfit;
                                }
                            }
                    }
                }
        }
Example #12
0
        /// <summary>
        /// Called on connection status change
        /// </summary>
        /// <param name="e"></param>
        protected override void OnConnectionStatus(ConnectionStatusEventArgs e)
        {
            if (e.Status == ConnectionStatus.Connected || e.OldStatus == ConnectionStatus.Connecting)
            {
                lock (e.Connection.Accounts)
                    foreach (Account account in e.Connection.Accounts)
                    {
                        if (account.Name == AccountName)
                        {
                            lock (account.Positions)
                                foreach (Position positionTmp in account.Positions)
                                {
                                    if (positionTmp.Instrument.IsEqual(Instrument))
                                    {
                                        position = positionTmp;
                                    }
                                }
                        }
                    }
            }
            else if (e.Status == ConnectionStatus.Disconnected)
            {
                if (position != null && position.Account.Connection == e.Connection)
                {
                    position     = null;
                    unrealizedPL = 0;
                    Value        = 0;
                }
            }

            realizedPL = 0;
            lock (Cbi.Globals.Connections)
                foreach (Connection connection in Cbi.Globals.Connections)
                {
                    if (connection.Status == ConnectionStatus.Connected || connection.Status == ConnectionStatus.ConnectionLost)
                    {
                        lock (connection.Accounts)
                            foreach (Account account in connection.Accounts)
                            {
                                if (account.Name == AccountName)
                                {
                                    executions.Clear();
                                    lock (account.Executions)
                                        foreach (Execution tmp in account.Executions)
                                        {
                                            if (tmp.Instrument.IsEqual(Instrument))
                                            {
                                                executions.Add(tmp);
                                            }
                                        }

                                    realizedPL = Strategy.SystemPerformance.Calculate(executions, Cbi.Commission.ApplyCommissionToProfitLoss).AllTrades.TradesPerformance.Currency.CumProfit;
                                }
                            }
                    }
                }

            Value = realizedPL + unrealizedPL;
        }
Example #13
0
        /// <exception cref="Exception">A delegate callback throws an exception. </exception>
        protected virtual void OnStatusChanged(object sender, ConnectionStatusEventArgs e)
        {
            var statusChanged = StatusChanged;

            if (statusChanged != null)
            {
                statusChanged(sender, e);
            }
        }
Example #14
0
        private void OnStatusUpdate(object sender, ConnectionStatusEventArgs e)
        {
            EventHandler <ConnectionStatusEventArgs> handler = StatusUpdate;

            if (handler != null)
            {
                handler(this, e);
            }
        }
Example #15
0
        private void OnConnectionStatus(object sender, ConnectionStatusEventArgs e)
        {
            if (lblSystemStatus.InvokeRequired)
            {
                lblSystemStatus.Invoke(new Action <bool>(SetStatus), e.IsConnected);
                return;
            }

            SetStatus(e.IsConnected);
        }
Example #16
0
        void connection_ConnectionStatusChanged(object sender, ConnectionStatusEventArgs e)
        {
            var connection = (HyperServerConnection)sender;

            if (e.Status == ConnectionStatus.Disconnected)
            {
                lock (_unknownConnections)
                    _unknownConnections.Remove(connection);
                Logger.Info("Unknown connection is disconnected");
            }
        }
Example #17
0
        private void OnConnectionStatusChanged(object sender, ConnectionStatusEventArgs args)
        {
            if (args.Action == AccountConnectionStatus.Connected)
            {
                if (conn_map.ContainsKey(args.AccountObjectPath))
                {
                    RemoveConnection(args.AccountObjectPath);
                }

                CreateConnection(args.BusName, args.ObjectPath, args.AccountId, args.AccountObjectPath);
            }
        }
Example #18
0
		/// <summary>
		/// Called on connection status change
		/// </summary>
		/// <param name="e"></param>
		protected override void OnConnectionStatus(ConnectionStatusEventArgs e)
		{
			Value		= 0;
			BackColor	= Color.Empty;		// reset color
			lock (Cbi.Globals.Connections)
				foreach (Connection connection in Cbi.Globals.Connections)
					if (connection.Status == ConnectionStatus.Connected || connection.Status == ConnectionStatus.ConnectionLost)
						lock (connection.Accounts)
							foreach (Account account in connection.Accounts)
								if (account.Name == AccountName && account.Positions.FindByInstrument(Instrument) != null)
									Value = account.Positions.FindByInstrument(Instrument).AvgPrice;
		}
Example #19
0
 void HyperConnection_ConnectionStatusChanged(object sender, ConnectionStatusEventArgs e)
 {
     if (e.Status == ConnectionStatus.Disconnected)
     {
         _tail = null;
         if (_tempBuffer.Object != null)
         {
             _tempBuffer.Dispose();
             _tempBuffer = new ReusableObject <byte[]>();
         }
     }
 }
Example #20
0
 private void Imatch_ConnectionStatusChanged(object sender, ConnectionStatusEventArgs e)
 {
     Connected = iMatch.IsConnected;
     if (Connected)
     {
         MessageList.Add("Connected to " + e.DeviceName);
     }
     else
     {
         MessageList.Add("Disconnected");
     }
 }
Example #21
0
 private void DispatchConnectionStatusChanged(object sender, ConnectionStatusEventArgs e)
 {
     if (ConnectionStatusChanged != null)
     {
         try
         {
             ConnectionStatusChanged(this, e);
         } catch (Exception ex)
         {
             Trace.TraceError("Exception thrown dispatch", ex);
         }
     }
 }
        private void HandleRobustConnectionNotification(object sender, ConnectionStatusEventArgs e)
        {
            List <ClientPowerShellDataStructureHandler> list;

            lock (this.associationSyncObject)
            {
                list = new List <ClientPowerShellDataStructureHandler>(this.associatedPowerShellDSHandlers.Values);
            }
            foreach (ClientPowerShellDataStructureHandler handler in list)
            {
                handler.ProcessRobustConnectionNotification(e);
            }
        }
Example #23
0
 private void HttpConnector_ConnectionStateChnged(object sender, ConnectionStatusEventArgs e)
 {
     /*try
      * {
      *  Invoke(new Action(() =>
      *      {
      *          Text += $" - {e.IsRaspberryAvailable}/{HttpConnector.RaspberryIPAdderssAsync()}";
      *      }));
      * }
      * catch
      * {
      *  return;
      * }*/
 }
Example #24
0
        private static void Connection_StatusChanged(object sender, ConnectionStatusEventArgs e)
        {
            Toast.DisplayText(e.Reason.ToString());

            if (e.Reason == ConnectionStatus.ConnectionClosed ||
                e.Reason == ConnectionStatus.ConnectionLost)
            {
                connection.DataReceived  -= Connection_DataReceived;
                connection.StatusChanged -= Connection_StatusChanged;
                connection.Close();
                connection = null;
                peer       = null;
            }
        }
Example #25
0
 void serverConnection_ConnectionStatusChanged(object sender, ConnectionStatusEventArgs status)
 {
     logger.Info("ConnectionStatus: {0}", status.ConnectionStatus.ToString());
     if (status.ConnectionStatus == ConnectionStatus.DisconnectedByHost)
     {
         pollTimer.Stop();
         bIsFirst = true; // Make Sure login again
     }
     if (status.ConnectionStatus == ConnectionStatus.Connected)
     {
         LineManager.Init(this);
         pollTimer.Start();
     }
 }
Example #26
0
		/// <summary>
		/// Called on connection status change
		/// </summary>
		/// <param name="e"></param>
		protected override void OnConnectionStatus(ConnectionStatusEventArgs e)
		{
			Value		= 0;
			BackColor	= Color.Empty;		// reset color
			lock (Cbi.Globals.Connections)
				foreach (Connection connection in Cbi.Globals.Connections)
					if (connection.Status == ConnectionStatus.Connected || connection.Status == ConnectionStatus.ConnectionLost)
						lock (connection.Accounts)
							foreach (Account account in connection.Accounts)
								if (account.Name == AccountName && account.Positions.FindByInstrument(Instrument) != null)
								{
									Cbi.Position position = account.Positions.FindByInstrument(Instrument);
									Value = (position.MarketPosition == MarketPosition.Long ? 1 : -1) * position.Quantity;
								}
		}
Example #27
0
        // Metodi, jota kutsutaan kun yhteyden tila muuttuu. Lopuksi nostetaan event, jolla ilmoitetaan tässä tapauksessa yhteyden tilan muuttumisesta toimintalogiikalle
        private void YhteydenTilaMuuttui(object source, ConnectionStatusEventArgs args)
        {
            ConnectionStatusInfo muuttunutYhteydenTila = args.StatusInfo;

            yhteydenTila = muuttunutYhteydenTila.FullStatusString;
            if (yhteydenTila == null)
            {
                yhteydenTila = "Unknown";
            }
            // Jos yhteys katkeaa tai simulaattori suljetaan ohjelman ollessa käynnissä, poistetaan asiakas-client ja muutetaan initKutsuttu alkuarvoonsa
            if (yhteydenTila == "ConnectionErrorClientReconnect")
            {
                asiakas.Dispose();
                initKutsuttu = false;
            }
            YhteysMuuttui(yhteydenTila);
        }
Example #28
0
        private void OnStatusUpdate(int ph, ConnectionStatus status, string message)
        {
            if (!CheckPhase(ph))
            {
                return;
            }

            var statusUpdate = StatusUpdate;

            if (statusUpdate == null)
            {
                return;
            }

            var e = new ConnectionStatusEventArgs(message, status);

            statusUpdate(this, e);
        }
Example #29
0
		/// <summary>
		/// Called on connection status change
		/// </summary>
		/// <param name="e"></param>
		protected override void OnConnectionStatus(ConnectionStatusEventArgs e)
		{
			Value = 0;
			lock (Cbi.Globals.Connections)
				foreach (Connection connection in Cbi.Globals.Connections)
					if (connection.Status == ConnectionStatus.Connected || connection.Status == ConnectionStatus.ConnectionLost)
						lock (connection.Accounts)
							foreach (Account account in connection.Accounts)
								if (account.Name == AccountName)
								{
									executions.Clear();
									lock (account.Executions)
										foreach (Execution tmp in account.Executions)
											if (tmp.Instrument.IsEqual(Instrument))
												executions.Add(tmp);

									Value = Strategy.SystemPerformance.Calculate(executions, Cbi.Commission.ApplyCommissionToProfitLoss).AllTrades.TradesPerformance.Currency.CumProfit;
								}
		}
Example #30
0
 /// <summary>
 /// Called on connection status change
 /// </summary>
 /// <param name="e"></param>
 protected override void OnConnectionStatus(ConnectionStatusEventArgs e)
 {
     Value     = 0;
     BackColor = Color.Empty;                            // reset color
     lock (Cbi.Globals.Connections)
         foreach (Connection connection in Cbi.Globals.Connections)
         {
             if (connection.Status == ConnectionStatus.Connected || connection.Status == ConnectionStatus.ConnectionLost)
             {
                 lock (connection.Accounts)
                     foreach (Account account in connection.Accounts)
                     {
                         if (account.Name == AccountName && account.Positions.FindByInstrument(Instrument) != null)
                         {
                             Value = account.Positions.FindByInstrument(Instrument).AvgPrice;
                         }
                     }
             }
         }
 }
Example #31
0
        private void Connection_StatusChanged(object sender, ConnectionStatusEventArgs e)
        {
            if (e.Reason == ConnectionStatus.Connected)
            {
                IsConnected = true;
                TextPopUp.Dismiss();
                _onConnectedCallback();
                if (responseHandler == null)
                {
                    responseHandler = new ResponseHandler();
                }
            }

            if (e.Reason == ConnectionStatus.ConnectionClosed || e.Reason == ConnectionStatus.ConnectionLost || e.Reason == ConnectionStatus.Unknown)
            {
                IsConnected = false;
                _connection.Dispose();
                TextPopUp.Text = "Connection lost. Trying to reconnect in 5s.";
                TextPopUp.Show();
                MainPage.SetActionButtonIsEnabled(false);
                MainPage.SetButtonImage("listen_disabled_allgreyedout.png");

                if (AudioRecorder.IsRecording)
                {
                    AudioRecorder.StopRecording();
                }

                //if (AudioPlayer.IsPlaying)
                //{
                //    AudioPlayer.Stop();
                //}
                _connection.DataReceived  -= Connection_DataReceived;
                _connection.StatusChanged -= Connection_StatusChanged;
                _connection.Close();
                _connection = null;
                _peer       = null;
                _agent      = null;

                _reconnectTimer.Start();
            }
        }
Example #32
0
		/// <summary>
		/// Called on connection status change
		/// </summary>
		/// <param name="e"></param>
		protected override void OnConnectionStatus(ConnectionStatusEventArgs e)
		{
			if (e.Status == ConnectionStatus.Connected || e.OldStatus == ConnectionStatus.Connecting)
			{
				lock (e.Connection.Accounts)
					foreach (Account account in e.Connection.Accounts)
						if (account.Name == AccountName)
							lock (account.Positions)
								foreach (Position positionTmp in account.Positions)
									if (positionTmp.Instrument.IsEqual(Instrument))
										position = positionTmp;
			}
			else if (e.Status == ConnectionStatus.Disconnected)
			{
				if (position != null && position.Account.Connection == e.Connection)
				{
					position		= null;
					unrealizedPL	= 0;
					Value			= 0;
				}
			}

			realizedPL = 0;
			lock (Cbi.Globals.Connections)
				foreach (Connection connection in Cbi.Globals.Connections)
					if (connection.Status == ConnectionStatus.Connected || connection.Status == ConnectionStatus.ConnectionLost)
						lock (connection.Accounts)
							foreach (Account account in connection.Accounts)
								if (account.Name == AccountName)
								{
									executions.Clear();
									lock (account.Executions)
										foreach (Execution tmp in account.Executions)
											if (tmp.Instrument.IsEqual(Instrument))
												executions.Add(tmp);

									realizedPL = Strategy.SystemPerformance.Calculate(executions, Cbi.Commission.ApplyCommissionToProfitLoss).AllTrades.TradesPerformance.Currency.CumProfit;
								}

			Value = realizedPL + unrealizedPL;
		}
		/// <summary>
		/// Called on connection status change
		/// </summary>
		/// <param name="e"></param>
		protected override void OnConnectionStatus(ConnectionStatusEventArgs e)
		{
			if (e.Status == ConnectionStatus.Connected || e.OldStatus == ConnectionStatus.Connecting)
			{
				lock (e.Connection.Accounts)
					foreach (Account account in e.Connection.Accounts)
						if (account.Name == AccountName)
							lock (account.Positions)
								foreach (Position positionTmp in account.Positions)
									if (positionTmp.Instrument.IsEqual(Instrument))
										position = positionTmp;
			}
			else if (e.Status == ConnectionStatus.Disconnected)
			{
				if (position != null && position.Account.Connection == e.Connection)
				{
					position	= null;
					Value		= 0;
				}
			}
		}
Example #34
0
 /// <summary>
 /// Called on connection status change
 /// </summary>
 /// <param name="e"></param>
 protected override void OnConnectionStatus(ConnectionStatusEventArgs e)
 {
     Value     = 0;
     BackColor = Color.Empty;                            // reset color
     lock (Cbi.Globals.Connections)
         foreach (Connection connection in Cbi.Globals.Connections)
         {
             if (connection.Status == ConnectionStatus.Connected || connection.Status == ConnectionStatus.ConnectionLost)
             {
                 lock (connection.Accounts)
                     foreach (Account account in connection.Accounts)
                     {
                         if (account.Name == AccountName && account.Positions.FindByInstrument(Instrument) != null)
                         {
                             Cbi.Position position = account.Positions.FindByInstrument(Instrument);
                             Value = (position.MarketPosition == MarketPosition.Long ? 1 : -1) * position.Quantity;
                         }
                     }
             }
         }
 }
        public void ReaderStatusHandler(ConnectionStatusEventArgs args)
        {
            if (args.Type == DeviceType.MAIN)
            {
                _registrationViewModel.MainReaderStatus = args.GetStatusDescription();
                _registrationViewModel.MainReaderIp     = args.GetHumanReadableIp();

                //if (args.Status == DeviceStatus.Connected)
                //{
                // _mainReader.TagCatchEvent += MainReaderTagCatchHandler;
                // _mainReader.StartListening();
                //}
            }

            if (args.Type == DeviceType.PORTABLE)
            {
                _registrationViewModel.PortableReaderStatus       = args.GetStatusDescription();
                _registrationViewModel.PortableReaderPort         = args.GetConnectionPort();
                _registrationViewModel.PortableReaderDeviceStatus = args.Status;
            }
        }
Example #36
0
		/// <summary>
		/// Called on connection status change
		/// </summary>
		/// <param name="e"></param>
		protected override void OnConnectionStatus(ConnectionStatusEventArgs e)
		{
			if (e.Status == ConnectionStatus.Connected || e.OldStatus == ConnectionStatus.Connecting)
			{
				lock (e.Connection.Accounts)
					foreach (Account account in e.Connection.Accounts)
						if (account.Name == AccountName)
						{
							Value = 0;
							lock (account.Executions)
								foreach (Execution execution in account.Executions)
									if (execution.Instrument.IsEqual(Instrument) && execution.Time.Date == DateTime.Now.Date)
										Value += execution.Quantity;
						}
			}
			else if (e.Status == ConnectionStatus.Disconnected)
			{
				lock (e.Connection.Accounts)
					foreach (Account account in e.Connection.Accounts)
						if (account.Name == AccountName)
							Value = 0;
			}
		}
 private void OnConnectionStatusChanged (object sender, ConnectionStatusEventArgs args)
 {
     if (args.Action == AccountConnectionStatus.Connected) {
         if (conn_map.ContainsKey (args.AccountObjectPath)) {
             RemoveConnection (args.AccountObjectPath);
         }
         
         CreateConnection (args.BusName, args.ObjectPath, args.AccountId, args.AccountObjectPath);
     }
 }
 protected virtual void OnConnectionStatusChanged(ConnectionStatusEventArgs args)
 {
     EventHandler <ConnectionStatusEventArgs> handler = ConnectionStatusChanged;
     if (handler != null) {
         handler (this, args);
     }
 }