def __init__(self, req, ro, rs, fileName): self.req = req self.ro = ro self.rs = rs # keep a reference to avoid crash self.rsInput = RecordInput(rs, Array.INT, Record.SAVE_RAW) self.fileName = fileName self.written = 0
class _WaveformProducer: def __init__(self, req, ro, rs, fileName, tracker): self.req = req self.ro = ro self.rs = rs # keep a reference to avoid crash self.rsInput = RecordInput(rs, Array.INT, Record.SAVE_RAW) self.fileName = fileName self.written = 0 self.tracker = tracker def resumeProducing(self): rec = None try: rec = self.rsInput.next() except Exception, e: Logging.warning("%s" % str(e)) if self.written == 0: # read first record to test if any data exists at all if not rec: msg = "no waveform data found" data = HTTP.renderErrorPage(self.req, http.NO_CONTENT, msg, self.ro) if data: self.req.write(data) self.req.unregisterProducer() self.req.finish() if self.tracker: self.tracker.volume_status("fdsnws", "NODATA", 0, "") self.tracker.request_status("END", "") return self.req.setHeader('Content-Type', 'application/vnd.fdsn.mseed') self.req.setHeader('Content-Disposition', "attachment; " \ "filename=%s" % self.fileName) if not rec: self.req.unregisterProducer() Logging.debug("%s: returned %i bytes of mseed data" % ( self.ro.service, self.written)) utils.accessLog(self.req, self.ro, http.OK, self.written, None) self.req.finish() if self.tracker: self.tracker.volume_status("fdsnws", "OK", self.written, "") self.tracker.request_status("END", "") return data = rec.raw().str() self.req.write(data) self.written += len(data) def stopProducing(self): pass
class _WaveformProducer: def __init__(self, req, ro, rs, fileName, tracker): self.req = req self.ro = ro self.rs = rs # keep a reference to avoid crash self.rsInput = RecordInput(rs, Array.INT, Record.SAVE_RAW) self.fileName = fileName self.written = 0 self.tracker = tracker def resumeProducing(self): rec = None try: rec = self.rsInput.next() except Exception, e: Logging.warning("%s" % str(e)) if self.written == 0: # read first record to test if any data exists at all if not rec: msg = "no waveform data found" data = HTTP.renderErrorPage(self.req, http.NO_CONTENT, msg, self.ro) if data: self.req.write(data) self.req.unregisterProducer() self.req.finish() if self.tracker: self.tracker.volume_status("fdsnws", "NODATA", 0, "") self.tracker.request_status("END", "") return self.req.setHeader('Content-Type', 'application/vnd.fdsn.mseed') self.req.setHeader('Content-Disposition', "attachment; " \ "filename=%s" % self.fileName) if not rec: self.req.unregisterProducer() Logging.debug("%s: returned %i bytes of mseed data" % (self.ro.service, self.written)) utils.accessLog(self.req, self.ro, http.OK, self.written, None) self.req.finish() if self.tracker: self.tracker.volume_status("fdsnws", "OK", self.written, "") self.tracker.request_status("END", "") return data = rec.raw().str() self.req.write(data) self.written += len(data)
def input(self): fastsdsPrefix = 'fastsds://' if self.__url.startswith(fastsdsPrefix): fastsds = SDS(self.__url[len(fastsdsPrefix):]) else: fastsds = None for (net, sta, loc, cha, startt, endt, restricted, archNet) in self.__tw: if not archNet: archNet = net size = 0 if fastsds: start = dateutil.parser.parse( startt.iso()).replace(tzinfo=None) end = dateutil.parser.parse(endt.iso()).replace(tzinfo=None) for data in fastsds.getRawBytes(start, end, archNet, sta, loc, cha, self.__bufferSize): size += len(data) if archNet == net: yield data else: try: yield self.__override_network(data, net) except Exception as e: Logging.error( "could not override network code: %s" % str(e)) else: rs = RecordStream.Open(self.__url) if rs is None: Logging.error("could not open record stream") break rs.addStream(archNet, sta, loc, cha, startt, endt) rsInput = RecordInput(rs, Array.INT, Record.SAVE_RAW) eof = False while not eof: data = b"" while len(data) < self.__bufferSize: try: rec = rsInput.next() except Exception as e: Logging.error("%s" % str(e)) eof = True break if rec is None: eof = True break data += rec.raw().str() if data: size += len(data) if archNet == net: yield data else: try: yield self.__override_network(data, net) except Exception as e: Logging.error("could not override network " \ "code: %s" % str(e)) for tracker in self.__trackerList: net_class = 't' if net[0] in "0123456789XYZ" else 'p' if size == 0: tracker.line_status(startt, endt, net, sta, cha, loc, restricted, net_class, True, [], "fdsnws", "NODATA", 0, "") else: tracker.line_status(startt, endt, net, sta, cha, loc, restricted, net_class, True, [], "fdsnws", "OK", size, "")
def input(self): fastsdsPrefix = 'fastsds://' if self.__url.startswith(fastsdsPrefix): fastsds = SDS(self.__url[len(fastsdsPrefix):]) else: fastsds = None for (net, sta, loc, cha, startt, endt, restricted, archNet) in self.__tw: if not archNet: archNet = net size = 0 if fastsds: start = dateutil.parser.parse( startt.iso()).replace(tzinfo=None) end = dateutil.parser.parse(endt.iso()).replace(tzinfo=None) for data in fastsds.getRawBytes(start, end, archNet, sta, loc, cha, self.__bufferSize): size += len(data) if archNet == net: yield data else: try: yield self.__override_network(data, net) except Exception, e: Logging.error( "could not override network code: %s" % str(e)) else: rs = RecordStream.Open(self.__url) if rs is None: Logging.error("could not open record stream") break rs.addStream(archNet, sta, loc, cha, startt, endt) rsInput = RecordInput(rs, Array.INT, Record.SAVE_RAW) eof = False while not eof: data = "" while len(data) < self.__bufferSize: try: rec = rsInput.next() except Exception, e: Logging.error("%s" % str(e)) eof = True break if rec is None: eof = True break data += rec.raw().str() if data: size += len(data) if archNet == net: yield data else: try: yield self.__override_network(data, net) except Exception, e: Logging.error( "could not override network code: %s" % str(e))
def input(self): fastsdsPrefix = 'fastsds://' if self.__url.startswith(fastsdsPrefix): fastsds = SDS(self.__url[len(fastsdsPrefix):]) else: fastsds = None for (net, sta, loc, cha, startt, endt, restricted, archNet) in self.__tw: if not archNet: archNet = net size = 0 if fastsds: start = dateutil.parser.parse(startt.iso()).replace(tzinfo=None) end = dateutil.parser.parse(endt.iso()).replace(tzinfo=None) for data in fastsds.getRawBytes(start, end, archNet, sta, loc, cha, self.__bufferSize): size += len(data) if archNet == net: yield data else: try: yield self.__override_network(data, net) except Exception, e: Logging.error("could not override network code: %s" % str(e)) else: rs = RecordStream.Open(self.__url) if rs is None: Logging.error("could not open record stream") break rs.addStream(archNet, sta, loc, cha, startt, endt) rsInput = RecordInput(rs, Array.INT, Record.SAVE_RAW) eof = False while not eof: data = "" while len(data) < self.__bufferSize: try: rec = rsInput.next() except Exception, e: Logging.error("%s" % str(e)) eof = True break if rec is None: eof = True break data += rec.raw().str() if data: size += len(data) if archNet == net: yield data else: try: yield self.__override_network(data, net) except Exception, e: Logging.error("could not override network code: %s" % str(e))