summaryrefslogtreecommitdiff
path: root/py/test/Ice/application/Client.py
blob: 1bb86f5a9589fc2005ab74f277e888381d232c15 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/usr/bin/env python
# **********************************************************************
#
# Copyright (c) 2003-2007 ZeroC, Inc. All rights reserved.
#
# This copy of Ice is licensed to you under the terms described in the
# ICE_LICENSE file included in this distribution.
#
# **********************************************************************

import sys, Ice, time

class Client(Ice.Application):
    def interruptCallback(self, sig):
    	print "handling signal " + str(sig)

    # SIGINT interrupts time.sleep so a custom method is needed to
    # sleep for a given interval.
    def sleep(self, interval):
    	start = time.time()
    	while True:
    	    sleepTime = (start + interval) - time.time()
	    if sleepTime <= 0:
    	    	break
	    time.sleep(sleepTime)

    def run(self, args):
    	self.ignoreInterrupt()
	print "Ignore CTRL+C and the like for 5 seconds (try it!)"
	self.sleep(5)

    	self.callbackOnInterrupt()

    	self.holdInterrupt()
	print "Hold CTRL+C and the like for 5 seconds (try it!)"
	self.sleep(5)

	self.releaseInterrupt()
	print "Release CTRL+C (any held signals should be released)"
	self.sleep(5)

    	self.holdInterrupt()
	print "Hold CTRL+C and the like for 5 seconds (try it!)"
	self.sleep(5)

	self.callbackOnInterrupt()
	print "Release CTRL+C (any held signals should be released)"
	self.sleep(5)

	self.shutdownOnInterrupt()
	print "Test shutdown on destroy. Press CTRL+C to shutdown & terminate"
	self.communicator().waitForShutdown()

	print "ok"
        return False

app = Client()
sys.exit(app.main(sys.argv))