handleRxFrame method

void handleRxFrame()

Implementation

void handleRxFrame() {
  final frame = rf;

  if (idListeners.containsKey(frame.id) && idListeners[frame.id] != null) {
    final lst = idListeners[frame.id]!;
    final rv = lst['fn']!(this, frame);
    if (rv == TF.CLOSE || rv == null) {
      idListeners[frame.id] = null;
      return;
    } else if (rv == TF.RENEW) {
      lst['age'] = 0;
      return;
    } else if (rv == TF.STAY) {
      return;
    }
    // TF.NEXT lets another handler process it
  }

  if (typeListeners.containsKey(frame.type) &&
      typeListeners[frame.type] != null) {
    final lst = typeListeners[frame.type]!;
    final rv = lst['fn']!(this, frame);
    if (rv == TF.CLOSE) {
      typeListeners[frame.type] = null;
      return;
    } else if (rv != TF.NEXT) {
      return;
    }
  }

  if (fallbackListener != null) {
    final lst = fallbackListener!;
    final rv = lst['fn']!(this, frame);
    if (rv == TF.CLOSE) {
      fallbackListener = null;
    }
  }
}