Lift Web Framework

We're working on your job... it's 0% complete

Here's the Lift CometActor code:

// A CometActor that keeps the user updated
class LongTime extends CometActor {
  private var url: Box[String] = Empty
  private var progress: Int = 0

  // a CometActor that has not been displayed for
  // 2 minutes is destroyed
  override def lifespan: Box[TimeSpan] = Full(2 minutes)

  // get messages from the ThingBuilder
  override def highPriority = {
    case BuildStatus(p, Empty) =>
      this.progress = p
      reRender(false)

    case BuildStatus(_, Full(u)) =>
      url = Full(u)
      progress = 100
      reRender(false)
      partialUpdate(RedirectTo(u))
  }

  // start the job
  override def localSetup() {
    ThingBuilder ! this
    super.localSetup()
  }

  // display the progress or a link to the result
  def render =
  url match {
    case Full(where) =>
      <span>Your job is complete.  <a href={where}>Click Me</a></span>
    case _ =>
      <span>We're working on your job... it's {progress}% complete</span>
  }  
}

Lift is Copyright 2007-2010 WorldWide Conferencing, LLC. Distributed under an Apache 2.0 License.
Lift version 2.3 built on Tue Apr 05 13:24:00 PDT 2011.
Stats: Total Memory: 520,224,768 Free Memory: 466,837,624 Open Sessions: 137
Updated At: Sat Feb 04 09:43:52 PST 2012 Started At: Thu Jul 07 11:17:57 PDT 2011