allow a request to be processed in a job

Now we allow a request to be passed into a job queue,
and after the job finishes the request is passed into
a controller again. In order to achieve this we have
a requests queue in System, when we put a request
to the job this Request structure is preserved in the
queue and for a new request a new Request is added to
the queue.

while here:
- remove App::Lock()/Unlock(), use scoped locking
- fix: Plugin now has a Call method which takes ModelConnector
  and a logger (used in multithreaded environment)
- BaseThread has a main_model_connector pointer
  to the main (from the main thread) model connector
- the FastCGI structure fcgi_request moved from App to Request
- some methods for handling requests moved from App to Request
- small refactoring in main.cpp
- add Http class (a http client)
This commit is contained in:
2022-07-25 14:21:21 +02:00
parent b2d92b85a0
commit 979ef907fe
65 changed files with 7018 additions and 4437 deletions

View File

@@ -78,6 +78,14 @@
./init.o: ../../../../winix/winixd/core/textstream.h
./init.o: ../../../../winix/winixd/models/winixmodel.h
./init.o: ../../../../winix/winixd/core/header.h
./init.o: ../../../../winix/winixd/core/compress.h
./init.o: ../../../../winix/winixd/core/winixbase.h
./init.o: ../../../../winix/winixd/core/plugin.h
./init.o: ../../../../winix/winixd/core/pluginmsg.h
./init.o: ../../../../winix/winixd/core/plugindata.h
./init.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./init.o: ../../../../winix/winixd/core/mount.h
./init.o: ../../../../winix/winixd/core/mounts.h
./init.o: ../../../../winix/winixd/db/db.h
./init.o: ../../../../winix/winixd/db/dbbase.h
./init.o: ../../../../winix/winixd/db/dbconn.h
@@ -87,18 +95,14 @@
./init.o: ../../../../winix/winixd/models/user.h
./init.o: ../../../../winix/winixd/models/group.h
./init.o: ../../../../winix/winixd/core/dircontainer.h
./init.o: ../../../../winix/winixd/core/winixbase.h
./init.o: ../../../../winix/winixd/core/ugcontainer.h
./init.o: ../../../../winix/winixd/core/cur.h
./init.o: ../../../../winix/winixd/core/request.h
./init.o: ../../../../winix/winixd/core/mountparser.h
./init.o: ../../../../winix/winixd/core/cur.h
./init.o: ../../../../winix/winixd/core/session.h
./init.o: ../../../../winix/winixd/core/plugindata.h
./init.o: ../../../../winix/winixd/core/rebus.h
./init.o: ../../../../winix/winixd/core/ipban.h
./init.o: ../../../../winix/winixd/core/mount.h bot.h stats.h
./init.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./init.o: ../../../../winix/winixd/core/plugin.h
./init.o: ../../../../winix/winixd/core/pluginmsg.h templates.h
./init.o: ../../../../winix/winixd/core/ipban.h bot.h stats.h
./init.o: ../../../../winix/winixd/core/winixmodeldeprecated.h templates.h
./init.o: ../../../../winix/winixd/core/plugin.h statssession.h
./init.o: ../../../../winix/winixd/core/plugindata.h
./stats.o: stats.h ../../../../winix/winixd/core/config.h
@@ -121,7 +125,6 @@
./stats.o: ../../../../winix/winixd/core/log.h
./stats.o: ../../../../pikotools/src/log/filelog.h
./stats.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./stats.o: ../../../../winix/winixd/core/winixbase.h
./stats.o: ../../../../winix/winixd/core/log.h
./stats.o: ../../../../winix/winixd/core/logmanipulators.h
./stats.o: ../../../../pikotools/src/log/log.h ../../../../morm/src/morm.h
@@ -151,14 +154,6 @@
./stats.o: ../../../../morm/src/postgresqlconnector.h
./stats.o: ../../../../morm/src/postgresqlqueryresult.h
./stats.o: ../../../../morm/src/transaction.h
./stats.o: ../../../../winix/winixd/core/synchro.h
./stats.o: ../../../../winix/winixd/core/filelog.h
./stats.o: ../../../../winix/winixd/core/lock.h
./stats.o: ../../../../winix/winixd/core/synchro.h
./stats.o: ../../../../winix/winixd/core/plugin.h
./stats.o: ../../../../winix/winixd/core/pluginmsg.h
./stats.o: ../../../../winix/winixd/core/plugindata.h
./stats.o: ../../../../winix/winixd/core/winixbase.h
./templates.o: templates.h ../../../../winix/winixd/core/plugin.h
./templates.o: ../../../../ezc/src/ezc.h ../../../../morm/src/version.h
./templates.o: ../../../../ezc/src/generator.h ../../../../ezc/src/blocks.h
@@ -220,6 +215,9 @@
./templates.o: ../../../../pikotools/src/convert/baseparser.h
./templates.o: ../../../../winix/winixd/core/log.h
./templates.o: ../../../../winix/winixd/core/winixmodeldeprecated.h
./templates.o: ../../../../winix/winixd/templates/misc.h
./templates.o: ../../../../winix/winixd/templates/localefilter.h
./templates.o: ../../../../winix/winixd/templates/locale.h
./templates.o: ../../../../winix/winixd/core/winixbase.h
./templates.o: ../../../../winix/winixd/core/log.h
./templates.o: ../../../../winix/winixd/core/logmanipulators.h
@@ -235,12 +233,5 @@
./templates.o: ../../../../winix/winixd/core/filelog.h
./templates.o: ../../../../winix/winixd/core/lock.h
./templates.o: ../../../../winix/winixd/core/synchro.h
./templates.o: ../../../../winix/winixd/core/plugin.h
./templates.o: ../../../../winix/winixd/core/pluginmsg.h
./templates.o: ../../../../winix/winixd/core/plugindata.h
./templates.o: ../../../../winix/winixd/core/winixbase.h
./templates.o: ../../../../winix/winixd/templates/misc.h
./templates.o: ../../../../winix/winixd/templates/localefilter.h
./templates.o: ../../../../winix/winixd/templates/locale.h
./templates.o: ../../../../pikotools/src/convert/patternreplacer.h
./templates.o: ../../../../winix/winixd/templates/htmltextstream.h

