1
2
3
4
5
6
7
8
9
10
11 __doc__="""ZeoPoolBase
12
13 $Id: ZC.py,v 1.9 2004/02/16 17:19:31 edahl Exp $"""
14
15 __version__ = "$Revision: 1.9 $"[11:-2]
16
17 from threading import Lock
18
19 from ZEO import ClientStorage
20 from ZODB import DB
21 from ZPublisher.HTTPRequest import HTTPRequest
22 from ZPublisher.HTTPResponse import HTTPResponse
23 from ZPublisher.BaseRequest import RequestContainer
24
25 from ZenDaemon import ZenDaemon
26
27 from Products.ZenUtils.Utils import unused
28
30 """
31 A multi-threaded daemon that maintains a pool of zeo connections
32 that it can hand out to its worker threads.
33 """
34
35
36 - def __init__(self, noopts=0, app=None, keeproot=False):
41
42
60
61
63 addr = (self.options.host, self.options.port)
64 self._storage=ClientStorage.ClientStorage(addr)
65 self.db=DB(self._storage)
66 self.poollock = Lock()
67
68
70 """Close all connections in both free an inuse pools.
71 """
72 self.db.close()
73 self.db = None
74 self._storage = None
75
76
78 """Are we connected to zeo.
79 """
80 return not self._storage or self._storage.is_connected()
81
82
84 """Return the target max pool size for this database.
85 """
86 return self.db.getPoolSize()
87
88
90 """Return the number of available connection in our pool.
91 """
92 if self.db._pools:
93 pool = self.db._pools['']
94 return len(pool.available)
95 return 0
96
97
98 - def _getContext(self, app):
99 resp = HTTPResponse(stdout=None)
100 env = {
101 'SERVER_NAME':'localhost',
102 'SERVER_PORT':'8080',
103 'REQUEST_METHOD':'GET'
104 }
105 req = HTTPRequest(None, env, resp)
106 app.__of__(RequestContainer(REQUEST = req))
107 return app
108
109
111 """basic options setup sub classes can add more options here"""
112 ZenDaemon.buildOptions(self)
113 self.parser.add_option('--host',
114 dest="host",default="localhost",
115 help="hostname of zeo server")
116 self.parser.add_option('--port',
117 dest="port",type="int", default=8100,
118 help="port of zeo server")
119