import signal
from daemon import Daemon
from Util import *
+from Util import SERVER_HOST, SERVER_PORT
from BitTorrentClientRun import *
-PORT = 10005
-HOST = "127.0.0.1"
BUFFER_SIZE = 4096
states = {} # keeps track of what kind of message was previously receveid on a socket.
WAITING_STOP_DATA = 4
WAITING_STATUS_DATA = 5
-
+DEBUG = True
def recv_pickled_data(clientsock):
# while chunk:
dd = pickle.loads(data)
return dd
-#TODO
def start_bt_client(bt_client_data):
btcr.start()
pid = btcr.run_client(btcr.simple_run_command)
- #stop_bt_client(pid)
+ if(DEBUG):
+ print "Server: started client with pid = ", pid
return pid
- return -1
- """Simple test
-
- btcr = BitTorrentClientRun("/usr/bin/transmissioncli",
- "$base_path --download-dir $download_dir --port $port $torrent_file > $output_dir/$output_file",
- "TR_DEBUG=2 $base_path/cli/transmissioncli --download-dir $download_dir --port $port $torrent_file 2> $log_dir/$log_file > $output_dir/$output_file")
-
- btcr.config_run("/home/adriana/p2p/p2p-dld/transmission",
- "/home/adriana/p2p/p2p-log/transmission",
- "scrubs.out", "/home/adriana/p2p/",
- "transmission-scrubs.log", 10150,
- "/home/adriana/p2p/p2p-meta/scrubs.torrent")
-
- btcr.start()
- btcr.run_client(btcr.simple_run_command)
- """
+
+ return -1
+ """Simple test
+
+ btcr = BitTorrentClientRun("/usr/bin/transmissioncli",
+ "$base_path --download-dir $download_dir --port $port $torrent_file > $output_dir/$output_file",
+ "TR_DEBUG=2 $base_path/cli/transmissioncli --download-dir $download_dir --port $port $torrent_file 2> $log_dir/$log_file > $output_dir/$output_file")
+
+ btcr.config_run("/home/adriana/p2p/p2p-dld/transmission",
+ "/home/adriana/p2p/p2p-log/transmission",
+ "scrubs.out", "/home/adriana/p2p/",
+ "transmission-scrubs.log", 10150,
+ "/home/adriana/p2p/p2p-meta/scrubs.torrent")
+
+ btcr.start()
+ btcr.run_client(btcr.simple_run_command)
+ """
def stop_bt_client(pid):
- print "la kill pid=", pid
os.kill(int(pid), signal.SIGKILL) # kill generates zombies
os.wait()
- print "killed ", pid
+ if(DEBUG):
+ print "Server: killed process with pid = ", pid
def doServer():
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- print HOST
- print PORT
- serversocket.bind((HOST, PORT));
+ if(DEBUG):
+ print "Server: host ip = %s, port = %d"%(SERVER_HOST,SERVER_PORT)
+ serversocket.bind((SERVER_HOST, SERVER_PORT));
serversocket.listen(10) #max 10 requests
clientsocks = []
while(1):
- print >> sys.stderr, "inainte de accept"
+ if(DEBUG):
+ print "Server: accepting connections"
(clientsock, address) = serversocket.accept();
- print >>sys.stderr, "aici"
+ if(DEBUG):
+ print "Server: accepted connection from ", address
+
if clientsock not in states:
states[clientsock] = WAITING_MSG_TYPE;
if states[clientsock] == WAITING_MSG_TYPE:
print states[clientsock]
msg = clientsock.recv(BUFFER_SIZE)
- print >>sys.stderr, "Server: Received:\n", msg
- print >>sys.stderr, "******** END MESSAGE ********"
+ if(DEBUG):
+ print "Server: received message:\n", msg
msg_types = {
START_MSG: WAITING_START_DATA,
STOP_MSG: WAITING_STOP_DATA,
if states[clientsock] == WAITING_START_DATA:
bt_client_data = recv_pickled_data(clientsock)
+ if(DEBUG):
+ print "Server: received message:\n", msg
client_pid = start_bt_client(bt_client_data)
clientsock.send(ACK_MSG +" "+ str(client_pid))
elif states[clientsock] == WAITING_STOP_DATA:
- print >>sys.stderr,"la WAITING_STOP_DATA"
client_pid = recv_pickled_data(clientsock)
+ if(DEBUG):
+ print "Server: received message:\n", msg
stop_bt_client(client_pid)
clientsock.send(ACK_MSG)
# clientsock.recv(BUFFER_SIZE)
# recv_pickled_data(clientsock)
clientsock.close()
- #clientsocks.append(clientsock)
- #for i in range(0, len(clientsocks)):
- # clientsocks[i].close()
if __name__ == "__main__":
doServer()