Skip to content
Snippets Groups Projects
Commit 00c93818 authored by Hendrik Buschmeier's avatar Hendrik Buschmeier
Browse files

Added argparse based support for RSB transport type socket; central hub script.

parent 6a6fdf27
No related branches found
No related tags found
No related merge requests found
...@@ -56,7 +56,7 @@ def initialize_ipaaca_rsb_if_needed(): ...@@ -56,7 +56,7 @@ def initialize_ipaaca_rsb_if_needed():
* Register own RSB onverters. * Register own RSB onverters.
* Initialise RSB from enviroment variables, rsb config file, or * Initialise RSB from enviroment variables, rsb config file, or
from default values for RSB spread host and port (via from default values for RSB trnasport, host, and port (via
ipaaca.defaults or ipaaca.misc.IpaacaArgumentParser). ipaaca.defaults or ipaaca.misc.IpaacaArgumentParser).
""" """
global __RSB_INITIALIZED global __RSB_INITIALIZED
...@@ -101,13 +101,27 @@ def initialize_ipaaca_rsb_if_needed(): ...@@ -101,13 +101,27 @@ def initialize_ipaaca_rsb_if_needed():
rsb.converter.ProtocolBufferConverter( rsb.converter.ProtocolBufferConverter(
messageClass=ipaaca_pb2.IURetraction)) messageClass=ipaaca_pb2.IURetraction))
if ipaaca.defaults.IPAACA_DEFAULT_RSB_SPREAD_HOST is not None: if ipaaca.defaults.IPAACA_DEFAULT_RSB_TRANSPORT is not None:
os.environ['RSB_TRANSPORT_SPREAD_HOST'] = str( if ipaaca.defaults.IPAACA_DEFAULT_RSB_TRANSPORT == 'spread':
ipaaca.defaults.IPAACA_DEFAULT_RSB_SPREAD_HOST) os.environ['RSB_TRANSPORT_SPREAD_ENABLED'] = str(1)
os.environ['RSB_TRANSPORT_SOCKET_ENABLED'] = str(0)
elif ipaaca.defaults.IPAACA_DEFAULT_RSB_TRANSPORT == 'socket':
os.environ['RSB_TRANSPORT_SPREAD_ENABLED'] = str(0)
os.environ['RSB_TRANSPORT_SOCKET_ENABLED'] = str(1)
if ipaaca.defaults.IPAACA_DEFAULT_RSB_SOCKET_SERVER is not None:
os.environ['RSB_TRANSPORT_SOCKET_SERVER'] = str(
ipaaca.defaults.IPAACA_DEFAULT_RSB_SOCKET_SERVER)
if ipaaca.defaults.IPAACA_DEFAULT_RSB_SPREAD_PORT is not None: if ipaaca.defaults.IPAACA_DEFAULT_RSB_HOST is not None:
os.environ['RSB_TRANSPORT_SPREAD_HOST'] = str(
ipaaca.defaults.IPAACA_DEFAULT_RSB_HOST)
os.environ['RSB_TRANSPORT_SOCKET_HOST'] = str(
ipaaca.defaults.IPAACA_DEFAULT_RSB_HOST)
if ipaaca.defaults.IPAACA_DEFAULT_RSB_PORT is not None:
os.environ['RSB_TRANSPORT_SPREAD_PORT'] = str( os.environ['RSB_TRANSPORT_SPREAD_PORT'] = str(
ipaaca.defaults.IPAACA_DEFAULT_RSB_SPREAD_PORT) ipaaca.defaults.IPAACA_DEFAULT_RSB_PORT)
os.environ['RSB_TRANSPORT_SOCKET_PORT'] = str(
ipaaca.defaults.IPAACA_DEFAULT_RSB_PORT)
rsb.__defaultParticipantConfig = \ rsb.__defaultParticipantConfig = \
rsb.ParticipantConfig.fromDefaultSources() rsb.ParticipantConfig.fromDefaultSources()
......
...@@ -38,6 +38,10 @@ IPAACA_DEFAULT_LOGGING_LEVEL = 'WARNING' ...@@ -38,6 +38,10 @@ IPAACA_DEFAULT_LOGGING_LEVEL = 'WARNING'
IPAACA_DEFAULT_IU_PAYLOAD_TYPE = 'JSON' # one of ipaaca.iu.IUPayloadType IPAACA_DEFAULT_IU_PAYLOAD_TYPE = 'JSON' # one of ipaaca.iu.IUPayloadType
IPAACA_DEFAULT_RSB_SPREAD_HOST = None IPAACA_DEFAULT_RSB_HOST = None
IPAACA_DEFAULT_RSB_SPREAD_PORT = None IPAACA_DEFAULT_RSB_PORT = None
IPAACA_DEFAULT_RSB_TRANSPORT = None
IPAACA_DEFAULT_RSB_SOCKET_SERVER = None
...@@ -124,15 +124,25 @@ class IpaacaArgumentParser(argparse.ArgumentParser): ...@@ -124,15 +124,25 @@ class IpaacaArgumentParser(argparse.ArgumentParser):
rsb_logger.removeHandler(__GENERIC_NO_LOG_HANDLER) rsb_logger.removeHandler(__GENERIC_NO_LOG_HANDLER)
rsb_logger.setLevel(level=values) rsb_logger.setLevel(level=values)
class IpaacaRSBSpreadHost(argparse.Action): class IpaacaRSBHost(argparse.Action):
def __call__(self, parser, namespace, values, option_string=None): def __call__(self, parser, namespace, values, option_string=None):
ipaaca.defaults.IPAACA_DEFAULT_RSB_SPREAD_HOST = values ipaaca.defaults.IPAACA_DEFAULT_RSB_HOST = values
class IpaacaRSBSpreadPort(argparse.Action): class IpaacaRSBPort(argparse.Action):
def __call__(self, parser, namespace, values, option_string=None): def __call__(self, parser, namespace, values, option_string=None):
ipaaca.defaults.IPAACA_DEFAULT_RSB_SPREADPORT = values ipaaca.defaults.IPAACA_DEFAULT_RSB_PORT = values
class IpaacaRSBTransport(argparse.Action):
def __call__(self, parser, namespace, values, option_string=None):
ipaaca.defaults.IPAACA_DEFAULT_RSB_TRANSPORT = values
class IpaacaRSBSocketServer(argparse.Action):
def __call__(self, parser, namespace, values, option_string=None):
ipaaca.defaults.IPAACA_DEFAULT_RSB_SOCKET_SERVER = values
def __init__(self, prog=None, usage=None, description=None, epilog=None, def __init__(self, prog=None, usage=None, description=None, epilog=None,
parents=[], formatter_class=argparse.HelpFormatter, parents=[], formatter_class=argparse.HelpFormatter,
...@@ -177,19 +187,35 @@ class IpaacaArgumentParser(argparse.ArgumentParser): ...@@ -177,19 +187,35 @@ class IpaacaArgumentParser(argparse.ArgumentParser):
dest='_ipaaca_rsb_enable_logging_', dest='_ipaaca_rsb_enable_logging_',
help="enable RSB logging with threshold") help="enable RSB logging with threshold")
rsblib_group.add_argument( rsblib_group.add_argument(
'--rsb-spread-host', '--rsb-host',
action=self.IpaacaRSBSpreadHost, action=self.IpaacaRSBHost,
default=None, default=None,
dest='_ipaaca_rsb_set_spread_host_', dest='_ipaaca_rsb_set_host_',
metavar='HOST', metavar='HOST',
help="set RSB spread host") help="set RSB host")
rsblib_group.add_argument( rsblib_group.add_argument(
'--rsb-spread-port', '--rsb-port',
action=self.IpaacaRSBSpreadPort, action=self.IpaacaRSBPort,
default=None, default=None,
dest='_ipaaca_rsb_set_spread_port_', dest='_ipaaca_rsb_set_port_',
metavar='PORT', metavar='PORT',
help="set RSB spread port") help="set RSB port")
rsblib_group.add_argument(
'--rsb-transport',
action=self.IpaacaRSBTransport,
default=None,
dest='_ipaaca_rsb_set_transport_',
choices=['spread', 'socket'],
metavar='TRANSPORT',
help="set RSB transport")
rsblib_group.add_argument(
'--rsb-socket-server',
action=self.IpaacaRSBSocketServer,
default=None,
dest='_ipaaca_rsb_set_socket_server_',
choices=['0', '1', 'auto'],
metavar='server',
help="act as server (only when --rsb-transport=socket)")
def parse_args(self, args=None, namespace=None): def parse_args(self, args=None, namespace=None):
self._add_ipaaca_lib_arguments() # Add ipaaca-args just before parsing self._add_ipaaca_lib_arguments() # Add ipaaca-args just before parsing
......
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# This file is part of IPAACA, the
# "Incremental Processing Architecture
# for Artificial Conversational Agents".
#
# Copyright (c) 2009-2016 Social Cognitive Systems Group
# CITEC, Bielefeld University
#
# http://opensource.cit-ec.de/projects/ipaaca/
# http://purl.org/net/ipaaca
#
# This file may be licensed under the terms of of the
# GNU Lesser General Public License Version 3 (the ``LGPL''),
# or (at your option) any later version.
#
# Software distributed under the License is distributed
# on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
# express or implied. See the LGPL for the specific language
# governing rights and limitations.
#
# You should have received a copy of the LGPL along with this
# program. If not, go to http://www.gnu.org/licenses/lgpl.html
# or write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# The development of this software was supported by the
# Excellence Cluster EXC 277 Cognitive Interaction Technology.
# The Excellence Cluster EXC 277 is a grant of the Deutsche
# Forschungsgemeinschaft (DFG) in the context of the German
# Excellence Initiative.
from __future__ import division, print_function
import os
import platform
import sys
import time
import ipaaca
def exit(code):
if platform.system() == 'Windows':
os._exit(code)
else:
sys.exit(code)
parser = ipaaca.IpaacaArgumentParser(description='Ipaaca Maintainor')
if __name__ == '__main__':
arguments = parser.parse_args()
# Warn if user tries to configure a transport other than socket or a
# server mode other than server
if (ipaaca.defaults.IPAACA_DEFAULT_RSB_TRANSPORT is not None and
ipaaca.defaults.IPAACA_DEFAULT_RSB_TRANSPORT != 'socket'):
print("ERROR: Works only with RSB transport type 'socket'.")
exit(1)
if (ipaaca.defaults.IPAACA_DEFAULT_RSB_SOCKET_SERVER is not None and
ipaaca.defaults.IPAACA_DEFAULT_RSB_SOCKET_SERVER != '1'):
print("ERROR: Works only in socket server mode '0'.")
exit(1)
# Configure rsb socket transport
ipaaca.defaults.IPAACA_DEFAULT_RSB_TRANSPORT = 'socket'
ipaaca.defaults.IPAACA_DEFAULT_RSB_SOCKET_SERVER = '1'
ob = ipaaca.OutputBuffer("IPAACAMaintainor")
while True:
try:
time.sleep(1)
except KeyboardInterrupt:
decision = raw_input('Shutdown the IPAACA socket transport hub (y/[n])?')
if decision in 'yY':
break
exit(code=0)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment