Skip to content

Instantly share code, notes, and snippets.

@momania
momania / gist:653276
Created October 29, 2010 10:14
HeartMonitor using Akka FSM
import akka.actor.{Actor, FSM}
import java.util.concurrent.TimeUnit
sealed trait Health
case object Stale extends Health
case object Alive extends Health
case object Dead extends Health
case object HeartBeat
@momania
momania / gist:661478
Created November 3, 2010 18:28
Akka FSM Goto 10 FTW!
class GotoFsm extends Actor with FSM[Int, Null] {
notifying {
case Transition(_, 10) => println("Goto 10 ftw!")
}
when(0) {
case _ => goto(10) until 5000
}
@momania
momania / gist:674090
Created November 12, 2010 13:41
Akka AMQP RPC example
import akka.amqp.AMQP.{ToBinary, FromBinary}
import rpc.RPC.{RpcClientSerializer, RpcServerSerializer}
import rpc.RPC
import akka.actor.ActorRegistry
object RPCExample {
def main(args: Array[String]) {
// shared between client and server
val connection = AMQP.newConnection()
@momania
momania / gist:700121
Created November 15, 2010 07:09
A to B to C
package actor.actor
import akka.actor.{Actor, FSM}
import java.util.concurrent.TimeUnit
sealed trait ExampleState
case object A extends ExampleState
case object B extends ExampleState
case object C extends ExampleState
@momania
momania / gist:713819
Created November 24, 2010 15:30
Updated HeartMonitor
import akka.actor.{Actor, FSM}
import java.util.concurrent.TimeUnit
sealed trait Health
case object Stale extends Health
case object Alive extends Health
case object Dead extends Health
case object HeartBeat
@momania
momania / gist:715371
Created November 25, 2010 13:15
Simple FSM Lock
package samples.fsm.lock
import java.util.concurrent.TimeUnit
import TimeUnit._
import akka.actor.{ActorRegistry, FSM, Actor}
sealed trait LockState
case object Locked extends LockState
case object Open extends LockState
@momania
momania / gist:858476
Created March 7, 2011 13:05
Akka AMQP Loadbalance
import akka.amqp.AMQP._
import akka.amqp._
import akka.actor._
import java.util.concurrent.{TimeUnit, CountDownLatch}
import util.Random
object LoadBalancingDemo {
def main(args: Array[String]) {
@momania
momania / gist:896062
Created March 31, 2011 09:01
Over engineered Akka FSM scala Swing undecorated dialog using shapes and fading (why? because we can!)
package notification
import com.sun.awt.AWTUtilities
import java.awt.geom.RoundRectangle2D
import org.jdesktop.animation.timing.{TimingTarget, Animator}
import swing._
import event.MouseClicked
import com.efgfp.creditspy.util.GuiUtil
import akka.actor.{FSM, Actor}
import org.jdesktop.animation.timing.Animator.{Direction, RepeatBehavior}
@momania
momania / gist:959172
Created May 6, 2011 15:33
Extractor pattern matching in partial function
object ExtractionTest extends Application {
case object Message
case class Event(event: Any, data: Int)
def partialWithNormalCase: PartialFunction[Event, Int] = {
case Event(Message, 1) => 1
case Event(Message, 2) => 2
}
@momania
momania / MySlf4jEventHandler.scala
Created August 29, 2011 12:05
Single line logging evenhandler
package com.acme.logging
import akka.actor.Actor
import akka.event.EventHandler
import akka.event.slf4j.{Logger, Logging}
class MySlf4jEventHandler extends Actor with Logging {
import EventHandler._
self.id = ID