public void start() throws Exception { if(can_bind_to_mcast_addr) // https://jira.jboss.org/jira/browse/JGRP-836 - prevent cross talking on Linux mcast_sock=Util.createMulticastSocket(getSocketFactory(), "jgroups.mping.mcast_sock", mcast_addr, mcast_port, log); else mcast_sock=getSocketFactory().createMulticastSocket("jgroups.mping.mcast_sock", mcast_port); else interfaces=Util.getAllAvailableInterfaces(); bindToInterfaces(interfaces, mcast_sock, mcast_addr); startReceiver(); super.start();
@Override public void accept(MPING protocol) { SocketBinding binding = this.binding.get(); protocol.setMcastAddr(binding.getMulticastAddress()); protocol.setMcastPort(binding.getMulticastPort()); } }
public void run() { final byte[] receive_buf=new byte[65535]; DatagramPacket packet=new DatagramPacket(receive_buf, receive_buf.length); while(mcast_sock != null && receiver != null && Thread.currentThread().equals(receiver)) { packet.setData(receive_buf, 0, receive_buf.length); try { mcast_sock.receive(packet); DataInput inp=new ByteArrayDataInputStream(packet.getData(), packet.getOffset(), packet.getLength()); Message msg=new Message(); msg.readFrom(inp); if(!Objects.equals(local_addr,msg.getSrc())) // discard discovery request from self up(msg); } catch(SocketException socketEx) { break; } catch(Throwable ex) { log.error(Util.getMessage("FailedReceivingPacketFrom"), packet.getSocketAddress(), ex); } } log.debug("receiver thread terminated"); }
else interfaces=Util.getAllAvailableInterfaces(); bindToInterfaces(interfaces, mcast_sock, mcast_addr); startReceiver(); super.start();
msg=new Message(); msg.readFrom(inp); up(new Event(Event.MSG, msg)); closeInputStream(inp); closeInputStream(inp_stream);
public void setMcastPort(int mcast_port) { mping.setMcastPort(mcast_port); }
public void setMcastAddr(InetAddress mcast_addr) { mping.setMcastAddr(mcast_addr); }
protected void startReceiver() { if(receiver == null || !receiver.isAlive()) { ThreadFactory factory=getThreadFactory(); receiver=factory != null? factory.newThread(this, "MPING") : new Thread(this, "MPING)"); receiver.setDaemon(true); receiver.start(); log.debug("receiver thread started"); } }
public InetAddress getBindAddr() { return mping.getBindAddr(); }
protected void startReceiver() { if(receiver == null || !receiver.isAlive()) { ThreadFactory factory=getThreadFactory(); receiver=factory != null? factory.newThread(this, "MPING") : new Thread(this, "MPING)"); receiver.setDaemon(true); receiver.start(); log.debug("receiver thread started"); } }
public void start() throws Exception { if(can_bind_to_mcast_addr) // https://jira.jboss.org/jira/browse/JGRP-836 - prevent cross talking on Linux mcast_sock=Util.createMulticastSocket(getSocketFactory(), "jgroups.mping.mcast_sock", mcast_addr, mcast_port, log); else mcast_sock=getSocketFactory().createMulticastSocket("jgroups.mping.mcast_sock", mcast_port); else interfaces=Util.getAllAvailableInterfaces(); bindToInterfaces(interfaces, mcast_sock, mcast_addr); startReceiver(); super.start();
@Override public void accept(MPING protocol) { SocketBinding binding = this.binding.get(); protocol.setMcastAddr(binding.getMulticastAddress()); protocol.setMcastPort(binding.getMulticastPort()); } }
public void run() { final byte[] receive_buf=new byte[65535]; DatagramPacket packet=new DatagramPacket(receive_buf, receive_buf.length); while(mcast_sock != null && receiver != null && Thread.currentThread().equals(receiver)) { packet.setData(receive_buf, 0, receive_buf.length); try { mcast_sock.receive(packet); DataInput inp=new ByteArrayDataInputStream(packet.getData(), packet.getOffset(), packet.getLength()); Message msg=new Message(); msg.readFrom(inp); if(!Objects.equals(local_addr,msg.getSrc())) // discard discovery request from self up(msg); } catch(SocketException socketEx) { break; } catch(Throwable ex) { log.error(Util.getMessage("FailedReceivingPacketFrom"), packet.getSocketAddress(), ex); } } log.debug("receiver thread terminated"); }