bt_comm: server and client stub send/recv msg
authorAdriana Draghici <adriana008@gmail.com>
Tue, 26 Jan 2010 11:11:09 +0000 (13:11 +0200)
committerAdriana Draghici <adriana008@gmail.com>
Tue, 26 Jan 2010 11:17:48 +0000 (13:17 +0200)
bt_comm/server/Client.py
bt_comm/server/Server.py

index 999fb2e..df47042 100644 (file)
@@ -1,8 +1,9 @@
 import sys, socket
 import pickle
-
+from Util import *
 MSGLEN = 1024
-
+HOST = "127.0.0.1"
+PORT = 10001
 
 class MySocket:
        def __init__(self, sock=None):
@@ -22,6 +23,18 @@ class MySocket:
                        if sent == 0:
                                raise RuntimeError,     "socket connection broken"
                        totalsent = totalsent + sent
+       
+       def send_command(self, msg_type, config_data):
+               self.send_msg(msg_type)
+               response = self.recv_msg()
+               if response == ACK_MSG:
+                       print "aici"
+                       
+                       self.send_dict(config_data)
+                       print "am trimis"
+                       response = self.recv_msg()
+               
+               return response
 
        def recv_msg(self):
                msg = ''
@@ -31,6 +44,7 @@ class MySocket:
                msg = msg + chunk
                print msg
                return msg
+
        # send a pickled dictionary
        def send_dict(self, data):
                dumped_data = pickle.dumps(data)        
@@ -39,14 +53,22 @@ class MySocket:
 if __name__ == "__main__":
 
        s = MySocket()
-       s.connect("127.0.0.1", 10005)
+       s.connect(HOST, PORT)
+       # test 1
        #s.send_msg("hello")
+       # test 2
+       #dd = {'a':1, 'b':2}
+       #s.send_dict(dd)
+       #s.recv_msg()
 
+       # test config
+       config_data = [{CLIENT:"tribler", FILE:"Tribler/Tools/cmdline.py",
+               RUN_TYPE:"script",
+               INTERPRETER:"python", PREFIX:"PYTHONPATH=.",SUFFIX:"",
+               UP_LIMIT_OPTION:"",DL_LIMIT_OPTION:"", PORT_OPTION:"-p",
+               LOG_DIR_OPTION:"-l",DL_DIR_OPTION:"-d"}]        
 
-       dd = {'a':1, 'b':2}
-       s.send_dict(dd)
-       s.recv_msg()
-
-
+       response = s.send_command(CONFIG_MSG, config_data)
+       print response
 
 
index f7348da..217e1b6 100644 (file)
@@ -3,9 +3,9 @@
 import sys, os, socket 
 import pickle
 from daemon import Daemon
+from Util import *
 
-
-PORT = 10005
+PORT = 10001
 HOST = "127.0.0.1"
 
 BUFFER_SIZE = 1024
@@ -38,48 +38,44 @@ def doServer():
 
        while(1):
                (clientsock, address) = serversocket.accept();
-               """ DRAFT
                if clientsock not in states:
                        states[clientsock] = WAITING_MSG_TYPE;
                
                if states[clientsock] == WAITING_MSG_TYPE:
+                       print states[clientsock]
                        msg = clientsock.recv(BUFFER_SIZE)
                        
-                       if msg == Util.CONFIGURE_MSG:
-                               states[clientsock] = WAITING_CONFIG_DATA;
-                               
-                       else if msg == Util.START_MSG:
-                               states[clientsock] = WAITING_START_DATA;
-
-                       else if msg == Util.STOP_MSG:
-                               states[clientsock] = WAITING_STOP_DATA;
-
-                       else if msg == Util.STATUS_MSG:
-                               states[clientsock] = WAITING_STATUS_DATA;
-                       
-                       else 
-                               clientsock.send("error: wrong message type " + msg)
+                       msg_types = {
+                               CONFIG_MSG: WAITING_CONFIG_DATA,
+                               START_MSG: WAITING_START_DATA,
+                               STOP_MSG: WAITING_STOP_DATA,
+                               STATUS_MSG: WAITING_STATUS_DATA
+                               }
+                       if msg not in  msg_types:
+                               clientsock.send(ERROR_MSG +"wrong message type " + msg)
+                       else:
+                               states[clientsock] = msg_types[msg]
+                               clientsock.send(ACK_MSG)
+               #else: 
+               print states[clientsock]
+               if states[clientsock] == WAITING_CONFIG_DATA:
+                       clients_data = recv_pickled_data(clientsock)
                
-               else: 
-                       if states[clientsock] == WAITING_CONFIG_DATA:
-                               config_data = recv_pickled_data(clientsock)
-                       
-                       if states[clientsock] == WAITING_START_DATA:
-                               config = recv_pickled_data(clientsock)
+               elif states[clientsock] == WAITING_START_DATA:
+                       config = recv_pickled_data(clientsock)
 
-                       if states[clientsock] == WAITING_STOP_DATA:
-                               config = recv_pickled_data(clientsock)
-                       
-                       if states[clientsock] == WAITING_STATUS_DATA:
-                               config = recv_pickled_data(clientsock)
-                       
-                       states[clientsock] = WAITING_MSG_TYPE
-               """
+               elif states[clientsock] == WAITING_STOP_DATA:
+                       config = recv_pickled_data(clientsock)
+               
+               elif states[clientsock] == WAITING_STATUS_DATA:
+                       config = recv_pickled_data(clientsock)
+               
+               states[clientsock] = WAITING_MSG_TYPE
+       
 
                # clientsock.recv(BUFFER_SIZE)
                # recv_pickled_data(clientsock)
-               clientsock.send("ACK")
-
+               clientsock.send(ACK_MSG)
        clientsock.close()