Add serialize/deserialize functions for Service objects
This commit is contained in:
		
							parent
							
								
									afc587212e
								
							
						
					
					
						commit
						9f1c77a55a
					
				@ -1,6 +1,7 @@
 | 
			
		||||
import avahi
 | 
			
		||||
from sugar import util
 | 
			
		||||
import string
 | 
			
		||||
import dbus
 | 
			
		||||
 | 
			
		||||
def _txt_to_dict(txt):
 | 
			
		||||
	"""Convert an avahi-returned TXT record formatted
 | 
			
		||||
@ -56,6 +57,25 @@ def is_multicast_address(address):
 | 
			
		||||
		return True
 | 
			
		||||
	return False
 | 
			
		||||
 | 
			
		||||
def deserialize(sdict):
 | 
			
		||||
	try:
 | 
			
		||||
		name = sdict['name']
 | 
			
		||||
		full_stype = sdict['full_stype']
 | 
			
		||||
		activity_stype = sdict['activity_stype']
 | 
			
		||||
		domain = sdict['domain']
 | 
			
		||||
		port = sdict['port']
 | 
			
		||||
		properties = sdict['properties']
 | 
			
		||||
	except KeyError, exc:
 | 
			
		||||
		raise ValueError("Serialized service object was not valid.")
 | 
			
		||||
 | 
			
		||||
	address = None
 | 
			
		||||
	try:
 | 
			
		||||
		address = sdict['address']
 | 
			
		||||
	except KeyError:
 | 
			
		||||
		pass
 | 
			
		||||
	return Service(name, full_stype, domain, address=address,
 | 
			
		||||
		port=port, properties=properties)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
_ACTIVITY_UID_TAG = "ActivityUID"
 | 
			
		||||
 | 
			
		||||
@ -113,6 +133,18 @@ class Service(object):
 | 
			
		||||
		if uid and not self._properties.has_key(_ACTIVITY_UID_TAG):
 | 
			
		||||
			self._properties[_ACTIVITY_UID_TAG] = uid
 | 
			
		||||
 | 
			
		||||
	def serialize(self):
 | 
			
		||||
		sdict = {}
 | 
			
		||||
		sdict['name'] = dbus.Variant(self._name)
 | 
			
		||||
		sdict['full_stype'] = dbus.Variant(self._full_stype)
 | 
			
		||||
		sdict['activity_stype'] = dbus.Variant(self._activity_stype)
 | 
			
		||||
		sdict['domain'] = dbus.Variant(self._domain)
 | 
			
		||||
		if self._address:
 | 
			
		||||
			sdict['address'] = dbus.Variant(self._address)
 | 
			
		||||
		sdict['port'] = dbus.Variant(self._port)
 | 
			
		||||
		sdict['properties'] = dbus.Variant(self._properties)
 | 
			
		||||
		return sdict
 | 
			
		||||
 | 
			
		||||
	def get_name(self):
 | 
			
		||||
		"""Return the service's name, usually that of the
 | 
			
		||||
		buddy who provides it."""
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user