34 ):
35 """
36 Here the configuration for an entire daq_application instance using DAQModules from snbmodules is generated.
37 """
38 HOST=snbmodules.host
39 HOST2 = HOST.replace("-", "")
40 INTERFACE=snbmodules.interface
41 CLIENT_NUM=snbmodules.client_num
42 CLIENT_NAME=snbmodules.client_name
43 CLIENT_STARTING_PORT=snbmodules.client_starting_port
44 CLIENTS_ROOT_DIR = snbmodules.clients_root_dir
45
46 modules = []
47
48
49 for i in range(CLIENT_NUM):
50 RESOLVED_INTERFACE = INTERFACE
51 if RESOLVED_INTERFACE == "0.0.0.0":
52 RESOLVED_INTERFACE = socket.gethostbyname(HOST)
53
54 if CLIENT_STARTING_PORT == 0:
55 client_ip = RESOLVED_INTERFACE
56 else:
57 client_ip = RESOLVED_INTERFACE + ":" + str(CLIENT_STARTING_PORT + i)
58
59 modules += [DAQModule(name = HOST2+CLIENT_NAME + str(i),
60 plugin = "SNBFileTransfer",
61 conf = snbfiletransfer.ConfParams(
62 client_ip = client_ip,
63 work_dir = CLIENTS_ROOT_DIR + HOST2 + CLIENT_NAME + str(i) + "/",
64 connection_prefix = SNB_CONNECTION_PREFIX,
65 timeout_send = SNB_TIMEOUT_SEND,
66 timeout_receive = SNB_TIMEOUT_RECEIVE,
67 )
68 )]
69
70
71 mgraph = ModuleGraph(modules)
72
73 for i in range(CLIENT_NUM):
74 mgraph.add_endpoint(SNB_CONNECTION_PREFIX+"_client_" + HOST2 + CLIENT_NAME + str(i) + "_notifications", HOST2 + CLIENT_NAME + str(i) + ".notifications", "notification_t", Direction.IN, check_endpoints=False)
75
76 snbmodules_app = App(modulegraph = mgraph, host = HOST, name = HOST+CLIENT_NAME)
77
78 return snbmodules_app
79