All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.twitter.finagle.http.codec.context.HttpDeadlineContext.scala Maven / Gradle / Ivy

package com.twitter.finagle.http.codec.context

import com.twitter.finagle.context.Deadline
import com.twitter.util.{Return, Throw, Time, Try}
import scala.util.control.NonFatal

private object HttpDeadline extends HttpContext {

  type ContextKeyType = Deadline
  val key = Deadline

  def toHeader(deadline: Deadline): String = {
    deadline.timestamp.inNanoseconds + " " + deadline.deadline.inNanoseconds
  }

  def fromHeader(header: String): Try[Deadline] = {
    try {
      val values = header.split(' ')
      val timestamp = values(0).toLong
      val deadline = values(1).toLong

      Return(
        Deadline(Time.fromNanoseconds(timestamp), Time.fromNanoseconds(deadline))
      )
    } catch {
      case NonFatal(e) => Throw(e)
    }
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy