public String toString() { StringBuilder buf = new StringBuilder("Fragmentation list contains "); synchronized (frag_tables) { buf.append(frag_tables.size()).append(" tables\n"); for (Iterator<Entry<Address, FragmentationTable>> it = frag_tables.entrySet().iterator(); it.hasNext(); ) { Entry<Address, FragmentationTable> entry = it.next(); buf.append(entry.getKey()).append(": ").append(entry.getValue()).append("\n"); } } return buf.toString(); }
/** * returns a list of all the senders that have fragmentation tables opened. * * @return an array of all the senders in the fragmentation list */ public Address[] getSenders() { Address[] result; int index = 0; synchronized (frag_tables) { result = new Address[frag_tables.size()]; for (Iterator<Address> it = frag_tables.keySet().iterator(); it.hasNext(); ) { result[index++] = it.next(); } } return result; }
void bundleAndSend() { Map.Entry entry; IpAddress dest; ObjectOutputStream out; InetAddress addr; int port; byte[] data; List l; if (Trace.trace) { Trace.info( "UDP.BundlingOutgoingPacketHandler.bundleAndSend()", "\nsending msgs:\n" + dumpMessages(msgs)); } synchronized (msgs) { stopTimer(); if (msgs.size() == 0) { return; } for (Iterator it = msgs.entrySet().iterator(); it.hasNext(); ) { entry = (Map.Entry) it.next(); dest = (IpAddress) entry.getKey(); addr = dest.getIpAddress(); port = dest.getPort(); l = (List) entry.getValue(); try { out_stream.reset(); // BufferedOutputStream bos=new BufferedOutputStream(out_stream); out_stream.write(Version.version_id, 0, Version.version_id.length); // write the version // bos.write(Version.version_id, 0, Version.version_id.length); // write the version out = new ObjectOutputStream(out_stream); // out=new ObjectOutputStream(bos); l.writeExternal(out); out.close(); // needed if out buffers its output to out_stream data = out_stream.toByteArray(); doSend(data, addr, port); } catch (IOException e) { Trace.error( "UDP.BundlingOutgoingPacketHandle.bundleAndSend()", "exception sending msg (to dest=" + dest + "): " + e); } } msgs.clear(); } }