diff options
Diffstat (limited to 'sugar/simulator.py')
-rw-r--r-- | sugar/simulator.py | 226 |
1 files changed, 113 insertions, 113 deletions
diff --git a/sugar/simulator.py b/sugar/simulator.py index 7a2d24f..c97f364 100644 --- a/sugar/simulator.py +++ b/sugar/simulator.py @@ -33,151 +33,151 @@ _PRESENCE_SERVICE_TYPE = "_presence_olpc._tcp" _activity_refs = {} class _NameCollection(object): - def __init__(self): - self._names = copy.copy(_nick_names) + def __init__(self): + self._names = copy.copy(_nick_names) - def get_name(self): - i = random.randint(0, len(self._names)) - return self._names.pop(i) + def get_name(self): + i = random.randint(0, len(self._names)) + return self._names.pop(i) class _BotService(object): - def __init__(self, bot): - self._bot = bot - - def announce(self): - props = { 'color': self._bot.color.to_string() } - pservice = PresenceService.get_instance() - self._service = pservice.register_service(self._bot.name, - _PRESENCE_SERVICE_TYPE, properties=props) - - self._stream = Stream.Stream.new_from_service(self._service) - self._stream.register_reader_handler( - self._handle_buddy_icon_request, "get_buddy_icon") - self._stream.register_reader_handler( - self._handle_invite, "invite") - - def _handle_buddy_icon_request(self): - if self._bot.icon: - fd = open(self._bot.icon, "r") - icon_data = fd.read() - fd.close() - if icon_data: - return base64.b64encode(self._icon) - return '' - - def _handle_invite(self, issuer, bundle_id, activity_id): - return '' - - def set_current_activity(self, activity_id): - self._service.set_published_value('curact', dbus.String(activity_id)) + def __init__(self, bot): + self._bot = bot + + def announce(self): + props = { 'color': self._bot.color.to_string() } + pservice = PresenceService.get_instance() + self._service = pservice.register_service(self._bot.name, + _PRESENCE_SERVICE_TYPE, properties=props) + + self._stream = Stream.Stream.new_from_service(self._service) + self._stream.register_reader_handler( + self._handle_buddy_icon_request, "get_buddy_icon") + self._stream.register_reader_handler( + self._handle_invite, "invite") + + def _handle_buddy_icon_request(self): + if self._bot.icon: + fd = open(self._bot.icon, "r") + icon_data = fd.read() + fd.close() + if icon_data: + return base64.b64encode(self._icon) + return '' + + def _handle_invite(self, issuer, bundle_id, activity_id): + return '' + + def set_current_activity(self, activity_id): + self._service.set_published_value('curact', dbus.String(activity_id)) class _JoinActivityAction(object): - def __init__(self, bot, named_ref): - self._bot = bot - self._named_ref = named_ref + def __init__(self, bot, named_ref): + self._bot = bot + self._named_ref = named_ref - def execute(self): - activity_id = _activity_refs[self._named_ref] + def execute(self): + activity_id = _activity_refs[self._named_ref] - pservice = PresenceService.get_instance() - activity = pservice.get_activity(activity_id) - service = activity.get_services()[0] + pservice = PresenceService.get_instance() + activity = pservice.get_activity(activity_id) + service = activity.get_services()[0] - name = "%s [%s]" % (self._bot.name, activity_id) - properties = { 'title' : service.get_published_value('title'), - 'color' : service.get_published_value('color') } + name = "%s [%s]" % (self._bot.name, activity_id) + properties = { 'title' : service.get_published_value('title'), + 'color' : service.get_published_value('color') } - pservice.register_service(name, service.get_type(), - properties, service.get_address(), - service.get_port()) + pservice.register_service(name, service.get_type(), + properties, service.get_address(), + service.get_port()) - self._bot._service.set_current_activity(activity_id) + self._bot._service.set_current_activity(activity_id) class _ChangeActivityAction(object): - def __init__(self, bot, named_ref): - self._bot = bot - self._named_ref = named_ref + def __init__(self, bot, named_ref): + self._bot = bot + self._named_ref = named_ref - def execute(self): - activity_id = _activity_refs[self._named_ref] - self._bot._service.set_current_activity(activity_id) + def execute(self): + activity_id = _activity_refs[self._named_ref] + self._bot._service.set_current_activity(activity_id) class _ShareChatAction(object): - def __init__(self, bot, named_ref, title): - self._bot = bot - self._title = title - self._id = util.unique_id() + def __init__(self, bot, named_ref, title): + self._bot = bot + self._title = title + self._id = util.unique_id() - _activity_refs[named_ref] = self._id + _activity_refs[named_ref] = self._id - def execute(self): - name = "%s [%s]" % (self._bot.name, self._id) - stype = '_GroupChatActivity_Sugar_redhat_com._udp' - properties = { 'title' : self._title, - 'color' : self._bot.color.to_string() } - address = u"232.%d.%d.%d" % (random.randint(0, 254), - random.randint(1, 254), - random.randint(1, 254)) + def execute(self): + name = "%s [%s]" % (self._bot.name, self._id) + stype = '_GroupChatActivity_Sugar_redhat_com._udp' + properties = { 'title' : self._title, + 'color' : self._bot.color.to_string() } + address = u"232.%d.%d.%d" % (random.randint(0, 254), + random.randint(1, 254), + random.randint(1, 254)) - pservice = PresenceService.get_instance() - pservice.register_service(name, stype, properties, address) + pservice = PresenceService.get_instance() + pservice.register_service(name, stype, properties, address) class _WaitAction(object): - def __init__(self, bot, seconds): - self._bot = bot - self._seconds = seconds - - def execute(self): - self._bot._pause_queue(self._seconds) + def __init__(self, bot, seconds): + self._bot = bot + self._seconds = seconds + + def execute(self): + self._bot._pause_queue(self._seconds) class Bot(object): - _name_collection = _NameCollection() + _name_collection = _NameCollection() - def __init__(self): - self.name = Bot._name_collection.get_name() - self.color = IconColor() - self.icon = None + def __init__(self): + self.name = Bot._name_collection.get_name() + self.color = IconColor() + self.icon = None - self._queue = [] + self._queue = [] - def wait(self, seconds): - action = _WaitAction(self, seconds) - self._queue.append(action) + def wait(self, seconds): + action = _WaitAction(self, seconds) + self._queue.append(action) - def share_chat(self, activity_id, title): - action = _ShareChatAction(self, activity_id, title) - self._queue.append(action) + def share_chat(self, activity_id, title): + action = _ShareChatAction(self, activity_id, title) + self._queue.append(action) - def change_activity(self, activity_id): - action = _ChangeActivityAction(self, activity_id) - self._queue.append(action) + def change_activity(self, activity_id): + action = _ChangeActivityAction(self, activity_id) + self._queue.append(action) - def join_activity(self, activity_id): - action = _JoinActivityAction(self, activity_id) - self._queue.append(action) + def join_activity(self, activity_id): + action = _JoinActivityAction(self, activity_id) + self._queue.append(action) - def start(self): - self._service = _BotService(self) - self._service.announce() + def start(self): + self._service = _BotService(self) + self._service.announce() - self._start_queue() + self._start_queue() - def _idle_cb(self): - self._next_action() - return True + def _idle_cb(self): + self._next_action() + return True - def _pause_done_cb(self): - self._start_queue() - return False + def _pause_done_cb(self): + self._start_queue() + return False - def _start_queue(self): - self._queue_sid = gobject.idle_add(self._idle_cb) + def _start_queue(self): + self._queue_sid = gobject.idle_add(self._idle_cb) - def _pause_queue(self, seconds): - gobject.source_remove(self._queue_sid) - gobject.timeout_add(int(seconds * 1000), self._pause_done_cb) + def _pause_queue(self, seconds): + gobject.source_remove(self._queue_sid) + gobject.timeout_add(int(seconds * 1000), self._pause_done_cb) - def _next_action(self): - if len(self._queue) > 0: - action = self._queue.pop(0) - action.execute() + def _next_action(self): + if len(self._queue) > 0: + action = self._queue.pop(0) + action.execute() |