summaryrefslogtreecommitdiff
path: root/sys/lib/python/hgext/inotify/common.py
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@localhost>2011-05-03 11:25:13 +0000
committercinap_lenrek <cinap_lenrek@localhost>2011-05-03 11:25:13 +0000
commit458120dd40db6b4df55a4e96b650e16798ef06a0 (patch)
tree8f82685be24fef97e715c6f5ca4c68d34d5074ee /sys/lib/python/hgext/inotify/common.py
parent3a742c699f6806c1145aea5149bf15de15a0afd7 (diff)
add hg and python
Diffstat (limited to 'sys/lib/python/hgext/inotify/common.py')
-rw-r--r--sys/lib/python/hgext/inotify/common.py51
1 files changed, 51 insertions, 0 deletions
diff --git a/sys/lib/python/hgext/inotify/common.py b/sys/lib/python/hgext/inotify/common.py
new file mode 100644
index 000000000..2b18b5f12
--- /dev/null
+++ b/sys/lib/python/hgext/inotify/common.py
@@ -0,0 +1,51 @@
+# server.py - inotify common protocol code
+#
+# Copyright 2006, 2007, 2008 Bryan O'Sullivan <bos@serpentine.com>
+# Copyright 2007, 2008 Brendan Cully <brendan@kublai.com>
+#
+# This software may be used and distributed according to the terms of the
+# GNU General Public License version 2, incorporated herein by reference.
+
+import cStringIO, socket, struct
+
+"""
+ Protocol between inotify clients and server:
+
+ Client sending query:
+ 1) send protocol version number
+ 2) send query type (string, 4 letters long)
+ 3) send query parameters:
+ - For STAT, N+1 \0-separated strings:
+ 1) N different names that need checking
+ 2) 1 string containing all the status types to match
+ - No parameter needed for DBUG
+
+ Server sending query answer:
+ 1) send protocol version number
+ 2) send query type
+ 3) send struct.pack'ed headers describing the length of the content:
+ e.g. for STAT, receive 8 integers describing the length of the
+ 8 \0-separated string lists ( one list for each lmar!?ic status type )
+
+"""
+
+version = 2
+
+resphdrfmts = {
+ 'STAT': '>llllllll', # status requests
+ 'DBUG': '>l' # debugging queries
+}
+resphdrsizes = dict((k, struct.calcsize(v))
+ for k, v in resphdrfmts.iteritems())
+
+def recvcs(sock):
+ cs = cStringIO.StringIO()
+ s = True
+ try:
+ while s:
+ s = sock.recv(65536)
+ cs.write(s)
+ finally:
+ sock.shutdown(socket.SHUT_RD)
+ cs.seek(0)
+ return cs