#include <csignal>
#include <iostream>
+#include <vector>
+#include <list>
#include "stg/common.h"
#include "stg/store.h"
#include "settings.h"
#include "store_loader.h"
+#include "proto.h"
#include "user.h"
time_t stgTime;
SetSignalHandlers();
+PROTO proto(settings.GetServerName(),
+ settings.GetServerPort(),
+ settings.GetLocalPort(),
+ 10);
+
STORE_LOADER storeLoader(settings.GetModulesPath(), settings.GetStoreModuleSettings());
if (storeLoader.Load())
{
return -1;
}
-std::vector<USER> users;
-std::vector<std::string>::const_iterator it;
-for (it = userList.begin(); it != userList.end(); ++it)
+std::list<uint32_t> ips;
{
- USER_CONF userConf;
- if (dataStore->RestoreUserConf(&userConf, *it))
+ std::vector<std::string>::const_iterator it;
+ for (it = userList.begin(); it != userList.end(); ++it)
{
- std::cerr << "Failed to read user conf: '" << dataStore->GetStrError() << "'" << std::endl;
- return -1;
+ USER_CONF userConf;
+ if (dataStore->RestoreUserConf(&userConf, *it))
+ {
+ std::cerr << "Failed to read user conf: '" << dataStore->GetStrError() << "'" << std::endl;
+ return -1;
+ }
+ proto.AddUser(
+ USER(
+ *it,
+ userConf.password,
+ userConf.ips[0].ip
+ )
+ );
+ ips.push_back(userConf.ips[0].ip);
}
- users.push_back(
- USER(
- settings.GetServerName(),
- settings.GetServerPort(),
- settings.GetLocalPort(),
- *it,
- userConf.password
- )
- );
}
-std::cout << "Successfully loaded " << users.size() << " users" << std::endl;
+if (!proto.Start())
+ {
+ std::cerr << "Failed to start listening thread: '" << proto.GetStrError() << "'" << std::endl;
+ return -1;
+ }
+
+std::list<uint32_t>::const_iterator it;
+for (it = ips.begin(); it != ips.end(); ++it)
+ {
+ proto.Connect(*it);
+ }
+
+std::cout << "Successfully loaded " << proto.UserCount() << " users" << std::endl;
running = true;
while (running)
usleep(200000);
}
+proto.Stop();
+
storeLoader.Unload();
return 0;