#include <Groupsock.hh>
Inheritance diagram for OutputSocket:


Public Member Functions | |
| OutputSocket (UsageEnvironment &env) | |
| virtual | ~OutputSocket () |
| Boolean | write (netAddressBits address, Port port, u_int8_t ttl, unsigned char *buffer, unsigned bufferSize) |
| int | socketNum () const |
| Port | port () const |
| UsageEnvironment & | env () const |
Static Public Attributes | |
| static int | DebugLevel = 1 |
| static UsageEnvironment * | DefaultUsageEnvironment = NULL |
Protected Member Functions | |
| OutputSocket (UsageEnvironment &env, Port port) | |
| portNumBits | sourcePortNum () const |
| Boolean | changePort (Port newPort) |
Private Member Functions | |
| virtual Boolean | handleRead (unsigned char *buffer, unsigned bufferMaxSize, unsigned &bytesRead, struct sockaddr_in &fromAddress) |
Private Attributes | |
| Port | fSourcePort |
| u_int8_t | fLastSentTTL |
Definition at line 39 of file Groupsock.hh.
| OutputSocket::OutputSocket | ( | UsageEnvironment & | env | ) |
Definition at line 40 of file Groupsock.cpp.
00041 : Socket(env, 0 /* let kernel choose port */), 00042 fSourcePort(0), fLastSentTTL(0) { 00043 }
| OutputSocket::~OutputSocket | ( | ) | [virtual] |
| OutputSocket::OutputSocket | ( | UsageEnvironment & | env, | |
| Port | port | |||
| ) | [protected] |
Definition at line 45 of file Groupsock.cpp.
00046 : Socket(env, port), 00047 fSourcePort(0), fLastSentTTL(0) { 00048 }
| Boolean OutputSocket::write | ( | netAddressBits | address, | |
| Port | port, | |||
| u_int8_t | ttl, | |||
| unsigned char * | buffer, | |||
| unsigned | bufferSize | |||
| ) |
Definition at line 53 of file Groupsock.cpp.
References Socket::DebugLevel, Socket::env(), False, fLastSentTTL, fSourcePort, UsageEnvironment::getResultMsg(), getSourcePort(), Socket::port(), Socket::socketNum(), sourcePortNum(), True, and writeSocket().
Referenced by Groupsock::output().
00054 { 00055 if (ttl == fLastSentTTL) { 00056 // Optimization: So we don't do a 'set TTL' system call again 00057 ttl = 0; 00058 } else { 00059 fLastSentTTL = ttl; 00060 } 00061 struct in_addr destAddr; destAddr.s_addr = address; 00062 if (!writeSocket(env(), socketNum(), destAddr, port, ttl, 00063 buffer, bufferSize)) 00064 return False; 00065 00066 if (sourcePortNum() == 0) { 00067 // Now that we've sent a packet, we can find out what the 00068 // kernel chose as our ephemeral source port number: 00069 if (!getSourcePort(env(), socketNum(), fSourcePort)) { 00070 if (DebugLevel >= 1) 00071 env() << *this 00072 << ": failed to get source port: " 00073 << env().getResultMsg() << "\n"; 00074 return False; 00075 } 00076 } 00077 00078 return True; 00079 }
| portNumBits OutputSocket::sourcePortNum | ( | ) | const [inline, protected] |
Definition at line 50 of file Groupsock.hh.
References fSourcePort, and Port::num().
Referenced by Groupsock::wasLoopedBackFromUs(), and write().
00050 {return fSourcePort.num();}
| Boolean OutputSocket::handleRead | ( | unsigned char * | buffer, | |
| unsigned | bufferMaxSize, | |||
| unsigned & | bytesRead, | |||
| struct sockaddr_in & | fromAddress | |||
| ) | [private, virtual] |
| int Socket::socketNum | ( | ) | const [inline, inherited] |
Definition at line 89 of file NetInterface.hh.
References Socket::fSocketNum.
Referenced by GroupsockLookupTable::AddNew(), BasicUDPSource::BasicUDPSource(), Groupsock::changeDestinationParameters(), BasicUDPSource::doGetNextFrame(), BasicUDPSource::doStopGettingFrames(), SocketLookupTable::Fetch(), OnDemandServerMediaSubsession::getStreamParameters(), Groupsock::Groupsock(), Groupsock::handleRead(), MediaSubsession::initiate(), SIPClient::invite1(), main(), Groupsock::multicastSendOnly(), MultiFramedRTPSource::MultiFramedRTPSource(), operator<<(), RTPInterface::RTPInterface(), SIPClient::SIPClient(), RTPInterface::startNetworkReading(), RTPInterface::stopNetworkReading(), unsetGroupsockBySocket(), write(), BasicUDPSource::~BasicUDPSource(), and Groupsock::~Groupsock().
00089 { return fSocketNum; }
| Port Socket::port | ( | ) | const [inline, inherited] |
Definition at line 91 of file NetInterface.hh.
References Socket::fPort.
Referenced by Groupsock::addDestination(), PassiveServerMediaSubsession::getStreamParameters(), Groupsock::Groupsock(), operator<<(), SocketLookupTable::Remove(), GroupsockLookupTable::Remove(), Groupsock::removeDestination(), PassiveServerMediaSubsession::sdpLines(), Socket::Socket(), and write().
00091 { 00092 return fPort; 00093 }
| UsageEnvironment& Socket::env | ( | ) | const [inline, inherited] |
Definition at line 95 of file NetInterface.hh.
References Socket::fEnv.
Referenced by Groupsock::changeDestinationParameters(), getGroupsockBySocket(), getSocketTable(), Groupsock::Groupsock(), Groupsock::handleRead(), Groupsock::multicastSendOnly(), Groupsock::output(), Groupsock::outputToAllMembersExcept(), setGroupsockBySocket(), socketReadHandler(), unsetGroupsockBySocket(), Groupsock::wasLoopedBackFromUs(), write(), and Groupsock::~Groupsock().
00095 { return fEnv; }
Definition at line 104 of file NetInterface.cpp.
References closeSocket, Socket::fEnv, Socket::fSetLoopback, Socket::fSocketNum, and setupDatagramSocket().
Referenced by Groupsock::changeDestinationParameters().
00104 { 00105 closeSocket(fSocketNum); 00106 fSocketNum = setupDatagramSocket(fEnv, newPort, fSetLoopback); 00107 return fSocketNum >= 0; 00108 }
Port OutputSocket::fSourcePort [private] |
u_int8_t OutputSocket::fLastSentTTL [private] |
int Socket::DebugLevel = 1 [static, inherited] |
Definition at line 97 of file NetInterface.hh.
Referenced by Groupsock::Groupsock(), Groupsock::handleRead(), Groupsock::output(), Groupsock::wasLoopedBackFromUs(), write(), and Groupsock::~Groupsock().
UsageEnvironment * NetInterface::DefaultUsageEnvironment = NULL [static, inherited] |
Definition at line 32 of file NetInterface.hh.
1.5.2