autorun: changes for server GET_OUTPUT response
authorAdriana Draghici <adriana008@gmail.com>
Thu, 22 Apr 2010 12:58:57 +0000 (12:58 +0000)
committerAdriana Draghici <adriana008@gmail.com>
Thu, 22 Apr 2010 12:59:06 +0000 (12:59 +0000)
autorun/server/Server.py
ppf/log-parser/tribler/LogParser.py

index c46d79f..1681011 100644 (file)
@@ -144,15 +144,18 @@ class MyDaemon(Daemon):
             line = f.readline()
             size = 0
             info_dict = {}
+            dicts = [] #list with all info_dict dictionaries
             try:
                 while line != '':
                     print line
                     if size == 0 :
                         if info_dict != {} :
-                            if self.add_to_output_msg(file_list, info_dict) < 0:
-                                raise Exception
-                            if create_archive:
-                                self.archive_files(info_dict,archives_list)
+                            if info_dict not in dicts:
+                                if self.add_to_output_msg(file_list, info_dict) < 0:
+                                    raise Exception
+                                dicts.append(info_dict)
+                                if create_archive:
+                                    self.archive_files(info_dict,archives_list)
 
                         size = int(line)
                         info_dict = {}
@@ -164,7 +167,7 @@ class MyDaemon(Daemon):
                         size = size - 1
                     line = f.readline()
                
-                if size == 0 and info_dict != {}:
+                if size == 0 and info_dict != {} and info_dict not in dicts:
                     if self.add_to_output_msg(file_list, info_dict) < 0:
                         raise Exception
                     if create_archive:
@@ -216,14 +219,19 @@ class MyDaemon(Daemon):
         """ Stops a BT client by killing it."""
         
         int_pid = int(pid)
+        if int_pid == -1 or int_pid not in self.processes_fd.keys():
+            return "Invalid pid " + pid
         os.kill(int_pid, signal.SIGKILL) # kill generates zombies
         os.wait()
         self.processes_fd[int_pid][0].close() 
         self.processes_fd[int_pid][1].close()
+        
         del self.processes_fd[int_pid]
+        del self.processes_info[int_pid]
 
         if(self.DEBUG):
             print "Server: killed process with pid = ", pid
+        return ""
 
     def set_linger(self,sock, l_onoff, l_linger):
         """Sets the SO_LINGER value on a socket."""
@@ -259,7 +267,7 @@ class MyDaemon(Daemon):
 
             elif msg[0] == STOP_MSG:
                 client_pid = msg[1]
-                self.stop_bt_client(client_pid)
+                err_msg = self.stop_bt_client(client_pid)
                 response = ""
         
             elif msg[0] == GET_OUTPUT:
index 1c9aeed..86b6055 100644 (file)
@@ -1,16 +1,17 @@
 #!/usr/bin/env python
 #
 # Parser for verbose messages
-# author: Adriana Draghici
+# author: Adriana Draghici <
 #
 
 import sys
-from DatabaseWriter import DatabaseWriter
-from DatabaseCommander import DatabaseCommander
-import julian
 import datetime
 import getopt
+import julian
+import logging
 import re
