The notifier should own the server not the listener!

This commit is contained in:
Marco Pesenti Gritti 2006-05-15 15:03:05 -04:00
parent 6b78600646
commit 27b89c5b24
5 changed files with 130 additions and 585 deletions

File diff suppressed because it is too large Load Diff

View File

@ -2,21 +2,13 @@ from Service import Service
import network
class NotificationListener:
TYPE = "_olpc_model_notification._udp"
ADDRESS = "224.0.0.222"
PORT = 6300
def __init__(self, group, name):
server = network.GroupServer(NotificationListener.TYPE,
NotificationListener.PORT,
service = group.get_service(name, Notifier.TYPE)
server = network.GroupServer(service.get_address(),
service.get_port(),
self._recv_multicast)
server.start()
service = Service(name, NotificationListener.TYPE,
NotificationListener.ADDRESS,
NotificationListener.PORT, True)
service.register(group)
self._listeners = {}
def add_listener(self, listener):

View File

@ -1,8 +1,17 @@
import network
from sugar.p2p.NotificationListener import NotificationListener
from sugar.p2p import network
class Notifier:
TYPE = "_olpc_model_notification._udp"
ADDRESS = "224.0.0.222"
PORT = 6300
def __init__(self, group, name):
service = group.get_service(name)
service = Service(name, NotificationListener.TYPE,
NotificationListener.ADDRESS,
NotificationListener.PORT, True)
service.register(group)
address = service.get_address()
port = service.get_port()
self._client = network.GroupClient(address, port)

View File

@ -1,6 +1,7 @@
import socket
from sugar.p2p.Service import Service
from sugar.p2p.Notifier import Notifier
from sugar.p2p.model.AbstractModel import AbstractModel
from sugar.p2p import network
@ -25,6 +26,7 @@ class LocalModel(AbstractModel):
self._values = {}
self._setup_service()
self._notifier = Notifier(group, model_id)
def get_value(self, key):
return self._values[key]
@ -32,6 +34,7 @@ class LocalModel(AbstractModel):
def set_value(self, key, value):
self._values[key] = value
self._notify_model_change(key)
self._notifier.notify(key)
def _setup_service(self):
service = Service(self._model_id, LocalModel.SERVICE_TYPE, '',

View File