コード例 #1
0
ファイル: op_query.py プロジェクト: upcFrost/aiomongowire
    def _from_data(cls, message_length: int, header: MessageHeader,
                   data: io.BytesIO):
        # bit vector of query options
        flags = int.from_bytes(data.read(4), byteorder='little', signed=False)
        # "dbname.collection_name"
        full_collection_name = decode_cstring(data)
        # number of documents to skip
        number_to_skip = int.from_bytes(data.read(4),
                                        byteorder='little',
                                        signed=True)
        # number of documents to return in the first OP_REPLY batch
        number_to_return = int.from_bytes(data.read(4),
                                          byteorder='little',
                                          signed=True)
        # query object
        query = bson.decode_object(data)

        data_left = data.getvalue()
        if data_left:
            # Optional. Selector indicating the fields to return.
            return_fields_selector = bson.decode_object(data_left)
        else:
            return_fields_selector = None

        return cls(header=header,
                   flags=flags,
                   full_collection_name=full_collection_name,
                   number_to_skip=number_to_skip,
                   number_to_return=number_to_return,
                   query=query,
                   return_fields_selector=return_fields_selector)
コード例 #2
0
ファイル: op_update.py プロジェクト: upcFrost/aiomongowire
    def _from_data(cls, message_length: int, header: MessageHeader,
                   data: io.BytesIO) -> 'OpUpdate':
        data.seek(4, io.SEEK_CUR)  # 0 - reserved for future use
        full_collection_name = decode_cstring(data)  # "dbname.collectionname"
        flags = int(data.read(4))  # bit vector
        selector = bson.decode_object(data)  # the query to select the document
        update = bson.decode_object(
            data)  # specification of the update to perform

        return cls(header=header,
                   full_collection_name=full_collection_name,
                   flags=flags,
                   selector=selector,
                   update=update)
コード例 #3
0
ファイル: op_get_more.py プロジェクト: upcFrost/aiomongowire
 def _from_data(cls, message_length: int, header: MessageHeader, data: io.BytesIO) -> 'OpGetMore':
     data.seek(4, io.SEEK_CUR)  # 0 - reserved for future use
     full_collection_name = bson.decode_object(data)  # "dbname.collectionname"
     number_to_return = int(data.read(4))  # number of documents to return
     cursor_id = int(data.read(8))  # cursorID from the OP_REPLY
     return cls(header=header, full_collection_name=full_collection_name, number_to_return=number_to_return,
                cursor_id=cursor_id)
コード例 #4
0
 def _from_data(cls, message_length: int, header: MessageHeader,
                data: io.BytesIO):
     data.seek(4, io.SEEK_CUR)  # 0 - reserved for future use
     full_collection_name = decode_cstring(data)  # "dbname.collectionname"
     flags = int(data.read(4))  # bit vector
     selector = bson.decode_object(data)  # query object.
     return cls(header=header,
                full_collection_name=full_collection_name,
                flags=flags,
                selector=selector)
コード例 #5
0
 def _from_data(cls, message_length: int, header: MessageHeader,
                data: io.BytesIO):
     flags = int.from_bytes(data.read(4), byteorder='little',
                            signed=True)  # bit vector
     full_collection_name = decode_cstring(data)  # "dbname.collectionname"
     documents = bson.decode_object(
         data)  # one or more documents to insert into the collection
     return cls(header=header,
                flags=flags,
                full_collection_name=full_collection_name,
                documents=documents)