private Request GetRequest(IntPtr requestHandle) { IntPtr hostAddressPtr; int ret = Interop.IoTConnectivity.Server.Request.GetHostAddress(requestHandle, out hostAddressPtr); if (ret != (int)IoTConnectivityError.None) { Log.Error(IoTConnectivityErrorFactory.LogTag, "Failed to Get host address"); return(null); } IntPtr optionsHandle = IntPtr.Zero; ret = Interop.IoTConnectivity.Server.Request.GetOptions(requestHandle, out optionsHandle); if (ret != (int)IoTConnectivityError.None) { Log.Error(IoTConnectivityErrorFactory.LogTag, "Failed to Get options"); return(null); } IntPtr queryHandle = IntPtr.Zero; ret = Interop.IoTConnectivity.Server.Request.GetQuery(requestHandle, out queryHandle); if (ret != (int)IoTConnectivityError.None) { Log.Error(IoTConnectivityErrorFactory.LogTag, "Failed to Get Query"); return(null); } IntPtr representationHandle = IntPtr.Zero; ret = Interop.IoTConnectivity.Server.Request.GetRepresentation(requestHandle, out representationHandle); if (ret != (int)IoTConnectivityError.None) { Log.Error(IoTConnectivityErrorFactory.LogTag, "Failed to Get representation"); return(null); } ResourceOptions opts = null; ResourceQuery query = null; Representation representation = null; try { opts = (optionsHandle == IntPtr.Zero) ? null : new ResourceOptions(optionsHandle); } catch (Exception exp) { Log.Error(IoTConnectivityErrorFactory.LogTag, "Failed to new ResourceOptions: " + exp.Message); return(null); } try { query = (queryHandle == IntPtr.Zero) ? null : new ResourceQuery(queryHandle); } catch (Exception exp) { Log.Error(IoTConnectivityErrorFactory.LogTag, "Failed to new ResourceQuery: " + exp.Message); opts?.Dispose(); return(null); } try { representation = (representationHandle == IntPtr.Zero) ? null : new Representation(representationHandle); } catch (Exception exp) { Log.Error(IoTConnectivityErrorFactory.LogTag, "Failed to new Representation: " + exp.Message); opts?.Dispose(); query?.Dispose(); return(null); } return(new Request() { HostAddress = (hostAddressPtr != IntPtr.Zero) ? Marshal.PtrToStringAnsi(hostAddressPtr) : string.Empty, Options = opts, Query = query, Representation = representation }); }