Add object "htb" (hashtable) in protocol, rename object code "lis" to "inl" (infolist)
This commit is contained in:
		
							parent
							
								
									93865c21ce
								
							
						
					
					
						commit
						c738936b1e
					
				
					 1 changed files with 24 additions and 11 deletions
				
			
		|  | @ -64,7 +64,7 @@ class WeechatObject: | |||
| 
 | ||||
|     def __str__(self): | ||||
|         self._obj_cb = {'hda': self._str_value_hdata, | ||||
|                         'lis': self._str_value_infolist, | ||||
|                         'inl': self._str_value_infolist, | ||||
|                         } | ||||
|         return '%s: %s' % (self.objtype, self._obj_cb.get(self.objtype, self._str_value_other)()) | ||||
| 
 | ||||
|  | @ -104,11 +104,21 @@ class Protocol: | |||
|                         'buf': self._obj_buffer, | ||||
|                         'ptr': self._obj_ptr, | ||||
|                         'tim': self._obj_time, | ||||
|                         'htb': self._obj_hashtable, | ||||
|                         'hda': self._obj_hdata, | ||||
|                         'inf': self._obj_info, | ||||
|                         'lis': self._obj_infolist, | ||||
|                         'inl': self._obj_infolist, | ||||
|                         } | ||||
| 
 | ||||
|     def _obj_type(self): | ||||
|         """Read type in data (3 chars).""" | ||||
|         if len(self.data) < 3: | ||||
|             self.data = '' | ||||
|             return '' | ||||
|         objtype = str(self.data[0:3]) | ||||
|         self.data = self.data[3:] | ||||
|         return objtype | ||||
| 
 | ||||
|     def _obj_len_data(self, length_size): | ||||
|         """Read length (1 or 4 bytes), then value with this length.""" | ||||
|         if len(self.data) < length_size: | ||||
|  | @ -177,6 +187,18 @@ class Protocol: | |||
|             return None | ||||
|         return str(value) | ||||
| 
 | ||||
|     def _obj_hashtable(self): | ||||
|         """Read a hashtable in data (type for keys + type for values + count + items).""" | ||||
|         type_keys = self._obj_type() | ||||
|         type_values = self._obj_type() | ||||
|         count = self._obj_int() | ||||
|         hashtable = {} | ||||
|         for i in xrange(0, count): | ||||
|             key = self._obj_cb[type_keys]() | ||||
|             value = self._obj_cb[type_values]() | ||||
|             hashtable[key] = value | ||||
|         return hashtable | ||||
| 
 | ||||
|     def _obj_hdata(self): | ||||
|         """Read a hdata in data.""" | ||||
|         path = self._obj_str() | ||||
|  | @ -228,15 +250,6 @@ class Protocol: | |||
|             items.append(variables) | ||||
|         return {'name': name, 'items': items} | ||||
| 
 | ||||
|     def _obj_type(self): | ||||
|         """Read type in data (3 chars).""" | ||||
|         if len(self.data) < 3: | ||||
|             self.data = '' | ||||
|             return '' | ||||
|         objtype = str(self.data[0:3]) | ||||
|         self.data = self.data[3:] | ||||
|         return objtype | ||||
| 
 | ||||
|     def decode(self, data): | ||||
|         """Decode binary data and return list of objects.""" | ||||
|         self.data = data | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Sebastien Helleu
						Sebastien Helleu