diff options
author | cinap_lenrek <cinap_lenrek@localhost> | 2011-05-03 11:25:13 +0000 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@localhost> | 2011-05-03 11:25:13 +0000 |
commit | 458120dd40db6b4df55a4e96b650e16798ef06a0 (patch) | |
tree | 8f82685be24fef97e715c6f5ca4c68d34d5074ee /sys/lib/python/hgext/inotify/common.py | |
parent | 3a742c699f6806c1145aea5149bf15de15a0afd7 (diff) |
add hg and python
Diffstat (limited to 'sys/lib/python/hgext/inotify/common.py')
-rw-r--r-- | sys/lib/python/hgext/inotify/common.py | 51 |
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 |