#ifndef __DATATHREAD_H__ #define __DATATHREAD_H__ #include "../../../users.h" #include "base_store.h" #include #include class DataThread { public: DataThread() : done(false), sock(-1) { Init(); }; DataThread(USERS * u, BASE_STORE * s, int sd) : users(u), store(s), sock(sd), done(false) { Init(); }; ~DataThread(); void SetUsers(USERS * u) { users = u; }; void SetStore(BASE_STORE * s) { store = s; }; void SetSocket(int s) { sock = s; }; bool isDone() const { return done; }; bool Init(); bool Start(); bool Stop(); static void * Run(void *); private: pthread_t thread; USERS * users; BASE_STORE * store; XML_Parser parser; int sock; bool done; bool running; bool stopped; BLOWFISH_CTX ctx; std::string password; std::string reply; void Handle(); bool PrepareContect(); void Encode(const std::string &, char *); void Decode(char *, const std::string &); friend void StartHandler(void *data, const char *el, const char **attr); friend void EndHandler(void *data, const char *el); friend void DataHandler(void *data, const char *el); }; #endif