Make modpython work with server-dependent caps

This commit is contained in:
Alexey Sokolov
2024-01-14 11:12:32 +00:00
parent 4b1a524a72
commit efd136c01c
6 changed files with 195 additions and 55 deletions

View File

@@ -241,6 +241,10 @@ class CPyRetBool {
bool ExistsNV(const CString& sName) {
return $self->EndNV() != $self->FindNV(sName);
}
void AddServerDependentCapability(const CString& sName, PyObject* serverCb,
PyObject* clientCb) {
$self->AddServerDependentCapability(sName, std::make_unique<CPyCapability>(serverCb, clientCb));
}
}
%extend CModules {

View File

@@ -369,3 +369,17 @@ inline CPyModCommand* CreatePyModCommand(CPyModule* pModule,
PyObject* pyObj) {
return new CPyModCommand(pModule, sCmd, sArgs, sDesc, pyObj);
}
class ZNC_EXPORT_LIB_EXPORT CPyCapability : public CCapability {
public:
CPyCapability(PyObject* serverCb, PyObject* clientCb);
~CPyCapability();
void OnServerChangedSupport(CIRCNetwork* pNetwork, bool bState) override;
void OnClientChangedSupport(CClient* pClient, bool bState) override;
private:
PyObject* m_serverCb;
PyObject* m_clientCb;
};