Options
All
  • Public
  • Public/Protected
  • All
Menu

Class Context

The execution context of a Handler execution.

When Vert.x provides an event to a handler or calls the start or stop methods of a {@link Verticle}, the execution is associated with a Context.

Usually a context is an *event-loop context* and is tied to a specific event loop thread. So executions for that context always occur on that exact same event loop thread.

In the case of worker verticles and running inline blocking code a worker context will be associated with the execution which will use a thread from the worker thread pool.

When a handler is set by a thread associated with a specific context, the Vert.x will guarantee that when that handler is executed, that execution will be associated with the same context.

If a handler is set by a thread not associated with a context (i.e. a non Vert.x thread). Then a new context will be created for that handler.

In other words, a context is propagated.

This means that when a verticle is deployed, any handlers it sets will be associated with the same context - the context of the verticle.

This means (in the case of a standard verticle) that the verticle code will always be executed with the exact same thread, so you don't have to worry about multi-threaded acccess to the verticle state and you can code your application as single threaded.

This class also allows arbitrary data to be {@link Context#put} and {@link Context#get} on the context so it can be shared easily amongst different handlers of, for example, a verticle instance.

This class also provides {@link Context#runOnContext} which allows an action to be executed asynchronously using the same context.

Hierarchy

  • Context

Index

Methods

config

  • config(): {} | null
  • If the context is associated with a Verticle deployment, this returns the configuration that was specified when the verticle was deployed.

    Returns {} | null

deploymentID

  • deploymentID(): string
  • If the context is associated with a Verticle deployment, this returns the deployment ID of that deployment.

    Returns string

exceptionHandler

  • Set an exception handler called when the context runs an action throwing an uncaught throwable.

    When this handler is called, {@link Vertx#currentContext} will return this context.

    Parameters

    Returns Context

executeBlocking

  • Safely execute some blocking code.

    Executes the blocking code in the handler blockingCodeHandler using a thread from the worker pool.

    When the code is complete the handler resultHandler will be called with the result on the original context (e.g. on the original event loop of the caller).

    A Future instance is passed into blockingCodeHandler. When the blocking code successfully completes, the handler should call the {@link Promise#complete} or {@link Promise#complete} method, or the {@link Promise#fail} method if it failed.

    The blocking code should block for a reasonable amount of time (i.e no more than a few seconds). Long blocking operations or polling operations (i.e a thread that spin in a loop polling events in a blocking fashion) are precluded.

    When the blocking operation lasts more than the 10 seconds, a message will be printed on the console by the blocked thread checker.

    Long blocking operations should use a dedicated thread managed by the application, which can interact with verticles using the event-bus or {@link Context#runOnContext}

    Type parameters

    • T

    Parameters

    Returns PromiseLike<T>

  • Safely execute some blocking code.

    Executes the blocking code in the handler blockingCodeHandler using a thread from the worker pool.

    When the code is complete the handler resultHandler will be called with the result on the original context (e.g. on the original event loop of the caller).

    A Future instance is passed into blockingCodeHandler. When the blocking code successfully completes, the handler should call the {@link Promise#complete} or {@link Promise#complete} method, or the {@link Promise#fail} method if it failed.

    The blocking code should block for a reasonable amount of time (i.e no more than a few seconds). Long blocking operations or polling operations (i.e a thread that spin in a loop polling events in a blocking fashion) are precluded.

    When the blocking operation lasts more than the 10 seconds, a message will be printed on the console by the blocked thread checker.

    Long blocking operations should use a dedicated thread managed by the application, which can interact with verticles using the event-bus or {@link Context#runOnContext}

    Type parameters

    • T

    Parameters

    Returns void

  • Invoke {@link Context#executeBlocking} with order = true.

    Type parameters

    • T

    Parameters

    Returns PromiseLike<T>

  • Invoke {@link Context#executeBlocking} with order = true.

    Type parameters

    • T

    Parameters

    Returns void

get

  • get<T>(key: any): T
  • Get some data from the context.

    Type parameters

    • T

    Parameters

    • key: any

    Returns T

getInstanceCount

  • getInstanceCount(): number
  • Returns number

getLocal

  • getLocal<T>(key: any): T
  • Get some local data from the context.

    Type parameters

    • T

    Parameters

    • key: any

    Returns T

isEventLoopContext

  • isEventLoopContext(): boolean
  • Is the current context an event loop context?

    NOTE! when running blocking code using {@link Vertx#executeBlocking} from a standard (not worker) verticle, the context will still an event loop context and this will return true.

    Returns boolean

isWorkerContext

  • isWorkerContext(): boolean
  • Is the current context a worker context?

    NOTE! when running blocking code using {@link Vertx#executeBlocking} from a standard (not worker) verticle, the context will still an event loop context and this will return false.

    Returns boolean

owner

  • Returns Vertx

processArgs

  • processArgs(): string
  • The process args

    Returns string

put

  • put(key: any, value: any): void
  • Put some data in the context.

    This can be used to share data between different handlers that share a context

    Parameters

    • key: any
    • value: any

    Returns void

putLocal

  • putLocal(key: any, value: any): void
  • Put some local data in the context.

    This can be used to share data between different handlers that share a context

    Parameters

    • key: any
    • value: any

    Returns void

remove

  • remove(key: any): boolean
  • Remove some data from the context.

    Parameters

    • key: any

    Returns boolean

removeLocal

  • removeLocal(key: any): boolean
  • Remove some local data from the context.

    Parameters

    • key: any

    Returns boolean

runOnContext

  • runOnContext(action: ((res: void) => void) | Handler<void>): void
  • Run the specified action asynchronously on the same context, some time after the current execution has completed.

    Parameters

    • action: ((res: void) => void) | Handler<void>

    Returns void

Static isOnEventLoopThread

  • isOnEventLoopThread(): boolean
  • Is the current thread an event thread?

    NOTE! This is not always the same as calling {@link Context#isEventLoopContext}. If you are running blocking code from an event loop context, then this will return false but {@link Context#isEventLoopContext} will return true.

    Returns boolean

Static isOnVertxThread

  • isOnVertxThread(): boolean
  • Is the current thread a Vert.x thread? That's either a worker thread or an event loop thread

    Returns boolean

Static isOnWorkerThread

  • isOnWorkerThread(): boolean
  • Is the current thread a worker thread?

    NOTE! This is not always the same as calling {@link Context#isWorkerContext}. If you are running blocking code from an event loop context, then this will return true but {@link Context#isWorkerContext} will return false.

    Returns boolean

Generated using TypeDoc