/// <summary> /// Returns a collection of device indexes for each of the relevent /// HTTP headers provided. Those headers which are unrelated to device /// detection are ignored. /// </summary> /// <param name="headers">Collection of HTTP headers and values</param> /// <returns>Collection of headers and device indexes for each one</returns> public IDictionary <string, int> GetDeviceIndexes(NameValueCollection headers) { IDictionary <string, int> indexes = new SortedDictionary <string, int>(); if (headers != null) { var reader = _pool.GetReader(); try { foreach (string header in headers.Keys) { if (HttpHeaders.BinarySearch(header) >= 0) { indexes.Add(header, GetDeviceIndex(headers[header])); } } } finally { _pool.Release(reader); } } return(indexes); }