View File

@@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2010-2018, Tomasz Sowa
* Copyright (c) 2010-2022, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -149,16 +149,19 @@ StatsSession * stats_session = 0;
void SessionCreated(PluginInfo & info)
void SessionCreated(PluginInfo & env)
{
StatsSession * d = new StatsSession();
info.session->plugin_data.Assign(info.plugin->current_plugin, d);
if( !info.cur->request->IsParam(nostat_param) )
if( env.cur->session )
{
info.log << log4 << "Stats: created stats plugin data"
<< ", plugin id: " << info.plugin_id
<< ", pointer: " << d << logend;
StatsSession * d = new StatsSession();
env.cur->session->plugin_data.Assign(env.plugin->current_plugin, d);
if( !env.cur->request->IsParam(nostat_param) )
{
env.log << log4 << "Stats: created stats plugin data"
<< ", plugin id: " << env.plugin_id
<< ", pointer: " << d << logend;
}
}
}
@@ -170,7 +173,11 @@ void RemoveSession(PluginInfo & info)
{
// temporarily for debug
// sometimes the pointer is null here
info.log << log1 << "Stats: why the info.plugin_data_base is zero? !!!!, ses_id: " << info.session->id << logend;
if( info.cur->session )
{
info.log << log1 << "Stats: why the info.plugin_data_base is zero? !!!!, ses_id: " << info.cur->session->id << logend;
}
return;
}
@@ -230,11 +237,12 @@ using namespace Stats;
info.plugin->Assign(WINIX_CONTENT_MAKE, ContentMake);
info.plugin->Assign(WINIX_SESSION_CREATED, SessionCreated);
info.plugin->Assign(WINIX_PLUGIN_SESSION_DATA_REMOVE, RemoveSession);
info.plugin->Assign(WINIX_PREPARE_TO_CLOSE, Close);
info.plugin->Assign(WINIX_PREPARE_TO_CLOSE, Close);
info.plugin->Assign(WINIX_FILE_REMOVED, RemoveFile);
info.plugin->Assign(WINIX_DIR_PREPARE_TO_REMOVE, RemoveDir);
info.set_dependency_for(stats);
stats.set_dependency((WinixModelDeprecated*)info.functions);
stats.ReadConfig(info.config);
stats.ReadStats();