Print

Print


Commit in hps-java/src/main/java/org/lcsim/hps/evio on MAIN
EvioFileProducer.java+44-271.12 -> 1.13
skip events with errors and continue streaming to ET ring

hps-java/src/main/java/org/lcsim/hps/evio
EvioFileProducer.java 1.12 -> 1.13
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.
CVSspam 0.2.12


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