Packages

  • package root
    Definition Classes
    root
  • package com
    Definition Classes
    root
  • package twitter

    Start with com.twitter.finagle.

    Definition Classes
    com
  • package finagle

    Finagle is an extensible RPC system.

    Finagle is an extensible RPC system.

    Services are represented by class com.twitter.finagle.Service. Clients make use of com.twitter.finagle.Service objects while servers implement them.

    Finagle contains a number of protocol implementations; each of these implement Client and/or com.twitter.finagle.Server. For example, Finagle's HTTP implementation, com.twitter.finagle.Http (in package finagle-http), exposes both.

    Thus a simple HTTP server is built like this:

    import com.twitter.finagle.{Http, Service}
    import com.twitter.finagle.http.{Request, Response}
    import com.twitter.util.{Await, Future}
    
    val service = new Service[Request, Response] {
      def apply(req: Request): Future[Response] =
        Future.value(Response())
    }
    val server = Http.server.serve(":8080", service)
    Await.ready(server)

    We first define a service to which requests are dispatched. In this case, the service returns immediately with a HTTP 200 OK response, and with no content.

    This service is then served via the Http protocol on TCP port 8080. Finally we wait for the server to stop serving.

    We can now query our web server:

    % curl -D - localhost:8080
    HTTP/1.1 200 OK

    Building an HTTP client is also simple. (Note that type annotations are added for illustration.)

    import com.twitter.finagle.{Http, Service}
    import com.twitter.finagle.http.{Request, Response}
    import com.twitter.util.{Future, Return, Throw}
    
    val client: Service[Request, Response] = Http.client.newService("localhost:8080")
    val f: Future[Response] = client(Request()).respond {
      case Return(rep) =>
        printf("Got HTTP response %s\n", rep)
      case Throw(exc) =>
        printf("Got error %s\n", exc)
    }

    Http.client.newService("localhost:8080") constructs a new com.twitter.finagle.Service instance connected to localhost TCP port 8080. We then issue a HTTP/1.1 GET request to URI "/". The service returns a com.twitter.util.Future representing the result of the operation. We listen to this future, printing an appropriate message when the response arrives.

    The Finagle homepage contains useful documentation and resources for using Finagle.

    Definition Classes
    twitter
  • package postgresql
    Definition Classes
    finagle
  • package machine
    Definition Classes
    postgresql
  • package transport
    Definition Classes
    postgresql
  • package types
    Definition Classes
    postgresql
  • Json
  • Kind
  • PgDate
  • PgNumeric
  • PgTime
  • PgType
  • ValueReads
  • ValueWrites

package types

Ordering
  1. Alphabetic
Visibility
  1. Public
  2. Protected

Type Members

  1. case class Json(value: Buf, charset: Charset) extends Product with Serializable

    A simple wrapper for json data (either JSON or JSONB).

    A simple wrapper for json data (either JSON or JSONB).

    This is meant to allow json libraries to parse out json without incurring the cost of going through its String representation.

    Most libraries should be able to extract their AST from this, but care must be taken in regards to the character set.

  2. sealed trait Kind extends AnyRef
  3. case class PgType(name: String, oid: Oid, kind: Kind) extends Product with Serializable
  4. trait ValueReads[T] extends AnyRef

    Typeclass for decoding wire values to Scala/Java types.

    Typeclass for decoding wire values to Scala/Java types.

    Postgres has its own type system, so the mapping of postgres types to scala types is not 1:1. Furthermore, postgres allows creating custom types (i.e.: commonly enums, but any arbitrary type can effectively be created) which also require their own mapping to scala types.

    The following built-in types and their corresponding scala / java types are provided (read this table as "Postgres Type X can be read into Scala / Java Type Y"):

    Postgres Type

    Scala / Java Type

    BIGINT (int8)

    Long

    BOOL

    Boolean

    BYTEA (byte[])

    Buf

    CHARACTER(n)

    String

    DATE (date)

    java.time.LocalDate

    DOUBLE (float8)

    Double

    INET

    Inet (java.net.InetAddress and a subnet)

    INTEGER (int, int4)

    Int and Long

    JSON

    String or Json

    JSONB

    Json

    NUMERIC (decimal)

    BigDecimal

    REAL (float4)

    Float and Double

    SMALLINT (int2)

    Short, Int and Long. As well as Byte (bounds are checked), since Postgres doesn't have int1.

    TEXT

    String

    TIMESTAMP

    java.time.Instant

    TIMESTAMP WITH TIME ZONE

    java.time.Instant

    UUID

    java.util.UUID

    VARCHAR

    String

    Note

    numeric types don't have the same correspondence for reading and writing.

    See also

    ValueWrites

    PgType

  5. trait ValueWrites[T] extends AnyRef

    Typeclass for encoding Scala/Java types to Postgres wire values.

    Typeclass for encoding Scala/Java types to Postgres wire values.

    Postgres has its own type system, so the mapping of postgres types to scala types is not 1:1. Furthermore, postgres allows creating custom types (i.e.: commonly enums, but any arbitrary type can effectively be created) which also require their own mapping to scala types.

    The following built-in types and their corresponding scala / java types are provided * (read this table as "Postgres Type X can be written from Scala / Java Type Y"):

    Postgres Type

    Scala / Java Type

    BIGINT (int8)

    Long, Int, Short, Byte

    BOOL

    Boolean

    BYTEA (byte[])

    Buf

    CHARACTER(n)

    String

    DATE (date)

    java.time.LocalDate

    DOUBLE (float8)

    Double, Float

    INET

    Inet (java.net.InetAddress and a subnet)

    INTEGER (int, int4)

    Int, Short, Byte

    JSON

    String or Json

    JSONB

    Json

    NUMERIC (decimal)

    BigDecimal

    REAL (float4)

    Float

    SMALLINT (int2)

    Short and Byte

    TEXT

    String

    TIMESTAMP

    java.time.Instant

    TIMESTAMP WITH TIME ZONE

    java.time.Instant

    UUID

    java.util.UUID

    VARCHAR

    String

    Note

    numeric types don't have the same correspondence for reading and writing.

    See also

    ValueReads

    PgType

Value Members

  1. object Kind
  2. object PgDate

    Some utilities to deal with Postgres' internal date representations and boundaries.

  3. object PgNumeric

    Some utilities to deal with Postgres' internal numeric representation.

  4. object PgTime

    Some utilities to deal with Postgres' internal timestamp representations and boundaries.

  5. object PgType extends Serializable
  6. object ValueReads
  7. object ValueWrites

Ungrouped