RefactoringRope/JsonServer.py

Tue, 26 Sep 2017 19:05:18 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 26 Sep 2017 19:05:18 +0200
branch
server_client_variant
changeset 197
7046ac1bcb4b
parent 195
5d614a567be3
child 203
c38750e1bafd
permissions
-rw-r--r--

Continued implementing the distributed Code Assist.

163
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3 # Copyright (c) 2017 Detlev Offenbach <detlev@die-offenbachs.de>
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing the JSON based server base class.
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 from __future__ import unicode_literals
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 import json
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13
168
53d76b4fc1ac Implemented the distributed History dialog and moved the Undo/Redo functions to this dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 166
diff changeset
14 from PyQt5.QtCore import pyqtSlot, QProcess
163
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 from PyQt5.QtNetwork import QTcpServer, QHostAddress
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 from E5Gui import E5MessageBox
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 import Preferences
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 import Utilities
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 class JsonServer(QTcpServer):
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 """
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 Class implementing the JSON based server base class.
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 """
197
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
27 def __init__(self, name="", multiplex=False, parent=None):
163
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 """
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 Constructor
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30
197
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
31 @param name name of the server (used for output only)
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
32 @type str
192
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
33 @param multiplex flag indicating a multiplexing server
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
34 @type bool
163
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 @param parent parent object
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 @type QObject
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 """
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 super(JsonServer, self).__init__(parent)
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39
192
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
40 self.__multiplex = multiplex
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
41 if self.__multiplex:
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
42 self.__clientProcesses = {}
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
43 self.__connections = {}
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
44 else:
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
45 self.__clientProcess = None
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
46 self.__connection = None
163
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 # setup the network interface
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 networkInterface = Preferences.getDebugger("NetworkInterface")
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 if networkInterface == "all" or '.' in networkInterface:
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 # IPv4
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 self.__hostAddress = '127.0.0.1'
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 else:
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 # IPv6
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 self.__hostAddress = '::1'
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 self.listen(QHostAddress(self.__hostAddress))
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57
194
5c297b473425 Some more refactorings of the code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 192
diff changeset
58 self.newConnection.connect(self.handleNewConnection)
163
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 port = self.serverPort()
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 ## Note: Need the port if started external in debugger:
197
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
62 print('JSON server ({1}) listening on: {0:d}'.format(port, name))
163
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 # __IGNORE_WARNING__
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 @pyqtSlot()
194
5c297b473425 Some more refactorings of the code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 192
diff changeset
66 def handleNewConnection(self):
163
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 """
194
5c297b473425 Some more refactorings of the code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 192
diff changeset
68 Public slot for new incoming connections from a client.
163
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 """
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 connection = self.nextPendingConnection()
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 if not connection.isValid():
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 return
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73
192
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
74 if self.__multiplex:
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
75 if not connection.waitForReadyRead(3000):
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
76 return
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
77 idString = bytes(connection.readLine()).decode(
195
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 194
diff changeset
78 "utf-8", 'backslashreplace').strip()
192
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
79 if idString in self.__connections:
195
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 194
diff changeset
80 self.__connections[idString].close()
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 194
diff changeset
81 self.__connections[idString] = connection
192
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
82 else:
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
83 idString = ""
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
84 if self.__connection is not None:
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
85 self.__connection.close()
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
86
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
87 self.__connection = connection
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
88
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
89 connection.readyRead.connect(
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
90 lambda: self.__receiveJson(idString))
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
91 connection.disconnected.connect(
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
92 lambda: self.__handleDisconnect(idString))
163
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 @pyqtSlot()
192
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
95 def __handleDisconnect(self, idString):
163
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 """
192
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
97 Private slot handling a disconnect of the client.
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
98
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
99 @param idString id of the connection been disconnected
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
100 @type str
163
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 """
192
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
102 if idString:
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
103 if idString in self.__connections:
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
104 self.__connections[idString].close()
197
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
105 del self.__connections[idString]
192
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
106 else:
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
107 if self.__connection is not None:
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
108 self.__connection.close()
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
109
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
110 self.__connection = None
163
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111
195
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 194
diff changeset
112 def connectionNames(self):
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 194
diff changeset
113 """
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 194
diff changeset
114 Public method to get the list of active connection names.
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 194
diff changeset
115
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 194
diff changeset
116 If this is not a multiplexing server, an empty list is returned.
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 194
diff changeset
117
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 194
diff changeset
118 @return list of active connection names
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 194
diff changeset
119 @rtype list of str
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 194
diff changeset
120 """
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 194
diff changeset
121 return list(self.__connections.keys())
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 194
diff changeset
122
163
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 @pyqtSlot()
192
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
124 def __receiveJson(self, idString):
163
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 """
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 Private slot handling received data from the client.
192
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
127
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
128 @param idString id of the connection been disconnected
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
129 @type str
163
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 """
192
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
131 if idString:
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
132 connection = self.__connections[idString]
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
133 else:
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
134 connection = self.__connection
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
135
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
136 while connection and connection.canReadLine():
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
137 data = connection.readLine()
163
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 jsonLine = bytes(data).decode("utf-8", 'backslashreplace')
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139
166
6fc202183b3b Implemented the distributed 'query' methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
140 ## print("JSON Server: ", jsonLine) ##debug
163
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 try:
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 clientDict = json.loads(jsonLine.strip())
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 except (TypeError, ValueError) as err:
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 E5MessageBox.critical(
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 None,
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 self.tr("JSON Protocol Error"),
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 self.tr("""<p>The response received from the client"""
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 """ could not be decoded. Please report"""
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 """ this issue with the received data to the"""
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 """ eric bugs email address.</p>"""
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 """<p>Error: {0}</p>"""
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 """<p>Data:<br/>{0}</p>""").format(
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 str(err), Utilities.html_encode(jsonLine.strip())),
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 E5MessageBox.StandardButtons(
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 E5MessageBox.Ok))
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 return
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 method = clientDict["method"]
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 params = clientDict["params"]
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 self.handleCall(method, params)
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163
192
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
164 def sendJson(self, command, params, flush=False, idString=""):
163
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 """
192
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
166 Public method to send a single command to a client.
163
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 @param command command name to be sent
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 @type str
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 @param params dictionary of named parameters for the command
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 @type dict
168
53d76b4fc1ac Implemented the distributed History dialog and moved the Undo/Redo functions to this dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 166
diff changeset
172 @param flush flag indicating to flush the data to the socket
53d76b4fc1ac Implemented the distributed History dialog and moved the Undo/Redo functions to this dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 166
diff changeset
173 @type bool
192
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
174 @param idString id of the connection to send data to
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
175 @type str
163
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 """
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 commandDict = {
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 "jsonrpc": "2.0",
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 "method": command,
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 "params": params,
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 }
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 cmd = json.dumps(commandDict) + '\n'
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183
192
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
184 if idString:
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
185 connection = self.__connections[idString]
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
186 else:
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
187 connection = self.__connection
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
188
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
189 if connection is not None:
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
190 connection.write(cmd.encode('utf8', 'backslashreplace'))
168
53d76b4fc1ac Implemented the distributed History dialog and moved the Undo/Redo functions to this dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 166
diff changeset
191 if flush:
192
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
192 connection.flush()
163
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193
192
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
194 def startClient(self, interpreter, clientScript, clientArgs, idString=""):
163
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 """
192
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
196 Public method to start a client process.
163
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 @param interpreter interpreter to be used for the client
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 @type str
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 @param clientScript path to the client script
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 @type str
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 @param clientArgs list of arguments for the client
192
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
203 @param idString id of the client to be started
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
204 @type str
163
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 @return flag indicating a successful client start
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 @rtype bool
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 """
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 if interpreter == "" or not Utilities.isinpath(interpreter):
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 return False
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211 proc = QProcess()
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212 proc.setProcessChannelMode(QProcess.ForwardedChannels)
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
213 args = [clientScript, self.__hostAddress, str(self.serverPort())]
195
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 194
diff changeset
214 if idString:
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 194
diff changeset
215 args.append(idString)
163
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216 args.extend(clientArgs)
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 proc.start(interpreter, args)
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218 if not proc.waitForStarted(10000):
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 proc = None
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220
192
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
221 if idString:
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
222 self.__clientProcesses[idString] = proc
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
223 else:
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
224 self.__clientProcess = proc
163
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
225
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226 return proc is not None
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
227
192
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
228 def stopClient(self, idString=""):
163
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229 """
192
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
230 Public method to stop a client process.
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
231
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
232 @param idString id of the client to be stopped
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
233 @type str
163
6a9e7b37a18b Refactored some JSON handling code into server and client base classes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234 """
192
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
235 self.sendJson("Exit", {}, flush=True, idString=idString)
166
6fc202183b3b Implemented the distributed 'query' methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
236
192
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
237 if idString:
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
238 connection = self.__connections[idString]
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
239 else:
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
240 connection = self.__connection
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
241 if connection is not None:
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
242 connection.waitForDisconnected()
166
6fc202183b3b Implemented the distributed 'query' methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
243
192
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
244 if idString:
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
245 self .__clientProcesses[idString].close()
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
246 del self.__clientProcesses[idString]
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
247 else:
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
248 if self.__clientProcess is not None:
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
249 self.__clientProcess.close()
20950ed6b384 Extended the JsonServer to handle multiple clients simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
250 self.__clientProcess = None
194
5c297b473425 Some more refactorings of the code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 192
diff changeset
251
197
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
252 def stopAllClients(self):
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
253 """
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
254 Public method to stop all clients.
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
255 """
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
256 clientNames = self.connectionNames()[:]
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
257 for clientName in clientNames:
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
258 self.stopClient(clientName)
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
259
194
5c297b473425 Some more refactorings of the code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 192
diff changeset
260 #######################################################################
5c297b473425 Some more refactorings of the code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 192
diff changeset
261 ## The following methods should be overridden by derived classes
5c297b473425 Some more refactorings of the code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 192
diff changeset
262 #######################################################################
5c297b473425 Some more refactorings of the code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 192
diff changeset
263
5c297b473425 Some more refactorings of the code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 192
diff changeset
264 def handleCall(self, method, params):
5c297b473425 Some more refactorings of the code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 192
diff changeset
265 """
5c297b473425 Some more refactorings of the code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 192
diff changeset
266 Public method to handle a method call from the client.
5c297b473425 Some more refactorings of the code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 192
diff changeset
267
5c297b473425 Some more refactorings of the code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 192
diff changeset
268 Note: This is an empty implementation that must be overridden in
5c297b473425 Some more refactorings of the code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 192
diff changeset
269 derived classes.
5c297b473425 Some more refactorings of the code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 192
diff changeset
270
5c297b473425 Some more refactorings of the code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 192
diff changeset
271 @param method requested method name
5c297b473425 Some more refactorings of the code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 192
diff changeset
272 @type str
5c297b473425 Some more refactorings of the code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 192
diff changeset
273 @param params dictionary with method specific parameters
5c297b473425 Some more refactorings of the code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 192
diff changeset
274 @type dict
5c297b473425 Some more refactorings of the code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 192
diff changeset
275 """
5c297b473425 Some more refactorings of the code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 192
diff changeset
276 pass

eric ide

mercurial