@Override public void connectToExternal() throws ComponentException { try { opcuaClient = createClient(componentConfig.getExternalConnectionString()); //opcuaClient.connect().whenComplete((c, ex) -> this.isConnectedToExternal() = true).get(); opcuaClient.connect().get(); } catch (Exception e) { throw new ComponentException(e); } }
@Override protected void connectToBasys() { super.connectToBasys(); ch = CommFactory.getInstance().openChannel(context.getSharedChannelPool(), "worldmodel-manager#out", false, new ChannelListener() { @Override public de.dfki.cos.basys.platform.model.runtime.communication.Response handleRequest(Channel channel, Request req) { return null; } @Override public void handleNotification(Channel channel, Notification not) { try { EObject payload = JsonUtils.fromString(not.getPayload(), EObject.class); if (payload.eClass() .equals(LinebalancingPackage.eINSTANCE.getLineBalancingAssignment())) { assignedResource = (LineBalancingAssignment) payload; } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Override public void handleMessage(Channel channel, String msg) { } } ); }
public TaskExecutor(TaskDescription task) { this.task = task; remoteComponent = new ComponentController(task.getRequest().getComponentId(), this); }
@Override public void connectToExternal() throws ComponentException { super.connectToExternal(); ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(getConfig().getExternalConnectionString()); try { connection = connectionFactory.createConnection(); connection.setClientID(getId()); connection.start(); session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); } catch (JMSException e) { throw new ComponentException(e); } for (Property p : getConfig().getProperties()) { if (p.getKey().equals("incoming")) { String[] parts = p.getValue().split(" "); installOutgoingChannel(parts[0], parts[1]); } if (p.getKey().equals("outgoing")) { String[] parts = p.getValue().split(" "); installIncomingChannel(parts[0], parts[1]); } } }
@Override public void connectToExternal() throws ComponentException { MemoryPersistence persistence = new MemoryPersistence(); final MqttConnectOptions options = new MqttConnectOptions(); options.setCleanSession(true); try { mqttClient = new MqttAsyncClient(componentConfig.getExternalConnectionString(), getId(), persistence); mqttClient.connect(options, new IMqttActionListener() { @Override public void onSuccess(IMqttToken asyncActionToken) { LOGGER.info( getName() + " connected to " + componentConfig.getExternalConnectionString()); } @Override public void onFailure(IMqttToken asyncActionToken, Throwable exception) { LOGGER.info( getName() + " could not establish connection to " + componentConfig.getExternalConnectionString()); } }).waitForCompletion(); } catch (MqttException e) { throw new ComponentException( getName() + " cannot connect to \"" + componentConfig.getExternalConnectionString() + "\"", e); } }
@Override public void connectToExternal() throws ComponentException { String patternString = "(?<protocol>wss?):\\/\\/(?<host>.*):(?<port>\\d*)"; Pattern pattern = Pattern.compile(patternString); Matcher matcher = pattern.matcher(componentConfig.getExternalConnectionString()); boolean matches = matcher.matches(); if (!matches) { throw new ComponentException("Invalid external connection string! " + componentConfig.getExternalConnectionString() + " does not match the expected pattern " + patternString); } protocol = matcher.group("protocol"); host = matcher.group("host"); port = Integer.parseInt(matcher.group("port")); //TODO: support also wss ros = new Ros(host, port, WebSocketType.valueOf(protocol)); if (!ros.connect()) { throw new ComponentException( getName() + " cannot connect to \"" + componentConfig.getExternalConnectionString() + "\""); } }
private ServiceInstance<ComponentInfo> createServiceInstance(Component component) throws ComponentRegistrationException { // in a real application, you'd have a convention of some kind for the URI // layout UriSpec uriSpec = new UriSpec("{scheme}://{hostName}:{port}"); ComponentInfo componentInfo = component.getComponentInfo(); try { ServiceInstance<ComponentInfo> inst = ServiceInstance.<ComponentInfo>builder() .name(component.getCategory().getName()) .id(component.getId()) .payload(componentInfo) .port((int) (65535 * Math.random())) // in a real application, you'd use a common port .uriSpec(uriSpec).build(); componentInfo.setHostName(inst.getAddress()); //componentInfo.setUriSpec(uriSpec.toString()); return inst; } catch (Exception e) { throw new ComponentRegistrationException(e); } }
public void execute(ComponentContext context) { remoteComponent.connect(context); ComponentRequestStatus status = remoteComponent.sendComponentRequest(task.getRequest()); if (status.getStatus() == RequestStatus.ACCEPTED) { try { response.setComponentId(remoteComponent.getId()); response.setMessage(status.getMessage()); if (status.getStatus() == RequestStatus.NOOP) { response.setComponentId(remoteComponent.getId()); response.setMessage("timeout reached"); response.setStatus(ResponseStatus.NOT_OK); remoteComponent.disconnect();
@Override public void installOutgoingChannel(String internalChannelName, String externalChannelName) { Channel internalChannel = cf.openChannel(context.getSharedChannelPool(), internalChannelName, false, new ChannelListener() {
@Override public void activate(ComponentContext context) throws ComponentException { super.activate(context); CommFactory.getInstance().openChannel(context.getSharedChannelPool(), "worldmodel-manager#out", false, new ChannelListener() { CommFactory.getInstance().openChannel(context.getSharedChannelPool(), "basys-connector#out", false, new ChannelListener() {
ProductDefinitionManager pdm = (ProductDefinitionManager) context.getComponentManager() .getLocalComponentById("product-definition-manager"); ProductInstanceManager pim = (ProductInstanceManager) context.getComponentManager() .getLocalComponentById("product-instance-manager"); ProductInstance productInstance = ProductinstanceFactoryImpl.eINSTANCE .createProductInstance();
@Override public void handleNotification(Channel channel, Notification not) { if (channel.getName().equals(remoteComponent.getComponentInfo().getOutChannelName())) { try { ComponentResponse response = JsonUtils.fromString(not.getPayload(), ComponentResponse.class); task.setResponse(response); counter.countDown(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
@Override public void connectToExternal() throws ComponentException { super.connectToExternal(); throw new ComponentException("MqttGatewayComponent \"" + getId() + "\" cannot connect to \"" + componentConfig.getExternalConnectionString() + "\"", e);
MessageProducer sender = session.createProducer(jmsTopicProducer); Channel internalChannel = cf.openChannel(context.getSharedChannelPool(), internalChannelName, false, new ChannelListener() {
@Override public void installIncomingChannel(String externalChannelName, String internalChannelName) { try { Channel internalChannel = cf.openChannel(context.getSharedChannelPool(), internalChannelName, false, null); Topic jmsTopicConsumer = session.createTopic(externalChannelName); MessageConsumer receiver = session.createConsumer(jmsTopicConsumer); receiver.setMessageListener(new MessageListener() { @Override public void onMessage(Message message) { try { String payload = ((TextMessage) message).getText(); internalChannel.sendMessage(payload); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } }); incoming.put(receiver, internalChannel); } catch (JMSException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
@Override public void installIncomingChannel(String externalChannelName, String internalChannelName) { Channel internalChannel = cf.openChannel(context.getSharedChannelPool(), internalChannelName, false, null); try { mqttClient.subscribe(externalChannelName, 2, new IMqttMessageListener() { // TODO: unterscheiden handleNotification/Request @Override public void messageArrived(String topic, MqttMessage message) throws Exception { String mqttPayload = new String(message.getPayload(), StandardCharsets.UTF_8); Notification not = CommFactory.getInstance().createNotification(mqttPayload); internalChannel.sendNotification(not); } }).waitForCompletion(); incoming.put(externalChannelName,internalChannel); } catch (MqttException e) { throw new ProviderException("Cannot subscribe MqttGateway to topic \"" + externalChannelName + "\"", e); } }