Commit in hps-java/src/main/java/org/lcsim/hps/evio on MAIN | |||
EvioFileProducer.java | +44 | -27 | 1.12 -> 1.13 |
skip events with errors and continue streaming to ET ring
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.
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