📄 groupeid.cpp
字号:
/**********This library is free software; you can redistribute it and/or modify it underthe terms of the GNU Lesser General Public License as published by theFree Software Foundation; either version 2.1 of the License, or (at youroption) any later version. (See <http://www.gnu.org/copyleft/lesser.html>.)This library is distributed in the hope that it will be useful, but WITHOUTANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESSFOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License formore details.You should have received a copy of the GNU Lesser General Public Licensealong with this library; if not, write to the Free Software Foundation, Inc.,59 Temple Place, Suite 330, Boston, MA 02111-1307 USA**********/// Copyright (c) 1996-1997, Live Networks, Inc. All rights reserved// "Group Endpoint Id"// Implementation#include "GroupEId.hh"#include "strDup.hh"#include <string.h>////////// Scope //////////void Scope::assign(u_int8_t ttl, const char* publicKey) { fTTL = ttl; fPublicKey = strDup(publicKey == NULL ? "nokey" : publicKey);}void Scope::clean() { delete[] fPublicKey; fPublicKey = NULL;}Scope::Scope(u_int8_t ttl, const char* publicKey) { assign(ttl, publicKey);}Scope::Scope(const Scope& orig) { assign(orig.ttl(), orig.publicKey());}Scope& Scope::operator=(const Scope& rightSide) { if (&rightSide != this) { if (publicKey() == NULL || strcmp(publicKey(), rightSide.publicKey()) != 0) { clean(); assign(rightSide.ttl(), rightSide.publicKey()); } else { // need to assign TTL only fTTL = rightSide.ttl(); } } return *this;}Scope::~Scope() { clean();} unsigned Scope::publicKeySize() const { return fPublicKey == NULL ? 0 : strlen(fPublicKey);}////////// GroupEId //////////GroupEId::GroupEId(struct in_addr const& groupAddr, portNumBits portNum, Scope const& scope, unsigned numSuccessiveGroupAddrs) { struct in_addr sourceFilterAddr; sourceFilterAddr.s_addr = ~0; // indicates no source filter init(groupAddr, sourceFilterAddr, portNum, scope, numSuccessiveGroupAddrs);}GroupEId::GroupEId(struct in_addr const& groupAddr, struct in_addr const& sourceFilterAddr, portNumBits portNum, unsigned numSuccessiveGroupAddrs) { init(groupAddr, sourceFilterAddr, portNum, 255, numSuccessiveGroupAddrs);}GroupEId::GroupEId() {}Boolean GroupEId::isSSM() const { return fSourceFilterAddress.s_addr != netAddressBits(~0);}void GroupEId::init(struct in_addr const& groupAddr, struct in_addr const& sourceFilterAddr, portNumBits portNum, Scope const& scope, unsigned numSuccessiveGroupAddrs) { fGroupAddress = groupAddr; fSourceFilterAddress = sourceFilterAddr; fNumSuccessiveGroupAddrs = numSuccessiveGroupAddrs; fPortNum = portNum; fScope = scope;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -