source: remote_control/puzzlebox_brainstorms_network_client.py @ 74

Last change on this file since 74 was 74, checked in by sc, 11 years ago

brainstorms:

  • continued file and class renaming in response to conversions

from PyGame/Twisted? frameworks to Qt

network_client:

  • initial checkin of Qt based Brainstorms client

network_client_thinkgear:

File size: 5.8 KB
Line 
1#!/usr/bin/env python
2# -*- coding: utf-8 -*-
3#
4# Puzzlebox - Brainstorms - Network - Client
5#
6# Copyright Puzzlebox Productions, LLC (2010)
7#
8# This code is released under the GNU Pulic License (GPL) version 2
9# For more information please refer to http://www.gnu.org/copyleft/gpl.html
10#
11# Last Update: 2010.06.28
12#
13#####################################################################
14
15import os, sys
16
17from PyQt4 import QtCore, QtGui, QtNetwork
18
19import simplejson as json
20
21import puzzlebox_brainstorms_configuration as configuration
22#import puzzlebox_logger
23
24#####################################################################
25# Globals
26#####################################################################
27
28DEBUG = 1
29
30SERVER_HOST = configuration.BRAINSTORMS_SERVER_HOST
31SERVER_PORT = configuration.BRAINSTORMS_SERVER_PORT
32
33DELIMITER = configuration.BRAINSTORMS_DELIMITER
34
35#####################################################################
36# Classes
37#####################################################################
38
39class puzzlebox_brainstorms_network_client:
40       
41        def __init__(self, log, \
42                          server_host=SERVER_HOST, \
43                          server_port=SERVER_PORT, \
44                          DEBUG=DEBUG, \
45                          parent=None):
46               
47                self.log = log
48                self.DEBUG = DEBUG
49                self.parent=parent
50               
51                self.server_host = server_host
52                self.server_port = server_port
53               
54                self.configureNetwork()
55       
56       
57        ##################################################################
58       
59        def configureNetwork(self):
60       
61                #self.blockSize = 0
62                self.socket = QtNetwork.QTcpSocket()
63                self.socket.name = 'Puzzlebox Brainstorms Client'
64               
65                self.socket.readyRead.connect(self.printReply)
66                self.socket.error.connect(self.displayError)
67       
68       
69        ##################################################################
70       
71        def printReply(self, reply=None):
72               
73                socket_buffer = self.socket.readAll()
74               
75                for packet in socket_buffer.split(DELIMITER):
76                       
77                        if packet != '':
78                               
79                                try:
80                                        data = json.loads(packet.data())
81                                except:
82                                        data = packet
83                               
84                                if self.DEBUG:
85                                        print "<-- [%s] Received:" % self.socket.name,
86                                        print data
87       
88       
89        ##################################################################
90       
91        def displayError(self, socketError):
92               
93                if self.DEBUG:
94                        if (socketError != QtNetwork.QAbstractSocket.RemoteHostClosedError):
95                                print "ERROR [%s]:" % self.socket.name,
96                                print self.socket.errorString()
97               
98               
99                if (self.parent != None):
100               
101                        if socketError == QtNetwork.QAbstractSocket.RemoteHostClosedError:
102                                pass
103                       
104                        elif socketError == QtNetwork.QAbstractSocket.HostNotFoundError:
105                                QtGui.QMessageBox.information(self.parent, \
106                                                                   self.socket.name, \
107                                           "The server host was not found. Please check the host name and "
108                                           "port settings.")
109                       
110                        elif socketError == QtNetwork.QAbstractSocket.ConnectionRefusedError:
111                                QtGui.QMessageBox.information(self.parent, \
112                                                                   self.socket.name,
113                                           "The server connection was refused by the peer. Make sure the "
114                                           "server is running, and check that the host name "
115                                           "and port settings are correct.")
116                       
117                        else:
118                                QtGui.QMessageBox.information(self.parent, \
119                                                                   self.socket.name, \
120                                           "The following error occurred: %s." % \
121                                           self.socket.errorString())
122       
123       
124        ##################################################################
125       
126        def sendCommand(self, command):
127               
128                if self.DEBUG:
129                        print "--> [%s] Sending:" % self.socket.name,
130                        print command
131               
132                self.socket.abort()
133                self.socket.connectToHost(self.server_host, self.server_port)
134               
135                data = json.dumps(command)
136               
137                if self.socket.waitForConnected(3000):
138                        self.socket.write(data)
139
140
141#####################################################################
142# Command line class
143#####################################################################
144
145#class puzzlebox_brainstorms_network_client_command_line(puzzlebox_brainstorms_client):
146       
147        #def __init__(self, log, \
148                          #command_parameters, \
149                          #server_host=SERVER_HOST, \
150                          #server_port=SERVER_PORT, \
151                          #DEBUG=DEBUG):
152               
153                #self.log = log
154                #self.DEBUG=DEBUG
155               
156                #self.command_parameters = command_parameters
157                #self.server_host = server_host
158                #self.server_port = server_port
159                #self.max_connection_attempts = MAX_CONNECTION_ATTEMPTS
160       
161       
162        ###################################################################
163       
164        #def execute_command_line(self):
165               
166                #(command) = self.parse_command_line(self.command_parameters)
167               
168                #d = self.send_command(command)
169                #d.addCallback(self.print_response_and_stop)
170       
171       
172        ###################################################################
173       
174        #def print_response_and_stop(self, response):
175               
176                #if self.DEBUG:
177                        #print "---> [Client] Server Response:",
178                        #print response
179               
180                #try:
181                        #reactor.stop()
182                #except:
183                        #print "ERROR: Can't stop reactor that isn't running."
184       
185       
186        ###################################################################
187       
188        #def parse_command_line(self, command_parameters):
189               
190                #try:
191                        #command = command_parameters[0]
192                #except:
193                        #command = None
194               
195               
196                #return(command)
197
198
199#####################################################################
200# Main
201#####################################################################
202
203if __name__ == '__main__':
204       
205        #log = puzzlebox_logger.puzzlebox_logger(logfile='client')
206        log = None
207       
208        command_parameters = sys.argv[1:]
209       
210        #log.info("Command parameters: %s" % command_parameters)
211       
212        #client = puzzlebox_brainstorms_client_twisted_command_line(log, \
213                                                           #command_parameters, \
214                                                           #server_host=SERVER_HOST, \
215                                                           #server_port=SERVER_PORT, \
216                                                           #DEBUG=DEBUG)
217       
218        #reactor.callWhenRunning(client.execute_command_line)
219        #reactor.run()
220
Note: See TracBrowser for help on using the repository browser.