X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/65a51d11c64daa4df3d4388df60bb4efc3e67e14..8c6fa3fbaccc22127280bf77a48fab5a3ee0716e:/projects/rlm_stg/stg_client.h diff --git a/projects/rlm_stg/stg_client.h b/projects/rlm_stg/stg_client.h index 6315a0a5..917d0e51 100644 --- a/projects/rlm_stg/stg_client.h +++ b/projects/rlm_stg/stg_client.h @@ -18,67 +18,41 @@ * Author : Maxim Mamontov */ -#ifndef STG_CLIENT_H -#define STG_CLIENT_H +#ifndef __STG_RLM_CLIENT_H__ +#define __STG_RLM_CLIENT_H__ + +#include "types.h" -#include "stg/sgcp_proto.h" // Proto -#include "stg/sgcp_types.h" // TransportType #include "stg/os_int.h" -#include -#include -#include +#include -typedef std::vector > PAIRS; +#include -struct RESULT +namespace STG +{ +namespace RLM { - PAIRS modify; - PAIRS reply; -}; - -struct ChannelConfig { - struct Error : std::runtime_error { - Error(const std::string& message) : runtime_error(message) {} - }; - - ChannelConfig(std::string address); - - STG::SGCP::TransportType transport; - std::string key; - std::string address; - uint16_t port; -}; -class STG_CLIENT +class Client { public: - enum TYPE { - AUTHORIZE, - AUTHENTICATE, - POST_AUTH, - PRE_ACCT, - ACCOUNT - }; - struct Error : std::runtime_error { - Error(const std::string& message) : runtime_error(message) {} - }; + explicit Client(const std::string& address); + ~Client(); - STG_CLIENT(const std::string& address); - ~STG_CLIENT(); + bool stop(); - static STG_CLIENT* get(); + static Client* get(); static bool configure(const std::string& address); - RESULT request(TYPE type, const std::string& userName, const std::string& password, const PAIRS& pairs); + RESULT request(REQUEST_TYPE type, const std::string& userName, const std::string& password, const PAIRS& pairs); private: - ChannelConfig m_config; - STG::SGCP::Proto m_proto; - - void m_writeHeader(TYPE type, const std::string& userName, const std::string& password); - void m_writePairBlock(const PAIRS& source); - PAIRS m_readPairBlock(); + class Impl; + boost::scoped_ptr m_impl; }; +} // namespace RLM +} // namespace STG + #endif