summaryrefslogtreecommitdiff
path: root/ace/ATM_Connector.cpp
blob: 496b2ff5a27f4b8c6b984eb43fb7b81dde6997bd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
// ATM_Connector.cpp
// $Id$

#define ACE_BUILD_DLL
#include "ace/Handle_Set.h"
#include "ace/ATM_Connector.h"

ACE_RCSID(ace, ATM_Connector, "$Id$")

#if defined (ACE_HAS_ATM)

#if !defined (__ACE_INLINE__)
#include "ace/ATM_Connector.i"
#endif /* __ACE_INLINE__ */

ACE_ALLOC_HOOK_DEFINE(ACE_ATM_Connector)

void
ACE_ATM_Connector::dump (void) const
{
  ACE_TRACE ("ACE_ATM_Connector::dump");
}

ACE_ATM_Connector::ACE_ATM_Connector (void)
{
  ACE_TRACE ("ACE_ATM_Connector::ACE_ATM_Connector");
}

// Actively connect and produce a new ACE_ATM_Stream if things go well...
// Connect the <new_stream> to the <remote_sap>, waiting up to
// <timeout> amount of time if necessary.

int
ACE_ATM_Connector::connect (ACE_ATM_Stream &new_stream, 
												    const ACE_ATM_Addr &remote_sap, 
                            ACE_ATM_Params params,
                            ACE_ATM_QoS options,
														ACE_Time_Value *timeout,
														const ACE_ATM_Addr &local_sap, 
														int reuse_addr,
														int flags,
														int perms)
{
  ACE_TRACE ("ACE_ATM_Connector::connect");
#if defined (ACE_HAS_FORE_ATM_XTI)
  return connector_.connect(new_stream.get_stream(),
                            remote_sap,
                            timeout,
                            local_sap,
                            reuse_addr,
                            flags,
                            perms,
                            params.get_device(),
                            params.get_info(),
                            params.get_rw_flag(),
                            params.get_user_data(),
                            &options.get_qos());
#elif defined (ACE_HAS_FORE_ATM_WS2)
  ACE_OS::printf( "ATM_Connector(connect): set QoS parameters\n" );

//  return connector_.connect(new_stream.get_stream(),
//                            remote_sap,
//                            options.get_option_params(),
//                            timeout,
//                            local_sap,
//                            0,
//                            0,
//                            flags,
//                            reuse_addr,
//                            perms,
//                            params.get_protocol_family(),
//                            params.get_protocol());

  ACE_HANDLE s = new_stream.get_handle();
  struct sockaddr_atm *saddr = ( struct sockaddr_atm *)remote_sap.get_addr();
  ACE_QoS cqos = options.get_qos();

  ACE_QoS_Params qos_params = ACE_QoS_Params( 0, 0, &cqos, 0, 0 );
 
  ACE_OS::printf( "ATM_Connector(connect): connecting...\n" );

  int result = ACE_OS::connect( s, 
                                ( struct sockaddr *)saddr, 
                                sizeof( struct sockaddr_atm ), 
                                qos_params );
  
  if ( result != 0 ) 
    ACE_OS::printf( "ATM_Connector(connect): connection failed, %d\n", 
                    ::WSAGetLastError());
  
  return result;
#else
  ACE_UNUSED_ARG (new_stream);
  ACE_UNUSED_ARG (remote_sap);
  ACE_UNUSED_ARG (params);
  ACE_UNUSED_ARG (options);
  ACE_UNUSED_ARG (timeout);
  ACE_UNUSED_ARG (local_sap);
  ACE_UNUSED_ARG (reuse_addr);
  ACE_UNUSED_ARG (flags);
  ACE_UNUSED_ARG (perms);
  return 0;
#endif /* ACE_HAS_FORE_ATM_XTI/ACE_HAS_FORE_ATM_WS2 */
}

#endif /* ACE_HAS_ATM */