-import sys, socket
+import sys,time, socket
import pickle
from Util import *
MSGLEN = 1024
print pid
s = MySocket()
s.connect(SERVER_HOST, SERVER_PORT)
-
+ time.sleep(30)
response = s.send_command(STOP_MSG, pid)
print response
from Util import *
from Util import SERVER_HOST, SERVER_PORT
from BitTorrentClientRun import *
-
+from TransmissionRun import *
BUFFER_SIZE = 4096
states = {} # keeps track of what kind of message was previously receveid on a socket.
def start_bt_client(bt_client_data):
if bt_client_data[CLIENT] == TRANSMISSION:
- """btcr = BitTorrentClientRun("/usr/bin/transmissioncli",
- "$base_path --port $port $torrent_file $download_dir> $output_dir/$output_file",
- "TR_DEBUG=2 $base_path/cli/transmissioncli --port $port $torrent_file $download_dir 2> $log_dir/$log_file > $output_dir/$output_file")"""
-
- btcr = BitTorrentClientRun("/usr/bin/transmissioncli",
- "$base_path --port $port $torrent_file $download_dir",
- "TR_DEBUG=2 $base_path/cli/transmissioncli --port $port $torrent_file $download_dir 2> $log_dir/$log_file > $output_dir/$output_file")
-
+
+ btcr = TransmissionRun("/usr/bin/transmissioncli")
btcr.config_run(bt_client_data[DL_DIR], bt_client_data[LOG_DIR],
bt_client_data[OUT_FILE], bt_client_data[LOG_DIR],
bt_client_data[LOG_FILE], bt_client_data[PORT],
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 = TransmissionRun("/usr/bin/transmissioncli")
btcr.config_run("/home/adriana/p2p/p2p-dld/transmission",
"/home/adriana/p2p/p2p-log/transmission",
"scrubs.out", "/home/adriana/p2p/",
import shlex
from string import Template
-DEBUG = False
+DEBUG = True
class BitTorrentClientRun:
def __init__(self, base_path, simple_run_expr, logging_run_expr):
def config_run(self, download_dir, output_dir, output_file, log_dir, log_file, port, torrent_file):
self.download_dir = download_dir
self.output_dir = output_dir
- self.output_file = output_file
+ self.output_file = output_file # output from stdout
self.log_dir = log_dir
- self.log_file = log_file
+ self.log_file = log_file # output from stderr
self.port = port
self.torrent_file = torrent_file
print self.logging_run_command
def run_client(self, command):
- # os.system(command)
- #split command
+
+ # split command
args = shlex.split(command)
- print args
- p=subprocess.Popen(args, shell=False, stdout=subprocess.PIPE) #does not create sh process
+ if(DEBUG):
+ print "BitTorrentClientRun: command =", args
+
+ log_redirect = open(self.log_dir+"/"+self.log_file,"w")
+ output_redirect = open(self.output_dir+"/"+self.output_file,"w")
+ p=subprocess.Popen(args, shell=False, #does not create sh process
+ stdout=log_redirect,
+ stderr=output_redirect)
pid = p.pid
- print "pid =", pid
+ if(DEBUG):
+ print "BitTorrentClientRun: pid =", pid
return pid
-
- # todo citit din stdout si pun in output_dir/output_file. le voi primi ca ragumente la functia de run_client
- #output, errors = p.communicate()
+
def main():
class TransmissionRun(BitTorrentClientRun):
def __init__(self, base_path):
BitTorrentClientRun.__init__(self, base_path,
- "$base_path/cli/transmissioncli --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")
-
+ "$base_path --port $port $torrent_file $download_dir> $output_dir/$output_file",
+ "TR_DEBUG=2 $base_path --port $port $torrent_file $download_dir 2> $log_dir/$log_file > $output_dir/$output_file")
+ # for some versions of transmission the cmdline arguments are given differently:
+ """BitTorrentClientRun.__init__(self, base_path,
+ "$base_path --download-dir $download_dir --port $port $torrent_file > $output_dir/$output_file",
+ "TR_DEBUG=2 $base_path --download-dir $download_dir --port $port $torrent_file 2> $log_dir/$log_file > $output_dir/$output_file")
+ """
def main():