Default trace to send. More...
#include "udp-trace-client.h"
Classes | |
struct | TraceEntry |
Entry to send. More... | |
Public Member Functions | |
UdpTraceClient () | |
UdpTraceClient (Ipv4Address ip, uint16_t port, char *traceFile) | |
Creates a traceBasedStreamer application. More... | |
~UdpTraceClient () | |
uint16_t | GetMaxPacketSize (void) |
Return the maximum packet size. More... | |
void | SetMaxPacketSize (uint16_t maxPacketSize) |
Set the maximum packet size. More... | |
void | SetRemote (Address addr) |
set the remote address More... | |
void | SetRemote (Address ip, uint16_t port) |
set the remote address and port More... | |
void | SetTraceFile (std::string filename) |
Set the trace file to be used by the application. More... | |
void | SetTraceLoop (bool traceLoop) |
Set the trace loop flag. More... | |
Static Public Member Functions | |
static TypeId | GetTypeId (void) |
Get the type ID. More... | |
Protected Member Functions | |
virtual void | DoDispose (void) |
Private Member Functions | |
void | LoadDefaultTrace (void) |
Load the default trace. More... | |
void | LoadTrace (std::string filename) |
Load a trace file. More... | |
void | Send (void) |
Send a packet. More... | |
void | SendPacket (uint32_t size) |
Send a packet of a given size. More... | |
virtual void | StartApplication (void) |
virtual void | StopApplication (void) |
Private Attributes | |
uint32_t | m_currentEntry |
Current entry index. More... | |
std::vector< struct TraceEntry > | m_entries |
Entries in the trace to send. More... | |
uint16_t | m_maxPacketSize |
Maximum packet size to send (including the SeqTsHeader) More... | |
Address | m_peerAddress |
Remote peer address. More... | |
uint16_t | m_peerPort |
Remote peer port. More... | |
EventId | m_sendEvent |
Event to send the next packet. More... | |
uint32_t | m_sent |
Counter for sent packets. More... | |
Ptr< Socket > | m_socket |
Socket. More... | |
bool | m_traceLoop |
Loop through the trace file. More... | |
Static Private Attributes | |
static struct TraceEntry | g_defaultEntries [] |
Default trace to send. More... | |
Default trace to send.
A trace based streamer.
Sends UDP packets based on a trace file of an MPEG4 stream trace files could be downloaded form: http://www2.tkn.tu-berlin.de/research/trace/ltvt.html (the 2 first lines of the file should be removed) A valid trace file is a file with 4 columns:
If no valid MPEG4 trace file is provided to the application the trace from g_defaultEntries array will be loaded.
Also note that:
The latter behavior can be changed through the "TraceLoop" attribute.
ns3::UdpTraceClient is accessible through the following paths with Config::Set and Config::Connect:
No TraceSources are defined for this type.
Size of this type is 200 bytes (on a 64-bit architecture).
Definition at line 48 of file udp-trace-client.cc.
ns3::UdpTraceClient::UdpTraceClient | ( | ) |
Definition at line 98 of file udp-trace-client.cc.
References m_maxPacketSize, m_sendEvent, m_sent, m_socket, and NS_LOG_FUNCTION.
ns3::UdpTraceClient::UdpTraceClient | ( | Ipv4Address | ip, |
uint16_t | port, | ||
char * | traceFile | ||
) |
Creates a traceBasedStreamer application.
ip | the destination ip address to which the stream will be sent |
port | the destination udp port to which the stream will be sent |
traceFile | a path to an MPEG4 trace file formatted as follows: FrameNo Frametype Time[ms] Length [byte] FrameNo Frametype Time[ms] Length [byte] ... |
Definition at line 107 of file udp-trace-client.cc.
References m_currentEntry, m_maxPacketSize, m_peerAddress, m_peerPort, m_sendEvent, m_sent, m_socket, NS_LOG_FUNCTION, port, and SetTraceFile().
ns3::UdpTraceClient::~UdpTraceClient | ( | ) |
Definition at line 124 of file udp-trace-client.cc.
References m_entries, and NS_LOG_FUNCTION.
|
protectedvirtual |
Definition at line 177 of file udp-trace-client.cc.
References ns3::Application::DoDispose(), and NS_LOG_FUNCTION.
uint16_t ns3::UdpTraceClient::GetMaxPacketSize | ( | void | ) |
Return the maximum packet size.
Definition at line 169 of file udp-trace-client.cc.
References m_maxPacketSize, and NS_LOG_FUNCTION.
|
static |
Get the type ID.
Definition at line 62 of file udp-trace-client.cc.
References m_maxPacketSize, m_peerAddress, m_peerPort, ns3::MakeAddressAccessor(), ns3::MakeAddressChecker(), ns3::MakeBooleanAccessor(), ns3::MakeBooleanChecker(), ns3::MakeStringAccessor(), ns3::MakeStringChecker(), ns3::MakeUintegerAccessor(), ns3::TypeId::SetParent(), SetTraceFile(), and SetTraceLoop().
Referenced by ns3::UdpTraceClientHelper::UdpTraceClientHelper().
|
private |
Load the default trace.
Definition at line 228 of file udp-trace-client.cc.
References ns3::UdpTraceClient::TraceEntry::frameType, g_defaultEntries, m_currentEntry, m_entries, NS_LOG_FUNCTION, prevTime, and ns3::UdpTraceClient::TraceEntry::timeToSend.
Referenced by LoadTrace(), and SetTraceFile().
|
private |
Load a trace file.
filename | the trace file path |
Definition at line 184 of file udp-trace-client.cc.
References ns3::UdpTraceClient::TraceEntry::frameType, LoadDefaultTrace(), m_currentEntry, m_entries, NS_ASSERT_MSG, NS_LOG_FUNCTION, ns3::UdpTraceClient::TraceEntry::packetSize, prevTime, and ns3::UdpTraceClient::TraceEntry::timeToSend.
Referenced by SetTraceFile().
|
private |
Send a packet.
Definition at line 355 of file udp-trace-client.cc.
References ns3::EventId::IsExpired(), m_currentEntry, m_entries, m_maxPacketSize, m_sendEvent, m_traceLoop, ns3::MilliSeconds(), NS_ASSERT, NS_LOG_FUNCTION, ns3::UdpTraceClient::TraceEntry::packetSize, ns3::Simulator::Schedule(), SendPacket(), and ns3::UdpTraceClient::TraceEntry::timeToSend.
Referenced by StartApplication().
|
private |
Send a packet of a given size.
size | the packet size |
Definition at line 309 of file udp-trace-client.cc.
References ns3::Packet::AddHeader(), ns3::Ipv4Address::ConvertFrom(), ns3::Ipv6Address::ConvertFrom(), ns3::Ipv4Address::IsMatchingType(), ns3::Ipv6Address::IsMatchingType(), m_peerAddress, m_sent, m_socket, NS_LOG_FUNCTION, NS_LOG_INFO, packetSize, ns3::Socket::Send(), and ns3::SeqTsHeader::SetSeq().
Referenced by Send().
void ns3::UdpTraceClient::SetMaxPacketSize | ( | uint16_t | maxPacketSize | ) |
Set the maximum packet size.
maxPacketSize | The maximum packet size |
Definition at line 162 of file udp-trace-client.cc.
References m_maxPacketSize, and NS_LOG_FUNCTION.
void ns3::UdpTraceClient::SetRemote | ( | Address | addr | ) |
set the remote address
addr | remote address |
Definition at line 140 of file udp-trace-client.cc.
References m_entries, m_peerAddress, and NS_LOG_FUNCTION.
void ns3::UdpTraceClient::SetRemote | ( | Address | ip, |
uint16_t | port | ||
) |
set the remote address and port
ip | remote IP address |
port | remote port |
Definition at line 131 of file udp-trace-client.cc.
References m_entries, m_peerAddress, m_peerPort, NS_LOG_FUNCTION, and port.
void ns3::UdpTraceClient::SetTraceFile | ( | std::string | filename | ) |
Set the trace file to be used by the application.
filename | a path to an MPEG4 trace file formatted as follows: Frame No Frametype Time[ms] Length [byte] Frame No Frametype Time[ms] Length [byte] ... |
Definition at line 148 of file udp-trace-client.cc.
References LoadDefaultTrace(), LoadTrace(), and NS_LOG_FUNCTION.
Referenced by UdpTraceClient(), and GetTypeId().
void ns3::UdpTraceClient::SetTraceLoop | ( | bool | traceLoop | ) |
Set the trace loop flag.
traceLoop | true if the trace should be re-used |
Definition at line 391 of file udp-trace-client.cc.
References m_traceLoop.
Referenced by GetTypeId().
|
privatevirtual |
Definition at line 251 of file udp-trace-client.cc.
References ns3::Socket::Bind(), ns3::Socket::Bind6(), ns3::Socket::Connect(), ns3::Ipv4Address::ConvertFrom(), ns3::Ipv6Address::ConvertFrom(), ns3::Socket::CreateSocket(), ns3::Inet6SocketAddress::IsMatchingType(), ns3::InetSocketAddress::IsMatchingType(), ns3::Ipv4Address::IsMatchingType(), ns3::Ipv6Address::IsMatchingType(), ns3::TypeId::LookupByName(), m_peerAddress, m_peerPort, m_sendEvent, m_socket, ns3::MakeNullCallback(), NS_ASSERT_MSG, NS_FATAL_ERROR, NS_LOG_FUNCTION, ns3::Simulator::Schedule(), ns3::Seconds(), Send(), ns3::Socket::SetAllowBroadcast(), and ns3::Socket::SetRecvCallback().
|
privatevirtual |
Definition at line 302 of file udp-trace-client.cc.
References ns3::Simulator::Cancel(), m_sendEvent, and NS_LOG_FUNCTION.
|
staticprivate |
Default trace to send.
Definition at line 169 of file udp-trace-client.h.
Referenced by LoadDefaultTrace().
|
private |
Current entry index.
Definition at line 169 of file udp-trace-client.h.
Referenced by UdpTraceClient(), LoadDefaultTrace(), LoadTrace(), and Send().
|
private |
Entries in the trace to send.
Definition at line 168 of file udp-trace-client.h.
Referenced by ~UdpTraceClient(), LoadDefaultTrace(), LoadTrace(), Send(), and SetRemote().
|
private |
Maximum packet size to send (including the SeqTsHeader)
Definition at line 171 of file udp-trace-client.h.
Referenced by UdpTraceClient(), GetMaxPacketSize(), GetTypeId(), Send(), and SetMaxPacketSize().
|
private |
Remote peer address.
Definition at line 164 of file udp-trace-client.h.
Referenced by UdpTraceClient(), GetTypeId(), SendPacket(), SetRemote(), and StartApplication().
|
private |
Remote peer port.
Definition at line 165 of file udp-trace-client.h.
Referenced by UdpTraceClient(), GetTypeId(), SetRemote(), and StartApplication().
|
private |
Event to send the next packet.
Definition at line 166 of file udp-trace-client.h.
Referenced by UdpTraceClient(), Send(), StartApplication(), and StopApplication().
|
private |
Counter for sent packets.
Definition at line 162 of file udp-trace-client.h.
Referenced by UdpTraceClient(), and SendPacket().
Definition at line 163 of file udp-trace-client.h.
Referenced by UdpTraceClient(), SendPacket(), and StartApplication().
|
private |
Loop through the trace file.
Definition at line 172 of file udp-trace-client.h.
Referenced by Send(), and SetTraceLoop().