hps-java/src/main/java/org/lcsim/hps/evio
diff -u -r1.12 -r1.13
--- EvioFileProducer.java 17 Apr 2012 18:14:35 -0000 1.12
+++ EvioFileProducer.java 28 Apr 2012 22:04:31 -0000 1.13
@@ -1,8 +1,8 @@
package org.lcsim.hps.evio;
import java.nio.ByteBuffer;
-
import java.nio.ByteOrder;
+
import org.jlab.coda.et.EtAttachment;
import org.jlab.coda.et.EtConstants;
import org.jlab.coda.et.EtEvent;
@@ -27,13 +27,15 @@
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"
+ + " [-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"
@@ -142,16 +144,30 @@
reader = new EvioReader(evioFileName);
// Print number of events.
- System.out.println("EVIO file opened with " + reader.getEventCount() + " events");
+ if (debug)
+ System.out.println("EVIO file opened with " + reader.getEventCount() + " events");
- // Press ENTER to start producing events.
- //System.out.println("Press ENTER to start producing events...");
- //System.console().readLine();
-
- // Loop until event source is exhausted.
- //int eventCount = 0;
- EvioEvent event = reader.parseNextEvent();
+ // 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();
+ }
+ catch (Exception e) {
+ e.printStackTrace();
+ 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
@@ -160,7 +176,7 @@
0, // delay
1, // number of events
size, // size of event but overwritten later
- group); // group number; default value is arbitrary
+ group); // group number; default value is arbitrary
if (delay > 0) {
Thread.sleep(delay);
@@ -169,35 +185,36 @@
// Write EVIO event to EtEvent's buffer.
ByteBuffer buf = mevs[0].getDataBuffer();
buf.order(ByteOrder.nativeOrder());
- // FIXME Need new EventWriter every time?
+
EventWriter writer = new EventWriter(buf, 100000, 100, null, null);
writer.writeEvent(event);
try {
writer.close();
- } catch (Exception x) {
- System.out.println("caught exception while closing writer");
- System.out.println(x.getLocalizedMessage());
+ } catch (Exception e) {
+ System.out.println("Caught exception while closing writer.");
+ e.printStackTrace();
}
mevs[0].setLength(buf.position());
mevs[0].setByteOrder(ByteOrder.nativeOrder());
- for (EtEvent mev : mevs) {
- System.out.println("event length = " + mev.getLength() + ", remaining bytes: " + mev.getDataBuffer().remaining());
+ 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);
- // Break if no more events.
- if (reader.getNumEventsRemaining() == 0) {
- break;
+ if (debug) {
+ System.out.println("Wrote event #" + eventCount + " to ET");
+ System.out.println("-------------------------------");
+ ++eventCount;
}
-
- //System.out.println("Wrote event #" + eventCount + " to ET");
- //System.out.println("-------------------------------");
- //++eventCount;
-
- // Get next event.
- event = reader.parseNextEvent();
+
+ // Break if no more events.
+ if (reader.getNumEventsRemaining() == 0) {
+ break;
+ }
}
// Cleanup.