Example #1
0
 def load_state(self, path=None):
     from coro.asn1.data_file import DataFileReader
     from __main__ import G
     if path is None:
         path = os.path.join(G.args.base, self.save_path)
     LOG('cache', 'start')
     t0 = timer()
     try:
         f = open(path, 'rb')
         df = DataFileReader(f)
         info = df.read_object()
         if info[0] < self.cache_version:
             LOG('old cache version, ignoring')
             return
         assert (info[0] == self.cache_version)  # version
         [
             _, self.height, self.block_name, self.total, self.lost,
             self.fees, size
         ] = info
         LOG('cache', self.height, size)
         self.block_name = Name(self.block_name)
         n = [0]
         df.next = df.read_object
         self.outpoints.build(df, size)
         f.close()
         LOG('cache', 'stop', len(self.outpoints), n[0])
         LOG('cache', self.height, repr(self.block_name))
     except IOError:
         pass
     LOG('cache', 'stop', t0.end())
Example #2
0
 def load_metadata(self, fileob):
     from coro.asn1.data_file import DataFileReader
     LOG('loading metadata', 'start')
     t0 = timer()
     max_block = 0
     max_pos = 0
     df = DataFileReader(fileob)
     try:
         info = df.read_object()
         version = info[0]
         assert (version == 1)
         version, nblocks = info
         for i in xrange(nblocks):
             name, pos, num, prev = df.read_object()
             name = Name(name)
             prev = Name(prev)
             self.blocks[name] = pos
             max_pos = max(pos, max_pos)
             self.prev[name] = prev
             self.num_block.setdefault(num, set()).add(name)
             self.block_num[name] = num
             max_block = max(max_block, num)
         self.last_block = max_block
     except coro.asn1.ber.DecodeError:
         LOG('error decoding metadata')
     LOG('loading metadata', 'stop', t0.end(), self.last_block)
     return max_pos
Example #3
0
 def load_state (self, path=None):
     from coro.asn1.data_file import DataFileReader
     from __main__ import G
     if path is None:
         path = os.path.join (G.args.base, self.save_path)
     W ('loading outpoints cache...')
     t0 = timer()
     try:
         f = open (path, 'rb')
         df = DataFileReader (f)
         info = df.read_object()
         assert (info[0] == self.cache_version)  # version
         [_, self.height, self.block_name, self.total, self.lost, self.fees, size] = info
         W (' height = %d ...' % (self.height,))
         self.block_name = Name (self.block_name)
         n = [0]
         def gen():
             while 1:
                 try:
                     x = df.read_object()
                     n[0] += 1
                     yield x
                 except EOFError:
                     break
         self.outpoints.build (gen(), size)
         f.close()
         W ('[loaded outpoints %d/%d entries]' % (len(self.outpoints),n[0]))
         W ('\nlast block: %d %064x\n' % (self.height, self.block_name))
     except IOError:
         pass
     W ('...done (%.2fs)\n' % (t0.end(),))
Example #4
0
 def load_state(self, path=None):
     from coro.asn1.data_file import DataFileReader
     from __main__ import G
     if path is None:
         path = os.path.join(G.args.base, self.save_path)
     W('loading outpoints cache...')
     t0 = timer()
     try:
         f = open(path, 'rb')
         df = DataFileReader(f)
         info = df.read_object()
         if info[0] < self.cache_version:
             W('old cache version, ignoring...\n')
             return
         assert (info[0] == self.cache_version)  # version
         [
             _, self.height, self.block_name, self.total, self.lost,
             self.fees, size
         ] = info
         W(' height = %d size = %d ...' % (self.height, size))
         self.block_name = Name(self.block_name)
         n = [0]
         df.next = df.read_object
         self.outpoints.build(df, size)
         f.close()
         W('[loaded outpoints %d/%d entries]' % (len(self.outpoints), n[0]))
         W('\nlast block: %d %064x\n' % (self.height, self.block_name))
     except IOError:
         pass
     W('...done (%.2fs)\n' % (t0.end(), ))
Example #5
0
 def load_state (self, path=None):
     from coro.asn1.data_file import DataFileReader
     from __main__ import G
     if path is None:
         path = os.path.join (G.args.base, self.save_path)
     LOG ('cache', 'start')
     t0 = timer()
     try:
         f = open (path, 'rb')
         df = DataFileReader (f)
         info = df.read_object()
         if info[0] < self.cache_version:
             LOG ('old cache version, ignoring')
             return
         assert (info[0] == self.cache_version)  # version
         [_, self.height, self.block_name, self.total, self.lost, self.fees, size] = info
         LOG ('cache', self.height, size)
         self.block_name = Name (self.block_name)
         n = [0]
         df.next = df.read_object
         self.outpoints.build (df, size)
         f.close()
         LOG ('cache', 'stop', len(self.outpoints), n[0])
         LOG ('cache', self.height, repr(self.block_name))
     except IOError:
         pass
     LOG ('cache', 'stop', t0.end())
Example #6
0
 def load_metadata (self, fileob):
     from coro.asn1.data_file import DataFileReader
     LOG ('loading metadata', 'start')
     t0 = timer()
     max_block = 0
     max_pos = 0
     df = DataFileReader (fileob)
     try:
         info = df.read_object()
         version = info[0]
         assert (version == 1)
         version, nblocks = info
         for i in xrange (nblocks):
             name, pos, num, prev = df.read_object()
             name = Name (name)
             prev = Name (prev)
             self.blocks[name] = pos
             max_pos = max (pos, max_pos)
             self.prev[name] = prev
             self.num_block.setdefault (num, set()).add (name)
             self.block_num[name] = num
             max_block = max (max_block, num)
         self.last_block = max_block
     except coro.asn1.ber.DecodeError:
         LOG ('error decoding metadata')
     LOG ('loading metadata', 'stop', t0.end(), self.last_block)
     return max_pos
Example #7
0
def gen_utxo (path='/usr/local/caesure/utxo.bin'):
    f = open (path, 'rb')
    df = DataFileReader (f)
    info = df.read_object()
    # note: first object is some metadata
    [version, height, block_name, total, lost, fees, size] = info
    try:
        while 1:
            # this is followed by ((txname,index), [(index, amt, script), ...])
            yield df.read_object()
    except EOFError:
        f.close()
Example #8
0
def gen_utxo(path='/usr/local/caesure/utxo.bin'):
    f = open(path, 'rb')
    df = DataFileReader(f)
    info = df.read_object()
    # note: first object is some metadata
    [version, height, block_name, total, lost, fees, size] = info
    try:
        while 1:
            # this is followed by (txname[:16], index, amt, script), ...
            yield df.read_object()
    except EOFError:
        f.close()