Fawkes API
Fawkes Development Version
|
FUSE client. More...
#include <>>
Public Member Functions | |
FuseClient (const char *hostname, unsigned short int port, FuseClientHandler *handler) | |
Constructor. More... | |
virtual | ~FuseClient () |
Destructor. More... | |
void | connect () |
Connect. More... | |
void | disconnect () |
Disconnect. More... | |
void | enqueue (FuseNetworkMessage *m) |
Enqueue message. More... | |
void | enqueue (FUSE_message_type_t type, void *payload, size_t payload_size) |
Enqueue message. More... | |
void | enqueue (FUSE_message_type_t type) |
Enqueue message without payload. More... | |
void | enqueue_and_wait (FuseNetworkMessage *message) |
Enqueue message and wait for reply. More... | |
void | enqueue_and_wait (FUSE_message_type_t type, void *payload, size_t payload_size) |
Enqueue message and wait for reply. More... | |
void | enqueue_and_wait (FUSE_message_type_t type) |
Enqueue message without payload and wait for reply. More... | |
void | wait () |
Wait for messages. More... | |
void | wait_greeting () |
Wait for greeting message. More... | |
virtual void | loop () |
Thread loop. More... | |
![]() | |
virtual | ~Thread () |
Virtual destructor. More... | |
virtual void | init () |
Initialize the thread. More... | |
bool | prepare_finalize () |
Prepare finalization. More... | |
virtual bool | prepare_finalize_user () |
Prepare finalization user implementation. More... | |
virtual void | finalize () |
Finalize the thread. More... | |
void | cancel_finalize () |
Cancel finalization. More... | |
void | start (bool wait=true) |
Call this method to start the thread. More... | |
void | cancel () |
Cancel a thread. More... | |
void | join () |
Join the thread. More... | |
void | detach () |
Detach the thread. More... | |
void | kill (int sig) |
Send signal to a thread. More... | |
bool | operator== (const Thread &thread) |
Check if two threads are the same. More... | |
void | wakeup () |
Wake up thread. More... | |
void | wakeup (Barrier *barrier) |
Wake up thread and wait for barrier afterwards. More... | |
void | wait_loop_done () |
Wait for the current loop iteration to finish. More... | |
OpMode | opmode () const |
Get operation mode. More... | |
pthread_t | thread_id () const |
Get ID of thread. More... | |
bool | started () const |
Check if thread has been started. More... | |
bool | cancelled () const |
Check if thread has been cancelled. More... | |
bool | detached () const |
Check if thread has been detached. More... | |
bool | running () const |
Check if the thread is running. More... | |
bool | waiting () const |
Check if thread is currently waiting for wakeup. More... | |
const char * | name () const |
Get name of thread. More... | |
void | set_flags (uint32_t flags) |
Set all flags in one go. More... | |
void | set_flag (uint32_t flag) |
Set flag for the thread. More... | |
void | unset_flag (uint32_t flag) |
Unset flag. More... | |
bool | flagged_bad () const |
Check if FLAG_BAD was set. More... | |
void | set_delete_on_exit (bool del) |
Set whether the thread should be deleted on exit. More... | |
void | set_prepfin_hold (bool hold) |
Hold prepare_finalize(). More... | |
void | add_notification_listener (ThreadNotificationListener *notification_listener) |
Add notification listener. More... | |
void | remove_notification_listener (ThreadNotificationListener *notification_listener) |
Remove notification listener. More... | |
void | notify_of_failed_init () |
Notify of failed init. More... | |
Additional Inherited Members | |
![]() | |
enum | OpMode { OPMODE_CONTINUOUS, OPMODE_WAITFORWAKEUP } |
Thread operation mode. More... | |
enum | CancelState { CANCEL_ENABLED, CANCEL_DISABLED } |
Cancel state. More... | |
![]() | |
static Thread * | current_thread () |
Get the Thread instance of the currently running thread. More... | |
static Thread * | current_thread_noexc () throw () |
Similar to current_thread, but does never throw an exception. More... | |
static pthread_t | current_thread_id () |
Get the ID of the currently running thread. More... | |
static void | init_main () |
Initialize Thread wrapper instance for main thread. More... | |
static void | destroy_main () |
Destroy main thread wrapper instance. More... | |
static void | set_cancel_state (CancelState new_state, CancelState *old_state=0) |
Set the cancel state of the current thread. More... | |
![]() | |
static const unsigned int | FLAG_BAD = 0x00000001 |
Standard thread flag: "thread is bad". More... | |
![]() | |
Thread (const char *name) | |
Constructor. More... | |
Thread (const char *name, OpMode op_mode) | |
Constructor. More... | |
void | exit () |
Exit the thread. More... | |
void | test_cancel () |
Set cancellation point. More... | |
void | yield () |
Yield the processor to another thread or process. More... | |
virtual void | run () |
Code to execute in the thread. More... | |
void | set_opmode (OpMode op_mode) |
Set operation mode. More... | |
void | set_prepfin_conc_loop (bool concurrent=true) |
Set concurrent execution of prepare_finalize() and loop(). More... | |
void | set_coalesce_wakeups (bool coalesce=true) |
Set wakeup coalescing. More... | |
void | set_name (const char *format,...) |
Set name of thread. More... | |
virtual void | once () |
Execute an action exactly once. More... | |
bool | wakeup_pending () |
Check if wakeups are pending. More... | |
![]() | |
bool | finalize_prepared |
True if prepare_finalize() has been called and was not stopped with a cancel_finalize(), false otherwise. More... | |
Mutex * | loop_mutex |
Mutex that is used to protect a call to loop(). More... | |
Mutex * | loopinterrupt_antistarve_mutex |
Mutex to avoid starvation when trying to lock loop_mutex. More... | |
FUSE client.
FUSE is the FireVision protocol to retrieve information, images and lookup tables from vision processes and to send control commands to these systems. The client is used in the retrieving or controlling process.
Definition at line 45 of file fuse_client.h.
firevision::FuseClient::FuseClient | ( | const char * | hostname, |
unsigned short int | port, | ||
FuseClientHandler * | handler | ||
) |
Constructor.
hostname | host to connect to |
port | port to connect to |
handler | client handler to handle incoming data |
Definition at line 64 of file fuse_client.cpp.
|
virtual |
void firevision::FuseClient::connect | ( | ) |
Connect.
Definition at line 119 of file fuse_client.cpp.
References fawkes::Socket::connect(), and firevision::FUSE_greeting_message_t::version.
Referenced by firevision::FuseImageListWidget::get_selected_image(), and FuseTransferWidget::set_remote_lut_list_trv().
void firevision::FuseClient::disconnect | ( | ) |
Disconnect.
Definition at line 132 of file fuse_client.cpp.
References fawkes::Socket::available(), fawkes::Socket::close(), firevision::FuseClientHandler::fuse_connection_died(), fawkes::Mutex::lock(), fawkes::Exception::print_trace(), firevision::FuseNetworkTransceiver::recv(), firevision::FuseNetworkTransceiver::send(), fawkes::Mutex::unlock(), and fawkes::WaitCondition::wake_all().
Referenced by firevision::FuseImageListWidget::get_selected_image(), FuseTransferWidget::set_remote_lut_list_trv(), firevision::FuseImageListWidget::~FuseImageListWidget(), and FuseTransferWidget::~FuseTransferWidget().
void firevision::FuseClient::enqueue | ( | FuseNetworkMessage * | m | ) |
Enqueue message.
This method takes ownership of the passed message. You must explicitly reference it before enqueing if you want to use it afterwards.
m | message to enqueue |
Definition at line 184 of file fuse_client.cpp.
References fawkes::LockQueue< Type >::push_locked().
Referenced by FuseTransferWidget::set_remote_lut_list_trv().
void firevision::FuseClient::enqueue | ( | FUSE_message_type_t | type, |
void * | payload, | ||
size_t | payload_size | ||
) |
Enqueue message.
type | type of message |
payload | payload of message |
payload_size | size of payload |
Definition at line 196 of file fuse_client.cpp.
References fawkes::LockQueue< Type >::push_locked().
void firevision::FuseClient::enqueue | ( | FUSE_message_type_t | type | ) |
Enqueue message without payload.
type | type of message |
Definition at line 207 of file fuse_client.cpp.
References fawkes::LockQueue< Type >::push_locked().
void firevision::FuseClient::enqueue_and_wait | ( | FuseNetworkMessage * | m | ) |
Enqueue message and wait for reply.
The wait happens atomically, use this to avoid race conditions. This method takes ownership of the passed message. You must explicitly reference it before enqueing if you want to use it afterwards.
m | message to enqueue |
Definition at line 221 of file fuse_client.cpp.
References fawkes::Mutex::lock(), fawkes::LockQueue< Type >::push_locked(), fawkes::Mutex::unlock(), and fawkes::WaitCondition::wait().
void firevision::FuseClient::enqueue_and_wait | ( | FUSE_message_type_t | type, |
void * | payload, | ||
size_t | payload_size | ||
) |
Enqueue message and wait for reply.
The wait happens atomically, use this to avoid race conditions.
type | type of message |
payload | payload of message |
payload_size | size of payload |
Definition at line 237 of file fuse_client.cpp.
References fawkes::Mutex::lock(), fawkes::LockQueue< Type >::push_locked(), fawkes::Mutex::unlock(), and fawkes::WaitCondition::wait().
void firevision::FuseClient::enqueue_and_wait | ( | FUSE_message_type_t | type | ) |
Enqueue message without payload and wait for reply.
The wait happens atomically, use this to avoid race conditions.
type | type of message |
Definition at line 252 of file fuse_client.cpp.
References fawkes::Mutex::lock(), fawkes::Socket::poll(), fawkes::LockQueue< Type >::push_locked(), fawkes::Mutex::unlock(), and fawkes::WaitCondition::wait().
|
virtual |
Thread loop.
Sends enqueued messages and reads incoming messages off the network.
Reimplemented from fawkes::Thread.
Definition at line 282 of file fuse_client.cpp.
References firevision::FuseClientHandler::fuse_connection_established(), firevision::FuseClientHandler::fuse_inbound_received(), firevision::FuseClientHandler::fuse_invalid_server_version(), fawkes::Mutex::lock(), fawkes::LockQueue< Type >::lock(), firevision::FuseNetworkMessage::msg(), firevision::FuseNetworkMessage::type(), fawkes::Mutex::unlock(), fawkes::LockQueue< Type >::unlock(), fawkes::RefCount::unref(), firevision::FUSE_greeting_message_t::version, and fawkes::WaitCondition::wake_all().
void firevision::FuseClient::wait | ( | ) |
Wait for messages.
This will wait for messages to arrive. The calling thread is blocked until messages are available.
Definition at line 338 of file fuse_client.cpp.
References fawkes::Mutex::lock(), fawkes::Mutex::unlock(), and fawkes::WaitCondition::wait().
void firevision::FuseClient::wait_greeting | ( | ) |
Wait for greeting message.
This method will wait for the greeting message to arrive. Make sure that you called connect() before waiting or call it concurrently in another thread. The calling thread will be blocked until the message has been received. If the message has already been received this method will return immediately. Thus it is safe to call this at any time without risking a race condition.
Definition at line 354 of file fuse_client.cpp.
References fawkes::Mutex::lock(), fawkes::Mutex::unlock(), and fawkes::WaitCondition::wait().