]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Initial revision
authorGuido van Rossum <guido@python.org>
Sun, 20 Dec 1992 18:14:23 +0000 (18:14 +0000)
committerGuido van Rossum <guido@python.org>
Sun, 20 Dec 1992 18:14:23 +0000 (18:14 +0000)
Demo/rpc/rnusersclient.py [new file with mode: 0644]

diff --git a/Demo/rpc/rnusersclient.py b/Demo/rpc/rnusersclient.py
new file mode 100644 (file)
index 0000000..ed81081
--- /dev/null
@@ -0,0 +1,81 @@
+# Remote nusers client interface
+
+import rpc
+from rpc import Packer, Unpacker, TCPClient, UDPClient
+
+
+class RnusersPacker(Packer):
+       def pack_utmp(self, ui):
+               ut_line, ut_name, ut_host, ut_time = utmp
+               self.pack_string(ut_line)
+               self.pack_string(ut_name)
+               self.pack_string(ut_host)
+               self.pack_int(ut_time)
+       def pack_utmpidle(self, ui):
+               ui_itmp, ui_idle = ui
+               self.pack_utmp(ui_utmp)
+               self.pack_uint(ui_idle)
+       def pack_utmpidlearr(self, list):
+               self.pack_array(list, self.pack_itmpidle)
+
+
+class RnusersUnpacker(Unpacker):
+       def unpack_utmp(self):
+               ut_line = self.unpack_string()
+               ut_name = self.unpack_string()
+               ut_host = self.unpack_string()
+               ut_time = self.unpack_int()
+               return ut_line, ut_name, ut_host, ut_time
+       def unpack_utmpidle(self):
+               ui_utmp = self.unpack_utmp()
+               ui_idle = self.unpack_uint()
+               return ui_utmp, ui_idle
+       def unpack_utmpidlearr(self):
+               return self.unpack_array(self.unpack_utmpidle)
+
+
+class RnusersClient(UDPClient):
+
+       def addpackers(self):
+               self.packer = RnusersPacker().init()
+               self.unpacker = RnusersUnpacker().init('')
+
+       def init(self, host):
+               return UDPClient.init(self, host, 100002, 2)
+
+       def Num(self):
+               self.start_call(1)
+               self.do_call()
+               n = self.unpacker.unpack_int()
+               self.end_call()
+               return n
+
+       def Names(self):
+               self.start_call(2)
+               self.do_call()
+               list = self.unpacker.unpack_utmpidlearr()
+               self.end_call()
+               return list
+
+       def Allnames(self):
+               self.start_call(3)
+               self.do_call()
+               list = self.unpacker.unpack_utmpidlearr()
+               self.end_call()
+               return list
+
+
+def test():
+       import sys
+       host = ''
+       if sys.argv[1:]: host = sys.argv[1]
+       c = RnusersClient().init(host)
+       list = c.Names()
+       def strip0(s):
+               while s and s[-1] == '\0': s = s[:-1]
+               return s
+       for (line, name, host, time), idle in list:
+               line = strip0(line)
+               name = strip0(name)
+               host = strip0(host)
+               print name, host, line, time, idle