public WaitForMarketConnectedOperation(IConnection connection, CancellationToken cancellationToken)
        {
            Contract.Requires(connection != null);
            Contract.Requires(!cancellationToken.IsCancellationRequested);

            this.cancellationToken = cancellationToken;
            this.cancellationToken.Register(() =>
            {
                this.subscriptions.Unsubscribe();
                this.taskCompletionSource.TrySetCanceled();
            });
            this.subscriptions = new List<IDisposable>
            {
                connection.SubscribeForErrors(error => error.Code.IsConnected(), this.OnMarketConnected),
                connection.SubscribeForErrors(error => error.Code.IsGeneralError(), this.OnMarketNotConnected)
            };
        }
Exemplo n.º 2
0
        public PlaceOrderOperation(RequestPlaceOrderMessage requestPlaceOrderMessage, IConnection connection, IOrdersStorageInternal ordersStorage, CancellationToken cancellationToken)
        {
            Contract.Requires(connection != null);
            Contract.Requires(ordersStorage != null);
            this.orderId = requestPlaceOrderMessage.OrderId;
            this.ordersStorage = ordersStorage;
            this.ordersStorage.OrderAdded += this.OnOrderAdded;

            cancellationToken.Register(() =>
            {
                this.Unsubscribe();
                this.taskCompletionSource.TrySetCanceled();
            });

            this.subscription = connection.SubscribeForErrors(error => error.RequestId == this.orderId, this.OnError);

            connection.SendMessage(requestPlaceOrderMessage);
        }