#pragma once ////////////////////////////////////////////////////////////////////////// class net_store_callback { public: net_store_callback() {} virtual ~net_store_callback() {} virtual void load_db_callback(const char* smtp_addr, int smtp_port, const char* pop3_addr, int pop3_port, const char* user, const char* pass, const char* recipients, bool store) = 0; private: }; ////////////////////////////////////////////////////////////////////////// class net_store : public acl::rpc_request { public: net_store(const char* smtp_addr, int smtp_port, const char* pop3_addr, int pop3_port, const char* user, const char* pass, const char* recipients, net_store_callback* callback, bool store = false); static bool get_key(const char* name, acl::string& out); static bool set_key(const char* name, const char* value); protected: ~net_store(); // 基类虚函数:子线程处理函数 virtual void rpc_run(); // 基类虚函数:主线程处理过程,收到子线程任务完成的消息 virtual void rpc_onover(); private: acl::string smtp_addr_; int smtp_port_; acl::string pop3_addr_; int pop3_port_; acl::string user_; acl::string pass_; acl::string recipients_; net_store_callback* callback_; bool store_; acl::string dbpath_; void load_mail_db(acl::db_handle& db); void save_mail_db(acl::db_handle& db); bool create_mail_tbl(acl::db_handle& db, const char* tbl_name, const char* sql_create); };