Commit in hps-java/src/main/java/org/lcsim/hps/evio on MAIN | |||
EvioFileProducer.java | +203 | -192 | 1.13 -> 1.14 |
check for missing evio file arg; default host to localhost so argument is optional
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); + } + }
}
Use REPLY-ALL to reply to list
To unsubscribe from the LCD-CVS list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=LCD-CVS&A=1