Lines 36-41
Defines the basic class for an UMC server.
|
Link Here
|
---|
|
36 |
""" |
36 |
""" |
37 |
|
37 |
|
38 |
import os |
38 |
import os |
|
|
39 |
import gc |
39 |
import fcntl |
40 |
import fcntl |
40 |
import socket |
41 |
import socket |
41 |
import resource |
42 |
import resource |
Lines 80-86
class MagicBucket(object):
|
Link Here
|
---|
|
80 |
""" |
81 |
""" |
81 |
CORE.info('Established connection: %s' % client) |
82 |
CORE.info('Established connection: %s' % client) |
82 |
state = State(client, socket) |
83 |
state = State(client, socket) |
83 |
state.session.signal_connect('success', notifier.Callback(self._response, state)) |
84 |
state.callback = notifier.Callback(self._response, state) |
|
|
85 |
state.session.signal_connect('success', state.callback) |
84 |
self.__states[socket] = state |
86 |
self.__states[socket] = state |
85 |
notifier.socket_add(socket, self._receive) |
87 |
notifier.socket_add(socket, self._receive) |
86 |
self._timeout_connection(state) |
88 |
self._timeout_connection(state) |
Lines 102-109
class MagicBucket(object):
|
Link Here
|
---|
|
102 |
# remove all sockets |
104 |
# remove all sockets |
103 |
for sock in list(self.__states.keys()): |
105 |
for sock in list(self.__states.keys()): |
104 |
CORE.info('Shutting down connection %s' % sock) |
106 |
CORE.info('Shutting down connection %s' % sock) |
105 |
self.__states.pop(sock).session.shutdown() |
107 |
self._cleanup(sock) |
106 |
notifier.socket_remove(sock) |
|
|
107 |
|
108 |
|
108 |
def _receive(self, socket): |
109 |
def _receive(self, socket): |
109 |
"""Signal callback: Handles incoming data. Processes SSL events |
110 |
"""Signal callback: Handles incoming data. Processes SSL events |
Lines 229-242
class MagicBucket(object):
|
Link Here
|
---|
|
229 |
self._cleanup(state.socket) |
230 |
self._cleanup(state.socket) |
230 |
|
231 |
|
231 |
def _cleanup(self, socket): |
232 |
def _cleanup(self, socket): |
232 |
if socket not in self.__states: |
233 |
state = self.__states.pop(socket, None) |
|
|
234 |
if state is None: |
233 |
return |
235 |
return |
234 |
|
236 |
|
235 |
self.__states[socket].session.shutdown() |
237 |
state.session.signal_disconnect('success', state.callback) |
236 |
|
238 |
state.session.shutdown() |
237 |
notifier.socket_remove(socket) |
239 |
notifier.socket_remove(socket) |
238 |
self.__states[socket].session.__del__() |
240 |
state.session.__del__() |
239 |
del self.__states[socket] |
|
|
240 |
|
241 |
|
241 |
try: |
242 |
try: |
242 |
socket.close() |
243 |
socket.close() |
Lines 406-411
class Server(signals.Provider):
|
Link Here
|
---|
|
406 |
categoryManager.load() |
407 |
categoryManager.load() |
407 |
RESOURCES.info('Reloading UCR variables') |
408 |
RESOURCES.info('Reloading UCR variables') |
408 |
ucr.load() |
409 |
ucr.load() |
|
|
410 |
gc.collect() # Cleanup umcp.State objects |
409 |
|
411 |
|
410 |
|
412 |
|
411 |
class State(object): |
413 |
class State(object): |