Skip to content

Instantly share code, notes, and snippets.

@Centaur
Created December 23, 2012 13:28
Show Gist options
  • Save Centaur/4363420 to your computer and use it in GitHub Desktop.
Save Centaur/4363420 to your computer and use it in GitHub Desktop.
sealed trait CompletionMagnet[T] {
type Result
def complete(v: T): Result
}
implicit def statudObjectHasACompletionMagnet[T : Marshaller](tupl: (StatusCode, T)) = new CompletionMagnet[(StatusCode, T)]{
override type Result = Unit
override def complete(v: (StatusCode, T)) = ???
}
implicit def httpResponseFutureHasACompletionMagnet(future: Future[HttpResponse]) = new CompletionMagnet[Future[HttpResponse]]{
override type Result = Int
override def complete(v: Future[HttpResponse]): Int = ???
}
implicit def statusCodeFutureHasACompletionMagnet(future: Future[StatusCode]) = new CompletionMagnet[Future[HttpResponse]]{
override type Result = Int
override def complete(v: Future[StatusCode]) = ???
}
def complete[X](v : X)(implicit magnet: CompletionMagnet[X]): magnet.Result = magnet.complete(v)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment