Initial Patch of Auction House bot rev. 135
[auctionmangos.git] / dep / ACE_wrappers / ace / ATM_Connector.cpp
blobc1ce226adce9b1acda83622df229c4e3423e7134
1 // ATM_Connector.cpp
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.
29 int
30 ACE_ATM_Connector::connect (ACE_ATM_Stream &new_stream,
31 const ACE_ATM_Addr &remote_sap,
32 ACE_ATM_Params params,
33 ACE_ATM_QoS options,
34 ACE_Time_Value *timeout,
35 const ACE_ATM_Addr &local_sap,
36 int reuse_addr,
37 int flags,
38 int perms)
40 ACE_TRACE ("ACE_ATM_Connector::connect");
41 #if defined (ACE_HAS_FORE_ATM_XTI)
42 return connector_.connect(new_stream.get_stream(),
43 remote_sap,
44 timeout,
45 local_sap,
46 reuse_addr,
47 flags,
48 perms,
49 params.get_device(),
50 params.get_info(),
51 params.get_rw_flag(),
52 params.get_user_data(),
53 &options.get_qos());
54 #elif defined (ACE_HAS_FORE_ATM_WS2)
55 ACE_DEBUG(LM_DEBUG,
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,
64 &cqos,
66 0);
68 ACE_DEBUG(LM_DEBUG,
69 ACE_TEXT ("ATM_Connector(connect): connecting...\n"));
71 int result = ACE_OS::connect( s,
72 ( struct sockaddr *)saddr,
73 sizeof( struct sockaddr_atm ),
74 qos_params );
76 if ( result != 0 )
77 ACE_OS::printf( "ATM_Connector(connect): connection failed, %d\n",
78 ::WSAGetLastError());
80 return result;
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,
94 SOL_ATM,
95 SO_ATMSAP,
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...",
99 errno);
101 if (ACE_OS::setsockopt(handle,
102 SOL_ATM,
103 SO_ATMQOS,
104 reinterpret_cast<char*> (&qos),
105 sizeof(qos)) < 0) {
106 ACE_DEBUG((LM_DEBUG,ACE_TEXT ("ATM_Connector(connect): unable to set qos %d\n"),
107 errno));
108 return -1;
111 int result = ACE_OS::connect(handle,
112 (struct sockaddr *)&(remote_addr->sockaddratmsvc),
113 sizeof( remote_addr->sockaddratmsvc));
115 if ( result != 0 )
116 ACE_DEBUG(LM_DEBUG,
117 ACE_TEXT ("ATM_Connector(connect): connection failed, %d\n"),
118 errno);
120 return result;
121 #else
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);
131 return 0;
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 */