/** * Imports the connector address from the instrument buffer * of the specified Java virtual machine. * * @param vmid an identifier that uniquely identifies a local Java virtual * machine, or <code>0</code> to indicate the current Java virtual machine. * * @return the value of the connector address, or <code>null</code> if the * target VM has not exported a connector address. * * @throws IOException An I/O error occurred while trying to acquire the * instrumentation buffer. */ public static String importFrom(int vmid) throws IOException { Perf perf = Perf.getPerf(); ByteBuffer bb; try { bb = perf.attach(vmid, "r"); } catch (IllegalArgumentException iae) { throw new IOException(iae.getMessage()); } List<Counter> counters = new PerfInstrumentation(bb).findByPattern(CONNECTOR_ADDRESS_COUNTER); Iterator<Counter> i = counters.iterator(); if (i.hasNext()) { Counter c = i.next(); return (String) c.getValue(); } else { return null; } }
/** * Imports the remote connector address and associated * configuration properties from the instrument buffer * of the specified Java virtual machine. * * @param vmid an identifier that uniquely identifies a local Java virtual * machine, or <code>0</code> to indicate the current Java virtual machine. * * @return a map containing the remote connector's properties, or an empty * map if the target VM has not exported the remote connector's properties. * * @throws IOException An I/O error occurred while trying to acquire the * instrumentation buffer. */ public static Map<String, String> importRemoteFrom(int vmid) throws IOException { Perf perf = Perf.getPerf(); ByteBuffer bb; try { bb = perf.attach(vmid, "r"); } catch (IllegalArgumentException iae) { throw new IOException(iae.getMessage()); } List<Counter> counters = new PerfInstrumentation(bb).getAllCounters(); Map<String, String> properties = new HashMap<>(); for (Counter c : counters) { String name = c.getName(); if (name.startsWith(REMOTE_CONNECTOR_COUNTER_PREFIX) && !name.equals(CONNECTOR_ADDRESS_COUNTER)) { properties.put(name, c.getValue().toString()); } } return properties; }
/** * Imports the connector address from the instrument buffer * of the specified Java virtual machine. * * @param vmid an identifier that uniquely identifies a local Java virtual * machine, or <code>0</code> to indicate the current Java virtual machine. * * @return the value of the connector address, or <code>null</code> if the * target VM has not exported a connector address. * * @throws IOException An I/O error occurred while trying to acquire the * instrumentation buffer. */ public static String importFrom(int vmid) throws IOException { Perf perf = Perf.getPerf(); ByteBuffer bb; try { bb = perf.attach(vmid, "r"); } catch (IllegalArgumentException iae) { throw new IOException(iae.getMessage()); } List counters = new PerfInstrumentation(bb).findByPattern(CONNECTOR_ADDRESS_COUNTER); Iterator i = counters.iterator(); if (i.hasNext()) { Counter c = (Counter) i.next(); return (String) c.getValue(); } else { return null; } }
/** * Imports the remote connector address and associated * configuration properties from the instrument buffer * of the specified Java virtual machine. * * @param vmid an identifier that uniquely identifies a local Java virtual * machine, or <code>0</code> to indicate the current Java virtual machine. * * @return a map containing the remote connector's properties, or an empty * map if the target VM has not exported the remote connector's properties. * * @throws IOException An I/O error occurred while trying to acquire the * instrumentation buffer. */ public static Map<String, String> importRemoteFrom(int vmid) throws IOException { Perf perf = Perf.getPerf(); ByteBuffer bb; try { bb = perf.attach(vmid, "r"); } catch (IllegalArgumentException iae) { throw new IOException(iae.getMessage()); } List counters = new PerfInstrumentation(bb).getAllCounters(); Map<String, String> properties = new HashMap<String, String>(); for (Object c : counters) { String name = ((Counter) c).getName(); if (name.startsWith(REMOTE_CONNECTOR_COUNTER_PREFIX) && !name.equals(CONNECTOR_ADDRESS_COUNTER)) { properties.put(name, ((Counter) c).getValue().toString()); } } return properties; }
/** * Exports the specified connector address to the instrumentation buffer * so that it can be read by this or other Java virtual machines running * on the same system. * * @param address The connector address. */ public static void export(String address) { if (address == null || address.length() == 0) { throw new IllegalArgumentException("address not specified"); } Perf perf = Perf.getPerf(); perf.createString( CONNECTOR_ADDRESS_COUNTER, 1, Units.STRING.intValue(), address); }
/** * Exports the specified remote connector address and associated * configuration properties to the instrumentation buffer so that * it can be read by this or other Java virtual machines running * on the same system. * * @param properties The remote connector address properties. */ public static void exportRemote(Map<String, String> properties) { final int index = counter.getAndIncrement(); Perf perf = Perf.getPerf(); for (Map.Entry<String, String> entry : properties.entrySet()) { perf.createString(REMOTE_CONNECTOR_COUNTER_PREFIX + index + "." + entry.getKey(), 1, Units.STRING.intValue(), entry.getValue()); } }