OSDN Git Service

サーバー用のconfig.jsonを追加
authorh2so5 <h2so5@git.sourceforge.jp>
Sun, 16 Sep 2012 11:53:18 +0000 (20:53 +0900)
committerh2so5 <h2so5@git.sourceforge.jp>
Sun, 16 Sep 2012 11:53:18 +0000 (20:53 +0900)
ログをlogフォルダに保存するように変更

12 files changed:
client/CommandManager.cpp
client/CommandManager.hpp
client/resourse.rc
common/Logger.hpp
server/Account.cpp
server/Account.hpp
server/Config.cpp
server/Config.hpp
server/Server.cpp
server/Server.hpp
server/config.json
server/main.cpp

index 2ae2a1b..9a9b622 100644 (file)
@@ -12,7 +12,8 @@
 #include "Profiler.hpp"
 
 CommandManager::CommandManager(const ManagerAccessorPtr& manager_accessor) :
-manager_accessor_(manager_accessor)
+       manager_accessor_(manager_accessor),
+       status_(STATUS_STANDBY)
 {
 }
 
@@ -103,6 +104,7 @@ void CommandManager::Update()
 void CommandManager::set_client(ClientUniqPtr client)
 {
     client_= std::move(client);
+       status_ = STATUS_CONNECTING;
 }
 
 
@@ -139,3 +141,7 @@ void CommandManager::SendJSON(const std::string& msg) {
     }
 }
 
