public void Reconnect(SdclConnectInfo info) { _nextConnectInfo = info; Disconnect(); _switchEndpoint = true; //GetClient(); Process(TelegramBodyType.Wms, new Telegram(TelegramType.QueryNoAnswer)); }
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); }
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); }