src/node/socket.cc
changeset 3276 8869a79a391f
parent 3269 448134601b03
child 3365 6409d2460601
equal deleted inserted replaced
3275:b0d91237f2ec 3276:8869a79a391f
    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     {