Make modperl support AddServerDependentCapability

This commit is contained in:
Alexey Sokolov
2024-01-14 12:02:07 +00:00
parent efd136c01c
commit 2b3b224bca
5 changed files with 75 additions and 3 deletions

View File

@@ -374,6 +374,41 @@ CPerlSocket::~CPerlSocket() {
}
}
CPerlCapability::~CPerlCapability() {
SvREFCNT_dec(m_serverCb);
SvREFCNT_dec(m_clientCb);
}
void CPerlCapability::OnServerChangedSupport(CIRCNetwork* pNetwork, bool bState) {
PSTART;
PUSH_PTR(CIRCNetwork*, pNetwork);
mXPUSHi(bState);
PUTBACK;
ret = call_sv(m_serverCb, G_EVAL | G_ARRAY);
SPAGAIN;
SP -= ret;
ax = (SP - PL_stack_base) + 1;
if (SvTRUE(ERRSV)) {
DEBUG("Perl hook OnServerChangedSupport died with: " + PString(ERRSV));
}
PEND;
}
void CPerlCapability::OnClientChangedSupport(CClient* pClient, bool bState) {
PSTART;
PUSH_PTR(CClient*, pClient);
mXPUSHi(bState);
PUTBACK;
ret = call_sv(m_clientCb, G_EVAL | G_ARRAY);
SPAGAIN;
SP -= ret;
ax = (SP - PL_stack_base) + 1;
if (SvTRUE(ERRSV)) {
DEBUG("Perl hook OnServerChangedSupport died with: " + PString(ERRSV));
}
PEND;
}
template <>
void TModInfo<CModPerl>(CModInfo& Info) {
Info.SetWikiPage("modperl");