コード例 #1
0
ファイル: types.py プロジェクト: dtomasiewicz/Wombat
def unpack_nstr(socket, cfg):
  if 'nformat' in cfg:
    nfmt = cfg['nformat']
    enc = cfg['encoding'] if 'encoding' in cfg else 'UTF-8'
    l = sock_unpack(nfmt, socket)[0]
    return sock_unpack(str(l)+'s', socket)[0].decode(enc)
  else:
    raise Exception('<nstr> field must have a configured nformat')
コード例 #2
0
ファイル: types.py プロジェクト: dtomasiewicz/Wombat
def unpack_nlist(socket, cfg):
  if 'nformat' in cfg:
    lcfg = cfg.copy()
    lcfg['length'] = sock_unpack(cfg['nformat'], socket)[0]
    return unpack_list(socket, lcfg)
  else:
    raise Exception('<nlist> field must have a configured nformat')
コード例 #3
0
ファイル: types.py プロジェクト: dtomasiewicz/Wombat
def unpack_int(socket, cfg):
  fmt = 'I' if 'signed' in cfg and cfg['signed'] else 'i'
  return sock_unpack(fmt, socket)[0]
コード例 #4
0
ファイル: types.py プロジェクト: dtomasiewicz/Wombat
def unpack_str(socket, cfg):
  if 'length' in cfg:
    enc = cfg['encoding'] if 'encoding' in cfg else 'ASCII'
    return sock_unpack(str(cfg['length'])+'s', socket)[0].decode(enc)
  else:
    raise Exception('<bytes> field must have a configured length')
コード例 #5
0
ファイル: types.py プロジェクト: dtomasiewicz/Wombat
def unpack_bytes(socket, cfg):
  if 'length' in cfg:
    return sock_unpack(str(cfg['length'])+'s', socket)[0]
  else:
    raise Exception('<bytes> field must have a configured length')
コード例 #6
0
ファイル: types.py プロジェクト: dtomasiewicz/Wombat
def unpack_long(socket, cfg):
  fmt = 'Q' if 'signed' in cfg and cfg['signed'] else 'q'
  return sock_unpack(fmt, socket)[0]
コード例 #7
0
ファイル: types.py プロジェクト: dtomasiewicz/Wombat
def unpack_ipv4(socket, cfg):
  return inet_ntoa(sock_unpack('4s', socket)[0])
コード例 #8
0
ファイル: types.py プロジェクト: dtomasiewicz/Wombat
def unpack_short(socket, cfg):
  fmt = 'H' if 'signed' in cfg and cfg['signed'] else 'h'
  return sock_unpack(fmt, socket)[0]