Realm
A distributed, event-based tasking library
Loading...
Searching...
No Matches
Realm::IncomingMessageManager Class Reference

#include <activemsg.h>

Inheritance diagram for Realm::IncomingMessageManager:
Collaboration diagram for Realm::IncomingMessageManager:

Classes

struct  Message
 
struct  MessageBlock
 
struct  PairHash
 

Public Types

typedef uintptr_t CallbackData
 
typedef void(* CallbackFnptr) (NodeID, CallbackData, CallbackData)
 

Public Member Functions

 IncomingMessageManager (int _nodes, int _dedicated_threads, Realm::CoreReservationSet &crs)
 
 ~IncomingMessageManager (void)
 
bool add_incoming_message (NodeID sender, ActiveMessageHandlerTable::MessageID msgid, const void *hdr, size_t hdr_size, int hdr_mode, const void *payload, size_t payload_size, int payload_mode, CallbackFnptr callback_fnptr, CallbackData callback_data1, CallbackData callback_data2, TimeLimit work_until)
 
void start_handler_threads (size_t stack_size)
 
void drain_incoming_messages (size_t min_messages_handled)
 
void shutdown (void)
 
virtual bool do_work (TimeLimit work_until)
 
void handler_thread_loop (void)
 
- Public Member Functions inherited from Realm::BackgroundWorkItem
 BackgroundWorkItem (const std::string &_name)
 
virtual ~BackgroundWorkItem (void)
 
void add_to_manager (BackgroundWorkManager *_manager, int _numa_domain=-1, long long _min_timeslice_needed=-1)
 

Protected Member Functions

int get_messages (Message *&head, Message **&tail, bool wait)
 
bool return_messages (int sender, size_t num_handled, Message *head, Message **tail)
 
- Protected Member Functions inherited from Realm::BackgroundWorkItem
void make_active (void)
 

Protected Attributes

int nodes
 
int dedicated_threads
 
int sleeper_count
 
atomic< bool > bgwork_requested
 
int shutdown_flag
 
Message ** heads
 
Message *** tails
 
bool * in_handler
 
int * todo_list
 
int todo_oldest
 
int todo_newest
 
int handlers_active
 
bool drain_pending
 
size_t drain_min_count
 
size_t total_messages_handled
 
Mutex mutex
 
Mutex::CondVar condvar
 
Mutex::CondVar drain_condvar
 
CoreReservationcore_rsrv
 
std::vector< Thread * > handler_threads
 
MessageBlockcurrent_block
 
MessageBlockavailable_blocks
 
size_t num_available_blocks
 
size_t cfg_max_available_blocks
 
size_t cfg_message_block_size
 
std::unordered_map< std::pair< NodeID, uint64_t >, std::unique_ptr< FragmentedMessage >, PairHashfrag_message
 
- Protected Attributes inherited from Realm::BackgroundWorkItem
std::string name
 
BackgroundWorkManagermanager
 
int numa_domain
 
long long min_timeslice_needed
 
unsigned index
 

Member Typedef Documentation

◆ CallbackData

◆ CallbackFnptr

typedef void(* Realm::IncomingMessageManager::CallbackFnptr) (NodeID, CallbackData, CallbackData)

Constructor & Destructor Documentation

◆ IncomingMessageManager()

Realm::IncomingMessageManager::IncomingMessageManager ( int  _nodes,
int  _dedicated_threads,
Realm::CoreReservationSet crs 
)

◆ ~IncomingMessageManager()

Realm::IncomingMessageManager::~IncomingMessageManager ( void  )

Member Function Documentation

◆ add_incoming_message()

bool Realm::IncomingMessageManager::add_incoming_message ( NodeID  sender,
ActiveMessageHandlerTable::MessageID  msgid,
const void *  hdr,
size_t  hdr_size,
int  hdr_mode,
const void *  payload,
size_t  payload_size,
int  payload_mode,
CallbackFnptr  callback_fnptr,
CallbackData  callback_data1,
CallbackData  callback_data2,
TimeLimit  work_until 
)

◆ do_work()

virtual bool Realm::IncomingMessageManager::do_work ( TimeLimit  work_until)
virtual

◆ drain_incoming_messages()

void Realm::IncomingMessageManager::drain_incoming_messages ( size_t  min_messages_handled)

◆ get_messages()

int Realm::IncomingMessageManager::get_messages ( Message *&  head,
Message **&  tail,
bool  wait 
)
protected

◆ handler_thread_loop()

void Realm::IncomingMessageManager::handler_thread_loop ( void  )

◆ return_messages()

bool Realm::IncomingMessageManager::return_messages ( int  sender,
size_t  num_handled,
Message head,
Message **  tail 
)
protected

◆ shutdown()

void Realm::IncomingMessageManager::shutdown ( void  )

◆ start_handler_threads()

void Realm::IncomingMessageManager::start_handler_threads ( size_t  stack_size)

Member Data Documentation

◆ available_blocks

MessageBlock* Realm::IncomingMessageManager::available_blocks
protected

◆ bgwork_requested

atomic<bool> Realm::IncomingMessageManager::bgwork_requested
protected

◆ cfg_max_available_blocks

size_t Realm::IncomingMessageManager::cfg_max_available_blocks
protected

◆ cfg_message_block_size

size_t Realm::IncomingMessageManager::cfg_message_block_size
protected

◆ condvar

Mutex::CondVar Realm::IncomingMessageManager::condvar
protected

◆ core_rsrv

CoreReservation* Realm::IncomingMessageManager::core_rsrv
protected

◆ current_block

MessageBlock* Realm::IncomingMessageManager::current_block
protected

◆ dedicated_threads

int Realm::IncomingMessageManager::dedicated_threads
protected

◆ drain_condvar

Mutex::CondVar Realm::IncomingMessageManager::drain_condvar
protected

◆ drain_min_count

size_t Realm::IncomingMessageManager::drain_min_count
protected

◆ drain_pending

bool Realm::IncomingMessageManager::drain_pending
protected

◆ frag_message

std::unordered_map<std::pair<NodeID, uint64_t>, std::unique_ptr<FragmentedMessage>, PairHash> Realm::IncomingMessageManager::frag_message
protected

◆ handler_threads

std::vector<Thread *> Realm::IncomingMessageManager::handler_threads
protected

◆ handlers_active

int Realm::IncomingMessageManager::handlers_active
protected

◆ heads

Message** Realm::IncomingMessageManager::heads
protected

◆ in_handler

bool* Realm::IncomingMessageManager::in_handler
protected

◆ mutex

Mutex Realm::IncomingMessageManager::mutex
protected

◆ nodes

int Realm::IncomingMessageManager::nodes
protected

◆ num_available_blocks

size_t Realm::IncomingMessageManager::num_available_blocks
protected

◆ shutdown_flag

int Realm::IncomingMessageManager::shutdown_flag
protected

◆ sleeper_count

int Realm::IncomingMessageManager::sleeper_count
protected

◆ tails

Message*** Realm::IncomingMessageManager::tails
protected

◆ todo_list

int* Realm::IncomingMessageManager::todo_list
protected

◆ todo_newest

int Realm::IncomingMessageManager::todo_newest
protected

◆ todo_oldest

int Realm::IncomingMessageManager::todo_oldest
protected

◆ total_messages_handled

size_t Realm::IncomingMessageManager::total_messages_handled
protected

The documentation for this class was generated from the following file: