Skip to content

Instantly share code, notes, and snippets.

@mariusae
Created October 24, 2011 17:20
Show Gist options
  • Save mariusae/1309564 to your computer and use it in GitHub Desktop.
Save mariusae/1309564 to your computer and use it in GitHub Desktop.
#!/bin/sh
exec runscala -dfinagle/finagle-core -dfinagle/finagle-ostrich4 -dfinagle/finagle-http "$0" "$@"
!#
import java.net.InetSocketAddress
import com.twitter.finagle._
import com.twitter.finagle.builder._
import com.twitter.finagle.http._
import com.twitter.finagle.stats.OstrichStatsReceiver
import org.jboss.netty.handler.codec.http._
import org.jboss.netty.buffer.ChannelBuffers
import org.jboss.netty.handler.codec.http.HttpResponseStatus._
import com.twitter.ostrich.admin.{AdminHttpService, RuntimeEnvironment}
import com.twitter.conversions.time._
import com.twitter.util.{Duration, Future, Promise}
import com.twitter.util.JavaTimer
val timer = new JavaTimer
/* report to port 9901 */
val admin = new AdminHttpService(
9901/*port*/, 123/*backlog*/,
RuntimeEnvironment(this, Array()))
admin.start()
object Server extends Service[HttpRequest, HttpResponse] {
def apply(request: HttpRequest): Future[HttpResponse] = {
timer.doLater(5.milliseconds) {
val res = new DefaultHttpResponse(
HttpVersion.HTTP_1_1, OK)
val hello = "hello world"
res.setContent(ChannelBuffers.wrappedBuffer(hello.getBytes))
res.setHeader("Content-Length", hello.size)
res
}
}
}
val log = {
import java.util.logging
val log = logging.Logger.getLogger("")
log.getHandlers foreach { log.removeHandler(_) }
val handler = new logging.ConsoleHandler
handler.setFormatter(new logging.Formatter {
def format(r: logging.LogRecord) = {
val level = r.getLevel.toString take 1
"%s %s\n".format(level, r.getMessage)
}
})
log.addHandler(handler)
log
}
val addr = new InetSocketAddress(8080)
val server = ServerBuilder()
.codec(Http())
.bindTo(addr)
.readTimeout(30.seconds)
.name("www")
.logger(log)
.build(Server)
log.info("Serving..")
Thread.sleep(10<<20)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment