51 const char *mcast_addr)
66 const char *mcast_addr)
80 length_addr =
static_cast<CORBA::ULong>(tmpnic - mcast_addr + 1);
87 actual_mcast_addr[length_addr - 1] =
'\0';
96 actual_mcast_addr = mcast_addr;
116 "InfoRepoMulticastResponder::common_init() %p\n",
128 #ifdef ACE_HAS_MAC_OSX 142 "InfoRepoMulticastResponder::common_init() %p\n",
167 ACE_UINT16 remote_port;
169 char object_key[BUFSIZ];
182 "InfoRepoMulticastResponder::handle_input - peek %d\n",
188 "InfoRepoMulticastResponder::handle_input() Header value < 1\n"),
192 const int iovcnt = 3;
195 iov[0].iov_base = (
char *) &header;
196 iov[0].iov_len =
sizeof(
header);
197 iov[1].iov_base = (
char *) &remote_port;
198 iov[1].iov_len =
sizeof(ACE_UINT16);
199 iov[2].iov_base = (
char *) object_key;
209 "InfoRepoMulticastResponder::handle_input recv = %d\n",
215 "(%P|%t) Received multicast from %C.\n" 216 "Service Name received : %s\n" 217 "Port received : %u\n",
225 orb_->resolve_initial_references(
"IORTable");
227 IORTable::Locator_var locator =
228 IORTable::Locator::_narrow(table_object.
in());
240 ior_result = locator->locate(object_key);
244 "InfoRepoMulticastResponder::handle_input() Object key not found\n"),
256 peer_addr.
set(remote_addr);
259 #if defined (ACE_HAS_IPV6) 277 for (
size_t i = 0; i < cnt; ++i) {
278 if (peer_tmp == tmp[i]) {
297 if (connector.
connect(stream, peer_addr) == -1)
311 iovp[0].iov_base = (
char *) &data_len;
315 iovp[1].iov_base =
const_cast<char*
>(ior.c_str());
316 iovp[1].iov_len =
static_cast<u_long
>(ior.length() + 1);
328 "(%P|%t) InfoRepoMulticastResponder::handle_input() ior: <%C>\n" 330 "result from send = %d\n",
const char * c_str(void) const
CORBA::ORB_var orb_
The ORB.
ssize_t recv(void *buf, size_t n, ACE_Addr &addr, int flags=0) const
int leave(const ACE_INET_Addr &mcast_addr, const ACE_TCHAR *net_if=0)
int join(const ACE_INET_Addr &mcast_addr, int reuse_addr=1, const ACE_TCHAR *net_if=0)
char * string_alloc(ULong len)
#define ACE_IPV6_LOCALHOST
ACE_INET_Addr response_addr_
address of response.
ACE_INET_Addr mcast_addr_
multicast address
virtual ACE_HANDLE get_handle() const
Returns the internal handle used to receive multicast.
int common_init(CORBA::ORB_ptr orb)
Factor common functionality from the two init functions.
size_t strlen(const char *s)
bool is_linklocal(void) const
const char * strchr(const char *s, int c)
virtual int handle_input(ACE_HANDLE n)
Callback when input is received on the handle.
Christopher Diggins *renamed files *fixing compilation errors *adding Visual C project file *removed make Max Lybbert *removed references to missing and unused header
int get_ip_interfaces(size_t &count, ACE_INET_Addr *&addr_array)
virtual ~InfoRepoMulticastResponder()
const char * c_str() const
ACE_HANDLE get_handle(void) const
#define ACE_TEXT_CHAR_TO_TCHAR(STRING)
character_type *& inout(void)
static CORBA::ORB_ptr _duplicate(CORBA::ORB_ptr orb)
int init(CORBA::ORB_ptr orb, u_short port, const char *mcast_addr)
Initialization method.
int set(const ACE_INET_Addr &)
virtual int handle_timeout(const ACE_Time_Value &tv, const void *arg)
Callback when a timeout has occurred.
ACE_SOCK_Dgram_Mcast mcast_dgram_
multicast endpoint of communication
OpenDDS_Dcps_Export unsigned int DCPS_debug_level
#define OPENDDS_END_VERSIONED_NAMESPACE_DECL
int open(const ACE_Addr &local, int protocol_family=ACE_PROTOCOL_FAMILY_INET, int protocol=0, int reuse_addr=0, int ipv6_only=0)
void set_port_number(u_short, int encode=1)
ACE_SOCK_Dgram response_
socket for response to the multicast
ssize_t sendv_n(const iovec iov[], int iovcnt, const ACE_Time_Value *timeout=0, size_t *bytes_transferred=0) const
bool initialized_
Are we initialized?
#define ACE_ERROR_RETURN(X, Y)
size_type length(void) const
const character_type * in(void) const
The Internal API and Implementation of OpenDDS.
InfoRepoMulticastResponder()
int connect(ACE_SOCK_Stream &new_stream, const ACE_Addr &remote_sap, const ACE_Time_Value *timeout=0, const ACE_Addr &local_sap=ACE_Addr::sap_any, int reuse_addr=0, int flags=0, int perms=0, int protocol=0)
char * strncpy(char *s, const char *t, size_t len)