register method

void register(
  1. OnMessageReceived onMessage
)

Registers the local port and sets a listener.

An Exception is thrown if the port is already registered.

Implementation

void register(OnMessageReceived onMessage) {
  if (registered) {
    throw Exception('Port $portName is already registered');
  }

  final Stream<dynamic> stream = _manager.registerLocalPort(this);
  _streamSubscription = stream.listen((dynamic event) {
    if (event is Map) {
      final Map<dynamic, dynamic> map = event;
      final dynamic message = map['message'];
      if (map.containsKey('remotePort')) {
        final String remoteAppId = map['remoteAppId'] as String;
        final String remotePort = map['remotePort'] as String;
        final bool trusted = map['trusted'] as bool;
        onMessage(message, RemotePort._(remoteAppId, remotePort, trusted));
      } else {
        onMessage(message);
      }
    }
  });
  _registered = true;
}