⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 groupeid.cpp

📁 流媒体传输协议的实现代码,非常有用.可以支持rtsp mms等流媒体传输协议
💻 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 + -