Пример #1
0
 def _send_op(self, op, key, val, lifespan, max_idle, ret_prev, version, count):
   flag = 0x01 if ret_prev else 0
   # Start of request header: magic, message_id, version, op_code
   start = struct.pack(">B", MAGIC[0]) + to_varint(self.counter) \
           + struct.pack(">2B", VERSION, op)
   # Increase counter for next message
   self._increase_counter()
   # End of request header: flag, client_int, topo_id, tx_type_id
   end = struct.pack(">4B", flag, 0x01, 0, 0)
   if self.cache_name == '':
     # 0 (no cache name)
     encoded_cache_name = struct.pack(">B", 0)
   else:
     # cache_name_len, cache_name,
     encoded_cache_name = to_varint(len(self.cache_name)) + self.cache_name
   msg = start + encoded_cache_name + end
   SEND[op](self.s, msg, key, val, lifespan, max_idle, version, count)
Пример #2
0
# magic, msg_id, op_code, status, topology_mark
HEADER_RES_FMT = ">BBBBB"
HEADER_RES_LEN = struct.calcsize(HEADER_RES_FMT)

VERSION_FMT = ">Q"
VERSION_LEN = struct.calcsize(VERSION_FMT)

MAX_VLONG = 0x7FFFFFFFFFFFFFFF
MAX_VINT = 0xFFFFFFFF


KEY_LESS_SEND = lambda s, m, k, v, l, i, ver, c: \
  s.send(m)
KEY_ONLY_SEND = lambda s, m, k, v, l, i, ver, c: \
  s.send(m + to_varint(len(k)) + k)
KEY_VALUE_SEND = lambda s, m, k, v, l, i, ver, c: \
  s.send(
    m + to_varint(len(k)) + k +
    to_varint(l) + to_varint(i) +
    to_varint(len(v)) + v
  )
REPLACE_IF_SEND = lambda s, m, k, v, l, i, ver, c: \
  s.send(
    m + to_varint(len(k)) + k +
    to_varint(l) + to_varint(i) +
    struct.pack(VERSION_FMT, ver) +
    to_varint(len(v)) + v
  )

REMOVE_IF_SEND = lambda s, m, k, v, l, i, ver, c: \