mirror of
https://github.com/znc/znc.git
synced 2026-08-10 02:43:05 +02:00
Split CTCPListener from CListener
This splits up CListener into a TCP-specific class and a general class. The intention is to later add another class inheriting from CListener that listens on unix sockets. Signed-off-by: Uli Schlachter <psychon@znc.in>
This commit is contained in:
+33
-15
@@ -29,27 +29,19 @@ class CListener {
|
||||
public:
|
||||
typedef enum { ACCEPT_IRC, ACCEPT_HTTP, ACCEPT_ALL } EAcceptType;
|
||||
|
||||
CListener(unsigned short uPort, const CString& sBindHost,
|
||||
const CString& sURIPrefix, bool bSSL, EAddrType eAddr,
|
||||
EAcceptType eAccept)
|
||||
CListener(const CString& sURIPrefix, bool bSSL, EAcceptType eAccept)
|
||||
: m_bSSL(bSSL),
|
||||
m_eAddr(eAddr),
|
||||
m_uPort(uPort),
|
||||
m_sBindHost(sBindHost),
|
||||
m_sURIPrefix(sURIPrefix),
|
||||
m_pListener(nullptr),
|
||||
m_eAcceptType(eAccept) {}
|
||||
|
||||
~CListener();
|
||||
virtual ~CListener();
|
||||
|
||||
CListener(const CListener&) = delete;
|
||||
CListener& operator=(const CListener&) = delete;
|
||||
|
||||
// Getters
|
||||
bool IsSSL() const { return m_bSSL; }
|
||||
EAddrType GetAddrType() const { return m_eAddr; }
|
||||
unsigned short GetPort() const { return m_uPort; }
|
||||
const CString& GetBindHost() const { return m_sBindHost; }
|
||||
CRealListener* GetRealListener() const { return m_pListener; }
|
||||
const CString& GetURIPrefix() const { return m_sURIPrefix; }
|
||||
EAcceptType GetAcceptType() const { return m_eAcceptType; }
|
||||
@@ -59,21 +51,47 @@ class CListener {
|
||||
// except this one, so don't add other setters!
|
||||
void SetAcceptType(EAcceptType eType) { m_eAcceptType = eType; }
|
||||
|
||||
bool Listen();
|
||||
virtual bool Listen() = 0;
|
||||
void ResetRealListener();
|
||||
CConfig ToConfig() const;
|
||||
virtual CConfig ToConfig() const = 0;
|
||||
|
||||
private:
|
||||
protected:
|
||||
bool m_bSSL;
|
||||
EAddrType m_eAddr;
|
||||
unsigned short m_uPort;
|
||||
CString m_sBindHost;
|
||||
CString m_sURIPrefix;
|
||||
CRealListener* m_pListener;
|
||||
EAcceptType m_eAcceptType;
|
||||
};
|
||||
|
||||
class CTCPListener : public CListener {
|
||||
public:
|
||||
CTCPListener(unsigned short uPort, const CString& sBindHost,
|
||||
const CString& sURIPrefix, bool bSSL, EAddrType eAddr,
|
||||
EAcceptType eAccept)
|
||||
: CListener(sURIPrefix, bSSL, eAccept),
|
||||
m_eAddr(eAddr),
|
||||
m_uPort(uPort),
|
||||
m_sBindHost(sBindHost) {}
|
||||
~CTCPListener();
|
||||
|
||||
CTCPListener(const CTCPListener&) = delete;
|
||||
CTCPListener& operator=(const CTCPListener&) = delete;
|
||||
|
||||
// Getters
|
||||
EAddrType GetAddrType() const { return m_eAddr; }
|
||||
unsigned short GetPort() const { return m_uPort; }
|
||||
const CString& GetBindHost() const { return m_sBindHost; }
|
||||
// !Getters
|
||||
|
||||
bool Listen() override;
|
||||
CConfig ToConfig() const override;
|
||||
|
||||
protected:
|
||||
EAddrType m_eAddr;
|
||||
unsigned short m_uPort;
|
||||
CString m_sBindHost;
|
||||
};
|
||||
|
||||
class CRealListener : public CZNCSock {
|
||||
public:
|
||||
CRealListener(CListener& listener) : CZNCSock(), m_Listener(listener) {}
|
||||
|
||||
Reference in New Issue
Block a user