+Status CommandManager::status() const
+{
+       return status_;
+}
index d0fc3f5..0f09963 100644 (file)
@@ -15,6 +15,14 @@ namespace network {
 typedef std::unique_ptr<network::Client> ClientUniqPtr;
 
 class CommandManager {
+       public:
+               enum Status {
+                       STATUS_STANDBY,
+                       STATUS_CONNECTING,
+                       STATUS_READY,
+                       STATUS_ERROR
+               };
+
     public:
         CommandManager(const ManagerAccessorPtr& manager_accessor = ManagerAccessorPtr());
         void Update();
@@ -26,9 +34,12 @@ class CommandManager {
         void set_client(ClientUniqPtr client);
         unsigned int user_id();
 
+               Status status() const;
+
     private:
         ManagerAccessorPtr manager_accessor_;
         ClientUniqPtr client_;
+               Status status_;
 };
 
 typedef std::shared_ptr<CommandManager> CommandManagerPtr;
index 30a0480..273b0e5 100644 (file)
Binary files a/client/resourse.rc and b/client/resourse.rc differ
index 5e8d797..cc305ee 100644 (file)
@@ -7,6 +7,7 @@
 #include "unicode.hpp"
 #include <boost/algorithm/string.hpp>
 #include <boost/date_time/posix_time/posix_time.hpp>
+#include <boost/filesystem.hpp>
 
 #ifndef _WIN32
 #define OutputDebugString(str) (std::cout << str)
 class Logger {
         // Singleton
     private:
-        Logger() : ofs_(GetLogFileName()) {
+        inline Logger() {
+                       using namespace boost::filesystem;
+
+                       if (!exists("./log")) {
+                               create_directory("./log");
+                       }
+
+                       ofs_.open("./log/" + GetLogFileName());
                }
 
         Logger(const Logger& logger) {}
index 944feec..e5678bb 100644 (file)
@@ -89,6 +89,12 @@ std::string Account::GetUserRevisionPatch(UserID user_id, unsigned int revision)
     return patch;
 }
 
+void Account::Remove(UserID user_id)
+{
+       boost::unique_lock<boost::recursive_mutex> lock(mutex_);
+       user_map_.erase(user_id);
+}
+
 /*
 void Account::ApplyRevisionPatch(const std::string& patch)
 {
index 32d6648..cc205ad 100644 (file)
@@ -34,6 +34,8 @@ class Account {
         void LogOut(UserID);
         void LogOutAll();
 
+               void Remove(UserID);
+
         std::string GetUserName(UserID) const;
         void SetUserName(UserID, const std::string&);
         std::string GetUserTrip(UserID) const;
index 5de6990..8519f95 100644 (file)
@@ -3,7 +3,7 @@
 //
 
 #include "Config.hpp"
-#include <boost/property_tree/json_parser.hpp>
+#include <boost/program_options.hpp>
 #include <stdint.h>
 
 Config::Config(const std::string& filename)
@@ -16,61 +16,33 @@ Config::Config(const std::string& filename)
     } catch(std::exception& e) {
         pt = ptree();
     }
-
-    server_name_ =              pt.get<std::string>("server_name", "MMO Server");
-    port_ =                     pt.get<uint16_t>("port", 39390);
-    room_capacity_ =            pt.get<int>("room_capacity", 10);
-    channel_capacity_ =         pt.get<int>("channel_capacity", 30);
-    max_total_read_average_ =   pt.get<int>("max_total_read_average", 5000);
-    max_session_read_average_ = pt.get<int>("max_session_read_average", 500);
-    min_session_read_average_ = pt.get<int>("min_session_read_average", 100);
+       
+    port_ =                    pt.get<unsigned short>("port", 39390);
+    server_name_ =     pt.get<std::string>("server_name", "MMO Server");
+    stage_ =           pt.get<std::string>("stage", "stage:ケロリン町");
+    capacity_ =                pt.get<int>("capacity", 20);
 }
 
 //
 // アクセサ
 //
 
-const std::string& Config::server_name() const
-{
-    return server_name_;
-}
-
-int Config::port() const
+unsigned short Config::port() const
 {
-    return port_;
+       return port_;
 }
 
-int Config::room_capacity() const
-{
-    return room_capacity_;
-}
-
-int Config::channel_capacity() const
-{
-    return channel_capacity_;
-}
-
-int Config::max_total_read_average() const
-{
-    return max_total_read_average_;
-}
-
-int Config::max_session_read_average() const
-{
-    return max_session_read_average_;
-}
-
-int Config::min_session_read_average() const
+const std::string& Config::server_name() const
 {
-    return min_session_read_average_;
+    return server_name_;
 }
 
-std::string Config::download_path() const
+const std::string& Config::stage() const
 {
-    return download_path_;
+    return stage_;
 }
 
-std::string Config::scan_command() const
+int Config::capacity() const
 {
-    return scan_command_;
-}
+       return capacity_;
+}
\ No newline at end of file
index 6c1faa8..5d2405a 100644 (file)
 class Config
 {
     public:
-        Config(const std::string&);
+        Config(const std::string& filename);
 
     private:
+               unsigned short port_;
         std::string server_name_;
-        int port_;
-        int room_capacity_;
-        int channel_capacity_;
-        int max_total_read_average_;
-        int max_session_read_average_;
-        int min_session_read_average_;
-        std::string download_path_;
-        std::string scan_command_;
+        std::string stage_;
+               int capacity_;
 
     public:
+        unsigned short port() const;
         const std::string& server_name() const;
-        int port() const;
-        int room_capacity() const;
-        int channel_capacity() const;
-        int max_total_read_average() const;
-        int max_session_read_average() const;
-        int min_session_read_average() const;
-        std::string download_path() const;
-        std::string scan_command() const;
+        const std::string& stage() const;
+        int capacity() const;
 };
index 04996b3..e1461bd 100644 (file)
 
 namespace network {
 
-    Server::Server(uint16_t port) :
-            endpoint_(tcp::v4(), port),
+    Server::Server(const Config& config) :
+                       config_(config),
+            endpoint_(tcp::v4(), config.port()),
             acceptor_(io_service_, endpoint_),
-            socket_udp_(io_service_, udp::endpoint(udp::v4(), port)),
+            socket_udp_(io_service_, udp::endpoint(udp::v4(), config.port())),
             udp_packet_count_(0),
             max_total_read_average_(5000),
             max_session_read_average_(600),
@@ -95,9 +96,12 @@ namespace network {
        std::string Server::GetStatusJSON() const
        {
                auto msg = (
-                                       boost::format("{\"ver\":%d.%d.%d,\"cnt\":%d}")
-                                               % MMO_VERSION_MAJOR % MMO_VERSION_MINOR % MMO_VERSION_REVISION %
-                                               GetUserCount()
+                                       boost::format("{\"nam\":\"%s\",\"ver\":\"%d.%d.%d\",\"cnt\":%d,\"cap\":%d,\"stg\":\"%s\"}")
+                                               % config_.server_name()
+                                               % MMO_VERSION_MAJOR % MMO_VERSION_MINOR % MMO_VERSION_REVISION
+                                               % GetUserCount()
+                                               % config_.capacity()
+                                               % config_.stage()
                                        ).str();
 
                return msg;
index 7d7db5e..5f491d1 100644 (file)
@@ -8,6 +8,7 @@
 #include <list>
 #include <functional>
 #include "../common/network/Session.hpp"
+#include "Config.hpp"
 
 #define UDP_MAX_RECEIVE_LENGTH (2048)
 #define UDP_TEST_PACKET_TIME (5)
@@ -25,7 +26,7 @@ class Server {
         };
 
     public:
-        Server(uint16_t port);
+        Server(const Config& config);
         void Start(CallbackFuncPtr callback);
         void Stop();
         void Stop(int interrupt_type);
@@ -59,6 +60,8 @@ class Server {
         void FetchUDP(const std::string& buffer, const boost::asio::ip::udp::endpoint endpoint);
 
     private:
+          Config config_;
+
        boost::asio::io_service io_service_;
        tcp::endpoint endpoint_;
        tcp::acceptor acceptor_;
index 3edc8fc..85d7371 100644 (file)
@@ -1,12 +1,6 @@
-//
-// MMO Config
-//
-
 {
-    "server_name": "MMO Server",
-    "port": 39390,
-    
-    "max_total_read_average": 5000,
-    "max_session_read_average": 500,
-    "min_session_read_average": 100
-}
+       "port": 39390,
+       "server_name": "MMO Server 公式",
+       "stage": "stage:がれき町",
+       "capacity": 20
+}
\ No newline at end of file
index 3258fc1..f9bd0da 100644 (file)
@@ -30,6 +30,9 @@ using namespace boost::posix_time;
 
 int main(int argc, char* argv[])
 {
+    // 設定を読み込み
+    Config config("config.json");
+
        Logger::Info(_T("%s"), unicode::ToTString(MMO_VERSION_TEXT));
 
  try {
@@ -37,19 +40,9 @@ int main(int argc, char* argv[])
     // 署名
     network::Signature sign("server_key");
 
-    // 設定を読み込み
-    Config config("config.json");
-
     // アカウント
     Account account("account.db");
-
-    int port = config.port();
-    network::Server server(port);
-
-    // サーバー設定
-    server.set_max_total_read_average(config.max_total_read_average());
-    server.set_max_session_read_average(config.max_session_read_average());
-    server.set_min_session_read_average(config.min_session_read_average());
+    network::Server server(config);
 
     auto callback = std::make_shared<std::function<void(network::Command)>>(
             [&server, &account, &sign](network::Command c){
@@ -294,6 +287,7 @@ int main(int argc, char* argv[])
                                 account.GetUserRevision(user_id)));
 
                 Logger::Info("Logout User: %d", user_id);
+                               // account.Remove(user_id);
             }
         }
         Logger::Info(msg);