/** * @file session.h * @brief <---> * @author Andreas Aardal Hanssen * @date 2002-2005 */ #ifndef session_h_included #define session_h_included #include "argparser.h" #include #include #include #include namespace Binc { class Depot; class Session { public: std::map attrs; char **unparsedArgs; struct { bool help; bool version; bool ssl; } command; bool mailboxchanges; enum State { NONAUTHENTICATED = 0x01, AUTHENTICATED = 0x02, SELECTED = 0x04, LOGOUT = 0x00 }; CommandLineArgs args; int timeout() const; bool hasEnv(const std::string &key) const; std::string getEnv(const std::string &key); void setEnv(const std::string &key, const std::string &value); int getState() const; void setState(int n); bool parseCommandLine(int argc, char *argv[]); void assignCommandLineArgs(); int getWriteBytes() const; int getReadBytes() const; void addWriteBytes(int); void addReadBytes(int); int getBodies() const; int getStatements() const; void addBody(); void addStatement(); void setLogFacility(int facility); int getLogFacility() const; const std::string &getLastError() const; const std::string &getResponseCode() const; const std::string &getIP() const; const std::string &getUserID() const; pid_t getPid(); const std::string &getHostname(); void setLastError(const std::string &error) const; void setResponseCode(const std::string &error) const; void clearResponseCode() const; void setIP(const std::string &ip); void setUserID(const std::string &s); inline Depot *getDepot() const; static Session &getInstance(); bool initialize(int argc, char *argv[]); private: int state; std::string userid; std::string ip; char **argv; int argc; int logfacility; int readbytes; int writebytes; int statements; int bodies; Depot *depot; mutable std::string lastError; mutable std::string responseCode; pid_t pid; std::string hostname; Session(); }; inline Depot *Session::getDepot() const { return depot; } } #endif