When extending Observable you need to provide an implementation for topoRank. But it's protected[airstream], which is annoying, because you either need to make that field public (ew), or put your subclass into the com.raquo.airstream package (double ew).
Instead what we should do is make topoRank simply protected (without [airstream]), and offer a private[airstream] def topoRank(o: Observable[_]): Int on the Observable companion object, or something like that.
Now, there are a bunch of other methods which are protected[airstream]and also have a concrete implementation. This includes tryNow, now, onNext, onError, onTry. I'm not sure if you can call them or even override them from your subclass. I think I need to fix those too, similarly to topoRank.
When extending
Observable
you need to provide an implementation fortopoRank
. But it'sprotected[airstream]
, which is annoying, because you either need to make that field public (ew), or put your subclass into thecom.raquo.airstream
package (double ew).Instead what we should do is make
topoRank
simplyprotected
(without[airstream]
), and offer aprivate[airstream] def topoRank(o: Observable[_]): Int
on theObservable
companion object, or something like that.Now, there are a bunch of other methods which are
protected[airstream]
and also have a concrete implementation. This includestryNow
,now
,onNext
,onError
,onTry
. I'm not sure if you can call them or even override them from your subclass. I think I need to fix those too, similarly totopoRank
.