protected synchronized void writeRequest(GossipData req) throws Exception { int size=req.serializedSize(); ByteArrayDataOutputStream out=new ByteArrayDataOutputStream(size+5); req.writeTo(out); client.send(remote, out.buffer(), 0, out.position()); }
protected void handleGetMembersRequest(Address sender, DataInput in) { GossipData req=readRequest(in, GossipType.GET_MBRS); if(req == null) return; GossipData rsp=new GossipData(GossipType.GET_MBRS_RSP, req.getGroup(), null); Map<Address,Entry> members=address_mappings.get(req.getGroup()); if(members != null) { for(Map.Entry<Address,Entry> entry : members.entrySet()) { Address logical_addr=entry.getKey(); PhysicalAddress phys_addr=entry.getValue().phys_addr; String logical_name=entry.getValue().logical_name; PingData data=new PingData(logical_addr, true, logical_name, phys_addr); rsp.addPingData(data); } } ByteArrayDataOutputStream out=new ByteArrayDataOutputStream(rsp.serializedSize()); try { rsp.writeTo(out); server.send(sender, out.buffer(), 0, out.position()); } catch(Exception ex) { log.error("failed sending %d to %s: %s", GossipType.GET_MBRS_RSP, sender, ex); } }
protected void sendToMember(Address dest, GossipData request) { ByteArrayDataOutputStream out=new ByteArrayDataOutputStream(request.serializedSize()); try { request.writeTo(out); server.send(dest, out.buffer(), 0, out.position()); } catch(Exception ex) { log.error("failed sending unicast message to %s: %s", dest, ex); } }
protected void sendToAllMembersInGroup(Set<Map.Entry<Address,Entry>> dests, GossipData request) { ByteArrayDataOutputStream out=new ByteArrayDataOutputStream(request.serializedSize()); try { request.writeTo(out); } catch(Exception ex) { log.error("failed marshalling gossip data %s: %s; dropping request", request, ex); return; } for(Map.Entry<Address,Entry> entry: dests) { Entry e=entry.getValue(); if(e == null /* || e.phys_addr == null */) continue; try { server.send(e.client_addr, out.buffer(), 0, out.position()); } catch(Exception ex) { log.error("failed sending message to %s (%s): %s", e.logical_name, e.phys_addr, ex); } } }
ByteArrayDataOutputStream out=new ByteArrayDataOutputStream(request.serializedSize()); request.writeTo(out); route(request.group, request.addr, out.buffer(), 0, out.position());
protected synchronized void writeRequest(GossipData req) throws Exception { int size=req.serializedSize(); ByteArrayDataOutputStream out=new ByteArrayDataOutputStream(size+5); req.writeTo(out); client.send(remote, out.buffer(), 0, out.position()); }
protected void handleGetMembersRequest(Address sender, DataInput in) { GossipData req=readRequest(in, GossipType.GET_MBRS); if(req == null) return; GossipData rsp=new GossipData(GossipType.GET_MBRS_RSP, req.getGroup(), null); Map<Address,Entry> members=address_mappings.get(req.getGroup()); if(members != null) { for(Map.Entry<Address,Entry> entry : members.entrySet()) { Address logical_addr=entry.getKey(); PhysicalAddress phys_addr=entry.getValue().phys_addr; String logical_name=entry.getValue().logical_name; PingData data=new PingData(logical_addr, true, logical_name, phys_addr); rsp.addPingData(data); } } ByteArrayDataOutputStream out=new ByteArrayDataOutputStream(rsp.serializedSize()); try { rsp.writeTo(out); server.send(sender, out.buffer(), 0, out.position()); } catch(Exception ex) { log.error("failed sending %d to %s: %s", GossipType.GET_MBRS_RSP, sender, ex); } }
protected void sendToMember(Address dest, GossipData request) { ByteArrayDataOutputStream out=new ByteArrayDataOutputStream(request.serializedSize()); try { request.writeTo(out); server.send(dest, out.buffer(), 0, out.position()); } catch(Exception ex) { log.error("failed sending unicast message to %s: %s", dest, ex); } }
protected void sendToAllMembersInGroup(Set<Map.Entry<Address,Entry>> dests, GossipData request) { ByteArrayDataOutputStream out=new ByteArrayDataOutputStream(request.serializedSize()); try { request.writeTo(out); } catch(Exception ex) { log.error("failed marshalling gossip data %s: %s; dropping request", request, ex); return; } for(Map.Entry<Address,Entry> entry: dests) { Entry e=entry.getValue(); if(e == null /* || e.phys_addr == null */) continue; try { server.send(e.client_addr, out.buffer(), 0, out.position()); } catch(Exception ex) { log.error("failed sending message to %s (%s): %s", e.logical_name, e.phys_addr, ex); } } }
ByteArrayDataOutputStream out=new ByteArrayDataOutputStream(request.serializedSize()); request.writeTo(out); route(request.group, request.addr, out.buffer(), 0, out.position());