1 #include "ace/XTI_ATM_Mcast.h"
3 #if defined (ACE_HAS_XTI_ATM)
5 #if !defined (__ACE_INLINE__)
6 #include "ace/XTI_ATM_Mcast.inl"
7 #endif /* __ACE_INLINE__ */
9 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
11 ACE_ALLOC_HOOK_DEFINE(ACE_XTI_ATM_Mcast
)
14 ACE_XTI_ATM_Mcast::dump () const
16 #if defined (ACE_HAS_DUMP)
17 ACE_TRACE ("ACE_XTI_ATM_Mcast::dump");
18 #endif /* ACE_HAS_DUMP */
21 ACE_XTI_ATM_Mcast::ACE_XTI_ATM_Mcast ()
23 ACE_TRACE ("ACE_XTI_ATM_Mcast::ACE_XTI_ATM_Mcast");
26 // Add a leaf to the current connection (i.e., multicast).
29 ACE_XTI_ATM_Mcast::add_leaf (ACE_TLI_Stream
¤t_stream
,
30 const ACE_Addr
&remote_sap
,
32 ACE_Time_Value
*timeout
)
34 ACE_TRACE ("ACE_XTI_ATM_Mcast::add_leaf");
36 struct netbuf call_req
;
37 memset(&call_req
, 0, sizeof(call_req
));
38 call_req
.len
= remote_sap
.get_size ();
39 call_req
.buf
= (char *)remote_sap
.get_addr ();
41 if (::t_addleaf(current_stream
.get_handle(),
45 // Check for asynchronous event
48 int const event
= ACE_OS::t_look(current_stream
.get_handle());
49 if (event
!= TNODATA
&& event
!= T_DATA
)
52 // If this doesn't work for asynchronous calls we need to call
53 // the XTI/ATM t_rcvleafchange() function to check for t_addleaf
55 return complete (current_stream
, 0, timeout
);
64 ACE_END_VERSIONED_NAMESPACE_DECL
66 #endif /* ACE_HAS_XTI_ATM */