Exemplo n.º 1
0
    def _get_latest_block(self, tx_context, orderer):
        """ Get latest block from orderer.

        Args:
            tx_context (object): a tx_context instance
            orderer (object): a orderer instance
        """
        seek_info = ab_pb2.SeekInfo()
        seek_info.start.newest = ab_pb2.SeekNewest()
        seek_info.stop.newest = ab_pb2.SeekNewest()
        seek_info.behavior = \
            ab_pb2.SeekInfo.SeekBehavior.Value('BLOCK_UNTIL_READY')

        seek_info_header = self._build_channel_header(
            common_pb2.HeaderType.Value('DELIVER_SEEK_INFO'), tx_context.tx_id,
            self._name, current_timestamp(), tx_context.epoch)

        signature_header = common_pb2.SignatureHeader()
        signature_header.creator = tx_context.identity
        signature_header.nonce = tx_context.nonce

        seek_payload = common_pb2.Payload()
        seek_payload.header.signature_header = \
            signature_header.SerializeToString()
        seek_payload.header.channel_header = \
            seek_info_header.SerializeToString()
        seek_payload.data = seek_info.SerializeToString()

        envelope = common_pb2.Envelope()
        envelope.signature = tx_context.sign(seek_payload.SerializeToString())
        envelope.payload = seek_payload.SerializeToString()
Exemplo n.º 2
0
def create_seek_info(start=None, stop=None, behavior="BLOCK_UNTIL_READY"):

    # build start
    if start is not None:
        seek_specified_start = ab_pb2.SeekSpecified()
        seek_specified_start.number = start
        seek_start = ab_pb2.SeekPosition()
        seek_start.specified.CopyFrom(seek_specified_start)
    else:
        seek_start = ab_pb2.SeekPosition()
        seek_start.newest.CopyFrom(ab_pb2.SeekNewest())

    # build stop
    if stop is not None:
        seek_specified_stop = ab_pb2.SeekSpecified()
        seek_specified_stop.number = stop
        seek_stop = ab_pb2.SeekPosition()
        seek_stop.specified.CopyFrom(seek_specified_stop)
    else:
        seek_stop = ab_pb2.SeekPosition()
        seek_stop.newest.CopyFrom(ab_pb2.SeekNewest())

    # seek info with all parts
    seek_info = ab_pb2.SeekInfo()
    seek_info.start.CopyFrom(seek_start)
    seek_info.stop.CopyFrom(seek_stop)

    seek_info.behavior = ab_pb2.SeekInfo.SeekBehavior.Value(behavior)

    return seek_info
Exemplo n.º 3
0
    def _create_seek_info(self, start=None, stop=None):

        behavior = 'BLOCK_UNTIL_READY'

        # build start
        seek_start = ab_pb2.SeekPosition()
        if start is None or start == 'newest':
            seek_start.newest.CopyFrom(ab_pb2.SeekNewest())
        elif start == 'oldest':
            seek_start.oldest.CopyFrom(ab_pb2.SeekOldest())
        else:
            seek_specified_start = ab_pb2.SeekSpecified()
            seek_specified_start.number = start
            seek_start.specified.CopyFrom(seek_specified_start)

        # build stop
        seek_stop = ab_pb2.SeekPosition()
        if stop == 'newest':
            self._ending_block_newest = True
            seek_stop.newest.CopyFrom(ab_pb2.SeekNewest())
            behavior = 'FAIL_IF_NOT_READY'
        elif start == 'oldest':
            seek_stop.oldest.CopyFrom(ab_pb2.SeekOldest())
            behavior = 'FAIL_IF_NOT_READY'
        else:
            seek_specified_stop = ab_pb2.SeekSpecified()
            if stop is not None:
                seek_specified_stop.number = stop
                behavior = 'FAIL_IF_NOT_READY'
            else:
                seek_specified_stop.number = sys.maxsize
            seek_stop.specified.CopyFrom(seek_specified_stop)

        # seek info with all parts
        seek_info = ab_pb2.SeekInfo()
        seek_info.start.CopyFrom(seek_start)
        seek_info.stop.CopyFrom(seek_stop)

        # BLOCK_UNTIL_READY will mean hold the stream open and keep sending
        # as the blocks come in
        # FAIL_IF_NOT_READY will mean if the block is not there throw an error
        seek_info.behavior = ab_pb2.SeekInfo.SeekBehavior.Value(behavior)

        return seek_info
Exemplo n.º 4
0
def create_seek_info(start, stop, behavior="BLOCK_UNTIL_READY"):

    # build start
    seek_specified_start = ab_pb2.SeekSpecified()
    seek_specified_start.number = start
    seek_start = ab_pb2.SeekPosition()
    seek_start.specified.CopyFrom(seek_specified_start)

    # build stop
    seek_specified_stop = ab_pb2.SeekSpecified()
    seek_specified_stop.number = stop
    seek_stop = ab_pb2.SeekPosition()
    seek_stop.specified.CopyFrom(seek_specified_stop)

    # seek info with all parts
    seek_info = ab_pb2.SeekInfo()
    seek_info.start.CopyFrom(seek_start)
    seek_info.stop.CopyFrom(seek_stop)
    seek_info.behavior = \
            ab_pb2.SeekInfo.SeekBehavior.Value(behavior)

    return seek_info