Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit cdd04ca

Browse files
committed
Initial revision
1 parent 6252229 commit cdd04ca

1 file changed

Lines changed: 81 additions & 0 deletions

File tree

Demo/rpc/rnusersclient.py

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
# Remote nusers client interface
2+
3+
import rpc
4+
from rpc import Packer, Unpacker, TCPClient, UDPClient
5+
6+
7+
class RnusersPacker(Packer):
8+
def pack_utmp(self, ui):
9+
ut_line, ut_name, ut_host, ut_time = utmp
10+
self.pack_string(ut_line)
11+
self.pack_string(ut_name)
12+
self.pack_string(ut_host)
13+
self.pack_int(ut_time)
14+
def pack_utmpidle(self, ui):
15+
ui_itmp, ui_idle = ui
16+
self.pack_utmp(ui_utmp)
17+
self.pack_uint(ui_idle)
18+
def pack_utmpidlearr(self, list):
19+
self.pack_array(list, self.pack_itmpidle)
20+
21+
22+
class RnusersUnpacker(Unpacker):
23+
def unpack_utmp(self):
24+
ut_line = self.unpack_string()
25+
ut_name = self.unpack_string()
26+
ut_host = self.unpack_string()
27+
ut_time = self.unpack_int()
28+
return ut_line, ut_name, ut_host, ut_time
29+
def unpack_utmpidle(self):
30+
ui_utmp = self.unpack_utmp()
31+
ui_idle = self.unpack_uint()
32+
return ui_utmp, ui_idle
33+
def unpack_utmpidlearr(self):
34+
return self.unpack_array(self.unpack_utmpidle)
35+
36+
37+
class RnusersClient(UDPClient):
38+
39+
def addpackers(self):
40+
self.packer = RnusersPacker().init()
41+
self.unpacker = RnusersUnpacker().init('')
42+
43+
def init(self, host):
44+
return UDPClient.init(self, host, 100002, 2)
45+
46+
def Num(self):
47+
self.start_call(1)
48+
self.do_call()
49+
n = self.unpacker.unpack_int()
50+
self.end_call()
51+
return n
52+
53+
def Names(self):
54+
self.start_call(2)
55+
self.do_call()
56+
list = self.unpacker.unpack_utmpidlearr()
57+
self.end_call()
58+
return list
59+
60+
def Allnames(self):
61+
self.start_call(3)
62+
self.do_call()
63+
list = self.unpacker.unpack_utmpidlearr()
64+
self.end_call()
65+
return list
66+
67+
68+
def test():
69+
import sys
70+
host = ''
71+
if sys.argv[1:]: host = sys.argv[1]
72+
c = RnusersClient().init(host)
73+
list = c.Names()
74+
def strip0(s):
75+
while s and s[-1] == '\0': s = s[:-1]
76+
return s
77+
for (line, name, host, time), idle in list:
78+
line = strip0(line)
79+
name = strip0(name)
80+
host = strip0(host)
81+
print name, host, line, time, idle

0 commit comments

Comments
 (0)