From 85d6bb018eca191536475c56e3315afb575e634d Mon Sep 17 00:00:00 2001 From: Adriana Draghici Date: Fri, 16 Apr 2010 15:37:57 +0000 Subject: [PATCH] autorun: changed Server socket linger. --- autorun/server/Server.py | 52 ++++++++++++++++------------------------ 1 file changed, 20 insertions(+), 32 deletions(-) diff --git a/autorun/server/Server.py b/autorun/server/Server.py index 33d9583..4fe6b60 100644 --- a/autorun/server/Server.py +++ b/autorun/server/Server.py @@ -4,6 +4,7 @@ import sys, os, socket import time import pickle import signal +import struct from daemon import Daemon from Util import * @@ -27,14 +28,12 @@ class MyDaemon(Daemon): def set_address(self, ip): self.ip = ip - print "am setat ip ", ip def set_port(self, port): self.port = port - print "am setat port ", port def run(self): - self.doServer(self.ip, self.port) + self.do_Server(self.ip, self.port) def recv_pickled_data(self, clientsock): msg = '' @@ -115,18 +114,6 @@ class MyDaemon(Daemon): print "Server: started client with pid = ", pid return pid - """Simple test - - 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/", - "transmission-scrubs.log", 10150, - "/home/adriana/p2p/p2p-meta/scrubs.torrent") - - btcr.start() - btcr.run_client(btcr.simple_run_command) - """ """ Stops a BT client by killing it. @@ -153,31 +140,39 @@ class MyDaemon(Daemon): return -1 info_list = [info_dict[CLIENT],info_dict[TORRENT]] if LOG_DIR in info_dict: - info_list.append(info_dict[LOG_DIR], LOG_DIR) + info_list.append((info_dict[LOG_DIR], LOG_DIR)) if OUT_FILE in info_dict: - info_list.append(info_dict[OUT_FILE], OUT_FILE) + info_list.append((info_dict[OUT_FILE], OUT_FILE)) if LOG_FILE in info_dict: - info_list.append(info_dict[LOG_FILE], LOG_FILE) + info_list.append((info_dict[LOG_FILE], LOG_FILE)) + print info_list file_list.append (info_list) return 0 # success + def set_linger(self,sock, l_onoff, l_linger): + """Sets the SO_LINGER value on a socket.""" + sock.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, + struct.pack('ii', l_onoff, l_linger)) + + """ Accepts socket connections and receives messages from commander. """ - def doServer(self, ip, port): + def do_Server(self, ip, port): - serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + self.serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) if(self.DEBUG): print "Server: host ip = %s, port = %s"%(ip,SERVER_PORT) - serversocket.bind((ip,SERVER_PORT)); - serversocket.listen(10) #max 10 requests + self.serversocket.bind((ip,SERVER_PORT)); + self.serversocket.listen(10) #max 10 requests + self.set_linger(self.serversocket,1, 2) while(1): if(self.DEBUG): print "Server: accepting connections" - (clientsock, address) = serversocket.accept(); + (clientsock, address) = self.serversocket.accept(); if(self.DEBUG): print "Server: accepted connection from ", address @@ -201,7 +196,6 @@ class MyDaemon(Daemon): elif msg[0] == GET_OUTPUT: - print "LA get output\n" import os.path if not os.path.exists(SESSIONS_FILE): print "Error: No sessions_file" @@ -214,20 +208,14 @@ class MyDaemon(Daemon): file_list = [] try: while line != '': - print line if size == 0: - print "aici la size = 0" if info_dict != {} and self.add_to_output_msg(file_list, info_dict) < 0: - print "aici" raise Exception - print "aici3ia" size = int(line) - print "aici3" info_dict = {} else: parts = line.strip().split(':') if len(parts) != 2: - print "aici2" raise Exception info_dict[parts[0]] = parts[1] size = size - 1 @@ -264,14 +252,14 @@ if __name__ == "__main__": daemon = MyDaemon('/tmp/daemon-example.pid', sys.argv[2], stdout = '/home/p2p/out', stderr = '/home/p2p/err') daemon.start() elif 'stop' == sys.argv[1]: - daemon = MyDaemon('/tmp/daemon-example.pid') + daemon = MyDaemon('/tmp/daemon-example.pid') daemon.stop() elif 'restart' == sys.argv[1]: daemon = MyDaemon('/tmp/daemon-example.pid') daemon.restart() elif 'no' == sys.argv[1]: #no daemon daemon = MyDaemon('/tmp/daemon-example.pid', sys.argv[2], stdout = '/home/p2p/out', stderr = '/home/p2p/err') - daemon.doServer(sys.argv[2],"") + daemon.do_Server(sys.argv[2],"") else: print "Unknown command" sys.exit(2) -- 2.20.1