/// <summary> /// Service Request as a future Observable /// </summary> /// <remarks> /// This is the async version suitable for Silveright /// </remarks> /// <param name="request"></param> /// <returns></returns> public IObservable <B> AsObservable(A request) { // create observable var q = from message in RequestMessageMapper.AsObservable(request) from response in _serviceRequest(message) let result = ResponseMessageMapper.Map(response) select result; return(q); }
/// <summary> /// Synchronous request /// </summary> /// <remarks> /// This syncronous method will not work in Silveright. /// It is here for .NET clients /// </remarks> /// <param name="request">any request xml</param> /// <returns>any response xml</returns> public B Service(A request) { try { var message = RequestMessageMapper.Map(request); var response = Channel.Request(message); var result = ResponseMessageMapper.Map(response); _subject.OnNext(result); return(ResponseMessageMapper.Map(response)); } catch (Exception e) { _subject.OnError(e); throw; } }