23 #include <core/threading/thread_finalizer.h>
24 #include <plugins/openprs/aspect/openprs_inifin.h>
25 #include <plugins/openprs/aspect/openprs_kernel_manager.h>
26 #include <plugins/openprs/utils/openprs_comm.h>
27 #include <plugins/openprs/utils/openprs_server_proxy.h>
28 #include <utils/time/time.h>
46 kernel_timeout_sec_ = 30.;
60 if (openprs_thread == NULL) {
62 "OpenPRSAspect, but RTTI says it "
69 openprs_thread->openprs_data_paths_,
70 openprs_thread->openprs_gdb_delay_);
74 openprs_kernel_mgr_->mp_host().c_str(),
75 openprs_kernel_mgr_->mp_port(),
76 openprs_server_proxy_);
85 if ((now - &start) > kernel_timeout_sec_) {
87 throw Exception(
"OpenPRSAspect: timeout waiting for kernel startup");
93 "add (! (= @@FAWKES_MOD_DIR \"%s\"))",
96 "add (! (= @@FAWKES_HOST \"%s\"))",
97 fawkes_host_.c_str());
99 "add (! (= @@FAWKES_PORT \"%u\"))",
105 "add (! (= @@FAWKES_MP_NAME %s))",
116 if (openprs_thread == NULL) {
118 "OpenPRSAspect, but RTTI says it "
124 openprs_thread->finalize_OpenPRSAspect();
136 unsigned short fawkes_port,
141 fawkes_host_ = fawkes_host;
142 fawkes_port_ = fawkes_port;
143 openprs_kernel_mgr_ = openprs_kernel_mgr;
144 openprs_server_proxy_ = openprs_server_proxy;
145 openprs_mp_proxy_ = openprs_mp_proxy;
148 openprs_kernel_mgr_->mp_host().c_str(),
149 openprs_kernel_mgr_->mp_port(),
150 openprs_server_proxy_);
160 kernel_timeout_sec_ = timeout_sec;
Aspect initializer/finalizer base class.
Thread cannot be finalized.
Thread cannot be initialized.
Base class for exceptions in Fawkes.
LockPtr<> is a reference-counting shared lockable smartpointer.
void prepare(const std::string &fawkes_host, unsigned short fawkes_port, LockPtr< OpenPRSKernelManager > &openprs_kernel_mgr, OpenPRSServerProxy *openprs_server_proxy, OpenPRSMessagePasserProxy *openprs_mp_proxy)
Prepare OpenPRS aspect initializer.
void set_kernel_timeout(float timeout_sec)
Set timeout for kernel creation.
~OpenPRSAspectIniFin()
Destructor.
OpenPRSAspectIniFin()
Constructor.
virtual void init(Thread *thread)
Initialize thread.
virtual void finalize(Thread *thread)
Finalize thread.
OpenPRS kernel creation and communication aspect.
LockPtr< OpenPRSComm > openprs
OpenPRS kernel communication wrapper.
const Mode openprs_kernel_mode
The kernel mode, can be OPRS or XOPRS (with graphical interface).
const std::string openprs_local_name
The local message passer name for communication.
const std::string openprs_kernel_name
The name of the kernel created for this thread.
OpenPRS communication wrapper.
void transmit_command_f(const std::string &recipient, const char *format,...)
Transmit a command to an OpenPRS kernel.
Proxy for the OpenPRS server communication.
Thread class encapsulation of pthreads.
const char * name() const
Get name of thread.
A class for handling time.
Time & stamp()
Set this time to the current time.
Fawkes library namespace.