// This method validates that a key exists in the cache.
 public bool Exist(SearchRequest key)
 {
     using (cacheLock.ReadLock())
         return(cacheStore.ContainsKey(key));
 }
        private void ProcessRequest(IAsyncResult result)
        {
            HttpListener        listener = (HttpListener)result.AsyncState;
            HttpListenerContext context  = listener.EndGetContext(result);

            string method = context.Request.HttpMethod;
            string path   = context.Request.Url.LocalPath;

            switch (method)
            {
            case "POST":
                #region [ === POST === ]
                try
                {
                    BinaryFormatter formatter = new BinaryFormatter();
                    dbMsg           m         = formatter.Deserialize(context.Request.InputStream) as dbMsg;
                    if (m != null)
                    {
                        switch (m.Action)
                        {
                        case dbAction.DB_SELECT:
                            SearchRequest sr = (SearchRequest)m.Data;
                            var           rs = SearchGetIDs(sr);
                            formatter.Serialize(context.Response.OutputStream, rs);
                            break;
                        }
                    }
                }
                catch (Exception ex)
                {
                    //Serializer.NonGeneric.Serialize(context.Response.OutputStream, 500);
                    //context.Response.Close();
                }

                context.Response.Close();
                //context.Response.Abort();

                break;

                #endregion
            case "GET":
                #region [ === GET === ]

                switch (path)
                {
                case "/favicon.ico":
                    context.Response.Close();
                    return;

                case "/ping":
                    byte[] buffer = Encoding.UTF8.GetBytes("OK");
                    context.Response.ContentLength64 = buffer.Length;
                    Stream output = context.Response.OutputStream;
                    output.Write(buffer, 0, buffer.Length);
                    output.Close();
                    break;
                }

                break;
                #endregion
            }

            listener.BeginGetContext(ProcessRequest, listener);
        }