Base class which talks to the server and sends Action objects back to the DocumentThread.
ComputeThread is the base class which takes care of doing actual computations with the cells in a document. It handles talking to the server backend. It knows how to pass cells to the server and ask them to be executed. Results are reported back to the GUI by putting ActionBase objects onto its todo stack. ComputeThread never directly modifies the document tree.
#include <ComputeThread.hh>
|
| ComputeThread (int server_port=0, std::string token="", std::string ip_address="127.0.0.1") |
| If the ComputeThread is constructed with a null pointer to the gui, there will be no gui updates, just DTree updates. More...
|
|
| ComputeThread (const ComputeThread &)=delete |
|
| ~ComputeThread () |
|
void | set_master (GUIBase *, DocumentThread *) |
| Determine the objects that this compute thread should be talking to. More...
|
|
void | run () |
| Main entry point, which will connect to the server and then start an event loop to handle communication with the server. More...
|
|
void | execute_cell (DTree::iterator) |
| In order to execute code on the server, call the following from the GUI thread. More...
|
|
void | execute_interactive (uint64_t id, const std::string &code) |
|
void | stop () |
| Stop the current cell execution on the server and remove all other cells from the run queue as well. More...
|
|
void | restart_kernel () |
| Restart the kernel. More...
|
|
bool | complete (DTree::iterator, int pos, int alternative) |
| Request completion of a string. More...
|
|
int | number_of_cells_executing (void) const |
|
void | terminate () |
| Terminate the compute thread, in preparation for shutting down the client altogether. More...
|
|
bool | kernel_is_connected () const |
| Return the status of the connection to the kernel. More...
|
|
◆ ComputeThread() [1/2]
ComputeThread::ComputeThread |
( |
int |
server_port = 0 , |
|
|
std::string |
token = "" , |
|
|
std::string |
ip_address = "127.0.0.1" |
|
) |
| |
If the ComputeThread is constructed with a null pointer to the gui, there will be no gui updates, just DTree updates.
◆ ComputeThread() [2/2]
◆ ~ComputeThread()
ComputeThread::~ComputeThread |
( |
| ) |
|
◆ all_cells_nonrunning()
void ComputeThread::all_cells_nonrunning |
( |
| ) |
|
|
private |
Set all cells to be non-running (e.g.
after a kernel failure) and report the status of each cell to the GUI.
◆ cell_finished_running()
◆ complete()
bool ComputeThread::complete |
( |
DTree::iterator |
it, |
|
|
int |
pos, |
|
|
int |
alternative |
|
) |
| |
Request completion of a string.
Returns false
if the current cell cannot be completed, in which case the TAB which led to the request should be interpreted literally and used for spacing. The alternative
argument is the serial number of the requested completion, in case there is more than one possible completion.
◆ execute_cell()
void ComputeThread::execute_cell |
( |
DTree::iterator |
it | ) |
|
In order to execute code on the server, call the following from the GUI thread.
This method returns as soon as the request has been put on the network queue. If no communication with the server is necessary, this returns immediately. The ComputeThread will report the result of the computation/processing by adding actions to the DocumentThread owned pending_actions stack, by calling queue_action. It will never modify the cell directly, and will also never modify any other cells in the document tree.
◆ execute_interactive()
void ComputeThread::execute_interactive |
( |
uint64_t |
id, |
|
|
const std::string & |
code |
|
) |
| |
◆ init()
void ComputeThread::init |
( |
| ) |
|
|
private |
◆ kernel_is_connected()
bool ComputeThread::kernel_is_connected |
( |
| ) |
const |
Return the status of the connection to the kernel.
◆ number_of_cells_executing()
int ComputeThread::number_of_cells_executing |
( |
void |
| ) |
const |
◆ on_close()
void ComputeThread::on_close |
( |
websocketpp::connection_hdl |
hdl | ) |
|
|
private |
◆ on_fail()
void ComputeThread::on_fail |
( |
websocketpp::connection_hdl |
hdl | ) |
|
|
private |
◆ on_message()
void ComputeThread::on_message |
( |
websocketpp::connection_hdl |
hdl, |
|
|
message_ptr |
msg |
|
) |
| |
|
private |
◆ on_open()
void ComputeThread::on_open |
( |
websocketpp::connection_hdl |
hdl | ) |
|
|
private |
◆ restart_kernel()
void ComputeThread::restart_kernel |
( |
| ) |
|
◆ run()
void ComputeThread::run |
( |
| ) |
|
Main entry point, which will connect to the server and then start an event loop to handle communication with the server.
Only terminates when the connection drops, so run your GUI on a different thread.
◆ set_master()
Determine the objects that this compute thread should be talking to.
◆ stop()
void ComputeThread::stop |
( |
| ) |
|
Stop the current cell execution on the server and remove all other cells from the run queue as well.
◆ terminate()
void ComputeThread::terminate |
( |
| ) |
|
Terminate the compute thread, in preparation for shutting down the client altogether.
◆ try_connect()
void ComputeThread::try_connect |
( |
| ) |
|
|
private |
◆ try_spawn_server()
void ComputeThread::try_spawn_server |
( |
| ) |
|
|
private |
◆ authentication_token
std::string cadabra::ComputeThread::authentication_token |
|
private |
◆ connection
WSClient::connection_ptr cadabra::ComputeThread::connection |
|
private |
◆ connection_is_open
bool cadabra::ComputeThread::connection_is_open |
|
private |
◆ docthread
◆ forced_server_ip_address
std::string cadabra::ComputeThread::forced_server_ip_address |
|
private |
◆ forced_server_port
int cadabra::ComputeThread::forced_server_port |
|
private |
◆ forced_server_token
std::string cadabra::ComputeThread::forced_server_token |
|
private |
◆ gui
GUIBase* cadabra::ComputeThread::gui |
|
private |
◆ gui_thread_id
std::thread::id cadabra::ComputeThread::gui_thread_id |
|
private |
◆ interactive_cells
std::set<uint64_t> cadabra::ComputeThread::interactive_cells |
|
private |
◆ our_connection_hdl
websocketpp::connection_hdl cadabra::ComputeThread::our_connection_hdl |
|
private |
◆ port
unsigned short cadabra::ComputeThread::port |
|
private |
◆ restarting_kernel
bool cadabra::ComputeThread::restarting_kernel |
|
private |
◆ running_cells
std::map<DataCell::id_t, DTree::iterator> cadabra::ComputeThread::running_cells |
|
private |
◆ server_pid
Glib::Pid cadabra::ComputeThread::server_pid |
|
private |
◆ server_stderr
int cadabra::ComputeThread::server_stderr |
|
private |
◆ server_stdout
int cadabra::ComputeThread::server_stdout |
|
private |
◆ wsclient
WSClient cadabra::ComputeThread::wsclient |
|
private |
The documentation for this class was generated from the following files: