private OCStackApplicationResult OnDiscover(IntPtr context, IntPtr handle, OCClientResponse clientResponse)
        {
            if (clientResponse == null)
            {
                return(OCStackApplicationResult.OC_STACK_DELETE_TRANSACTION);
            }
            var response = new ClientResponse <Payload>(clientResponse);

            if (response.Payload != null)
            {
                if (response.Payload is DiscoveryPayload)
                {
                    var dpayload = (DiscoveryPayload)response.Payload;
                    var addr     = response.DeviceAddress; // new DeviceAddress(clientResponse.devAddr);
                    foreach (var item in dpayload.Resources)
                    {
                        string key = $"{addr.Address}:{addr.Port}{item.Uri}";
                        if (!discoveredResources.ContainsKey(key))
                        {
                            discoveredResources[key] = DateTimeOffset.UtcNow;
                            ResourceDiscovered?.Invoke(this, new ResourceDiscoveredEventArgs(addr, item));
                        }
                    }
                }
            }
            return(OCStackApplicationResult.OC_STACK_KEEP_TRANSACTION);
        }
示例#2
0
 private OCStackApplicationResult OnDiscover(IntPtr context, IntPtr handle, OCClientResponse clientResponse)
 {
     if (clientResponse == null)
     {
         return(OCStackApplicationResult.OC_STACK_DELETE_TRANSACTION);
     }
     ResourceDiscovered?.Invoke(this, new ClientResponseEventArgs <OC.DiscoveryPayload>(clientResponse, handle));
     return(OCStackApplicationResult.OC_STACK_KEEP_TRANSACTION);
 }