joynr.Routing.fidl Maven / Gradle / Ivy
/*
* #%L
* %%
* Copyright (C) 2011 - 2016 BMW Car IT GmbH
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* #L%
*/
package system
typeCollection RoutingTypes {
<** @description: Generic Address **>
struct Address polymorphic {}
<** @description: Channel Address **>
struct ChannelAddress extends Address {
<** @description: Url of HTTP-based message receiver **>
String messagingEndpointUrl
<** @description: Channel identification **>
String channelId
}
<** @description: Mqtt Address **>
struct MqttAddress extends Address {
<** @description: Mqtt broker uri **>
String brokerUri
<** @description: MQTT topic identification **>
String topic
}
<** @description: CommonApiDbus address **>
struct CommonApiDbusAddress extends Address {
<** @description: Domain name **>
String domain
<** @description: Name of service **>
String serviceName
<** @description: the ID of the target participant **>
String participantId
}
<** @description: Browser address **>
struct BrowserAddress extends Address {
<** @description: the ID of the browser window **>
String windowId
}
<** @description: Websocket protocol type **>
enumeration WebSocketProtocol {
<** @description: Websocket (non-secure) **>
WS
<** @description: Websocket (secure) **>
WSS
}
<** @description: Websocket address **>
struct WebSocketAddress extends Address {
<** @description: Websocket protocol type **>
WebSocketProtocol protocol
<** @description: Websocket host **>
String host
<** @description: Websocket port **>
Int32 port
<** @description: Websocket path **>
String path
}
<** @description: MQTT protocol type **>
enumeration MqttProtocol {
<** @description: MQTT (non-secure) **>
MQTT
<** @description: MQTT (secure) **>
MQTTS
}
<** @description: Websocket client address **>
struct WebSocketClientAddress extends Address {
<** @description: Websocket client ID **>
String id
}
}
<**
@description: The Routing
interface is a joynr internal
interface. joynr uses a hierarchy of MessageRouter
s to
route messages from source to destination. The Routing
interface is used to update routing information between parent and
child MessageRouter
s.
**>
interface Routing {
version {major 0 minor 1}
<**
@description: Adds a hop to the parent routing table.
The overloaded methods (one for each concrete Address type) is
needed since polymorphism is currently not supported by joynr.
**>
method addNextHop {
in {
<** @description: the ID of the target participant **>
String participantId
<**
@description: the messaging address of the next hop towards
the corresponding participant ID
**>
RoutingTypes.ChannelAddress channelAddress
}
}
<**
@description: Adds a hop to the parent routing table.
The overloaded methods (one for each concrete Address type) is
needed since polymorphism is currently not supported by joynr.
**>
method addNextHop {
in {
<** @description: the ID of the target participant **>
String participantId
<**
@description: the messaging address of the next hop towards
the corresponding participant ID
**>
RoutingTypes.MqttAddress mqttAddress
}
}
<**
@description: Adds a hop to the parent routing table.
The overloaded methods (one for each concrete Address type) is
needed since polymorphism is currently not supported by joynr.
**>
method addNextHop {
in {
<** @description: the ID of the target participant **>
String participantId
<**
@description: the messaging address of the next hop towards
the corresponding participant ID
**>
RoutingTypes.CommonApiDbusAddress commonApiDbusAddress
}
}
<**
@description: Adds a hop to the parent routing table.
The overloaded methods (one for each concrete Address type) is
needed since polymorphism is currently not supported by joynr.
**>
method addNextHop {
in {
<** @description: the ID of the target participant **>
String participantId
<**
@description: the messaging address of the next hop towards
the corresponding participant ID
**>
RoutingTypes.BrowserAddress browserAddress
}
}
<**
@description: Adds a hop to the parent routing table.
The overloaded methods (one for each concrete Address type) is
needed since polymorphism is currently not supported by joynr.
**>
method addNextHop {
in {
<** @description: the ID of the target participant **>
String participantId
<**
@description: the messaging address of the next hop towards
the corresponding participant ID
**>
RoutingTypes.WebSocketAddress webSocketAddress
}
}
<**
@description: Adds a hop to the parent routing table.
The overloaded methods (one for each concrete Address type) is
needed since polymorphism is currently not supported by joynr.
**>
method addNextHop {
in {
<** @description: the ID of the target participant **>
String participantId
<**
@description: the messaging address of the next hop towards
the corresponding participant ID
**>
RoutingTypes.WebSocketClientAddress webSocketClientAddress
}
}
<** @description: Removes a hop from the parent routing table. **>
method removeNextHop {
in {
<** @description: the ID of the target participant **>
String participantId
}
}
<**
@description: Asks the parent routing table whether it is able to
resolve the destination participant ID.
**>
method resolveNextHop {
in {
<** @description: the ID of the target participant to resolve **>
String participantId
}
out {
<** @description: true, if the participant ID could be resolved **>
Boolean resolved
}
}
<**
@description: Adds a new receiver via their participant ID to for the
identified multicasts.
**>
method addMulticastReceiver {
in {
<** @description: the multicast ID the receiver is interested in. **>
String multicastId
<** @description: the participant ID of the receiver. **>
String subscriberParticipantId
<** @description: the participant ID of the provider. **>
String providerParticipantId
}
}
<**
@description: Removes a new receiver via their participant ID to for the
identified multicasts which was previously added via addMulticastReceiver.
**>
method removeMulticastReceiver {
in {
<** @description: the multicast ID the receiver registered for. **>
String multicastId
<** @description: the participant ID of the receiver. **>
String subscriberParticipantId
<** @description: the participant ID of the provider. **>
String providerParticipantId
}
}
}