|
Scala example source code file (History.scala)
The History.scala Scala example source code/* __ *\ ** ________ ___ / / ___ Scala API ** ** / __/ __// _ | / / / _ | (c) 2003-2013, LAMP/tPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** \* */ package scala package collection package mutable /** `History[A, B]` objects may subscribe to events of * type `A` published by an object of type `B`. * The history subscriber object records all published events * up to maximum number of `maxHistory` events. * * @author Matthias Zenger * @version 1.0, 08/07/2003 * @since 1 * * @tparam Evt Type of events. * @tparam Pub Type of publishers. */ @SerialVersionUID(5219213543849892588L) class History[Evt, Pub] extends AbstractIterable[(Pub, Evt)] with Subscriber[Evt, Pub] with Iterable[(Pub, Evt)] with Serializable { protected val log: Queue[(Pub, Evt)] = new Queue val maxHistory: Int = 1000 /** Notifies this listener with an event by enqueuing it in the log. * * @param pub the publisher. * @param event the event. */ def notify(pub: Pub, event: Evt) { if (log.length >= maxHistory) log.dequeue() log.enqueue((pub, event)) } override def size: Int = log.length def iterator: Iterator[(Pub, Evt)] = log.iterator def events: Iterator[Evt] = log.iterator map (_._2) def clear() { log.clear() } /** Checks if two history objects are structurally identical. * * @return true, iff both history objects contain the same sequence of elements. */ override def equals(obj: Any): Boolean = obj match { case that: History[_, _] => this.log equals that.log case _ => false } override def hashCode = log.hashCode() } Other Scala source code examplesHere is a short list of links related to this Scala History.scala source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.