HCE Project Python language Distributed Tasks Manager Application, Distributed Crawler Application and client API bindings.  2.0.0-chaika
Hierarchical Cluster Engine Python language binding
ConnectionBuilderLight.py
Go to the documentation of this file.
1 '''
2 Created on Feb 28, 2014
3 
4 @author: igor, bgv
5 '''
6 
7 
8 import logging
9 import zmq
10 from ConnectionLight import ConnectionLight
11 from Singelon import Singleton
12 import Consts as consts
13 import app.Utils as Utils # pylint: disable=F0401
14 import app.Consts as APP_CONSTS
15 from app.Utils import ExceptionLog
16 
17 
18 # Logger initialization
19 logger = logging.getLogger(APP_CONSTS.LOGGER_NAME)
20 
21 
22 
24 class ConnectionBuilderLight(object):
25  __metaclass__ = Singleton
26 
27  def __init__(self):
28  '''
29  Constructor
30  '''
31  try:
32  self.zmq_context = zmq.Context() # pylint: disable=E1101
33  #for Poller object
34  self.zmq_poller = zmq.Poller() # pylint: disable=E1101
35  except Exception as err:
36  ExceptionLog.handler(logger, err, 'Error:')
37  except:
38  ExceptionLog.handler(logger, None, 'Unknown error:')
39 
40 
41 
46  def build(self, connect_type, connect_endpoint, protocol_type=consts.INPROC_TYPE, real_connect=True):
47  try:
48  sock = None
49  if protocol_type == consts.TCP_TYPE:
50  protocol = "tcp://"
51  else:
52  protocol = "inproc://"
53  addr = protocol + connect_endpoint
54  if connect_type == consts.CLIENT_CONNECT:
55  sock = self.zmq_context.socket(zmq.DEALER) # pylint: disable=E1101
56  if real_connect:
57  sock.connect(addr)
58  if connect_type == consts.SERVER_CONNECT:
59  sock = self.zmq_context.socket(zmq.ROUTER) # pylint: disable=E1101
60  sock.bind(addr)
61  return ConnectionLight(sock, connect_type, addr, real_connect)
62  except Exception as err:
63  ExceptionLog.handler(logger, err, 'Error:')
64  except:
65  ExceptionLog.handler(logger, None, 'Unknown error:')
66 
Class hides routines of bulding connection objects.
def build(self, connect_type, connect_endpoint, protocol_type=consts.INPROC_TYPE, real_connect=True)
build a connection