def initialize(self): """ Initializes this SLClient. """ if self.slconn.getSLAddress() is None: message = "no SeedLink server specified" raise SeedLinkException(message) if self.verbose >= 2: self.ppackets = True if self.slconn.getSLAddress().startswith(":"): self.slconn.setSLAddress("127.0.0.1" + self.slconn.getSLAddress()) if self.streamfile is not None: self.slconn.readStreamList(self.streamfile, self.selectors) if self.multiselect is not None: self.slconn.parseStreamlist(self.multiselect, self.selectors) else: if self.streamfile is None: self.slconn.setUniParams(self.selectors, -1, None) if self.statefile is not None: self.slconn.setStateFile(self.statefile) else: if self.begin_time is not None: self.slconn.setBeginTime(self.begin_time) if self.end_time is not None: self.slconn.setEndTime(self.end_time)
def __init__(self, bytes=None, offset=None): if bytes is None or offset is None: return if len(bytes) - offset < self.SLHEADSIZE + self.SLRECSIZE: msg = "not enough bytes in sub array to construct a new SLPacket" raise SeedLinkException(msg) self.slhead = bytes[offset:offset + self.SLHEADSIZE] self.msrecord = bytes[offset + self.SLHEADSIZE:offset + self.SLHEADSIZE + self.SLRECSIZE]
def appendBytes(self, bytes_): """ Appends bytes to the receive buffer after the last received data. """ if self.bytesRemaining() < len(bytes_): msg = "not enough bytes remaining in buffer to append new bytes" raise SeedLinkException(msg) self.databuf[self.recptr:self.recptr + len(bytes_)] = bytes_ self.recptr += len(bytes_)
def appendBytes(self, bytes): """ Appends bytes to the receive buffer after the last received data. """ if self.bytesRemaining() < len(bytes): msg = "not enough bytes remaining in buffer to append new bytes" raise SeedLinkException(msg) ## for-while for i in range(len(bytes)): self.databuf[self.recptr] = bytes[i] self.recptr += 1
def getPacket(self): """ Returns last received packet. :return: last received packet if data buffer contains a full packet to send. :raise: SeedLinkException if there is not a packet ready to send. See also: :meth:`packetAvailable` """ if not self.packetAvailable(): raise SeedLinkException("SLPacket not available to send") return SLPacket(self.databuf, self.sendptr)
def isEnd(self): """ Check for SeedLink END packet. :return: true if next send packet is a SeedLink END packet :raise: SeedLinkException if there are not enough bytes to determine """ if self.recptr - self.sendptr < len(SLPacket.ENDSIGNATURE): msg = "not enough bytes to determine packet type" raise SeedLinkException(msg) return self.databuf[self.sendptr: self.sendptr + len(SLPacket.ENDSIGNATURE)].lower() == \ SLPacket.ENDSIGNATURE.lower()
def getMSRecord(self): # following from obspy.mseed.tests.test_libmseed.py -> test_msrParse msr = clibmseed.msr_init(C.POINTER(MSRecord)()) pyobj = np.array(self.msrecord) errcode = \ clibmseed.msr_parse(pyobj.ctypes.data_as(C.POINTER(C.c_char)), len(pyobj), C.pointer(msr), -1, 1, 1) if errcode != 0: msg = "failed to decode mini-seed record: msr_parse errcode: %s" raise SeedLinkException(msg % (errcode)) #print "DEBUG: msr:", msr msrecord_py = msr.contents #print "DEBUG: msrecord_py:", msrecord_py return msrecord_py
def packetIsInfo(self): """ Check for SeedLink INFO packet. :return: true if next send packet is a SeedLink INFO packet :raise SeedLinkException: if there are not enough bytes to determine packet type """ if self.recptr - self.sendptr < len(SLPacket.INFOSIGNATURE): msg = "not enough bytes to determine packet type" raise SeedLinkException(msg) return self.databuf[self.sendptr: self.sendptr + len(SLPacket.INFOSIGNATURE)].lower() == \ SLPacket.INFOSIGNATURE.lower() # @UndefinedVariable