Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <mpg@redhat.com>2006-05-15 16:27:36 (GMT)
committer Marco Pesenti Gritti <mpg@redhat.com>2006-05-15 16:27:36 (GMT)
commite0a046cd5353cdeab2bee7bab37d8c7da8289153 (patch)
tree4dea59ff6ced3eb2a9448b69c8789ce11b838234
parent931c3625432121eff342b2c71d82643a9b30420d (diff)
Split the model classes in different files
-rw-r--r--configure.ac1
-rw-r--r--sugar/p2p/Makefile.am1
-rw-r--r--sugar/p2p/Model.py86
-rw-r--r--sugar/p2p/model/LocalModel.py52
-rw-r--r--sugar/p2p/model/Makefile.am6
-rw-r--r--sugar/p2p/model/RemoteModel.py17
-rw-r--r--sugar/p2p/model/Store.py22
7 files changed, 98 insertions, 87 deletions
diff --git a/configure.ac b/configure.ac
index 0828bda..e31440d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -22,5 +22,6 @@ sugar/__installed__.py
sugar/browser/Makefile
sugar/chat/Makefile
sugar/p2p/Makefile
+sugar/p2p/model/Makefile
sugar/shell/Makefile
])
diff --git a/sugar/p2p/Makefile.am b/sugar/p2p/Makefile.am
index 334e7b6..be34360 100644
--- a/sugar/p2p/Makefile.am
+++ b/sugar/p2p/Makefile.am
@@ -3,7 +3,6 @@ sugar_PYTHON = \
__init__.py \
Buddy.py \
Group.py \
- Model.py \
Service.py \
StreamReader.py \
StreamWriter.py \
diff --git a/sugar/p2p/Model.py b/sugar/p2p/Model.py
deleted file mode 100644
index 0148c74..0000000
--- a/sugar/p2p/Model.py
+++ /dev/null
@@ -1,86 +0,0 @@
-MODEL_SERVICE_TYPE = "_olpc_model._tcp"
-MODEL_SERVICE_PORT = 6300
-
-import socket
-import xmlrpclib
-
-from sugar.p2p.Service import Service
-import network
-
-class RemoteModel:
- def __init__(self, service):
- self._service = service
-
- addr = "http://%s:%d" % (service.get_address(), service.get_port())
- self._client = xmlrpclib.ServerProxy(addr)
-
- def get_value(self, key):
- return self._client.get_value(key)
-
- def set_value(self, key, value):
- self._client.set_value(key, value)
-
-class ModelRequestHandler(object):
- def __init__(self, model):
- self._model = model
-
- def get_value(self, key):
- return self._model.get_value(key)
-
- def set_value(self, key, value):
- return self._model.set_value(key, value)
-
-class LocalModel:
- def __init__(self, group, model_id):
- self._group = group
- self._model_id = model_id
- self._values = {}
-
- self._setup_service()
-
- def get_value(self, key):
- return self._values[key]
-
- def set_value(self, key, value):
- self._values[key] = value
-
- def _setup_service(self):
- service = Service(self._model_id, MODEL_SERVICE_TYPE,
- '', MODEL_SERVICE_PORT)
- self._setup_server(service)
- service.register(self._group)
-
- # FIXME this is duplicated with StreamReader
- def _setup_server(self, service):
- started = False
- tries = 10
- port = service.get_port()
- while not started and tries > 0:
- try:
- p2p_server = network.GlibXMLRPCServer(("", port))
- p2p_server.register_instance(ModelRequestHandler(self))
- started = True
- except(socket.error):
- port = port + 1
- tries = tries - 1
- service.set_port(port)
-
-class Store:
- def __init__(self, group):
- self._group = group
- self._local_models = {}
-
- def create_model(self, model_id):
- model = LocalModel(self._group, model_id)
- self._local_models[model_id] = model
- return model
-
- def get_model(self, model_id):
- if self._local_models.has_key(model_id):
- return self._local_models(model_id)
- else:
- service = self._group.get_service(model_id, MODEL_SERVICE_TYPE)
- if service:
- return RemoteModel(service)
- else:
- return None
diff --git a/sugar/p2p/model/LocalModel.py b/sugar/p2p/model/LocalModel.py
new file mode 100644
index 0000000..b268a5d
--- /dev/null
+++ b/sugar/p2p/model/LocalModel.py
@@ -0,0 +1,52 @@
+import socket
+import xmlrpclib
+
+from sugar.p2p.Service import Service
+
+MODEL_SERVICE_TYPE = "_olpc_model._tcp"
+MODEL_SERVICE_PORT = 6300
+
+class ModelRequestHandler(object):
+ def __init__(self, model):
+ self._model = model
+
+ def get_value(self, key):
+ return self._model.get_value(key)
+
+ def set_value(self, key, value):
+ return self._model.set_value(key, value)
+
+class LocalModel:
+ def __init__(self, group, model_id):
+ self._group = group
+ self._model_id = model_id
+ self._values = {}
+
+ self._setup_service()
+
+ def get_value(self, key):
+ return self._values[key]
+
+ def set_value(self, key, value):
+ self._values[key] = value
+
+ def _setup_service(self):
+ service = Service(self._model_id, MODEL_SERVICE_TYPE,
+ '', MODEL_SERVICE_PORT)
+ self._setup_server(service)
+ service.register(self._group)
+
+ # FIXME this is duplicated with StreamReader
+ def _setup_server(self, service):
+ started = False
+ tries = 10
+ port = service.get_port()
+ while not started and tries > 0:
+ try:
+ p2p_server = network.GlibXMLRPCServer(("", port))
+ p2p_server.register_instance(ModelRequestHandler(self))
+ started = True
+ except(socket.error):
+ port = port + 1
+ tries = tries - 1
+ service.set_port(port)
diff --git a/sugar/p2p/model/Makefile.am b/sugar/p2p/model/Makefile.am
new file mode 100644
index 0000000..c828a08
--- /dev/null
+++ b/sugar/p2p/model/Makefile.am
@@ -0,0 +1,6 @@
+sugardir = $(pythondir)/sugar/p2p/model
+sugar_PYTHON = \
+ __init__.py \
+ LocalModel.py \
+ RemoteModel.py \
+ Store.py
diff --git a/sugar/p2p/model/RemoteModel.py b/sugar/p2p/model/RemoteModel.py
new file mode 100644
index 0000000..4492fe9
--- /dev/null
+++ b/sugar/p2p/model/RemoteModel.py
@@ -0,0 +1,17 @@
+import xmlrpclib
+
+from sugar.p2p.Service import Service
+import network
+
+class RemoteModel:
+ def __init__(self, service):
+ self._service = service
+
+ addr = "http://%s:%d" % (service.get_address(), service.get_port())
+ self._client = xmlrpclib.ServerProxy(addr)
+
+ def get_value(self, key):
+ return self._client.get_value(key)
+
+ def set_value(self, key, value):
+ self._client.set_value(key, value)
diff --git a/sugar/p2p/model/Store.py b/sugar/p2p/model/Store.py
new file mode 100644
index 0000000..ae86dc1
--- /dev/null
+++ b/sugar/p2p/model/Store.py
@@ -0,0 +1,22 @@
+from sugar.p2p.model.RemoteModel import RemoteModel
+from sugar.p2p.model.LocalModel import LocalModel
+
+class Store:
+ def __init__(self, group):
+ self._group = group
+ self._local_models = {}
+
+ def create_model(self, model_id):
+ model = LocalModel(self._group, model_id)
+ self._local_models[model_id] = model
+ return model
+
+ def get_model(self, model_id):
+ if self._local_models.has_key(model_id):
+ return self._local_models(model_id)
+ else:
+ service = self._group.get_service(model_id, MODEL_SERVICE_TYPE)
+ if service:
+ return RemoteModel(service)
+ else:
+ return None