Exemple #1
0
        private OCEntityHandlerResult OCEntityHandler(OCEntityHandlerFlag flag, OCEntityHandlerRequest entityHandlerRequest, IntPtr callbackParam)
        {
            OCEntityHandlerResult result         = OCEntityHandlerResult.OC_EH_OK;
            RepPayload            payload        = null;
            RepPayload            requestPayload = entityHandlerRequest.payload == IntPtr.Zero ? null : new RepPayload(entityHandlerRequest.payload);

            if (entityHandlerRequest != null && (flag.HasFlag(OCEntityHandlerFlag.OC_REQUEST_FLAG)))
            {
                switch (entityHandlerRequest.method)
                {
                case OCMethod.OC_REST_GET:
                {
                    var rpayload = payload = new RepPayload();
                    rpayload.SetUri(_uri);
                    foreach (var resource in _resourceProperties)
                    {
                        if (requestPayload != null && !requestPayload.Types.Contains(resource.Key))
                        {
                            continue;
                        }
                        var repayload = new RepPayload(resource.Value);
                        repayload.Types.Add(resource.Key);
                        rpayload.Next = repayload;
                        rpayload      = repayload;
                    }
                    payload = rpayload;
                }
                break;

                case OCMethod.OC_REST_POST:
                case OCMethod.OC_REST_PUT:
                {
                    var p = new RepPayload(entityHandlerRequest.payload);
                    result = OnPropertyUpdated(p);
                    PropertyUpdated?.Invoke(this, p);
                }
                break;

                default:
                    result = OCEntityHandlerResult.OC_EH_METHOD_NOT_ALLOWED;
                    break;
                }
                var response = new OCEntityHandlerResponse();
                response.requestHandle  = entityHandlerRequest.requestHandle;
                response.resourceHandle = entityHandlerRequest.resource;
                response.ehResult       = result;
                response.payload        = payload == null ? IntPtr.Zero : payload.AsOCRepPayload();
                response.numSendVendorSpecificHeaderOptions = 0;
                response.sendVendorSpecificHeaderOptions    = IntPtr.Zero;
                response.resourceUri          = string.Empty;
                response.persistentBufferFlag = 0;
                OCStack.OCDoResponse(response);
            }
            return(result);
        }
Exemple #2
0
 private static OCEntityHandlerResult OCDefaultDeviceEntityHandler(OCEntityHandlerFlag flag, OCEntityHandlerRequest entityHandlerRequest, IntPtr callbackParam)
 {
     return(OCEntityHandlerResult.OC_EH_OK);
 }