49 NS_ASSERT (s != 0); |
49 NS_ASSERT (s != 0); |
50 return s; |
50 return s; |
51 } |
51 } |
52 |
52 |
53 void |
53 void |
54 Socket::SetCloseCallback (Callback<void,Ptr<Socket> > closeCompleted) |
|
55 { |
|
56 NS_LOG_FUNCTION_NOARGS (); |
|
57 m_closeCompleted = closeCompleted; |
|
58 } |
|
59 |
|
60 void |
|
61 Socket::SetConnectCallback ( |
54 Socket::SetConnectCallback ( |
62 Callback<void, Ptr<Socket> > connectionSucceeded, |
55 Callback<void, Ptr<Socket> > connectionSucceeded, |
63 Callback<void, Ptr<Socket> > connectionFailed, |
56 Callback<void, Ptr<Socket> > connectionFailed) |
64 Callback<void, Ptr<Socket> > halfClose) |
|
65 { |
57 { |
66 NS_LOG_FUNCTION_NOARGS (); |
58 NS_LOG_FUNCTION_NOARGS (); |
67 m_connectionSucceeded = connectionSucceeded; |
59 m_connectionSucceeded = connectionSucceeded; |
68 m_connectionFailed = connectionFailed; |
60 m_connectionFailed = connectionFailed; |
69 m_halfClose = halfClose; |
|
70 } |
61 } |
71 |
62 |
72 void |
63 void |
73 Socket::SetAcceptCallback ( |
64 Socket::SetAcceptCallback ( |
74 Callback<bool, Ptr<Socket>, const Address &> connectionRequest, |
65 Callback<bool, Ptr<Socket>, const Address &> connectionRequest, |
75 Callback<void, Ptr<Socket>, const Address&> newConnectionCreated, |
66 Callback<void, Ptr<Socket>, const Address&> newConnectionCreated) |
76 Callback<void, Ptr<Socket> > closeRequested) |
|
77 { |
67 { |
78 NS_LOG_FUNCTION_NOARGS (); |
68 NS_LOG_FUNCTION_NOARGS (); |
79 m_connectionRequest = connectionRequest; |
69 m_connectionRequest = connectionRequest; |
80 m_newConnectionCreated = newConnectionCreated; |
70 m_newConnectionCreated = newConnectionCreated; |
81 m_closeRequested = closeRequested; |
|
82 } |
71 } |
83 |
72 |
84 bool |
73 bool |
85 Socket::SetDataSentCallback (Callback<void, Ptr<Socket>, uint32_t> dataSent) |
74 Socket::SetDataSentCallback (Callback<void, Ptr<Socket>, uint32_t> dataSent) |
86 { |
75 { |
108 { |
97 { |
109 NS_LOG_FUNCTION_NOARGS (); |
98 NS_LOG_FUNCTION_NOARGS (); |
110 return Send (p, 0); |
99 return Send (p, 0); |
111 } |
100 } |
112 |
101 |
113 void |
|
114 Socket::NotifyCloseUnblocks (void) |
|
115 { |
|
116 NS_LOG_FUNCTION_NOARGS (); |
|
117 if (!m_closeUnblocks.IsNull ()) |
|
118 { |
|
119 m_closeUnblocks (this); |
|
120 } |
|
121 } |
|
122 |
102 |
123 int Socket::Listen (uint32_t queueLimit) |
103 int Socket::Listen (uint32_t queueLimit) |
124 { |
104 { |
125 return 0; //XXX the base class version does nothing |
105 return 0; //XXX the base class version does nothing |
126 } |
106 } |
197 } |
177 } |
198 memcpy (buf, p->PeekData (), p->GetSize()); |
178 memcpy (buf, p->PeekData (), p->GetSize()); |
199 return p->GetSize (); |
179 return p->GetSize (); |
200 } |
180 } |
201 |
181 |
202 void |
|
203 Socket::NotifyCloseCompleted (void) |
|
204 { |
|
205 NS_LOG_FUNCTION_NOARGS (); |
|
206 if (!m_closeCompleted.IsNull ()) |
|
207 { |
|
208 m_closeCompleted (this); |
|
209 } |
|
210 } |
|
211 |
182 |
212 void |
183 void |
213 Socket::NotifyConnectionSucceeded (void) |
184 Socket::NotifyConnectionSucceeded (void) |
214 { |
185 { |
215 NS_LOG_FUNCTION_NOARGS (); |
186 NS_LOG_FUNCTION_NOARGS (); |
224 { |
195 { |
225 NS_LOG_FUNCTION_NOARGS (); |
196 NS_LOG_FUNCTION_NOARGS (); |
226 if (!m_connectionFailed.IsNull ()) |
197 if (!m_connectionFailed.IsNull ()) |
227 { |
198 { |
228 m_connectionFailed (this); |
199 m_connectionFailed (this); |
229 } |
|
230 } |
|
231 |
|
232 void |
|
233 Socket::NotifyHalfClose (void) |
|
234 { |
|
235 NS_LOG_FUNCTION_NOARGS (); |
|
236 if (!m_halfClose.IsNull ()) |
|
237 { |
|
238 m_halfClose (this); |
|
239 } |
200 } |
240 } |
201 } |
241 |
202 |
242 bool |
203 bool |
243 Socket::NotifyConnectionRequest (const Address &from) |
204 Socket::NotifyConnectionRequest (const Address &from) |
266 m_newConnectionCreated (socket, from); |
227 m_newConnectionCreated (socket, from); |
267 } |
228 } |
268 } |
229 } |
269 |
230 |
270 void |
231 void |
271 Socket::NotifyCloseRequested (void) |
|
272 { |
|
273 NS_LOG_FUNCTION_NOARGS (); |
|
274 if (!m_closeRequested.IsNull ()) |
|
275 { |
|
276 m_closeRequested (this); |
|
277 } |
|
278 } |
|
279 |
|
280 void |
|
281 Socket::NotifyDataSent (uint32_t size) |
232 Socket::NotifyDataSent (uint32_t size) |
282 { |
233 { |
283 NS_LOG_FUNCTION_NOARGS (); |
234 NS_LOG_FUNCTION_NOARGS (); |
284 if (!m_dataSent.IsNull ()) |
235 if (!m_dataSent.IsNull ()) |
285 { |
236 { |