sendMessage method
Implementation
Object sendMessage(Message msg) {
if (msg is Call) {
_callRequests[msg.requestID] = msg.requestID;
return _serializer.serialize(msg);
} else if (msg is Register) {
_registerRequests[msg.requestID] = msg.requestID;
return _serializer.serialize(msg);
} else if (msg is UnRegister) {
_unregisterRequests[msg.requestID] = msg.registrationID;
return _serializer.serialize(msg);
} else if (msg is Yield) {
if (!_invocationRequests.containsKey(msg.requestID)) {
throw ArgumentError("cannot yield for unknown invocation request");
}
_invocationRequests.remove(msg.requestID);
return _serializer.serialize(msg);
} else if (msg is Publish) {
if (msg.options.containsKey("acknowledge") && msg.options["acknowledge"]) {
_publishRequests[msg.requestID] = msg.requestID;
}
return _serializer.serialize(msg);
} else if (msg is Subscribe) {
_subscribeRequests[msg.requestID] = msg.requestID;
return _serializer.serialize(msg);
} else if (msg is UnSubscribe) {
_unsubscribeRequests[msg.requestID] = msg.subscriptionID;
return _serializer.serialize(msg);
} else if (msg is Error) {
if (msg.msgType != Invocation.id) {
throw ArgumentError("send only supported for invocation error");
}
var data = _serializer.serialize(msg);
_invocationRequests.remove(msg.requestID);
return data;
}
throw ArgumentError("unknown message ${msg.runtimeType}");
}