]> git.stg.codes - stg.git/blob - projects/stargazer/plugins/other/userstat/datathread.h
И еще раз refs #1
[stg.git] / projects / stargazer / plugins / other / userstat / datathread.h
1 #ifndef __DATATHREAD_H__
2 #define __DATATHREAD_H__
3
4 #include "../../../users.h"
5 #include "base_store.h"
6 #include <pthread.h>
7 #include <expat.h>
8
9 class DataThread {
10 public:
11     DataThread() : done(false), sock(-1) { Init(); };
12     DataThread(USERS * u, BASE_STORE * s, int sd)
13         : users(u),
14           store(s),
15           sock(sd),
16           done(false)
17     {
18         Init();
19     };
20     ~DataThread();
21
22     void SetUsers(USERS * u) { users = u; };
23     void SetStore(BASE_STORE * s) { store = s; };
24     void SetSocket(int s) { sock = s; };
25
26     bool isDone() const { return done; };
27     bool Init();
28
29     bool Start();
30     bool Stop();
31
32     static void * Run(void *);
33
34
35 private:
36     pthread_t thread;
37     USERS * users;
38     BASE_STORE * store;
39     XML_Parser parser;
40     int sock;
41     bool done;
42     bool running;
43     bool stopped;
44     BLOWFISH_CTX ctx;
45     std::string password;
46     std::string reply;
47
48     void Handle();
49     bool PrepareContect();
50     void Encode(const std::string &, char *);
51     void Decode(char *, const std::string &);
52
53     friend void StartHandler(void *data, const char *el, const char **attr);
54     friend void EndHandler(void *data, const char *el);
55     friend void DataHandler(void *data, const char *el);
56 };
57
58 #endif