Subversion Repositories SmartDukaan

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
5944 mandeep.dh 1
'''
2
Created on 25-Mar-2010
3
 
4
@author: ashish
5
'''
6
import optparse
7
import sys
8
import os
9
 
10
if __name__ == '__main__' and __package__ is None:
11
    sys.path.insert(0, os.getcwd())
12
 
13
from thrift.transport import TSocket, TTransport
14
from thrift.protocol.TBinaryProtocol import TBinaryProtocolFactory
15
from thrift.server import TServer
16
 
17
from shop2020.utils.daemon import Daemon
18
from shop2020.config.client.ConfigClient import ConfigClient
19
from shop2020.thriftpy.model.v1.inventory import  InventoryService
20
from shop2020.model.v1.inventory.impl.InventoryServiceHandler import InventoryServiceHandler
21
 
22
class InventoryServer(Daemon):
23
 
24
    def __init__(self, logfile='/var/log/services/inventory.log', pidfile='/tmp/inventory-server.pid'):
25
        Daemon.__init__(self, pidfile, stdout=logfile, stderr=logfile)
26
 
27
    def run(self):
28
 
29
        config_client = ConfigClient()
30
        host_name = config_client.get_property('inventory_service_server_host')
31
        port = config_client.get_property('inventory_service_server_port')
32
        dbname = config_client.get_property('inventory_service_dbname')
33
        db_hostname = config_client.get_property('inventory_service_db_hostname')
34
 
35
        handler = InventoryServiceHandler(dbname, db_hostname)
36
        processor = InventoryService.Processor(handler)
37
        transport = TSocket.TServerSocket(port=port)
38
        tfactory = TTransport.TFramedTransportFactory()
39
        pfactory = TBinaryProtocolFactory()
40
        server = TServer.TThreadedServer(processor, transport, tfactory, pfactory)
41
        print "Starting InventoryService at, port " + str(port) + " host " + host_name
42
        sys.stdout.flush()
43
        server.serve()
44
        print "Server functioning"    
45
 
46
if __name__ == "__main__":
47
    parser = optparse.OptionParser()
48
    parser.add_option("-l", "--logfile", dest="logfile",
49
                      type="string",
50
                      help="Log all output to LOG_FILE",
51
                      )
52
    parser.add_option("-i", "--pidfile", dest="pidfile",
53
                      type="string",
54
                      help="Write the PID to pidfile")
55
    (options, args) = parser.parse_args()
56
    daemon = InventoryServer(options.logfile, options.pidfile)
57
    if len(args) == 0:
58
        daemon.run()
59
    elif len(args) == 1:
60
        if 'start' == args[0]:
61
            daemon.start()
62
        elif 'stop' == args[0]:
63
            daemon.stop()
64
        elif 'restart' == args[0]:
65
            daemon.restart()
66
        else:
67
            print "Unknown command"
68
            sys.exit(2)
69
        sys.exit(0)
70
    else:
71
        print "usage: %s start|stop|restart" % sys.argv[0]
72
        sys.exit(2)