rewritten: sessions management

(Session, SessionContainer, SessionManager)
           now a Session object don't copy all fields in its copy constructor (only id)
           the rest fields are set after the object is inserted in SessionContainer
added:     after successfully login a session id is changed
added:     plugin.Call() methods with a first argument a pointer to a Session object



git-svn-id: svn://ttmath.org/publicrep/winix/trunk@823 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
2012-03-17 05:11:23 +00:00
parent 70421b7bd1
commit e83fd91423
25 changed files with 444 additions and 183 deletions

View File

@@ -251,16 +251,17 @@ bool Plugin::HasMessage(int message)
}
void Plugin::Call(int message, Slots::iterator & slot, PluginInfo & info)
void Plugin::Call(Session * ses, int message, Slots::iterator & slot, PluginInfo & info)
{
if( !SetPointers(info) )
return;
current_plugin = slot->second.index;
info.plugin_id = current_plugin;
info.session = ses;
if( current_plugin != -1 )
info.plugin_data_base = cur->session->plugin_data.Get(current_plugin);
if( current_plugin != -1 && ses )
info.plugin_data_base = ses->plugin_data.Get(current_plugin);
else
info.plugin_data_base = 0;
@@ -295,7 +296,7 @@ void Plugin::Call(int message, Slots::iterator & slot, PluginInfo & info)
void Plugin::Call(int message, void * p1_, void * p2_, long l1_, long l2_)
void 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
@@ -315,7 +316,7 @@ PluginInfo info;
info.l1 = l1_;
info.l2 = l2_;
Call(message, i, info);
Call(ses, message, i, info);
if( info.res )
++ret_true_loc;
@@ -331,52 +332,104 @@ PluginInfo info;
void Plugin::Call(int message)
{
Call(message, 0, 0, 0, 0);
Call(cur->session, message, 0, 0, 0, 0);
}
void Plugin::Call(int message, void * p1_)
{
Call(message, p1_, 0, 0, 0);
Call(cur->session, message, p1_, 0, 0, 0);
}
void Plugin::Call(int message, void * p1_, void * p2_)
{
Call(message, p1_, p2_, 0, 0);
Call(cur->session, message, p1_, p2_, 0, 0);
}
void Plugin::Call(int message, long l1_)
{
Call(message, 0, 0, l1_, 0);
Call(cur->session, message, 0, 0, l1_, 0);
}
void Plugin::Call(int message, long l1_, long l2_)
{
Call(message, 0, 0, l1_, l2_);
Call(cur->session, message, 0, 0, l1_, l2_);
}
void Plugin::Call(int message, void * p1_, long l1_)
{
Call(message, p1_, 0, l1_, 0);
Call(cur->session, message, p1_, 0, l1_, 0);
}
void Plugin::Call(int message, void * p1_, long l1_, long l2_)
{
Call(message, p1_, 0, l1_, l2_);
Call(cur->session, message, p1_, 0, l1_, l2_);
}
void Plugin::Call(int message, void * p1_, void * p2_, long l1_)
{
Call(message, p1_, p2_, l1_, 0);
Call(cur->session, message, p1_, p2_, l1_, 0);
}
void Plugin::Call(Session * ses, int message)
{
Call(ses, message, 0, 0, 0, 0);
}
void Plugin::Call(Session * ses, int message, void * p1_)
{
Call(ses, message, p1_, 0, 0, 0);
}
void Plugin::Call(Session * ses, int message, void * p1_, void * p2_)
{
Call(ses, message, p1_, p2_, 0, 0);
}
void Plugin::Call(Session * ses, int message, long l1_)
{
Call(ses, message, 0, 0, l1_, 0);
}
void Plugin::Call(Session * ses, int message, long l1_, long l2_)
{
Call(ses, message, 0, 0, l1_, l2_);
}
void Plugin::Call(Session * ses, int message, void * p1_, long l1_)
{
Call(ses, message, p1_, 0, l1_, 0);
}
void Plugin::Call(Session * ses, int message, void * p1_, long l1_, long l2_)
{
Call(ses, message, p1_, 0, l1_, l2_);
}
void Plugin::Call(Session * ses, int message, void * p1_, void * p2_, long l1_)
{
Call(ses, message, p1_, p2_, l1_, 0);
}
size_t Plugin::Size()
{
return plugins.size();