From a54d0d9cc1e462865b6e8fb539cc6b40dbc2bd0d Mon Sep 17 00:00:00 2001 From: Volker Birk Date: Wed, 1 Sep 2021 13:06:55 +0200 Subject: [PATCH] C++ version of transport interface --- .gitignore | 4 +++ src/transport.hh | 63 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 src/transport.hh diff --git a/.gitignore b/.gitignore index 3cb3f5a..af9ffba 100644 --- a/.gitignore +++ b/.gitignore @@ -156,3 +156,7 @@ Module.symvers Mkfile.old dkms.conf +# editor +ws +.??*.swp + diff --git a/src/transport.hh b/src/transport.hh new file mode 100644 index 0000000..8c15c88 --- /dev/null +++ b/src/transport.hh @@ -0,0 +1,63 @@ +#ifdef __TRANSPORT_HH__ +#define __TRANSPORT_HH__ + +#include +#include +#include + +namespace pEp { + class Transport { + const PEP_transport_id id; + + public: + struct TransportError : std::runtime_error { + const PEP_transport_status_code tsc; + + TransportError(PEP_transport_status_code tsc) : + std::runtime_error("transport error"), tsc(tsc) { } + }; + + struct ConfigError : std::logic_error { + ConfigError() : std::logic_error("config error") { } + }; + + class Config { + public: + Config() { } + virtual Config(const Config& second) { } + virtual ~Config() { } + }; + + Transport(PEP_transport_id id) : id(id) { } + Transport(const Transport&) = delete; + Transport& operator=(const Transport&) = delete; + + virtual ~Transport() { } + + PEP_transport_id get_id() { return id; } + + virtual void configure(const Config& config); + virtual void startup(callback_execution cbe = PEP_cbe_polling); + virtual void shutdown(); + + virtual void sendto(pEp::Message& msg); + virtual Message recvnext(); + + virtual void + signal_statuschange(std::function(void(PEP_transport_status_code))); + + virtual void + signal_sendto_result(std::function(void(std::string, + std::string, PEP_transport_status_code))); + + virtual void + signal_incoming_message(std::function(void(PEP_transport_status_code))); + + virtual bool shortmsg_supported(); + virtual bool longmsg_supported(); + virtual bool longmsg_formatted_supported(); + virtual PEP_text_format native_text_format(); + }; +}; + +#endif // __TRANSPORT_HH__