Пример #1
0
 public void Reconnect(SdclConnectInfo info)
 {
     _nextConnectInfo = info;
     Disconnect();
     _switchEndpoint = true;
     //GetClient();
     Process(TelegramBodyType.Wms, new Telegram(TelegramType.QueryNoAnswer));
 }
Пример #2
0
        private SdclConnectInfo GetSdclConnectInfo(string clientCode, SdclConnectInfo lastSdclConnectInfo)
        {
            if (_api == null)
            {
                _api = IoC.Instance.Resolve <WmsAPI>();
            }

            var result = _api.GetSdclEndPoint(clientCode, lastSdclConnectInfo == null ? null : lastSdclConnectInfo.Code);

            return(result);
        }
Пример #3
0
        private EndpointAddress GetEndpoint()
        {
            if (!_switchEndpoint)
            {
                if (!string.IsNullOrEmpty(WMSEnvironment.Instance.EndPoint))
                {
                    return(new EndpointAddress(WMSEnvironment.Instance.EndPoint));
                }
            }

            EndpointAddress endPoint;

            // если парметры выставили извне ("жетская привязка"), то используем что передали
            if (!string.IsNullOrEmpty(EndPoint))
            {
                endPoint = new EndpointAddress(EndPoint);
                WMSEnvironment.Instance.SdclCode = "Default";
            }
            else
            {
                // если дошли до конца списка доступных сервисов, то пойдем с начала
                if (_lastConnectInfo != null && string.IsNullOrEmpty(_lastConnectInfo.Endpoint))
                {
                    _lastConnectInfo.Code = null;
                }

                if (_nextConnectInfo != null)
                {
                    _lastConnectInfo = _nextConnectInfo;
                }
                else
                {
                    // получим параметры подключения
                    //var sdclConnectInfoProvider = IoC.Instance.Resolve<ISdclConnectInfoProvider>();
                    //_lastConnectInfo = sdclConnectInfoProvider.GetSdclConnectInfo(HostName, _lastConnectInfo);

                    // обращаемся
                    _lastConnectInfo = GetSdclConnectInfo(HostName, _lastConnectInfo);
                }

                if (_lastConnectInfo == null || string.IsNullOrEmpty(_lastConnectInfo.Endpoint))
                {
                    throw new EndpointNotFoundException("Не определен адрес подключения.\r\nЕсли повторные попытки вызывают ту же ошибку, пожалуйста, обратитесь в службу поддержки");
                }

                endPoint = new EndpointAddress(_lastConnectInfo.Endpoint);
                WMSEnvironment.Instance.SdclCode = _lastConnectInfo.Code ?? "Default";
            }

            _nextConnectInfo = null;
            WMSEnvironment.Instance.EndPoint = endPoint.ToString();
            _switchEndpoint = false;
            return(endPoint);
        }
        private void ChangeSDCL()
        {
            if (!CanChange())
            {
                return;
            }

            var info = new SdclConnectInfo();

            var item = SelectedItems[0];
            var mgr  = IoC.Instance.Resolve <IBaseManager <CustomParamValue> >();
            var ss   = mgr.GetFiltered(string.Format("CUSTOMPARAMCODE_R='SSParEndPointL2' and CPVKEY='{0}'", item.GetKey())).ToArray();

            info.Code = item.ServiceCode;
            if (!ss.Any())
            {
                throw new OperationException("Отсутствуют параметры подключения для сервиса '{0}'", item.GetKey());
            }

            info.Endpoint = ss.First().CPVValue.To <string>();
            var sc = IoC.Instance.Resolve <IServiceClient>();

            sc.Reconnect(info);
        }