예제 #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        public QueryResult ExecuteQuery(Query query)
        {
            if (IsConnectedToNetworkDataStore)
            {
                if (LoggingEnabled)
                {
                    LoggingService.LogToDisk(query, true);
                }
                if (query.Command == Commands.SERVER_DISCONNECT)
                {
                    IsConnectedToNetworkDataStore = false;
                }
                return(QueryTcpClient.SendQueryAndReturnResult(query));
            }

            if (LoggingEnabled)
            {
                LoggingService.LogToDisk(query, false);
            }

            switch (query.Command)
            {
            case Commands.GET:
                return(GetValue(query));

            case Commands.SET:
                return(SetValue(query));

            case Commands.DELETE:
                return(DeleteValue(query));

            case Commands.SERVER_START:
                return(StartServer(query));


            case Commands.SERVER_STOP:
                return(StopServer());

            case Commands.SERVER_CONNECT:
                return(ServerConnect(query));

            case Commands.SERVER_DISCONNECT:
                IsConnectedToNetworkDataStore = false;
                return(new QueryResult("Success", null, null));

            case Commands.SAVE:
                return(SaveDataStore(query));

            case Commands.LOAD:
                return(LoadDataStore(query));

            default:
                return(new QueryResult("Unrecognised Command", null, null));
            }
        }