summaryrefslogtreecommitdiff
path: root/src/sman.cpp
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2013-04-06 13:14:42 +0200
committerPaul Buetow <paul@buetow.org>2013-04-06 13:14:42 +0200
commit0537da9d1e0f593130fc3967befb71e673b016bc (patch)
treee6733c8494e0dc8df5bd7e5d2dcbd401771272b6 /src/sman.cpp
parent3e382f0c9435cbf72570a87640652ad1551c7cfd (diff)
tagging ychat-0.5.4ychat-0.5.4
Diffstat (limited to 'src/sman.cpp')
-rw-r--r--src/sman.cpp49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/sman.cpp b/src/sman.cpp
new file mode 100644
index 0000000..dd2138f
--- /dev/null
+++ b/src/sman.cpp
@@ -0,0 +1,49 @@
+#ifndef SMAN_CXX
+#define SMAN_CXX
+
+#include "sman.h"
+
+sman::sman()
+{
+ this->sessions=new hmap<sess *, string>(80);
+ this->sessioncount=0;
+}
+sman::~sman()
+{
+ delete this->sessions;
+}
+string sman::generateId( int len )
+{
+ string valid_chars="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_";
+ string s_ret="";
+ srand(time(0)+160682);
+ for(int i=0;i<len;i++)
+ {
+ int i_char=rand() % 64;
+ s_ret+=valid_chars[i_char];
+ }
+ return s_ret;
+}
+sess *sman::createSession( )
+{
+ string new_id=this->generateId(s_tool::string2int( s_conf::get
+ ().get_val( "SESSION_LENGTH" ) ) );
+
+ sess *new_sess= new sess( new_id );
+
+ this->sessioncount++;
+ this->sessions->add_elem( new_sess, new_id );
+
+ return new_sess;
+}
+
+sess *sman::getSession( string s_id )
+{
+ return this->sessions->get_elem( s_id );
+}
+void sman::destroySession( string s_id )
+{
+ this->sessioncount--;
+ this->sessions->del_elem( s_id );
+}
+#endif