public int GetKeyCount(UUID experience)
 {
     return(m_service.GetKeyCount(experience));
 }
        private byte[] AccessKeyValueDatabase(Dictionary <string, object> request)
        {
            UUID experience_id;

            if (!UUID.TryParse(request["EXPERIENCE"].ToString(), out experience_id))
            {
                return(FailureResult());
            }

            if (request.ContainsKey("ACTION") == false)
            {
                return(FailureResult());
            }

            string action = request["ACTION"].ToString();

            Dictionary <string, object> result = new Dictionary <string, object>();

            if (action == "GET")
            {
                if (request.ContainsKey("KEY") == false)
                {
                    return(FailureResult());
                }

                string key = request["KEY"].ToString();

                string get = m_service.GetKeyValue(experience_id, key);

                if (get != null)
                {
                    result.Add("result", "success");
                    result.Add("value", get);
                }
                else
                {
                    result.Add("result", "missing");
                }
            }
            else if (action == "CREATE")
            {
                if (request.ContainsKey("KEY") == false || request.ContainsKey("VALUE") == false)
                {
                    return(FailureResult());
                }

                string key = request["KEY"].ToString();
                string val = request["VALUE"].ToString();

                string get = m_service.GetKeyValue(experience_id, key);

                if (get == null)
                {
                    result.Add("result", m_service.CreateKeyValue(experience_id, key, val));
                }
                else
                {
                    result.Add("result", "exists");
                }
            }
            else if (action == "UPDATE")
            {
                if (request.ContainsKey("KEY") == false || request.ContainsKey("VALUE") == false || request.ContainsKey("CHECK") == false)
                {
                    return(FailureResult());
                }

                string key   = request["KEY"].ToString();
                string val   = request["VALUE"].ToString();
                bool   check = request["CHECK"].ToString() == "TRUE";

                string original = string.Empty;
                if (check)
                {
                    if (request.ContainsKey("ORIGINAL") == false)
                    {
                        return(FailureResult());
                    }
                    else
                    {
                        original = request["ORIGINAL"].ToString();
                    }
                }

                result.Add("result", m_service.UpdateKeyValue(experience_id, key, val, check, original));
            }
            else if (action == "DELETE")
            {
                if (request.ContainsKey("KEY") == false)
                {
                    return(FailureResult());
                }

                string key = request["KEY"].ToString();

                result.Add("result", m_service.DeleteKey(experience_id, key));
            }
            else if (action == "COUNT")
            {
                int count = m_service.GetKeyCount(experience_id);
                result.Add("result", "success");
                result.Add("count", count);
            }
            else if (action == "GETKEYS")
            {
                if (request.ContainsKey("START") == false || request.ContainsKey("COUNT") == false)
                {
                    return(FailureResult());
                }

                int start = int.Parse(request["START"].ToString());
                int count = int.Parse(request["COUNT"].ToString());

                string[] keys = m_service.GetKeys(experience_id, start, count);

                int i = 0;
                foreach (var str in keys)
                {
                    result.Add("key_" + i++, str);
                }
            }
            else if (action == "SIZE")
            {
                int size = m_service.GetSize(experience_id);
                result.Add("result", "success");
                result.Add("count", size);
            }

            string xmlString = ServerUtils.BuildXmlResponse(result);

            return(Util.UTF8NoBomEncoding.GetBytes(xmlString));
        }
 public int GetKeyCount(UUID experience)
 {
     return(m_remoteConnector.GetKeyCount(experience));
 }