/// <summary> /// Extracts an <see cref="ModelResponse"/> from the given <see cref="IOResponse"/> content. /// </summary> /// <param name="ioResponse"></param> /// <param name="request"></param> /// <returns></returns> ModelResponse ReadIOResponseFromContent(IOResponse ioResponse, ModelRequest request) { Contract.Requires <ArgumentNullException>(ioResponse != null); Contract.Requires <ArgumentNullException>(request != null); // deserialize if possible if (ioResponse.Content != null && ioResponse.ContentType != null) { // obtain serializer var deserializer = GetDeserializer(ioResponse.ContentType); if (deserializer == null) { throw new UnsupportedMediaTypeException(); } // generate new response return(new ModelResponse( request, ReadRequestStatus(ioResponse), deserializer.Deserialize( new StreamReader(ioResponse.Content), ioResponse.ContentType))); } else { return(new ModelResponse( request, ReadRequestStatus(ioResponse), null)); } }
/// <summary> /// Deserializes the <see cref="WebResponse"/> into a <see cref="ModelResponse"/>. /// </summary> /// <param name="ioResponse"></param> /// <param name="request"></param> /// <returns></returns> protected virtual ModelResponse ReadIOResponse(IOResponse ioResponse, ModelRequest request) { Contract.Requires <ArgumentNullException>(ioResponse != null); Contract.Requires <ArgumentNullException>(request != null); var response = ReadIOResponseFromContent(ioResponse, request); response.Headers.Add(ioResponse.Headers); return(response); }
public bool Process(HttpServer server, HttpRequest request, HttpResponse response) { SystemLogger.Log(SystemLogger.Module.CORE, " ############## " + this.GetType() + " -> " + request.Url); if (request.Url.StartsWith(REMOTE_RESOURCE_URI)) { SystemLogger.Log(SystemLogger.Module.CORE, "Remote resource protocol."); try { string commandParams = request.Url.Substring(REMOTE_RESOURCE_URI.Length); string[] commandParamsArray = commandParams.Split(new char[] { '/' }); if (commandParamsArray.Length > 0) { string ioServiceName = commandParamsArray [0]; Object unityIOService = serviceLocator.GetService(UNITY_IO_SERVICE_NAME); if (unityIOService != null && ioServiceName != null) { IIo io = (IIo)unityIOService; string parameters = commandParams.Substring(ioServiceName.Length + 1); IORequest ioRequest = new IORequest(); ioRequest.Content = parameters; IOResponse ioResponse = io.InvokeService(ioRequest, ioServiceName); if (ioResponse != null) { response.ContentType = ioResponse.ContentType; response.RawContent = ioResponse.ContentBinary; } } } if (response.RawContent == null) { response.Content = "No content available."; SystemLogger.Log(SystemLogger.Module.CORE, "No content available for request [" + request.Url + "," + request.Method + "]. Continue to next handler..."); return(false); } return(true); } catch (Exception e) { SystemLogger.Log(SystemLogger.Module.CORE, "Exception when parsing request [" + request.Url + "]", e); response.Content = "Malformed request."; return(false); } } else { SystemLogger.Log(SystemLogger.Module.CORE, "Non remote resource protocol. Continue to next handler..."); return(false); } }
private string GetCacheControlHeaderFromObject(object retObj) { if (retObj != null && typeof(IOResponse).IsAssignableFrom(retObj.GetType())) { IOResponse ioResponse = (IOResponse)retObj; if (ioResponse.Headers != null && ioResponse.Headers.Length > 0) { foreach (IOHeader header in ioResponse.Headers) { if (header.Name.Equals("Cache-Control")) { SystemLogger.Log(SystemLogger.Module.CORE, "Found cache control header on IOResponse object: " + header.Value); return(header.Value); } } } } return(null); }
/// <summary> /// Method overrided, to start activity notification while invoking external service. /// </summary> /// <param name="request"> /// A <see cref="IORequest"/> /// </param> /// <param name="service"> /// A <see cref="IOService"/> /// </param> /// <returns> /// A <see cref="IOResponse"/> /// </returns> public override IOResponse InvokeService(IORequest request, IOService service) { this.IOUserAgent = IPhoneUtils.GetInstance().GetUserAgent(); INotification notificationService = (INotification)IPhoneServiceLocator.GetInstance().GetService("notify"); try { notificationService.StartNotifyActivity(); } catch (Exception e) { SystemLogger.Log(SystemLogger.Module.PLATFORM, "Cannot StartNotifyActivity. Message: " + e.Message); } IOResponse response = base.InvokeService(request, service); try { notificationService.StopNotifyActivity(); } catch (Exception e) { SystemLogger.Log(SystemLogger.Module.PLATFORM, "Cannot StopNotifyActivity. Message: " + e.Message); } return(response); }
private async void Reader() { var reader = _responseChannel.Reader; while (await reader.WaitToReadAsync()) { while (reader.TryRead(out ValueTuple <IORequest, TaskCompletionSource <IOResponse> > tuple)) { var item = tuple.Item1; IOResponse ioResponse; if (item.RequestDirection == IORequestDirection.Read) { ioResponse = await _fileSystemService.Read(item).ConfigureAwait(false); } else { await _fileSystemService.Write(item).ConfigureAwait(false); ioResponse = new IOResponse(item.Id, item.Address, Array.Empty <byte>()); } tuple.Item2.SetResult(ioResponse); } } }
protected BaseBlock(IOResponse ioResponse) { _ioResponse = ioResponse; _memory = ioResponse.Payload; }
public DataBlock(IOResponse response) : base(response) { _pageManager = new DataPageManager(_memory); }
/// <summary> /// Gets the <see cref="ModelResponseStatus"/> for the response. /// </summary> /// <param name="response"></param> /// <returns></returns> protected virtual ModelResponseStatus ReadRequestStatus(IOResponse response) { Contract.Requires <ArgumentNullException>(response != null); return(response.Status == IOStatus.Success ? ModelResponseStatus.Success : ModelResponseStatus.Error); }