~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to lib/common/chat.py

  • Committer: dcoles
  • Date: 2008-08-04 08:15:42 UTC
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:trunk:977
Console: Work on making console more responsive to signals (rather than just 
dying we tell the user that their termal has been reset due to hitting the 
limit). At the moment we just catch SIGXCPU when the CPU time is up and tell 
chat to terminate the service with a 'restart - you've exceeded your limit' 
warning.

Show diffs side-by-side

added added

removed removed

Lines of Context:
27
27
import socket
28
28
import traceback
29
29
 
 
30
class Terminate(Exception):
 
31
    """Exception thrown when server is to be shut down. It will attempt to sned 
 
32
    the final_response to the client and then exits"""
 
33
    def __init__(self, final_response=None):
 
34
        self.final_response = final_response
 
35
 
 
36
    def __str__(self):
 
37
        return repr(self.final_response)
 
38
 
 
39
 
30
40
def start_server(port, magic, daemon_mode, handler, initializer = None):
31
41
    # Attempt to open the socket.
32
42
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
76
86
            conn.sendall(cjson.encode(response))
77
87
 
78
88
            conn.close()
 
89
 
 
90
        except Terminate, t:
 
91
            # Try and send final response and then terminate
 
92
            if t.final_response:
 
93
                conn.sendall(cjson.encode(t.final_response))
 
94
            conn.close()
 
95
            sys.exit(0)
79
96
        except Exception:
80
97
            # Make a JSON object full of exceptional goodness
81
98
            tb_dump = cStringIO.StringIO()