|
Lines 109-114
BulkSendApplication::DoDispose (void)
|
Link Here
|
|---|
|
| 109 |
Application::DoDispose (); |
109 |
Application::DoDispose (); |
| 110 |
} |
110 |
} |
| 111 |
|
111 |
|
|
|
112 |
void |
| 113 |
BulkSendApplication::SetSocket(Ptr<Socket> socket) |
| 114 |
{ |
| 115 |
m_socket = socket; |
| 116 |
} |
| 117 |
|
| 112 |
// Application Methods |
118 |
// Application Methods |
| 113 |
void BulkSendApplication::StartApplication (void) // Called at time specified by Start |
119 |
void BulkSendApplication::StartApplication (void) // Called at time specified by Start |
| 114 |
{ |
120 |
{ |
|
Lines 118-150
void BulkSendApplication::StartApplication (void) // Called at time specified by
|
Link Here
|
|---|
|
| 118 |
if (!m_socket) |
124 |
if (!m_socket) |
| 119 |
{ |
125 |
{ |
| 120 |
m_socket = Socket::CreateSocket (GetNode (), m_tid); |
126 |
m_socket = Socket::CreateSocket (GetNode (), m_tid); |
|
|
127 |
} |
| 128 |
// Fatal error if socket type is not NS3_SOCK_STREAM or NS3_SOCK_SEQPACKET |
| 129 |
if (m_socket->GetSocketType () != Socket::NS3_SOCK_STREAM && |
| 130 |
m_socket->GetSocketType () != Socket::NS3_SOCK_SEQPACKET) |
| 131 |
{ |
| 132 |
NS_FATAL_ERROR ("Using BulkSend with an incompatible socket type. " |
| 133 |
"BulkSend requires SOCK_STREAM or SOCK_SEQPACKET. " |
| 134 |
"In other words, use TCP instead of UDP."); |
| 135 |
} |
| 121 |
|
136 |
|
| 122 |
// Fatal error if socket type is not NS3_SOCK_STREAM or NS3_SOCK_SEQPACKET |
137 |
if (Inet6SocketAddress::IsMatchingType (m_peer)) |
| 123 |
if (m_socket->GetSocketType () != Socket::NS3_SOCK_STREAM && |
138 |
{ |
| 124 |
m_socket->GetSocketType () != Socket::NS3_SOCK_SEQPACKET) |
139 |
m_socket->Bind6 (); |
| 125 |
{ |
140 |
} |
| 126 |
NS_FATAL_ERROR ("Using BulkSend with an incompatible socket type. " |
141 |
else if (InetSocketAddress::IsMatchingType (m_peer)) |
| 127 |
"BulkSend requires SOCK_STREAM or SOCK_SEQPACKET. " |
142 |
{ |
| 128 |
"In other words, use TCP instead of UDP."); |
143 |
m_socket->Bind (); |
| 129 |
} |
144 |
} |
| 130 |
|
145 |
|
| 131 |
if (Inet6SocketAddress::IsMatchingType (m_peer)) |
146 |
m_socket->Connect (m_peer); |
| 132 |
{ |
147 |
m_socket->ShutdownRecv (); |
| 133 |
m_socket->Bind6 (); |
148 |
m_socket->SetConnectCallback ( |
| 134 |
} |
149 |
MakeCallback (&BulkSendApplication::ConnectionSucceeded, this), |
| 135 |
else if (InetSocketAddress::IsMatchingType (m_peer)) |
150 |
MakeCallback (&BulkSendApplication::ConnectionFailed, this)); |
| 136 |
{ |
151 |
m_socket->SetSendCallback ( |
| 137 |
m_socket->Bind (); |
152 |
MakeCallback (&BulkSendApplication::DataSend, this)); |
| 138 |
} |
|
|
| 139 |
|
153 |
|
| 140 |
m_socket->Connect (m_peer); |
|
|
| 141 |
m_socket->ShutdownRecv (); |
| 142 |
m_socket->SetConnectCallback ( |
| 143 |
MakeCallback (&BulkSendApplication::ConnectionSucceeded, this), |
| 144 |
MakeCallback (&BulkSendApplication::ConnectionFailed, this)); |
| 145 |
m_socket->SetSendCallback ( |
| 146 |
MakeCallback (&BulkSendApplication::DataSend, this)); |
| 147 |
} |
| 148 |
if (m_connected) |
154 |
if (m_connected) |
| 149 |
{ |
155 |
{ |
| 150 |
SendData (); |
156 |
SendData (); |
|
Lines 200-205
void BulkSendApplication::SendData (void)
|
Link Here
|
|---|
|
| 200 |
// Check if time to close (all sent) |
206 |
// Check if time to close (all sent) |
| 201 |
if (m_totBytes == m_maxBytes && m_connected) |
207 |
if (m_totBytes == m_maxBytes && m_connected) |
| 202 |
{ |
208 |
{ |
|
|
209 |
if (! m_dataTransferred.IsNull ()) |
| 210 |
m_dataTransferred (m_node); |
| 211 |
|
| 203 |
m_socket->Close (); |
212 |
m_socket->Close (); |
| 204 |
m_connected = false; |
213 |
m_connected = false; |
| 205 |
} |
214 |
} |
|
Lines 229-234
void BulkSendApplication::DataSend (Ptr<Socket>, uint32_t)
|
Link Here
|
|---|
|
| 229 |
} |
238 |
} |
| 230 |
} |
239 |
} |
| 231 |
|
240 |
|
| 232 |
|
241 |
void BulkSendApplication::SetDataTransferredCallback (Callback<void, Ptr<Node> > dataTransferred) |
|
|
242 |
{ |
| 243 |
m_dataTransferred = dataTransferred; |
| 244 |
} |
| 233 |
|
245 |
|
| 234 |
} // Namespace ns3 |
246 |
} // Namespace ns3 |