00001
00002
00003 #include "ace/XTI_ATM_Mcast.h"
00004
00005 ACE_RCSID(ace, XTI_ATM_Mcast, "$Id: XTI_ATM_Mcast.cpp 72149 2006-04-19 12:01:10Z jwillemsen $")
00006
00007 #if defined (ACE_HAS_XTI_ATM)
00008
00009 #if !defined (__ACE_INLINE__)
00010 #include "ace/XTI_ATM_Mcast.inl"
00011 #endif
00012
00013 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00014
00015 ACE_ALLOC_HOOK_DEFINE(ACE_XTI_ATM_Mcast)
00016
00017 void
00018 ACE_XTI_ATM_Mcast::dump (void) const
00019 {
00020 #if defined (ACE_HAS_DUMP)
00021 ACE_TRACE ("ACE_XTI_ATM_Mcast::dump");
00022 #endif
00023 }
00024
00025 ACE_XTI_ATM_Mcast::ACE_XTI_ATM_Mcast (void)
00026 {
00027 ACE_TRACE ("ACE_XTI_ATM_Mcast::ACE_XTI_ATM_Mcast");
00028 }
00029
00030
00031
00032 int
00033 ACE_XTI_ATM_Mcast::add_leaf (ACE_TLI_Stream ¤t_stream,
00034 const ACE_Addr &remote_sap,
00035 ACE_INT32 leaf_id,
00036 ACE_Time_Value *timeout)
00037 {
00038 ACE_TRACE ("ACE_XTI_ATM_Mcast::add_leaf");
00039
00040 struct netbuf call_req;
00041 memset(&call_req, 0, sizeof(call_req));
00042 call_req.len = remote_sap.get_size ();
00043 call_req.buf = (char *)remote_sap.get_addr ();
00044
00045 if (::t_addleaf(current_stream.get_handle(),
00046 leaf_id,
00047 &call_req) < 0)
00048 {
00049
00050 if (t_errno == TLOOK)
00051 {
00052 int const event = ACE_OS::t_look(current_stream.get_handle());
00053 if (event != TNODATA && event != T_DATA)
00054 return -1;
00055 else
00056
00057
00058
00059 return complete (current_stream, 0, timeout);
00060 }
00061 else
00062 return -1;
00063 }
00064
00065 return 0;
00066 }
00067
00068 ACE_END_VERSIONED_NAMESPACE_DECL
00069
00070 #endif