blob: 63049f201da981332cb31623db107674db5b2459 (
plain) (
tree)
|
|
import scala.collection.mutable.HashMap
object Main {
trait Target { }
trait PushEventContext[EventType] {
def getEvent: EventType
}
trait PushNode[EventType] { }
trait DerivedPushNode[EventType] extends PushNode[EventType] { }
trait HandlerBase[EventType] {
def onEvent(target: Target,
event: EventType,
node: PushNode[EventType],
ctx: PushEventContext[EventType]): Unit
}
val handlers = new HashMap[DerivedPushNode[_], HandlerBase[_]]
object TimerPushService {
private val INSTANCE: TimerPushService = new TimerPushService
def get: TimerPushService = INSTANCE
}
class TimerPushService {
def add[EventType](node: DerivedPushNode[EventType],
context: PushEventContext[EventType]): Unit = {}
def pollEvents[EventType](node: DerivedPushNode[EventType]): List[PushEventContext[EventType]] =
Nil
}
def onTimer(target: Target) {
val pushService = TimerPushService.get
for ((node, handler) <- handlers) {
for (ctx <- pushService.pollEvents(node)) {
handler.onEvent(target, ctx.getEvent, node, ctx)
}
}
}
}
|