本文整理汇总了C++中CChan::JoinUser方法的典型用法代码示例。如果您正苦于以下问题:C++ CChan::JoinUser方法的具体用法?C++ CChan::JoinUser怎么用?C++ CChan::JoinUser使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CChan
的用法示例。
在下文中一共展示了CChan::JoinUser方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CheckAttach
void CheckAttach(const CString& sMessage, CChan& Channel) {
if (Channel.IsDetached()) {
if (sMessage.AsLower().find(m_pNetwork->GetCurNick().AsLower()) != CString::npos) {
Channel.JoinUser();
}
}
}
示例2: Cleanup
void Cleanup() {
Limits::iterator it;
time_t now = time(NULL);
for (it = m_chans.begin(); it != m_chans.end(); ++it) {
// The timeout for this channel did not expire yet?
if (it->second.first + (time_t)m_iThresholdSecs >= now)
continue;
CChan *pChan = m_pNetwork->FindChan(it->first);
if (it->second.second >= m_iThresholdMsgs
&& pChan && pChan->IsDetached()) {
// The channel is detached and it is over the
// messages limit. Since we only track those
// limits for non-detached channels or for
// channels which we detached, this means that
// we detached because of a flood.
PutModule("Flood in [" + pChan->GetName() + "] is over, "
"re-attaching...");
// No buffer playback, makes sense, doesn't it?
pChan->ClearBuffer();
pChan->JoinUser();
}
Limits::iterator it2 = it++;
m_chans.erase(it2);
// Without this Bad Things (tm) could happen
if (it == m_chans.end())
break;
}
}
示例3: TryAttach
void TryAttach(CChan& Channel) {
const CString& sChan = Channel.GetName();
if (Channel.IsDetached() && IsAutoAttach(sChan)) {
Channel.JoinUser();
}
}
示例4: OnJoinMessage
bool CClient::OnJoinMessage(CJoinMessage& Message) {
CString sChans = Message.GetTarget();
CString sKeys = Message.GetKey();
VCString vsChans;
sChans.Split(",", vsChans, false);
sChans.clear();
VCString vsKeys;
sKeys.Split(",", vsKeys, true);
sKeys.clear();
for (unsigned int a = 0; a < vsChans.size(); a++) {
Message.SetTarget(vsChans[a]);
Message.SetKey((a < vsKeys.size()) ? vsKeys[a] : "");
if (m_pNetwork) {
// May be nullptr.
Message.SetChan(m_pNetwork->FindChan(vsChans[a]));
}
bool bContinue = false;
NETWORKMODULECALL(OnUserJoinMessage(Message), m_pUser, m_pNetwork, this,
&bContinue);
if (bContinue) continue;
CString sChannel = Message.GetTarget();
CString sKey = Message.GetKey();
if (m_pNetwork) {
CChan* pChan = m_pNetwork->FindChan(sChannel);
if (pChan) {
if (pChan->IsDetached())
pChan->AttachUser(this);
else
pChan->JoinUser(sKey);
continue;
} else if (!sChannel.empty()) {
pChan = new CChan(sChannel, m_pNetwork, false);
if (m_pNetwork->AddChan(pChan)) {
pChan->SetKey(sKey);
}
}
}
if (!sChannel.empty()) {
sChans += (sChans.empty()) ? sChannel : CString("," + sChannel);
if (!vsKeys.empty()) {
sKeys += (sKeys.empty()) ? sKey : CString("," + sKey);
}
}
}
Message.SetTarget(sChans);
Message.SetKey(sKeys);
return sChans.empty();
}
示例5: OnUserPart
virtual EModRet OnUserPart(CString& sChannel, CString& sMessage)
{
for (MCString::iterator it = BeginNV(); it != EndNV(); ++it)
{
if (sChannel.Equals(it->first))
{
CChan* pChan = m_pUser->FindChan(sChannel);
if (pChan)
{
pChan->JoinUser(true, "", m_pClient);
return HALT;
}
}
}
return CONTINUE;
}
示例6: TryAttach
void TryAttach(const CNick& Nick, CChan& Channel) {
const CString& sChan = Channel.GetName();
const CString& sHost = Nick.GetHostMask();
VAttachIter it;
if (!Channel.IsDetached())
return;
// Any negated match?
for (it = m_vMatches.begin(); it != m_vMatches.end(); ++it) {
if (it->IsNegated() && it->IsMatch(sChan, sHost))
return;
}
// Now check for a positive match
for (it = m_vMatches.begin(); it != m_vMatches.end(); ++it) {
if (!it->IsNegated() && it->IsMatch(sChan, sHost)) {
Channel.JoinUser();
return;
}
}
}
示例7: Attach
void Attach(CChan& channel) {
if (!channel.IsDetached())
return;
channel.JoinUser();
}