+from DatabaseWriter import DatabaseWriter
+from DatabaseCommander import DatabaseCommander
 
 # the names used by Tribler for the BitTorrent messages 
 msg_types = {"BT_REQUEST_SEND": "new_request", "BT_REQUEST_RECV": "REQUEST(", "BT_CHOKE": "CHOKE from", "BT_UNCHOKE": "UNCHOKE from",
@@ -67,12 +68,12 @@ def tribler_parse_choke_msg(line):
     timestamp = tribler_parse_timestamp(line_parts[0], line_parts[1])
     
     if timestamp == None:
-        print "Error: invalid date & time format for Connecter. "
+        logger.error("Error: invalid date & time format for Connecter. ")
         return None
     
     nr_parts = len(line_parts)
     if nr_parts < 7 : 
-        print "Error: invalid line format for Connecter. ", line
+        logger.error("Error: invalid line format for Connecter. " + line)
         return None
 
     peer_ip = line_parts[nr_parts-1];
@@ -97,12 +98,12 @@ def tribler_parse_interested_msg(line):
     timestamp = tribler_parse_timestamp(line_parts[0], line_parts[1])
     
     if timestamp == None:
-        print "Error: invalid date & time format for Connecter."
+        logger.error("Error: invalid date & time format for Connecter.")
         return None
     
     nr_parts = len(line_parts)
     if nr_parts < 7 : 
-        print "Error: invalid line format for Connecter.", line
+        logger.error("Error: invalid line format for Connecter." + line)
         return None
 
     peer_ip = line_parts[nr_parts-1];
@@ -127,12 +128,12 @@ def tribler_parse_have_msg(line):
     timestamp = tribler_parse_timestamp(line_parts[0], line_parts[1])
     
     if timestamp == None:
-        print "Error: invalid date & time format for Connecter."
+        logger.error("Error: invalid date & time format for Connecter.")
         return None
     
     nr_parts = len(line_parts)
     if nr_parts < 9 : 
-        print "Error: invalid line format for Connecter.", line
+        logger.error("Error: invalid line format for Connecter." + line)
         return None
 
     index = int(line_parts[5])
@@ -152,12 +153,12 @@ def tribler_parse_bitfield_msg(line):
     timestamp = tribler_parse_timestamp(line_parts[0], line_parts[1])
    
     if timestamp == None:
-        print "Error: invalid date & time format for Connecter."
+        logger.error("Error: invalid date & time format for Connecter.")
         return None
     
     nr_parts = len(line_parts)
     if nr_parts < 7 : 
-        print "Error: invalid line format for Connecter.", line
+        logger.error("Error: invalid line format for Connecter." + line)
         return None
 
     peer_ip = line_parts[nr_parts-1];
@@ -188,12 +189,12 @@ def tribler_parse_request_msg(line):
     line_parts = re.split(" *", line)
     
     if len(line_parts) < msg_parts : 
-        print "Error: invalid line format for ", file,
+        logger.error("Error: invalid line format for " +  file)
         return None
 
     timestamp = tribler_parse_timestamp(line_parts[0], line_parts[1])
     if timestamp == None:
-        print "Error: invalid line format for ", file
+        logger.error("Error: invalid line format for " + file)
         return None
     
     # Send request message
@@ -228,12 +229,12 @@ def tribler_parse_piece_msg(line):
     timestamp = tribler_parse_timestamp(line_parts[0], line_parts[1])
     
     if timestamp == None:
-        print "Error: invalid date & time format for Connecter."
+        logger.error("Error: invalid date & time format for Connecter.")
         return None
     
     nr_parts = len(line_parts)
     if nr_parts < 9 : 
-        print "Error: invalid line format for Connecter.", line
+        logger.error("Error: invalid line format for Connecter."+ line)
         return None
 
     index = int(line_parts[5])
@@ -255,12 +256,12 @@ def tribler_parse_cancel_msg(line):
     timestamp = tribler_parse_timestamp(line_parts[0], line_parts[1])
    
     if timestamp == None:
-        print "Error: invalid date & time format for Connecter."
+        logger.error("Error: invalid date & time format for Connecter.")
         return None
     
     nr_parts = len(line_parts)
     if nr_parts < 6 : 
-        print "Error: invalid line format for Connecter.", line
+        logger.error("Error: invalid line format for Connecter."+ line)
         return None
     
     line_parts = re.split("[ :-]*", line)
@@ -317,7 +318,7 @@ def tribler_parse_status_file(dbw, client_session_id, filename):
                                 msg_type, index, begin, length, listen_port)
             
     except IOError:
-        print "Error processing file %s." %filename
+        logger.error("Error processing file " +  filename)
 
 def main_just_parse():
        filename = sys.argv[1]
@@ -350,16 +351,16 @@ def main_with_DB():
             assert False, "unhandled option"
 
     if client_session_id == None:
-        print "Error: no client session id."
+        logger.error("Error: no client session id.")
         sys.exit(2)
 
     if filename == None:
-        print "Error: no status file."
+        logger.error("Error: no status file.")
         sys.exit(2)
 
     # no database passed as argument
     if len(args) != 1:
-        print "Error: no database file passed as argument."
+        logger.error("Error: no database file passed as argument.")
         sys.exit(2)
     database = args[0]
 
@@ -368,7 +369,7 @@ def main_with_DB():
     # check for client_session_id, swarm_id, btclient_id
     cursor = dbc.select_client_sessions_by_id(client_session_id)
     if cursor == None:
-        print "Error: no client session id (%d) in database." % client_session_id
+        logger.error("Error: no client session id ("+ str(client_session_id) + ") in database."  )
         sys.exit(2)
     for session_row in cursor:
         pass
@@ -378,7 +379,8 @@ def main_with_DB():
 
     cursor = dbc.select_swarms(swarm_id)
     if cursor == None:
-        print "Error: no swarm id (%d) in database." % swarm_id
+        logger.error("Error: no swarm id ("+ str(swarm_id) +") in database." )
+
         sys.exit(2)
     for swarm_row in cursor:
         pass