GetAvailableAccountsResponseMessage Receive(GetAvailableAccountsMessage message)
        {
            if (message.RequestResponse)
            {
                return(new GetAvailableAccountsResponseMessage(new AccountInfo[] { _accountInfo }, true));
            }

            SendToSubscribers(new GetAvailableAccountsResponseMessage(new AccountInfo[] { _accountInfo }, true));
            return(null);
        }
        GetAvailableAccountsResponceMessage Receive(GetAvailableAccountsMessage message)
        {
            IImplementation implementation = _implementation;

            if (implementation == null || OperationalState != OperationalStateEnum.Operational)
            {
                return(new GetAvailableAccountsResponceMessage(new AccountInfo[] { }, false));
            }

            return(new GetAvailableAccountsResponceMessage(implementation.GetAvailableAccounts(), true));
        }
        GetAvailableAccountsResponseMessage Receive(GetAvailableAccountsMessage message)
        {
            IImplementation implementation = _implementation;

            if (implementation == null || OperationalState != OperationalStateEnum.Operational)
            {
                return(new GetAvailableAccountsResponseMessage(new AccountInfo[] { }, false));
            }

            AccountInfo[] accounts = implementation.GetAvailableAccounts();
            if (accounts == null)
            {// Stub provides no info on this, so we should.
                lock (this)
                {
                    accounts = GeneralHelper.EnumerableToArray <AccountInfo>(_accounts.Values);
                }
            }

            return(new GetAvailableAccountsResponseMessage(accounts, true));
        }
        /// <summary>
        ///
        /// </summary>
        public bool GetAvailableAccountInfos(out AccountInfo[] accounts)
        {
            accounts = new AccountInfo[] { };
            if (SourceTransportInfo == null)
            {
                SystemMonitor.OperationWarning("Failed to obtain account information - SourceTransportInfo not assigned.");
                return(false);
            }

            GetAvailableAccountsMessage request  = new GetAvailableAccountsMessage();
            ResponseMessage             response = this.SendAndReceiveResponding <ResponseMessage>(SourceTransportInfo, request);

            if (response == null || response.OperationResult == false)
            {
                return(false);
            }

            accounts = ((GetAvailableAccountsResponseMessage)response).Accounts;
            return(true);
        }
        GetAvailableAccountsResponceMessage Receive(GetAvailableAccountsMessage message)
        {
            if (message.RequestResponce)
            {
                return new GetAvailableAccountsResponceMessage(new AccountInfo[] { _accountInfo }, true);
            }

            SendToSubscribers(new GetAvailableAccountsResponceMessage(new AccountInfo[] { _accountInfo }, true));
            return null;
        }
        /// <summary>
        /// 
        /// </summary>
        public bool GetAvailableAccountInfos(out AccountInfo[] accounts)
        {
            accounts = new AccountInfo[] { };
            if (SourceTransportInfo == null)
            {
                SystemMonitor.OperationWarning("Failed to obtain account information - SourceTransportInfo not assigned.");
                return false;
            }

            GetAvailableAccountsMessage request = new GetAvailableAccountsMessage();
            ResponseMessage response = this.SendAndReceiveResponding<ResponseMessage>(SourceTransportInfo, request);

            if (response == null || response.OperationResult == false)
            {
                return false;
            }

            accounts = ((GetAvailableAccountsResponseMessage)response).Accounts;
            return true;
        }
        GetAvailableAccountsResponseMessage Receive(GetAvailableAccountsMessage message)
        {
            IImplementation implementation = _implementation;
            if (implementation == null || OperationalState != OperationalStateEnum.Operational)
            {
                return new GetAvailableAccountsResponseMessage(new AccountInfo[] { }, false);
            }

            AccountInfo[] accounts = implementation.GetAvailableAccounts();
            if (accounts == null)
            {// Stub provides no info on this, so we should.
                lock(this)
                {
                    accounts = GeneralHelper.EnumerableToArray<AccountInfo>(_accounts.Values);
                }
            }

            return new GetAvailableAccountsResponseMessage(accounts, true);
        }
        GetAvailableAccountsResponceMessage Receive(GetAvailableAccountsMessage message)
        {
            IImplementation implementation = _implementation;
            if (implementation == null || OperationalState != OperationalStateEnum.Operational)
            {
                return new GetAvailableAccountsResponceMessage(new AccountInfo[] { }, false);
            }

            return new GetAvailableAccountsResponceMessage(implementation.GetAvailableAccounts(), true);
        }