A construct providing latched, asynchronous execution of side-effecting functions.
A construct providing latched, asynchronous execution of side-effecting
functions. com.twitter.finagle.util.AsyncLatch#await does not block, but
the execution of functions passed to it may be delayed. That is, because the
latch guarantees serial, non-concurrent execution, functions passed to
await
may have to wait until both of the following conditions are met:
1. No other functions are being executed 2. The latch's count is zero
Thus, calling com.twitter.finagle.util.AsyncLatch#incr will cause
subsequent functions passed to com.twitter.finagle.util.AsyncLatch#await
to be delayed until the count is decremented to zero. Once the count is zero,
functions are executed in the order that they are provided to await
.
Allows resources to register their handlers to be invoked when service is closing.
A simple, lock-free, non-blocking ring buffer.
A simple, lock-free, non-blocking ring buffer.
This differs from com.twitter.util.RingBuffer in that it is simpler (fewer features), and is fully concurrent (and hence also threadsafe). This should probably be moved into util at some point.
Note: For very high-rate usages, sizing buffers by powers of two may be advantageous.
Caveats: References are kept to old entries until they are overwritten again. You can get around this by storing nullable references (though this would require another allocation for each item).
A base type for something that signals its readiness asynchronously.
A Proc is a process that can receive messages.
A Proc is a process that can receive messages. Procs guarantee that exactly one message is delivered at a time, and that they are delivered in the order received.
They can be thought of as featherweight actors.
Class Ring
implements a hash ring.
Class Ring
implements a hash ring. Given an array mapping
indices to positions, the ring supplies the reverse mapping: to
which index does a position belong?
Its distinguishing feature is that Ring
can pick random
positions in a range. (And then map them to their corresponding
indices.) Ring can also pick without replacement two elements from
a range.
val r = new Ring(Array(1,5,20)) r(0) == 0 r(1) == 0 r(2) == 1 r(5) == 1 r(6) == 2 r(20) == 2 r(21) == 0 // Wraps around; it's a ring!
A random number generator.
A random number generator. Java's divergent interfaces forces our hand here: ThreadLocalRandom does not conform to java.util.Random. We bridge this gap.
Trait showable is a type-class for showing parsable representations of objects.
A registry that allows the registration of a string identifier with a a com.twitter.finagle.Stack and its params.
A registry that allows the registration of a string identifier with a a com.twitter.finagle.Stack and its params. This is especially useful in keeping a process global registry of Finagle clients and servers for dynamic introspection.
Implements a com.twitter.util.Timer in terms of a org.jboss.netty.util.Timer.
Create discrete random variables representing arbitrary distributions.
ExitGuard prevents the process from exiting normally by use of a nondaemon thread whenever there is at least one guarder.
Load a singleton class in the manner of java.util.ServiceLoader.
Load a singleton class in the manner of java.util.ServiceLoader. It is more resilient to varying Java packaging configurations than ServiceLoader.
See Rngs for Java compatible APIs.
Java compatible forwarders.