[svn] commit: r54 - in /experiments/graff-ccapi/python: ISC/CC/Message.py ISC/CC/__init__.py ISC/Util/Hexdump.py ISC/Util/__init__.py test.py
BIND 10 source code commits
bind10-changes at lists.isc.org
Mon Oct 5 17:16:35 UTC 2009
Author: mgraff
Date: Mon Oct 5 17:16:35 2009
New Revision: 54
Log:
checkpoint
Modified:
experiments/graff-ccapi/python/ISC/CC/Message.py
experiments/graff-ccapi/python/ISC/CC/__init__.py
experiments/graff-ccapi/python/ISC/Util/Hexdump.py
experiments/graff-ccapi/python/ISC/Util/__init__.py
experiments/graff-ccapi/python/test.py
Modified: experiments/graff-ccapi/python/ISC/CC/Message.py
==============================================================================
--- experiments/graff-ccapi/python/ISC/CC/Message.py (original)
+++ experiments/graff-ccapi/python/ISC/CC/Message.py Mon Oct 5 17:16:35 2009
@@ -18,85 +18,85 @@
class DecodeError(Exception): pass
-PROTOCOL_VERSION = 0x536b616e
+class Message:
+ PROTOCOL_VERSION = 0x536b616e
-_ITEM_DATA = 0x01
-_ITEM_HASH = 0x02
-_ITEM_LIST = 0x03
-_ITEM_NULL = 0x04
-_ITEM_MASK = 0x0f
+ _ITEM_DATA = 0x01
+ _ITEM_HASH = 0x02
+ _ITEM_LIST = 0x03
+ _ITEM_NULL = 0x04
+ _ITEM_MASK = 0x0f
-_ITEM_LENGTH_32 = 0x00
-_ITEM_LENGTH_16 = 0x10
-_ITEM_LENGTH_8 = 0x20
-_ITEM_LENGTH_MASK = 0x30
+ _ITEM_LENGTH_32 = 0x00
+ _ITEM_LENGTH_16 = 0x10
+ _ITEM_LENGTH_8 = 0x20
+ _ITEM_LENGTH_MASK = 0x30
-def to_wire(self, items):
- """Encode a dict into wire format"""
+ def to_wire(self, items):
+ """Encode a dict into wire format"""
- ret = []
- ret.append(struct.pack(">I", self.PROTOCOL_VERSION))
- ret.append(self.encode_hash(items))
- return (''.join(ret))
+ ret = []
+ ret.append(struct.pack(">I", self.PROTOCOL_VERSION))
+ ret.append(self._encode_hash(items))
+ return (''.join(ret))
-def _encode_tag(self, tag):
- """Encode a single tag. Private."""
+ def _encode_tag(self, tag):
+ """Encode a single tag. Private."""
- return(struct.pack(">B", len(tag)) + bytes(tag, 'ascii'))
+ return(struct.pack(">B", len(tag)) + tag)
-def _encode_length_and_type(self, data, datatype):
- if data == None:
- return(struct.pack(">B", self._ITEM_NULL))
- length = len(data)
- if length < 0x0000100:
- return(struct.pack(">B B", datatype | self._ITEM_LENGTH_8, length)
- + data)
- elif length < 0x00010000:
- return(struct.pack(">B H", datatype | self._ITEM_LENGTH_16, length)
- + data)
- else:
- return(struct.pack(">B I", datatype, length) + data)
+ def _encode_length_and_type(self, data, datatype):
+ if data == None:
+ return(struct.pack(">B", self._ITEM_NULL))
+ length = len(data)
+ if length < 0x0000100:
+ return(struct.pack(">B B", datatype | self._ITEM_LENGTH_8, length)
+ + data)
+ elif length < 0x00010000:
+ return(struct.pack(">B H", datatype | self._ITEM_LENGTH_16, length)
+ + data)
+ else:
+ return(struct.pack(">B I", datatype, length) + data)
-def _pack_string(self, item):
- return (self._encode_length_and_type(item, self._ITEM_DATA))
+ def _pack_string(self, item):
+ return (self._encode_length_and_type(item, self._ITEM_DATA))
-def _pack_array(self, item):
- return (self._encode_length_and_type(self._encode_array(item),
- self._ITEM_LIST))
+ def _pack_array(self, item):
+ return (self._encode_length_and_type(self._encode_array(item),
+ self._ITEM_LIST))
-def _pack_hash(self, item):
- data = self._encode_hash(item)
- return (self._encode_length_and_type(data, self._ITEM_HASH))
+ def _pack_hash(self, item):
+ data = self._encode_hash(item)
+ return (self._encode_length_and_type(data, self._ITEM_HASH))
-def _encode_string(self, item):
- return (item)
+ def _encode_string(self, item):
+ return (item)
-def _pack_nil(self):
- return self._encode_length_and_type(None, None)
+ def _pack_nil(self):
+ return self._encode_length_and_type(None, None)
-def _encode_item(self, item):
- if item == None:
- return (self._pack_nil())
- elif item.__class__ == dict:
- return (self._pack_hash(item))
- elif item.__class__ == list:
- return (self._pack_array(item))
- else:
- return (self._pack_string(str(item)))
+ def _encode_item(self, item):
+ if item == None:
+ return (self._pack_nil())
+ elif item.__class__ == dict:
+ return (self._pack_hash(item))
+ elif item.__class__ == list:
+ return (self._pack_array(item))
+ else:
+ return (self._pack_string(str(item)))
-def _encode_array(self, item):
- ret = []
- for i in item:
- ret.append(self._encode_item(i))
- return (''.join(ret))
+ def _encode_array(self, item):
+ ret = []
+ for i in item:
+ ret.append(self._encode_item(i))
+ return (''.join(ret))
-def _encode_hash(self, item):
- ret = []
- for key, value in item.items():
- ret.append(self._encode_tag(key))
- ret.append(self._encode_item(value))
- return (''.join(ret))
-
+ def _encode_hash(self, item):
+ ret = []
+ for key, value in item.items():
+ ret.append(self._encode_tag(key))
+ ret.append(self._encode_item(value))
+ return (''.join(ret))
if __name__ == "__main__":
import doctest
Modified: experiments/graff-ccapi/python/ISC/CC/__init__.py
==============================================================================
--- experiments/graff-ccapi/python/ISC/CC/__init__.py (original)
+++ experiments/graff-ccapi/python/ISC/CC/__init__.py Mon Oct 5 17:16:35 2009
@@ -1,1 +1,1 @@
-import Message
+from Message import *
Modified: experiments/graff-ccapi/python/ISC/Util/Hexdump.py
==============================================================================
--- experiments/graff-ccapi/python/ISC/Util/Hexdump.py (original)
+++ experiments/graff-ccapi/python/ISC/Util/Hexdump.py Mon Oct 5 17:16:35 2009
@@ -1,14 +1,13 @@
import sys
-class Hexdump:
- FILTER=''.join([(len(repr(chr(x)))==3) and chr(x) or '.' for x in range(256)])
+_FILTER=''.join([(len(repr(chr(x)))==3) and chr(x) or '.' for x in range(256)])
- def dump(src, length=16):
- result=[]
- for i in xrange(0, len(src), length):
- s = src[i:i+length]
- hexa = ' '.join(["%02X" % ord(x) for x in s])
- printable = s.translate(FILTER)
- item = "%08X %-*s %s\n" % (i, length * 3, hexa, printable)
- result.append(item[0:34] + ' ' + item[34:])
- print ''.join(result)
+def hexdump(src, length=16):
+ result=[]
+ for i in xrange(0, len(src), length):
+ s = src[i:i+length]
+ hexa = ' '.join(["%02X" % ord(x) for x in s])
+ printable = s.translate(_FILTER)
+ item = "%08X %-*s %s\n" % (i, length * 3, hexa, printable)
+ result.append(item[0:34] + ' ' + item[34:])
+ print ''.join(result)
Modified: experiments/graff-ccapi/python/ISC/Util/__init__.py
==============================================================================
--- experiments/graff-ccapi/python/ISC/Util/__init__.py (original)
+++ experiments/graff-ccapi/python/ISC/Util/__init__.py Mon Oct 5 17:16:35 2009
@@ -1,0 +1,1 @@
+from Hexdump import *
Modified: experiments/graff-ccapi/python/test.py
==============================================================================
--- experiments/graff-ccapi/python/test.py (original)
+++ experiments/graff-ccapi/python/test.py Mon Oct 5 17:16:35 2009
@@ -1,19 +1,10 @@
import ISC
cc = ISC.CC.Message()
-
-s = cc.encode_item("This is a test")
-ISC.Util.Hexdump.dump(s)
-
-s = cc.encode_item([1, 2, 3])
-ISC.Util.Hexdump.dump(s)
-
-s = cc.encode_item({ "a": "b" })
-ISC.Util.Hexdump.dump(s)
ss = { "list": [ 1, 2, 3 ],
"hash": { "hash1": 1, "hash2": 2 },
"none": None,
"string": "samplestring" }
s = cc.to_wire(ss)
-ISC.Util.Hexdump.dump(s)
+ISC.Util.hexdump(s)
More information about the bind10-changes
mailing list