def __init__(self, host, port, auto_handle_connection=True): # import only if necessary; some tests may not add this to PYTHONPATH from DBThriftAPI import CheckerReport transport = TTransport.TBufferedTransport(TSocket.TSocket(host, port)) protocol = TBinaryProtocol.TBinaryProtocol(transport) client = CheckerReport.Client(protocol) super(CCReportHelper, self).__init__(transport, client, auto_handle_connection)
def run_server(port, db_uri, callback_event=None): LOG.debug('Starting CodeChecker server ...') try: engine = database_handler.SQLServer.create_engine(db_uri) LOG.debug('Creating new database session.') session = CreateSession(engine) except sqlalchemy.exc.SQLAlchemyError as alch_err: LOG.error(str(alch_err)) sys.exit(1) session.autoflush = False # Autoflush is enabled by default. LOG.debug('Starting thrift server.') try: # Start thrift server. handler = CheckerReportHandler(session) processor = CheckerReport.Processor(handler) transport = TSocket.TServerSocket(port=port) tfactory = TTransport.TBufferedTransportFactory() pfactory = TBinaryProtocol.TBinaryProtocolFactory() server = TServer.TThreadPoolServer(processor, transport, tfactory, pfactory, daemon=True) LOG.info('Waiting for check results on [' + str(port) + ']') if callback_event: callback_event.set() LOG.debug('Starting to serve.') server.serve() session.commit() except socket.error as sockerr: LOG.error(str(sockerr)) if sockerr.errno == errno.EADDRINUSE: LOG.error('Checker port ' + str(port) + ' is already used!') sys.exit(1) except Exception as err: LOG.error(str(err)) session.commit() sys.exit(1)
def __init__(self, host, port): """ Establish the connection between client and server. """ tries_count = 0 while True: try: self._transport = TSocket.TSocket(host, port) self._transport = TTransport.TBufferedTransport( self._transport) self._protocol = TBinaryProtocol.TBinaryProtocol( self._transport) self._client = CheckerReport.Client(self._protocol) self._transport.open() break except Thrift.TException as thrift_exc: if tries_count > 3: LOG.error('The client cannot establish the connection ' 'with the server!') LOG.error('%s' % thrift_exc.message) sys.exit(2) else: tries_count += 1 time.sleep(1)