public ProxyManager(T proxy, XmlRpcResponseEventHandler responseHandler) { _proxy = (IXmlRpcProxy)proxy; _responseHandler = responseHandler; if (_responseHandler != null) { _proxy.ResponseEvent += _responseHandler; } }
private ProxyManager <TService> CreateProxyManager(XmlRpcResponseEventHandler responseHandler = null) { var definition = XmlRpcProxyGen.Create <TService>(); // ReSharper disable PossibleInvalidCastException var proxy = (IXmlRpcProxy)definition; // ReSharper restore PossibleInvalidCastException proxy.AttachLogger(new MethodListenerXmlRpcLogger(_listenerProvider.GetListener())); proxy.Url = _uri.AbsoluteUri; proxy.UserAgent = UserAgent; return(new ProxyManager <TService>(definition, responseHandler)); }
public TResponse Invoke <TDefinitionResponse, TResponse>(Func <TService, TDefinitionResponse> method) { TResponse response = default(TResponse); XmlRpcResponseEventHandler responseHandler = (sender, args) => { var deserializer = new XmlRpcResponseDeserializer(); XmlRpcResponse res = deserializer.DeserializeResponse(args.ResponseStream, typeof(TResponse)); response = (TResponse)res.retVal; }; using (ProxyManager <TService> manager = CreateProxyManager(responseHandler)) { method(manager); } return(response); }