From 2f7dd8b770233a6a77857796b85bfe97f89408f2 Mon Sep 17 00:00:00 2001
From: Hal Simpson <hasimpson@usgs.gov>
Date: Mon, 13 Jul 2015 13:46:40 -0600
Subject: [PATCH] Forceout is now an optional part of edge out,  with the
 default being false

---
 geomagio/Controller.py       | 12 +++++++++---
 geomagio/edge/EdgeFactory.py |  9 +++++++--
 2 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/geomagio/Controller.py b/geomagio/Controller.py
index 019386fdb..0614474db 100644
--- a/geomagio/Controller.py
+++ b/geomagio/Controller.py
@@ -274,7 +274,8 @@ def main(args):
                 type=args.type,
                 interval=args.interval,
                 locationCode=locationcode,
-                tag=args.output_edge_tag)
+                tag=args.output_edge_tag,
+                forceout=args.forceout)
     else:
             print >> sys.stderr, "Missing required output directive"
 
@@ -382,8 +383,13 @@ def parse_args(args):
     parser.add_argument('--realtime',
             action='store_true',
             default=False,
-            help='Flag to run last hour if interval is minute, ' +
-                    'or last 10 minutes if interval is seconds')
+            help='Flag to run the last hour if interval is minute, ' +
+                    'or the last 10 minutes if interval is seconds')
+    parser.add_argument('--forceout',
+            action='store_true',
+            default=False,
+            help='Flag to force data into miniseed blocks. Should only ' +
+                    'be used when certain the data is self contained.')
 
     # Input group
     input_group = parser.add_mutually_exclusive_group(required=True)
diff --git a/geomagio/edge/EdgeFactory.py b/geomagio/edge/EdgeFactory.py
index 32ee18c9c..d74e441d5 100644
--- a/geomagio/edge/EdgeFactory.py
+++ b/geomagio/edge/EdgeFactory.py
@@ -52,6 +52,9 @@ class EdgeFactory(TimeseriesFactory):
     tag: str
         A tag used by edge to log and associate a socket with a given data
         source
+    forceout: bool
+        Tells edge to forceout a packet to miniseed.  Generally used when
+        the user knows no more data is coming.
 
     See Also
     --------
@@ -68,7 +71,7 @@ class EdgeFactory(TimeseriesFactory):
     def __init__(self, host=None, port=None, write_port=None,
             observatory=None, channels=None, type=None, interval=None,
             observatoryMetadata=None, locationCode=None,
-            cwbhost=None, cwbport=0, tag='GeomagAlg'):
+            cwbhost=None, cwbport=0, tag='GeomagAlg', forceout=False):
         TimeseriesFactory.__init__(self, observatory, channels, type, interval)
         self.client = earthworm.Client(host, port)
 
@@ -81,6 +84,7 @@ class EdgeFactory(TimeseriesFactory):
         self.write_port = write_port
         self.cwbhost = cwbhost or ''
         self.cwbport = cwbport
+        self.forceout = forceout
 
     def get_timeseries(self, starttime, endtime, observatory=None,
             channels=None, type=None, interval=None):
@@ -618,7 +622,8 @@ class EdgeFactory(TimeseriesFactory):
                     trace_send.data)
             trace_send = self._convert_trace_to_int(trace_send)
             ric.send_trace(interval, trace_send)
-        ric.forceout()
+        if self.forceout:
+            ric.forceout()
         ric.close()
 
     def _set_metadata(self, stream, observatory, channel, type, interval):
-- 
GitLab