コード例 #1
0
ファイル: impl.py プロジェクト: maguro/pookeeper
def _invoke(socket, timeout, request, response=None, xid=None):
    oa = OutputArchive()
    if xid:
        oa.write_int(xid, 'xid')
    if request.type:
        oa.write_int(request.type, 'type')
    request.serialize(oa, 'NA')

    timeout = _write(socket, struct.pack('!i', len(oa.buffer)), timeout)
    timeout = _write(socket, oa.buffer, timeout)

    msg, timeout = _read(socket, 4, timeout)
    length = struct.unpack_from('!i', msg, 0)[0]

    msg, _ = _read(socket, length, timeout)
    ia = InputArchive(msg)

    zxid = None
    if xid:
        header = ReplyHeader(None, None, None)
        header.deserialize(ia, 'header')
        if header.xid != xid:
            raise RuntimeError('xids do not match, expected %r received %r', xid, header.xid)
        if header.zxid > 0:
            zxid = header.zxid
        if header.err:
            callback_exception = EXCEPTIONS[header.err]()
            LOGGER.debug('Received error %r', callback_exception)
            raise callback_exception

    if response:
        response.deserialize(ia, 'NA')
        LOGGER.debug('Read response %r', response)

    return zxid
コード例 #2
0
ファイル: test_archive.py プロジェクト: maguro/pookeeper
def test_byte():
    oa = OutputArchive()
    for b in range(256):
        oa.write_byte(b, 'tag_' + str(b))
    ia = InputArchive(str(oa.buffer))
    for b in range(256):
        r = ia.read_byte('tag_' + str(b))
        assert b == r
コード例 #3
0
ファイル: test_archive.py プロジェクト: maguro/pookeeper
def test_int():
    oa = OutputArchive()
    for b in range(256):
        oa.write_int(b, 'tag_' + str(b))
    ia = InputArchive(str(oa.buffer))
    for b in range(256):
        r = ia.read_int('tag_' + str(b))
        assert type(r) == int
        assert b == r
コード例 #4
0
ファイル: impl.py プロジェクト: maguro/pookeeper
def _submit(socket, request, timeout, xid=None):
    oa = OutputArchive()
    oa.write_int(xid, 'xid')
    if request.type:
        oa.write_int(request.type, 'type')
    request.serialize(oa, 'NA')

    timeout = _write(socket, struct.pack('!i', len(oa.buffer)), timeout)
    _write(socket, oa.buffer, timeout)
コード例 #5
0
ファイル: test_archive.py プロジェクト: maguro/pookeeper
def test_bool():
    oa = OutputArchive()
    oa.write_bool(True, 'tag')
    ia = InputArchive(str(oa.buffer))
    assert ia.read_bool('tag')

    oa = OutputArchive()
    oa.write_bool(False, 'tag')
    ia = InputArchive(str(oa.buffer))
    assert not ia.read_bool('tag')
コード例 #6
0
ファイル: test_archive.py プロジェクト: maguro/pookeeper
def test_vector():
    oa = OutputArchive()
    v = [1, 2, 3, 4, 5]
    oa.start_vector(v, 'tag')
    for i in range(len(v)):
        oa.write_int(v[i], 'tag_' + str(i))
    oa.end_vector(v, 'tag')

    ia = InputArchive(str(oa.buffer))
    l = ia.start_vector('tag')
    vv = []
    for i in range(l):
        vv.append(ia.read_int('tag_' + str(i)))
    ia.end_vector('tag')
    assert v == vv
コード例 #7
0
ファイル: test_archive.py プロジェクト: maguro/pookeeper
def test_long():
    oa = OutputArchive()
    oa.write_long(9141385893744296737, 'tag')
    ia = InputArchive(str(oa.buffer))
    r = ia.read_long('tag')
    assert type(r) == long
    assert 9141385893744296737 == r

    oa = OutputArchive()
    oa.write_long(1, 'tag')
    ia = InputArchive(str(oa.buffer))
    r = ia.read_long('tag')
    assert type(r) == long
    assert 1 == r