Rev 9: Trivial support for listening on a TCP/IP port. in file:///home/jelmer/bzr/bzrsvnserve/

Jelmer Vernooij jelmer at samba.org
Mon Jan 22 13:13:34 GMT 2007


------------------------------------------------------------
revno: 9
revision-id: jelmer at samba.org-20070122131330-os8xa31ka1vyfjml
parent: jelmer at samba.org-20070122125840-sib4iysnuz238g2k
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: bzrsvnserve
timestamp: Mon 2007-01-22 14:13:30 +0100
message:
  Trivial support for listening on a TCP/IP port.
modified:
  __init__.py                    __init__.py-20061015145107-e1erl7tzb3zk831k-1
  svnserver.py                   svnserver.py-20061015150253-0jjovnw1ax00rjlb-1
  tests/test_server.py           test_server.py-20070122114402-zcwhr4cxc67jvakf-1
=== modified file '__init__.py'
--- a/__init__.py	2007-01-22 12:58:40 +0000
+++ b/__init__.py	2007-01-22 13:13:30 +0000
@@ -15,6 +15,7 @@
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
 from bzrlib.commands import Command, register_command, Option
+from bzrlib.trace import info
 import os
 import sys
 
@@ -41,7 +42,10 @@
             directory = os.getcwd()
 
         if inet:
-            server = SVNServer(directory, sys.stdin, sys.stdout)
+            def send_fn(data):
+                sys.stdout.write(data)
+                sys.stdout.flush()
+            server = SVNServer(directory, sys.stdin.read, send_fn)
             server.serve()
         else:
             if port is None:
@@ -49,7 +53,15 @@
             else:
                 port = int(port)
 
-            TCPServer(port)
+            import socket
+            server_sock = socket.socket()
+            server_sock.bind(('127.0.0.1', port))
+            server_sock.listen(1)
+            sock, client_addr = server_sock.accept()
+            server = SVNServer(directory, lambda: sock.recv(1024),
+                                          sock.send)
+            server.serve()
+
 
 register_command(cmd_svnserve)
 

=== modified file 'svnserver.py'
--- a/svnserver.py	2007-01-22 12:58:40 +0000
+++ b/svnserver.py	2007-01-22 13:13:30 +0000
@@ -22,10 +22,10 @@
 from marshall import marshall, unmarshall, literal
 
 class SVNServer:
-    def __init__(self, rootdir, instr, outstr):
+    def __init__(self, rootdir, recv_fn, send_fn):
         self.rootdir = rootdir
-        self.instr = instr
-        self.outstr = outstr
+        self.recv_fn = recv_fn
+        self.send_fn = send_fn
         self.inbuffer = ""
 
     def send_greeting(self):
@@ -107,12 +107,11 @@
         # FIXME: Blocking read?
         while True:
             try:
-                self.inbuffer += self.instr.read()
+                self.inbuffer += self.recv_fn()
                 (self.inbuffer, ret) = unmarshall(self.inbuffer)
                 return ret
             except IndexError:
                 pass
 
     def send_msg(self, data):
-        self.outstr.write(marshall(data))
-        self.outstr.flush()
+        self.send_fn(marshall(data))

=== modified file 'tests/test_server.py'
--- a/tests/test_server.py	2007-01-22 12:58:40 +0000
+++ b/tests/test_server.py	2007-01-22 13:13:30 +0000
@@ -28,7 +28,7 @@
         self.branch_path = os.path.join(self.test_dir, 'a')
         self.branch = Branch.initialize(self.branch_path)
         self.outstr = StringIO()
-        self.server = SVNServer(self.branch_path, None, self.outstr)
+        self.server = SVNServer(self.branch_path, None, self.outstr.send)
 
     def test_send_greeting(self):
         self.server.send_greeting()




More information about the bazaar-commits mailing list