createFromStream method
Implementation
Reference? createFromStream(Identity identity, InputStream input) {
if (identity.isEmpty) return null;
// For compatibility with the old FacetPath.
final facetPath = input.readStringList();
if (facetPath.length > 1) {
throw ProxyUnmarshalException();
}
final facet = facetPath.isNotEmpty ? facetPath[0] : '';
final Mode mode = Mode.values[input.readByte()];
bool secure = input.readBool();
late ProtocolVersion protocol;
late EncodingVersion encoding;
// Weired code from ReferenceFactory.cpp:582
// not work
// if (input.encoding != encoding_1_0) {
// protocol = input.readProtocol();
// encoding = input.readEncoding();
// } else {
// protocol = protocol_1_0;
// encoding = encoding_1_0;
// }
// Change to:
protocol = input.readProtocol();
encoding = input.readEncoding();
assert(encoding == encoding_1_1);
protocol = protocol_1_0;
encoding = encoding_1_0;
final endpointList = <IPEndpoint>[];
String? adapterId;
int sz = input.readSize();
if (sz > 0) {
while (sz-- != 0) {
Endpoint? endpoint = EndpointFactory().read(input);
if (endpoint != null) {
endpointList.add(endpoint as IPEndpoint);
}
}
} else {
adapterId = input.readString();
}
final r = RoutableReference(
instance: instance,
mode: mode,
secure: secure,
identity: identity,
context: {},
facet: facet,
protocol: protocol,
encoding: encoding,
endpointList: endpointList,
adapterId: adapterId ?? '',
);
referenceList.add(r);
return r;
}