Server - draft
authorAdriana Draghici <adriana008@gmail.com>
Tue, 19 Jan 2010 14:53:18 +0000 (16:53 +0200)
committerAdriana Draghici <adriana008@gmail.com>
Tue, 19 Jan 2010 14:53:32 +0000 (16:53 +0200)
server/Server.py

index c45b810..b1a1f70 100644 (file)
@@ -5,12 +5,20 @@ import pickle
 from daemon import Daemon
 
 
-# TODO: transmitere dictionar
-# diferentiere pe tipuri de mesaje
-
+PORT = 10005
+HOST = "127.0.0.1"
 
 BUFFER_SIZE = 1024
 
+states = {} # keeps track of what kind of message was previously receveid on a socket.
+
+WAITING_MSG_TYPE = 0
+WAITING_CONFIG_DATA = 2
+WAITING_START_DATA = 3
+WAITING_STOP_DATA = 4
+WAITING_STATUS_DATA = 5
+
+
 def recv_pickled_data(clientsock):
 #      while chunk:            
 #              chunk = clientsock.recv(BUFFER_SIZE)
@@ -23,11 +31,43 @@ def recv_pickled_data(clientsock):
 def doServer():
        #os.spawnvp(os.P_NOWAIT,"/usr/bin/transmission",[])
        serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-       serversocket.bind(("127.0.0.1", 10005));
+       serversocket.bind((HOST, PORT));
        serversocket.listen(10) #max 10 requests
 
        while(1):
                (clientsock, address) = serversocket.accept();
+               
+               """ draft
+               if clientsock not in states:
+                       states[clientsock] = WAITING_MSG_TYPE;
+               
+               if states[clientsock] == WAITING_MSG_TYPE:
+                       msg = clientsock.recv(BUFFER_SIZE)
+                       
+                       if msg == Util.CONFIGURE_MSG:
+                               states[clientsock] = WAITING_CONFIG_DATA;
+                               
+                       else if msg == Util.START_MSG:
+                               states[clientsock] = WAITING_CONFIG_DATA;
+
+                       else if msg == Util.STOP_MSG:
+                               states[clientsock] = WAITING_CONFIG_DATA;
+
+                       else if msg == Util.STATUS_MSG:
+                               states[clientsock] = WAITING_CONFIG_DATA;
+                       
+                       else 
+                               clientsock.send("error: wrong message type " + msg)
+               
+               else: 
+                       if states[clientsock] == WAITING_CONFIG_DATA:
+                               config = recv_pickled_data(clientsock)
+                       
+
+                       states[clientsock] = WAITING_MSG_TYPE
+               """
+
+
                #clientsock.recv(BUFFER_SIZE)
                recv_pickled_data(clientsock)
                clientsock.send("ACK")