2 // $Id: ATM_Connector.cpp 80826 2008-03-04 14:51:23Z wotte $
4 #include "ace/ATM_Connector.h"
5 #if defined (ACE_HAS_ATM)
7 #include "ace/Handle_Set.h"
9 ACE_RCSID(ace
, ATM_Connector
, "$Id: ATM_Connector.cpp 80826 2008-03-04 14:51:23Z wotte $")
11 #if !defined (__ACE_INLINE__)
12 #include "ace/ATM_Connector.inl"
13 #endif /* __ACE_INLINE__ */
15 // Open versioned namespace, if enabled by the user.
16 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
18 ACE_ALLOC_HOOK_DEFINE(ACE_ATM_Connector
)
20 ACE_ATM_Connector::ACE_ATM_Connector (void)
22 ACE_TRACE ("ACE_ATM_Connector::ACE_ATM_Connector");
25 // Actively connect and produce a new ACE_ATM_Stream if things go well...
26 // Connect the <new_stream> to the <remote_sap>, waiting up to
27 // <timeout> amount of time if necessary.
30 ACE_ATM_Connector::connect (ACE_ATM_Stream
&new_stream
,
31 const ACE_ATM_Addr
&remote_sap
,
32 ACE_ATM_Params params
,
34 ACE_Time_Value
*timeout
,
35 const ACE_ATM_Addr
&local_sap
,
40 ACE_TRACE ("ACE_ATM_Connector::connect");
41 #if defined (ACE_HAS_FORE_ATM_XTI)
42 return connector_
.connect(new_stream
.get_stream(),
52 params
.get_user_data(),
54 #elif defined (ACE_HAS_FORE_ATM_WS2)
56 ACE_TEXT ("ATM_Connector(connect): set QoS parameters\n" ));
58 ACE_HANDLE s
= new_stream
.get_handle();
59 struct sockaddr_atm
*saddr
= ( struct sockaddr_atm
*)remote_sap
.get_addr();
60 ACE_QoS cqos
= options
.get_qos();
62 ACE_QoS_Params qos_params
= ACE_QoS_Params(0,
69 ACE_TEXT ("ATM_Connector(connect): connecting...\n"));
71 int result
= ACE_OS::connect( s
,
72 ( struct sockaddr
*)saddr
,
73 sizeof( struct sockaddr_atm
),
77 ACE_OS::printf( "ATM_Connector(connect): connection failed, %d\n",
81 #elif defined (ACE_HAS_LINUX_ATM)
82 ACE_UNUSED_ARG (params
);
83 ACE_UNUSED_ARG (timeout
);
84 ACE_UNUSED_ARG (reuse_addr
);
85 ACE_UNUSED_ARG (perms
);
86 ACE_UNUSED_ARG (flags
);
88 ACE_HANDLE handle
= new_stream
.get_handle();
89 ATM_QoS qos
=options
.get_qos();
90 ATM_Addr
*local_addr
=(ATM_Addr
*)local_sap
.get_addr(),
91 *remote_addr
=(ATM_Addr
*)remote_sap
.get_addr();
93 if (ACE_OS::setsockopt(handle
,
96 reinterpret_cast<char*> (&(local_addr
->atmsap
)),
97 sizeof(local_addr
->atmsap
)) < 0) {
98 ACE_OS::printf( "ATM_Connector(connect): unable to set atmsap %d\nContinuing...",
101 if (ACE_OS::setsockopt(handle
,
104 reinterpret_cast<char*> (&qos
),
106 ACE_DEBUG((LM_DEBUG
,ACE_TEXT ("ATM_Connector(connect): unable to set qos %d\n"),
111 int result
= ACE_OS::connect(handle
,
112 (struct sockaddr
*)&(remote_addr
->sockaddratmsvc
),
113 sizeof( remote_addr
->sockaddratmsvc
));
117 ACE_TEXT ("ATM_Connector(connect): connection failed, %d\n"),
122 ACE_UNUSED_ARG (new_stream
);
123 ACE_UNUSED_ARG (remote_sap
);
124 ACE_UNUSED_ARG (params
);
125 ACE_UNUSED_ARG (options
);
126 ACE_UNUSED_ARG (timeout
);
127 ACE_UNUSED_ARG (local_sap
);
128 ACE_UNUSED_ARG (reuse_addr
);
129 ACE_UNUSED_ARG (flags
);
130 ACE_UNUSED_ARG (perms
);
132 #endif /* ACE_HAS_FORE_ATM_XTI || ACE_HAS_FORE_ATM_WS2 || ACE_HAS_LINUX_ATM */
135 // Close versioned namespace, if enabled by the user.
136 ACE_END_VERSIONED_NAMESPACE_DECL
138 #endif /* ACE_HAS_ATM */