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; }
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); } }