src/node/socket.cc
changeset 3242 309f511aa143
parent 3239 be022cc7fec9
parent 3127 f5971b43ee58
child 3248 39f736210ab2
equal deleted inserted replaced
3241:284705f0775f 3242:309f511aa143
    20  *          Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
    20  *          Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
    21  */
    21  */
    22 
    22 
    23 #include "ns3/log.h"
    23 #include "ns3/log.h"
    24 #include "ns3/packet.h"
    24 #include "ns3/packet.h"
       
    25 #include "node.h"
    25 #include "socket.h"
    26 #include "socket.h"
       
    27 #include "socket-factory.h"
    26 
    28 
    27 NS_LOG_COMPONENT_DEFINE ("Socket");
    29 NS_LOG_COMPONENT_DEFINE ("Socket");
    28 
    30 
    29 namespace ns3 {
    31 namespace ns3 {
    30 
    32 
       
    33 #if 0
       
    34 TypeId
       
    35 Socket::GetTypeId (void)
       
    36 {
       
    37   static TypeId tid = TypeId ("ns3::Socket")
       
    38     .SetParent<Object> ()
       
    39     .AddConstructor<Socket> ()
       
    40   ;
       
    41   return tid;
       
    42 }
       
    43 
       
    44 #endif
       
    45 
       
    46 Socket::Socket (void)
       
    47 {
       
    48   NS_LOG_FUNCTION_NOARGS ();
       
    49 }
       
    50 
    31 Socket::~Socket ()
    51 Socket::~Socket ()
    32 {
    52 {
    33   NS_LOG_FUNCTION_NOARGS ();
    53   NS_LOG_FUNCTION_NOARGS ();
    34 }
    54 }
    35 
    55 
    36 void
    56 void
    37 Socket::SetCloseUnblocksCallback (Callback<void,Ptr<Socket> > closeUnblocks)
    57 Socket::SetCloseUnblocksCallback (Callback<void,Ptr<Socket> > closeUnblocks)
    38 {
    58 {
    39   NS_LOG_FUNCTION_NOARGS ();
    59   NS_LOG_FUNCTION_NOARGS ();
    40   m_closeUnblocks = closeUnblocks;
    60   m_closeUnblocks = closeUnblocks;
       
    61 }
       
    62 
       
    63 Ptr<Socket> 
       
    64 Socket::CreateSocket (Ptr<Node> node, TypeId tid)
       
    65 {
       
    66   Ptr<Socket> s;
       
    67   Ptr<SocketFactory> socketFactory = node->GetObject<SocketFactory> (tid);
       
    68   s = socketFactory->CreateSocket ();
       
    69   NS_ASSERT (s != 0);
       
    70   return s;
    41 }
    71 }
    42 
    72 
    43 void 
    73 void 
    44 Socket::SetCloseCallback (Callback<void,Ptr<Socket> > closeCompleted)
    74 Socket::SetCloseCallback (Callback<void,Ptr<Socket> > closeCompleted)
    45 {
    75 {
   127 Socket::Recv (void)
   157 Socket::Recv (void)
   128 {
   158 {
   129   return Recv (std::numeric_limits<uint32_t>::max(), 0);
   159   return Recv (std::numeric_limits<uint32_t>::max(), 0);
   130 }
   160 }
   131 
   161 
   132 int Socket::SendTo (const Address &address, const uint8_t* buf, uint32_t size)
   162 int Socket::SendTo (const uint8_t* buf, uint32_t size, const Address &address)
   133 {
   163 {
   134   NS_LOG_FUNCTION_NOARGS ();
   164   NS_LOG_FUNCTION_NOARGS ();
   135   Ptr<Packet> p;
   165   Ptr<Packet> p;
   136   if(buf)
   166   if(buf)
   137     {
   167     {
   139     }
   169     }
   140   else
   170   else
   141     {
   171     {
   142       p = Create<Packet> (size);
   172       p = Create<Packet> (size);
   143     }
   173     }
   144   return SendTo (address,p);
   174   return SendTo (p, address);
   145 }
   175 }
   146 
   176 
   147 void 
   177 void 
   148 Socket::NotifyCloseCompleted (void)
   178 Socket::NotifyCloseCompleted (void)
   149 {
   179 {
   298 SocketRxAddressTag::GetAddress (void) const
   328 SocketRxAddressTag::GetAddress (void) const
   299 {
   329 {
   300   return m_address;
   330   return m_address;
   301 }
   331 }
   302 
   332 
       
   333 SocketIpTtlTag::SocketIpTtlTag ()  
       
   334 {
       
   335 }
       
   336 
       
   337 uint32_t 
       
   338 SocketIpTtlTag::GetUid (void)
       
   339 {
       
   340   static uint32_t uid = ns3::Tag::AllocateUid<SocketIpTtlTag> ("SocketIpTtlTag.ns3");
       
   341   return uid;
       
   342 }
       
   343 
       
   344 void
       
   345 SocketIpTtlTag::Print (std::ostream &os) const
       
   346 {
       
   347   os << "ttl="<< m_ttl;
       
   348 }
       
   349 
       
   350 uint32_t 
       
   351 SocketIpTtlTag::GetSerializedSize (void) const
       
   352 {
       
   353   return 0;
       
   354 }
       
   355 
       
   356 void 
       
   357 SocketIpTtlTag::Serialize (Buffer::Iterator i) const
       
   358 {
       
   359   // for local use in stack only
       
   360 }
       
   361 
       
   362 uint32_t 
       
   363 SocketIpTtlTag::Deserialize (Buffer::Iterator i)
       
   364 {
       
   365   // for local use in stack only
       
   366   return 0;
       
   367 }
       
   368 
       
   369 void 
       
   370 SocketIpTtlTag::SetTtl (uint8_t ttl)
       
   371 {
       
   372   m_ttl = ttl;
       
   373 }
       
   374 
       
   375 uint8_t 
       
   376 SocketIpTtlTag::GetTtl (void) const
       
   377 {
       
   378   return m_ttl;
       
   379 }
       
   380 
   303 }//namespace ns3
   381 }//namespace ns3