Вы можете объединить две наблюдаемые, используя оператор merge()
. Вы можете преобразовать ошибку в onComplete()
, используя onErrorResumeNext()
.
Completable.merge(
observable1
.doOnNext(this::onACompleted)
.doOnError(this::onAFailed)
.onErrorResumeNext( Completable.complete() )
.toCompletable(),
observable2
.doOnNext(this::onBCompleted)
.doOnError(this::onBFailed)
.onErrorResumeNext( Completable.complete() ),
.toCompletable() )
.subscribe( ignore -> {},
error -> {},
() -> { processCompletion(); } );
Несколько вещей знать.
Прежде всего, (насколько я понимаю) установка /proc/sys/net/ipv4/conf/eth1.22/force_igmp_version
к 0 не означает "использование v3", но на самом деле устанавливает его на "автоматический". Я полагаю, что можно установить его на 3 для принуждения его igmp v3 использования.
Однако другая вещь знать состоит в том, что поведение стопки igmp убеждено средой, что оказывается в. Если Ваше поле Linux получает запросы членства igmp v2 от восходящего потока igmp маршрутизатор, то я полагаю, что поведение Linux по умолчанию (как передано под мандат igmp v3 rfc) состоит в том, чтобы использовать только igmp v2 для отчетов.
Насколько я понимаю, когда Вы устанавливаете /proc/sys/net/ipv4/conf/eth1.22/force_igmp_version
к 0 это использует это поведение.