parseReference function
RoutableReference: identity -f facet -{t|o|O|d|D} -s -p {protocolVersion} -e {EncodingVersion}:tcp -h:udp: -ttl 33 identity -f facet -{t|o|O|d|D} -s -p {protocolVersion} -e {EncodingVersion} @adapterId
Implementation
RoutableReference parseReference(Instance instance, String s) {
Mode Function(ArgResults) flagsToMode = (results) => results['oneway']
? Mode.modeOneway
: results['batchOneway']
? Mode.modeBatchOneway
: results['datagram']
? Mode.modeDatagram
: Mode.modeTwoway;
final arr = s.split(':');
if (arr.isNotEmpty) {
final results = preferenceParser().parse(arr[0].split(' '));
final eps = <IPEndpoint>[];
arr.skip(1).forEach((s) {
final ep = parseEndpoint(instance, s);
if (ep != null) {
eps.add(ep);
}
});
final identity = stringToIdentity(results.arguments.first);
final mode = flagsToMode(results);
return RoutableReference(
instance: instance,
mode: mode,
secure: false,
identity: identity,
context: {},
facet: results['facet'] ?? '',
protocol: currentProtocol, // TODO:
encoding: currentProtocolEncoding,
endpointList: eps,
adapterId: '');
} else {
final results = preferenceParser().parse(arr);
final identity = stringToIdentity(results.arguments.first);
final mode = flagsToMode(results);
// TODO: check
final adapterId = results.arguments.last;
return RoutableReference(
instance: instance,
mode: mode,
secure: false,
identity: identity,
context: {},
facet: results['facet'],
protocol: currentProtocol, // TODO:
encoding: currentProtocolEncoding,
adapterId: adapterId,
);
}
}