mirror of https://git.48k.eu/ogclient
Modify Client state to use enum
During our connections, we are using states to control the Client Socket. We defined using global variables. In case that we modify this global variable, we need to change it in serveral parts of the code. Using enums and declaring a new class, we can redefine the values or create new states without changing the same code in differents python files.more_events
parent
29fe301ec8
commit
076e15bb29
9
main.py
9
main.py
|
@ -1,9 +1,6 @@
|
|||
from src.ogClient import *
|
||||
from src.ogConfig import *
|
||||
|
||||
CONNECTING = 0
|
||||
RECEIVING = 1
|
||||
|
||||
def main():
|
||||
ogconfig = ogConfig()
|
||||
if (not ogconfig.parserFile('cfg/ogagent.cfg')):
|
||||
|
@ -20,7 +17,7 @@ def main():
|
|||
sock = client.get_socket()
|
||||
state = client.get_state()
|
||||
|
||||
if state == CONNECTING:
|
||||
if state == State.CONNECTING:
|
||||
readset = [ sock ]
|
||||
writeset = [ sock ]
|
||||
else:
|
||||
|
@ -28,9 +25,9 @@ def main():
|
|||
writeset = [ ]
|
||||
|
||||
readable, writable, exception = select.select(readset, writeset, [ ])
|
||||
if state == CONNECTING and sock in writable:
|
||||
if state == State.CONNECTING and sock in writable:
|
||||
client.connect2()
|
||||
elif state == RECEIVING and sock in readable:
|
||||
elif state == State.RECEIVING and sock in readable:
|
||||
client.receive()
|
||||
else:
|
||||
print "bad state" + str(state)
|
||||
|
|
|
@ -5,9 +5,11 @@ import time
|
|||
import httplib
|
||||
from mimetools import Message
|
||||
from StringIO import StringIO
|
||||
from enum import Enum
|
||||
|
||||
CONNECTING = 0
|
||||
RECEIVING = 1
|
||||
class State(Enum):
|
||||
CONNECTING = 0
|
||||
RECEIVING = 1
|
||||
|
||||
class ogClient:
|
||||
def __init__(self, ip, port):
|
||||
|
@ -24,7 +26,7 @@ class ogClient:
|
|||
print "connecting"
|
||||
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
self.sock.setblocking(0)
|
||||
self.state = CONNECTING
|
||||
self.state = State.CONNECTING
|
||||
self.data = ""
|
||||
self.trailer = False
|
||||
self.content_len = 0
|
||||
|
@ -45,10 +47,10 @@ class ogClient:
|
|||
except socket.error, err:
|
||||
if err.errno == errno.EISCONN:
|
||||
print "connected"
|
||||
self.state = RECEIVING
|
||||
self.state = State.RECEIVING
|
||||
else:
|
||||
print "connection refused, retrying..."
|
||||
self.state = CONNECTING
|
||||
self.state = State.CONNECTING
|
||||
self.sock.close()
|
||||
self.connect()
|
||||
|
||||
|
@ -60,7 +62,7 @@ class ogClient:
|
|||
print "Error3 " + str(err)
|
||||
|
||||
if len(data) == 0:
|
||||
self.state = CONNECTING
|
||||
self.state = State.CONNECTING
|
||||
self.sock.close()
|
||||
self.connect()
|
||||
|
||||
|
|
Loading…
Reference in New Issue