Documentation Home >> Headers >> <jss/actor.hpp> Header >> jss::actor >> jss::actor::receive static member function

The receive static member function allows you to receive a message sent to the current actor.

unspecified-message-receiver receive();

class unspecified-message-receiver
    // all constructors are private

    template<typename MsgType,typedef HandlerFunc>
    another-unspecified-message-receiver match(HandlerFunc&& func);


Constructs a message-receiving object of unspecified type for the current actor that implements the specified interface for the unspecified-message-receiver described above.

Calling match() on a receiver adds the specified MsgType to the list of handled messages, and registers the specified handler to be called when a message of that type is received. The specified handler must be a function or a callable object such that func(msg) is a valid expression, where msg is an instance of the specified MsgType.

Since match() returns another message receiver type, calls to match() may be chained.

e.g. jss::actor::receive() .match<MessageType1>(handleType1) .match<MessageType2>([](MessageType2 msg){ do_something();}) .match<MessageType3>(Type3Handler());

The destructor of the last message receiver from a given receive() call will block the current thread until a message that matches the set of message types specified in the chained calls to match() or a jss::stop_actor has been received. Any messages of other types received will be discarded. Once a message has been received then the corresponding handler will be invoked, and control returned to the function that called receive() (unless the handler threw an exception).


jss::no_actor if the current thread is not running an actor. jss::stop_actor if a jss::stop_actor message has been received. Any exceptions thrown by the message handlers.


The completion of the call to jss::actor::send() that posted a message synchronizes-with a call to receive() that receives the posted message.


#include <jss/actor.hpp>

See Also