Example #1
0
        public void DispatchResponse(CoapMessage message)
        {
            var observeQuery = observeContainer.Where((c) => c.Key == Convert.ToBase64String(message.Token));

            foreach (var item in observeQuery)
            {
                item.Value(message.Code, MediaTypeConverter.ConvertFromMediaType(message.ContentType), message.Payload);
            }

            if (observeQuery.Count() == 0)
            {
                var query = container.Where((c) => c.Value.Item1 == Convert.ToBase64String(message.Token));
                KeyValuePair <ushort, Tuple <string, DateTime, Action <CodeType, string, byte[]> > >[] kvps = query.ToArray();
                foreach (var kvp in kvps)
                {
                    kvp.Value.Item3(message.Code, MediaTypeConverter.ConvertFromMediaType(message.ContentType), message.Payload);
                    container.Remove(kvp.Key);
                }
            }
            //var query = container.Where((c) => c.Value.Item1 == Convert.ToBase64String(message.Token));

            //if(observeQuery.Count() == 0 && query.Count() >= 1)
            //{
            //    query.First().Value.Item3(message.Code, MediaTypeConverter.ConvertFromMediaType(message.ContentType), message.Payload);

            //    Remove(query.First().Key);

            //    container.Remove(query.First().Key);
            //}

            timer.Enabled = container.Count() > 0;
        }
Example #2
0
        public static byte[] Convert(this DateTime?expires, string contentType)
        {
            MediaType media = MediaTypeConverter.ConvertToMediaType(contentType);

            switch (media)
            {
            case MediaType.TextPlain:
                return(expires.HasValue ? Encoding.UTF8.GetBytes(expires.Value.ToString()) : null);

            case MediaType.Json:
                return(expires.HasValue
                        ? Encoding.UTF8.GetBytes($"{{\"Expires\":\"{expires.Value}\"}}")
                        : Encoding.UTF8.GetBytes("{\"Expires\":\"\"}"));

            case MediaType.Xml:
                return(expires.HasValue
                        ? Encoding.UTF8.GetBytes(
                           $"<Expires>{XmlConvert.ToString(expires.Value, XmlDateTimeSerializationMode.Utc)}</Expires>")
                        : Encoding.UTF8.GetBytes("<Expires/>"));

            case MediaType.OctetStream:
                return(expires.HasValue
                        ? Encoding.UTF8.GetBytes($"Expires={expires.Value}")
                        : Encoding.UTF8.GetBytes("Expires=\"\""));

            default:
                return(null);
            }
        }