Skip to content

Instantly share code, notes, and snippets.

View derekjw's full-sized avatar

Derek Williams derekjw

  • FP Solutions Ltd
  • London, United Kingdom
View GitHub Profile
@derekjw
derekjw / list.rs
Last active August 29, 2015 14:21
use std::sync::Arc;
use std::fmt;
pub struct List<A> {
node: Arc<Node<A>>
}
enum Node<A> {
Cons(A, Arc<Node<A>>),
Nil
package org.example
import se.scalablesolutions.akka.actor.{Actor, ActorRef}
import Actor.{actorOf}
import collection.immutable.Queue
case class State(value: Int)
trait ComputationType
@derekjw
derekjw / gist:645456
Created October 25, 2010 18:38
Extra commands to shutdown Akka and release all references to the ClassLoader
// Shutdown HawtDispatch GlobalQueue
org.fusesource.hawtdispatch.ScalaDispatch.globalQueue.asInstanceOf[org.fusesource.hawtdispatch.internal.GlobalDispatchQueue].shutdown
// Clear Thread.subclassAudits
val tf = classOf[java.lang.Thread].getDeclaredField("subclassAudits")
tf.setAccessible(true)
val subclassAudits = tf.get(null).asInstanceOf[java.util.Map[_,_]]
subclassAudits.synchronized {subclassAudits.clear}
// Clear and reset j.u.l.Level.known (due to Configgy)
@derekjw
derekjw / AkkaConfig.scala
Created January 17, 2011 22:50
Alternate config for Akka using case classes
package akka.config
case class AkkaConfig(
version: String = "1.1-SNAPSHOT",
enabledModules: List[String] = Nil,
timeUnit: String = "seconds",
enableJmx: Boolean = true,
boot: List[String] = Nil,
actor: ActorConfig = ActorConfig(),
stm: StmConfig = StmConfig(),
@derekjw
derekjw / Dispatchers.scala
Created January 17, 2011 22:49
diff of Akka's Dispatchers.scala using case classes for config
diff --git a/akka-actor/src/main/scala/akka/dispatch/Dispatchers.scala b/akka-actor/src/main/scala/akka/dispatch/Dispatchers.scala
index 56dbc11..8b32235 100644
--- a/akka-actor/src/main/scala/akka/dispatch/Dispatchers.scala
+++ b/akka-actor/src/main/scala/akka/dispatch/Dispatchers.scala
@@ -7,10 +7,9 @@ package akka.dispatch
import akka.actor.{Actor, ActorRef}
import akka.actor.newUuid
import akka.config.Config._
+import akka.config.DefaultDispatcherConfig
import akka.util.{Duration, Logging}
@derekjw
derekjw / akka-1.1-SNAPSHOT-scala-2.9.0-SNAPSHOT.diff
Created February 20, 2011 18:33
Patch for building akka 1.1 with scala 2.9.0
diff --git a/project/build.properties b/project/build.properties
index c5b83d7..be1c7fa 100644
--- a/project/build.properties
+++ b/project/build.properties
@@ -5,4 +5,4 @@ project.name=akka
sbt.version=0.7.5.RC0
project.version=1.1-SNAPSHOT
def.scala.version=2.7.7
-build.scala.versions=2.8.1
+build.scala.versions=2.9.0-SNAPSHOT
@derekjw
derekjw / akka-remote-stacktrace.txt
Created March 19, 2011 01:12
Stack trace of deadlocked threads
New I/O server worker #16-2 [WAITING] CPU time: 0:00
java.util.concurrent.locks.ReentrantLock.lock()
akka.util.ReentrantGuard.withGuard(Function0)
akka.remote.netty.NettyRemoteServerModule$class.unregister(NettyRemoteServerModule, ActorRef)
akka.remote.netty.NettyRemoteSupport.unregister(ActorRef)
akka.actor.LocalActorRef$$anonfun$stop$1.apply$mcV$sp()
akka.actor.LocalActorRef$$anonfun$stop$1.apply()
akka.actor.LocalActorRef$$anonfun$stop$1.apply()
akka.util.ReentrantGuard.withGuard(Function0)
akka.actor.LocalActorRef.stop()
@derekjw
derekjw / termsupport.zsh.diff
Created March 27, 2011 18:53
diff to fix oh-my-zsh not working properly with screen
diff --git a/lib/termsupport.zsh b/lib/termsupport.zsh
index e1e5366..3b7b500 100644
--- a/lib/termsupport.zsh
+++ b/lib/termsupport.zsh
@@ -3,7 +3,7 @@
#Fully support screen, iterm, and probably most modern xterm and rxvt
#Limited support for Apple Terminal (Terminal can't set window or tab separately)
function title {
- if [[ "$TERM" == "screen" ]]; then
+ if [[ $TERM =~ "^screen" ]]; then
@derekjw
derekjw / FutureM.scala
Created April 3, 2011 15:18
Akka Future with a Monad result
package akka.examples
import scalaz._
import Scalaz._
import akka.actor._
import akka.dispatch.Future
import akka.scalaz.futures._
@derekjw
derekjw / akka-dataflow.diff
Created April 3, 2011 18:45
Some possible ideas for making dataflow easier with Future
diff --git a/akka-actor/src/main/scala/akka/dispatch/Future.scala b/akka-actor/src/main/scala/akka/dispatch/Future.scala
index cfe64a8..f1fb976 100644
--- a/akka-actor/src/main/scala/akka/dispatch/Future.scala
+++ b/akka-actor/src/main/scala/akka/dispatch/Future.scala
@@ -217,6 +217,15 @@ object Future {
dispatcher.dispatchFuture(FutureInvocation(f.asInstanceOf[CompletableFuture[Any]], () => body))
f
}
+
+ def task(body: => Unit, timeout: Long = Actor.TIMEOUT)(implicit dispatcher: MessageDispatcher): Future[Unit] =