newMessageReceived method
PROTECTED: DO NOT USE THIS METHOD UNLESS YOU ARE AN ActiveBrokerInterface !
This method could be used from an implementation of this interface when
it receives a message. It decodes the messageString
, creates a new
message and notifies the subscribed callbacks.
This shouldn't throw anything for safe usage.
Implementation
void newMessageReceived(String messageString) {
try {
final Map<String, dynamic> decodedMessage =
jsonDecode(messageString) as Map<String, dynamic>;
final Message message =
BrokerInterface.transformJsonToMessage(decodedMessage);
if (message is UserMessage) {
_notifyUserMessageReceived(message);
} else if (message is EventMessage) {
_notifyEventMessageReceived(message);
} else if (message is EventSubscriptionRequest) {
_notifyEventSubscriptionRequestReceived(message);
} else if (message is EventSubscriptionResponse) {
_notifyEventSubscriptionResponseReceived(message);
} else if (message is ServiceRequest) {
_notifyServiceRequestReceived(message);
} else if (message is ServiceReply) {
_notifyServiceReplyReceived(message);
} else if (message is GetValueRequest) {
_notifyGetValueRequestReceived(message);
} else if (message is GetValueReply) {
_notifyGetValueReplyReceived(message);
} else {
_notifyInvalidMessageReceived(
messageString, ParseException('unknown message type'));
}
} on TypeError catch (e) {
_notifyInvalidMessageReceived(
messageString, ParseException(e.stackTrace.toString()));
} on InvalidJsonSchemaException catch (e) {
_notifyInvalidMessageReceived(messageString, e);
}
}