hps-java/src/main/java/org/lcsim/hps/evio
diff -u -r1.13 -r1.14
--- EvioFileProducer.java 28 Apr 2012 22:04:31 -0000 1.13
+++ EvioFileProducer.java 3 May 2012 16:42:16 -0000 1.14
@@ -1,5 +1,6 @@
package org.lcsim.hps.evio;
+import java.net.InetAddress;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
@@ -19,144 +20,154 @@
// TODO Add option for multiple EVIO input files.
public class EvioFileProducer {
- EvioReader reader;
- ByteBuffer byteBuffer;
- String evioFileName;
- String etName, host;
- int port = EtConstants.serverPort;
- int group = 1;
- int size = 10000; // Default event size.
- int delay = 0;
-
- boolean debug = true;
-
- EvioFileProducer() {
- }
-
- private static void usage() {
- System.out.println("\nUsage: java Producer -f <et name> -e <evio file> [-p <server port>] [-host <host>]"
- + " [-d <delay in millisec>] [-g <group #>]\n\n"
- + " -f ET system's name\n"
- + " -s size in bytes for requested events\n"
- + " -p port number for a udp broadcast\n"
- + " -g group number of new events to get\n"
- + " -host host the ET system resides on (defaults to anywhere)\n\n"
- + " This consumer works by making a connection to the\n"
- + " ET system's tcp server port.\n");
- System.exit(1);
- }
-
- public void copyToEtEvent(EtEvent event) {
- event.getDataBuffer().put(byteBuffer);
- }
-
- public static void main(String[] args) {
- (new EvioFileProducer()).doMain(args); // call wrapper method
- }
-
- public void doMain(String[] args) {
- try {
- for (int i = 0; i < args.length; i++) {
- if (args[i].equalsIgnoreCase("-e")) {
- evioFileName = new String(args[++i]);
- } else if (args[i].equalsIgnoreCase("-f")) {
- etName = args[++i];
- } else if (args[i].equalsIgnoreCase("-host")) {
- host = args[++i];
- } else if (args[i].equalsIgnoreCase("-p")) {
- try {
- port = Integer.parseInt(args[++i]);
- if ((port < 1024) || (port > 65535)) {
- System.out.println("Port number must be between 1024 and 65535.");
- usage();
- return;
- }
- } catch (NumberFormatException ex) {
- System.out.println("Did not specify a proper port number.");
- usage();
- return;
- }
- } else if (args[i].equalsIgnoreCase("-s")) {
- try {
- size = Integer.parseInt(args[++i]);
- if (size < 1) {
- System.out.println("Size needs to be positive int.");
- usage();
- return;
- }
- } catch (NumberFormatException ex) {
- System.out.println("Did not specify a proper size.");
- usage();
- return;
- }
- } else if (args[i].equalsIgnoreCase("-g")) {
- try {
- group = Integer.parseInt(args[++i]);
- if ((group < 1) || (group > 10)) {
- System.out.println("Group number must be between 0 and 10.");
- usage();
- return;
- }
- } catch (NumberFormatException ex) {
- System.out.println("Did not specify a proper group number.");
- usage();
- return;
- }
- } else if (args[i].equalsIgnoreCase("-d")) {
- try {
- delay = Integer.parseInt(args[++i]);
- if (delay < 1) {
- System.out.println("delay must be > 0.");
- usage();
- return;
- }
- } catch (NumberFormatException ex) {
- System.out.println("Did not specify a proper delay.");
- usage();
- return;
- }
- } else {
- usage();
- return;
- }
- }
-
- if (host == null) {
- host = EtConstants.hostAnywhere;
- }
-
- if (etName == null) {
- usage();
- return;
- }
-
- // Setup ET system with the command line config.
- EtSystemOpenConfig config = new EtSystemOpenConfig(etName, host, port);
- EtSystem sys = new EtSystem(config, EtConstants.debugInfo);
- sys.open();
- EtStation gc = sys.stationNameToObject("GRAND_CENTRAL");
- EtAttachment att = sys.attach(gc);
-
- // array of events
- EtEvent[] mevs;
-
- // Open EVIO reader.
- reader = new EvioReader(evioFileName);
-
- // Print number of events.
- if (debug)
- System.out.println("EVIO file opened with " + reader.getEventCount() + " events");
-
- // Event sequence number; starts with 1.
- int eventCount = 1;
-
- // Ref to current EVIO event.
- EvioEvent event = null;
-
- // Loop until event source is exhausted.
- while (true) {
-
- // Get next event.
+ EvioReader reader;
+ ByteBuffer byteBuffer;
+ String evioFileName;
+ String etName, host;
+ int port = EtConstants.serverPort;
+ int group = 1;
+ int size = 10000; // Default event size.
+ int delay = 0;
+
+ boolean debug = true;
+
+ EvioFileProducer() {
+ }
+
+ private static void usage() {
+ System.out.println("\nUsage: java Producer -f <et name> -e <evio file> [-p <server port>] [-host <host>]"
+ + " [-d <delay in millisec>] [-g <group #>]\n\n"
+ + " -f ET system's name\n"
+ + " -s size in bytes for requested events\n"
+ + " -p port number for a udp broadcast\n"
+ + " -g group number of new events to get\n"
+ + " -host host the ET system resides on (defaults to anywhere)\n\n"
+ + " This consumer works by making a connection to the\n"
+ + " ET system's tcp server port.\n");
+ System.exit(1);
+ }
+
+ public void copyToEtEvent(EtEvent event) {
+ event.getDataBuffer().put(byteBuffer);
+ }
+
+ public static void main(String[] args) {
+ (new EvioFileProducer()).doMain(args); // call wrapper method
+ }
+
+ public void doMain(String[] args) {
+ try {
+ for (int i = 0; i < args.length; i++) {
+ if (args[i].equalsIgnoreCase("-e")) {
+ evioFileName = new String(args[++i]);
+ } else if (args[i].equalsIgnoreCase("-f")) {
+ etName = args[++i];
+ } else if (args[i].equalsIgnoreCase("-host")) {
+ host = args[++i];
+ } else if (args[i].equalsIgnoreCase("-p")) {
+ try {
+ port = Integer.parseInt(args[++i]);
+ if ((port < 1024) || (port > 65535)) {
+ System.out.println("Port number must be between 1024 and 65535.");
+ usage();
+ return;
+ }
+ } catch (NumberFormatException ex) {
+ System.out.println("Did not specify a proper port number.");
+ usage();
+ return;
+ }
+ } else if (args[i].equalsIgnoreCase("-s")) {
+ try {
+ size = Integer.parseInt(args[++i]);
+ if (size < 1) {
+ System.out.println("Size needs to be positive int.");
+ usage();
+ return;
+ }
+ } catch (NumberFormatException ex) {
+ System.out.println("Did not specify a proper size.");
+ usage();
+ return;
+ }
+ } else if (args[i].equalsIgnoreCase("-g")) {
+ try {
+ group = Integer.parseInt(args[++i]);
+ if ((group < 1) || (group > 10)) {
+ System.out.println("Group number must be between 0 and 10.");
+ usage();
+ return;
+ }
+ } catch (NumberFormatException ex) {
+ System.out.println("Did not specify a proper group number.");
+ usage();
+ return;
+ }
+ } else if (args[i].equalsIgnoreCase("-d")) {
+ try {
+ delay = Integer.parseInt(args[++i]);
+ if (delay < 1) {
+ System.out.println("delay must be > 0.");
+ usage();
+ return;
+ }
+ } catch (NumberFormatException ex) {
+ System.out.println("Did not specify a proper delay.");
+ usage();
+ return;
+ }
+ } else {
+ usage();
+ return;
+ }
+ }
+
+ if (host == null) {
+ //host = EtConstants.hostAnywhere;
+ host = InetAddress.getLocalHost().getHostName();
+ }
+
+ // ET name is required.
+ if (etName == null) {
+ System.out.println("EVIO file argument is required.");
+ usage();
+ return;
+ }
+
+ // EVIO file name is required.
+ if (evioFileName == null) {
+ System.out.println("EVIO file argument is required.");
+ usage();
+ return;
+ }
+
+ // Setup ET system with the command line config.
+ EtSystemOpenConfig config = new EtSystemOpenConfig(etName, host, port);
+ EtSystem sys = new EtSystem(config, EtConstants.debugInfo);
+ sys.open();
+ EtStation gc = sys.stationNameToObject("GRAND_CENTRAL");
+ EtAttachment att = sys.attach(gc);
+
+ // array of events
+ EtEvent[] mevs;
+
+ // Open EVIO reader.
+ reader = new EvioReader(evioFileName);
+
+ // Print number of events.
+ if (debug)
+ System.out.println("EVIO file opened with " + reader.getEventCount() + " events");
+
+ // Event sequence number; starts with 1.
+ int eventCount = 1;
+
+ // Ref to current EVIO event.
+ EvioEvent event = null;
+
+ // Loop until event source is exhausted.
+ while (true) {
+
+ // Get next event.
try {
event = reader.parseNextEvent();
}
@@ -165,63 +176,63 @@
System.out.println("Error making EVIO event with sequence number <" + eventCount + ">.");
continue;
}
-
- if (debug)
- System.out.println("new events - size=" + size + "; group=" + group);
-
- mevs = sys.newEvents(
- att, // attachment
- Mode.SLEEP, // wait mode
- false, // create a buffer
- 0, // delay
- 1, // number of events
- size, // size of event but overwritten later
- group); // group number; default value is arbitrary
-
- if (delay > 0) {
- Thread.sleep(delay);
- }
-
- // Write EVIO event to EtEvent's buffer.
- ByteBuffer buf = mevs[0].getDataBuffer();
- buf.order(ByteOrder.nativeOrder());
-
- EventWriter writer = new EventWriter(buf, 100000, 100, null, null);
- writer.writeEvent(event);
- try {
- writer.close();
- } catch (Exception e) {
- System.out.println("Caught exception while closing writer.");
- e.printStackTrace();
- }
- mevs[0].setLength(buf.position());
- mevs[0].setByteOrder(ByteOrder.nativeOrder());
- if (debug) {
- for (EtEvent mev : mevs) {
- System.out.println("event length = " + mev.getLength() + ", remaining bytes: " + mev.getDataBuffer().remaining());
- }
- }
-
- // Put events onto ET ring.
- sys.putEvents(att, mevs);
-
- if (debug) {
- System.out.println("Wrote event #" + eventCount + " to ET");
- System.out.println("-------------------------------");
- ++eventCount;
- }
-
+
+ if (debug)
+ System.out.println("new events - size=" + size + "; group=" + group);
+
+ mevs = sys.newEvents(
+ att, // attachment
+ Mode.SLEEP, // wait mode
+ false, // create a buffer
+ 0, // delay
+ 1, // number of events
+ size, // size of event but overwritten later
+ group); // group number; default value is arbitrary
+
+ if (delay > 0) {
+ Thread.sleep(delay);
+ }
+
+ // Write EVIO event to EtEvent's buffer.
+ ByteBuffer buf = mevs[0].getDataBuffer();
+ buf.order(ByteOrder.nativeOrder());
+
+ EventWriter writer = new EventWriter(buf, 100000, 100, null, null);
+ writer.writeEvent(event);
+ try {
+ writer.close();
+ } catch (Exception e) {
+ System.out.println("Caught exception while closing writer.");
+ e.printStackTrace();
+ }
+ mevs[0].setLength(buf.position());
+ mevs[0].setByteOrder(ByteOrder.nativeOrder());
+ if (debug) {
+ for (EtEvent mev : mevs) {
+ System.out.println("event length = " + mev.getLength() + ", remaining bytes: " + mev.getDataBuffer().remaining());
+ }
+ }
+
+ // Put events onto ET ring.
+ sys.putEvents(att, mevs);
+
+ if (debug) {
+ System.out.println("Wrote event #" + eventCount + " to ET");
+ System.out.println("-------------------------------");
+ ++eventCount;
+ }
+
// Break if no more events.
if (reader.getNumEventsRemaining() == 0) {
break;
}
- }
+ }
- // Cleanup.
- sys.close();
- reader.close();
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
+ // Cleanup.
+ sys.close();
+ reader.close();
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
}