fixed: base_url_redirect config option was not read from the config file
and was not used when checking for base url redirect fixed: return values from plugins should be given in a special structure they were remembered in plugin object (ret_false, ret_true) and consequently were not thread safe now all plugin.Call() methods return PluginRes structure in which there are ret_false and ret_true variables changed: small refactoring in AddUser winix function git-svn-id: svn://ttmath.org/publicrep/winix/trunk@827 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
104
core/plugin.cpp
104
core/plugin.cpp
@@ -2,7 +2,7 @@
|
||||
* This file is a part of Winix
|
||||
* and is not publicly distributed
|
||||
*
|
||||
* Copyright (c) 2008-2011, Tomasz Sowa
|
||||
* Copyright (c) 2008-2012, Tomasz Sowa
|
||||
* All rights reserved.
|
||||
*
|
||||
*/
|
||||
@@ -41,9 +41,6 @@ Plugin::Plugin()
|
||||
templates = 0;
|
||||
synchro = 0;
|
||||
session_manager = 0;
|
||||
|
||||
ret_false = 0;
|
||||
ret_true = 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -296,13 +293,9 @@ void Plugin::Call(Session * ses, int message, Slots::iterator & slot, PluginInfo
|
||||
|
||||
|
||||
|
||||
void Plugin::Call(Session * ses, int message, void * p1_, void * p2_, long l1_, long l2_)
|
||||
PluginRes Plugin::Call(Session * ses, int message, void * p1_, void * p2_, long l1_, long l2_)
|
||||
{
|
||||
// how many plugins return 'false' and 'true'
|
||||
// we are using local variables because Call() method can be called
|
||||
// from a plugin too (one Call() can execute another Call())
|
||||
int ret_false_loc = 0;
|
||||
int ret_true_loc = 0;
|
||||
PluginRes res;
|
||||
int old_current_plugin = current_plugin;
|
||||
PluginInfo info;
|
||||
|
||||
@@ -319,111 +312,111 @@ PluginInfo info;
|
||||
Call(ses, message, i, info);
|
||||
|
||||
if( info.res )
|
||||
++ret_true_loc;
|
||||
++res.res_true;
|
||||
else
|
||||
++ret_false_loc;
|
||||
++res.res_false;
|
||||
}
|
||||
|
||||
current_plugin = old_current_plugin;
|
||||
ret_false = ret_false_loc;
|
||||
ret_true = ret_true_loc;
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
void Plugin::Call(int message)
|
||||
PluginRes Plugin::Call(int message)
|
||||
{
|
||||
Call(cur->session, message, 0, 0, 0, 0);
|
||||
return Call(cur->session, message, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
void Plugin::Call(int message, void * p1_)
|
||||
PluginRes Plugin::Call(int message, void * p1_)
|
||||
{
|
||||
Call(cur->session, message, p1_, 0, 0, 0);
|
||||
return Call(cur->session, message, p1_, 0, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
void Plugin::Call(int message, void * p1_, void * p2_)
|
||||
PluginRes Plugin::Call(int message, void * p1_, void * p2_)
|
||||
{
|
||||
Call(cur->session, message, p1_, p2_, 0, 0);
|
||||
return Call(cur->session, message, p1_, p2_, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
void Plugin::Call(int message, long l1_)
|
||||
PluginRes Plugin::Call(int message, long l1_)
|
||||
{
|
||||
Call(cur->session, message, 0, 0, l1_, 0);
|
||||
return Call(cur->session, message, 0, 0, l1_, 0);
|
||||
}
|
||||
|
||||
|
||||
void Plugin::Call(int message, long l1_, long l2_)
|
||||
PluginRes Plugin::Call(int message, long l1_, long l2_)
|
||||
{
|
||||
Call(cur->session, message, 0, 0, l1_, l2_);
|
||||
return Call(cur->session, message, 0, 0, l1_, l2_);
|
||||
}
|
||||
|
||||
|
||||
void Plugin::Call(int message, void * p1_, long l1_)
|
||||
PluginRes Plugin::Call(int message, void * p1_, long l1_)
|
||||
{
|
||||
Call(cur->session, message, p1_, 0, l1_, 0);
|
||||
return Call(cur->session, message, p1_, 0, l1_, 0);
|
||||
}
|
||||
|
||||
|
||||
void Plugin::Call(int message, void * p1_, long l1_, long l2_)
|
||||
PluginRes Plugin::Call(int message, void * p1_, long l1_, long l2_)
|
||||
{
|
||||
Call(cur->session, message, p1_, 0, l1_, l2_);
|
||||
return Call(cur->session, message, p1_, 0, l1_, l2_);
|
||||
}
|
||||
|
||||
|
||||
void Plugin::Call(int message, void * p1_, void * p2_, long l1_)
|
||||
PluginRes Plugin::Call(int message, void * p1_, void * p2_, long l1_)
|
||||
{
|
||||
Call(cur->session, message, p1_, p2_, l1_, 0);
|
||||
return Call(cur->session, message, p1_, p2_, l1_, 0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Plugin::Call(Session * ses, int message)
|
||||
PluginRes Plugin::Call(Session * ses, int message)
|
||||
{
|
||||
Call(ses, message, 0, 0, 0, 0);
|
||||
return Call(ses, message, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
void Plugin::Call(Session * ses, int message, void * p1_)
|
||||
PluginRes Plugin::Call(Session * ses, int message, void * p1_)
|
||||
{
|
||||
Call(ses, message, p1_, 0, 0, 0);
|
||||
return Call(ses, message, p1_, 0, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
void Plugin::Call(Session * ses, int message, void * p1_, void * p2_)
|
||||
PluginRes Plugin::Call(Session * ses, int message, void * p1_, void * p2_)
|
||||
{
|
||||
Call(ses, message, p1_, p2_, 0, 0);
|
||||
return Call(ses, message, p1_, p2_, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
void Plugin::Call(Session * ses, int message, long l1_)
|
||||
PluginRes Plugin::Call(Session * ses, int message, long l1_)
|
||||
{
|
||||
Call(ses, message, 0, 0, l1_, 0);
|
||||
return Call(ses, message, 0, 0, l1_, 0);
|
||||
}
|
||||
|
||||
|
||||
void Plugin::Call(Session * ses, int message, long l1_, long l2_)
|
||||
PluginRes Plugin::Call(Session * ses, int message, long l1_, long l2_)
|
||||
{
|
||||
Call(ses, message, 0, 0, l1_, l2_);
|
||||
return Call(ses, message, 0, 0, l1_, l2_);
|
||||
}
|
||||
|
||||
|
||||
void Plugin::Call(Session * ses, int message, void * p1_, long l1_)
|
||||
PluginRes Plugin::Call(Session * ses, int message, void * p1_, long l1_)
|
||||
{
|
||||
Call(ses, message, p1_, 0, l1_, 0);
|
||||
return Call(ses, message, p1_, 0, l1_, 0);
|
||||
}
|
||||
|
||||
|
||||
void Plugin::Call(Session * ses, int message, void * p1_, long l1_, long l2_)
|
||||
PluginRes Plugin::Call(Session * ses, int message, void * p1_, long l1_, long l2_)
|
||||
{
|
||||
Call(ses, message, p1_, 0, l1_, l2_);
|
||||
return Call(ses, message, p1_, 0, l1_, l2_);
|
||||
}
|
||||
|
||||
|
||||
void Plugin::Call(Session * ses, int message, void * p1_, void * p2_, long l1_)
|
||||
PluginRes Plugin::Call(Session * ses, int message, void * p1_, void * p2_, long l1_)
|
||||
{
|
||||
Call(ses, message, p1_, p2_, l1_, 0);
|
||||
return Call(ses, message, p1_, p2_, l1_, 0);
|
||||
}
|
||||
|
||||
|
||||
@@ -436,19 +429,12 @@ size_t Plugin::Size()
|
||||
}
|
||||
|
||||
|
||||
int Plugin::True()
|
||||
{
|
||||
return ret_true;
|
||||
}
|
||||
|
||||
|
||||
int Plugin::False()
|
||||
{
|
||||
return ret_false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
!! IMPROVE ME
|
||||
Assign() can work only if other threads are not started
|
||||
we can add some barrier/flag so when other threads starts
|
||||
then we cannot use Assign() method
|
||||
*/
|
||||
void Plugin::Assign(int message, Fun1 fun1)
|
||||
{
|
||||
Slot s;
|
||||
|
Reference in New Issue
Block a user