Browse Source

Merge pull request #36 from meeh420/master

Rewrite
pull/46/head
orignal 11 years ago
parent
commit
74e1840bad
  1. 8
      Queue.h
  2. 32
      i2p.cpp

8
Queue.h

@ -98,17 +98,18 @@ namespace util @@ -98,17 +98,18 @@ namespace util
{
public:
MsgQueue (): m_Thread (std::bind (&MsgQueue<Msg>::Run, this)) {};
MsgQueue (): m_Thread (std::bind (&MsgQueue<Msg>::Run, this)) , running(1) {};
void Stop()
{
m_Thread.detach();
running = 0;
m_Thread.join();
}
private:
void Run ()
{
Msg * msg = nullptr;
while ((msg = Queue<Msg>::GetNext ()) != nullptr)
while ((msg = Queue<Msg>::GetNext ()) != nullptr && running)
{
msg->Process ();
delete msg;
@ -117,6 +118,7 @@ namespace util @@ -117,6 +118,7 @@ namespace util
private:
std::thread m_Thread;
int running;
};
}
}

32
i2p.cpp

@ -27,6 +27,7 @@ @@ -27,6 +27,7 @@
// Global
int running = 1;
int isDaemon;
#ifndef _WIN32
void handle_signal(int sig)
@ -59,6 +60,7 @@ void handle_signal(int sig) @@ -59,6 +60,7 @@ void handle_signal(int sig)
int main( int argc, char* argv[] )
{
i2p::util::config::OptionParser(argc,argv);
isDaemon = i2p::util::config::GetArg("-daemon", 0);
#ifdef _WIN32
setlocale(LC_CTYPE, "");
SetConsoleCP(1251);
@ -71,8 +73,22 @@ int main( int argc, char* argv[] ) @@ -71,8 +73,22 @@ int main( int argc, char* argv[] )
LogPrint("data directory: ", i2p::util::filesystem::GetDataDir().string());
i2p::util::filesystem::ReadConfigFile(i2p::util::config::mapArgs, i2p::util::config::mapMultiArgs);
int isLogging = i2p::util::config::GetArg("-log", 0);
if (isLogging == 1)
{
std::string logfile = i2p::util::filesystem::GetDataDir().string();
#ifndef _WIN32
logfile.append("/debug.log");
#else
logfile.append("\\debug.log");
#endif
freopen(logfile.c_str(),"a",stdout);
LogPrint("Logging to file enabled.");
}
#ifndef _WIN32
if (i2p::util::config::GetArg("-daemon", 0) == 1)
if (isDaemon == 1)
{
pid_t pid;
pid = fork();
@ -125,18 +141,6 @@ int main( int argc, char* argv[] ) @@ -125,18 +141,6 @@ int main( int argc, char* argv[] )
sigaction(SIGINT,&sa,0);
#endif
if (i2p::util::config::GetArg("-log", 0) == 1)
{
std::string logfile = i2p::util::filesystem::GetDataDir().string();
#ifndef _WIN32
logfile.append("/debug.log");
#else
logfile.append("\\debug.log");
#endif
LogPrint("Logging to file enabled.");
freopen(logfile.c_str(),"a",stdout);
}
//TODO: This is an ugly workaround. fix it.
//TODO: Autodetect public IP.
i2p::context.OverrideNTCPAddress(i2p::util::config::GetCharArg("-host", "127.0.0.1"),
@ -161,7 +165,7 @@ int main( int argc, char* argv[] ) @@ -161,7 +165,7 @@ int main( int argc, char* argv[] )
i2p::data::netdb.Stop ();
httpServer.Stop ();
if (i2p::util::config::GetArg("-log", 0) == 1)
if (isLogging == 1)
{
fclose (stdout);
}

Loading…
Cancel
Save