00001
00002
00003
00004
00005 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00006
00007 ACE_INLINE void
00008 ACE_ATM_Stream::dump (void) const
00009 {
00010 #if defined (ACE_HAS_DUMP)
00011 ACE_TRACE ("ACE_ATM_Stream::dump");
00012 #endif
00013 }
00014
00015 ACE_INLINE
00016 ACE_ATM_Stream::ACE_ATM_Stream (void)
00017 {
00018 ACE_TRACE ("ACE_ATM_Stream::ACE_ATM_Stream");
00019 }
00020
00021 ACE_INLINE
00022 int
00023 ACE_ATM_Stream::open (ACE_ATM_Params params)
00024 {
00025 ACE_TRACE ("ACE_ATM_Stream::open");
00026 #if defined (ACE_HAS_FORE_ATM_XTI)
00027 ACE_HANDLE handle = stream_.open (params.get_device(),
00028 params.get_oflag(),
00029 params.get_info());
00030 return (handle == ACE_INVALID_HANDLE ? -1 : 0);
00031 #elif defined (ACE_HAS_FORE_ATM_WS2)
00032 params.set_flags( ACE_FLAG_MULTIPOINT_C_ROOT | ACE_FLAG_MULTIPOINT_D_ROOT );
00033
00034 int retval = stream_.open (params.get_type(),
00035 params.get_protocol_family(),
00036 params.get_protocol(),
00037 params.get_protocol_info(),
00038 params.get_sock_group(),
00039 params.get_flags(),
00040 params.get_reuse_addr());
00041 if (retval == -1)
00042 return -1;
00043
00044 struct sockaddr_atm sock_addr;
00045
00046 ACE_OS::memset(&sock_addr, 0, sizeof(struct sockaddr_atm));
00047 sock_addr.satm_family = AF_ATM;
00048 sock_addr.satm_number.AddressType=ADDR_ANY;
00049 sock_addr.satm_number.NumofDigits = ATM_ADDR_SIZE;
00050 sock_addr.satm_blli.Layer2Protocol = SAP_FIELD_ABSENT;
00051 sock_addr.satm_blli.Layer3Protocol = SAP_FIELD_ABSENT;
00052 sock_addr.satm_bhli.HighLayerInfoType = SAP_FIELD_ABSENT;
00053 if (ACE_OS::bind(get_handle(),
00054 (struct sockaddr FAR *)&sock_addr,
00055 sizeof(struct sockaddr_atm)) < 0)
00056 {
00057 ACE_OS::printf("Error binding local address: %d",WSAGetLastError());
00058 return -1;
00059 }
00060
00061 return 0;
00062 #else
00063 ACE_UNUSED_ARG(params);
00064 return 0;
00065 #endif
00066 }
00067
00068 ACE_INLINE
00069 int
00070 ACE_ATM_Stream::close (void)
00071 {
00072 ACE_TRACE ("ACE_ATM_Stream::close");
00073 #if defined (ACE_HAS_FORE_ATM_XTI) || defined (ACE_HAS_FORE_ATM_WS2)
00074 return stream_.close ();
00075 #else
00076 return 0;
00077 #endif
00078 }
00079
00080 ACE_INLINE
00081 ATM_Stream&
00082 ACE_ATM_Stream::get_stream (void)
00083 {
00084 ACE_TRACE ("ACE_ATM_Stream::get_stream");
00085 return stream_;
00086 }
00087
00088 ACE_INLINE
00089 ssize_t
00090 ACE_ATM_Stream::recv (void *buf,
00091 size_t n,
00092 int *flags) const
00093 {
00094 ACE_TRACE ("ACE_ATM_Stream::recv");
00095 #if defined (ACE_HAS_FORE_ATM_XTI)
00096 return stream_.recv (buf,
00097 n,
00098 flags);
00099 #elif defined (ACE_HAS_FORE_ATM_WS2)
00100 return stream_.recv (buf,
00101 n);
00102 #else
00103 ACE_UNUSED_ARG(buf);
00104 ACE_UNUSED_ARG(n);
00105 ACE_UNUSED_ARG(flags);
00106 return (0);
00107 #endif
00108 }
00109
00110 ACE_INLINE
00111 ssize_t
00112 ACE_ATM_Stream::send_n (const void *buf,
00113 size_t n,
00114 int flags) const
00115 {
00116 ACE_TRACE ("ACE_ATM_Stream::send_n");
00117 #if defined (ACE_HAS_FORE_ATM_XTI)
00118 return stream_.send_n (buf,
00119 n,
00120 flags);
00121 #elif defined (ACE_HAS_FORE_ATM_WS2)
00122 return stream_.send_n (buf,
00123 n,
00124 flags);
00125 #else
00126 ACE_UNUSED_ARG(buf);
00127 ACE_UNUSED_ARG(n);
00128 ACE_UNUSED_ARG(flags);
00129 return (0);
00130 #endif
00131 }
00132
00133 ACE_END_VERSIONED_NAMESPACE_DECL