|
Compounds |
| class | arg_stream |
| struct | data_passer |
| | This struct is used to propagate the data between the various levels of abstraction in the determinant calculation module. More...
|
| struct | file_error |
| | file_error is an exception object thrown whenever there is an error in opening the input file data.dat. More...
|
| class | host_error |
| | This exception is thrown whenever there is a host name lookup error. More...
|
| class | Mutex |
| class | node_manager |
| | The Node manager is responsible for effectively and correctly maintaining the list of all clients currently connected to the master after the server has recognized such clients and has accepted their connections. More...
|
| class | packet_error |
| | packet_error is an exception object thrown whenever there is an error in sending/receiving a packet across the network. This is an irrecoverable error presently. More...
|
| struct | parse_error |
| | parse_error is an exception object thrown whenever there is an error in parsing the input file suggesting that there is an error in the input file data.dat More...
|
| struct | pkt_header |
| | This represents the data type for the packet header, which is the first piece of data whenever any packet is sent across the network between the client and server. More...
|
| class | port_error |
| | This exception is thrown whenever a socket fails to bind to particular port either because that port does not exist, or it's already being bound by someone else, or for some other reason. More...
|
| class | pthr_lock |
| | This is a thin wrapper around the pthread mutex API. More...
|
| struct | server_data |
| | This struct is used to propagate the data between the various levels of abstraction in the server's threaded mechanism. More...
|
| class | socket |
| | This class is a thin wrapper around the standard UNIX socket interface. More...
|
| class | socket_error |
| | This exception is the base class for 2 other socket errors: host_error, and port_error. More...
|
| class | timer |
| | This is a thin wrapper around the UNIX timer API. More...
|
Typedefs |
typedef std::vector< std::vector<
double > > | matrix_t |
| | The matrix data type.
|
Functions |
| void | atomic_make_zero (int *_flag) |
| void | atomic_wait_till_not_zero (int *_flag) |
| void * | client (void *remote_ip) |
| | The client starts whenever we start a client which tries to connect to a serever listening on a specified port number.
|
| void | replace_column (eqn_cruncher::matrix_t &mat, std::vector< double > const &rhs, int col_no) |
| | Replace the column number specified by the parameter col_no in the matrix mat with the column matrix rhs.
|
| void * | store_result (double *dptr, eqn_cruncher::socket s) |
| | This procedure basically waits until the client on the other side of the socket 's' has sent the result back to the caller, and then stores this computed result back into the result buffer.
|
| void * | eval_determinant_remote (void *vptr) |
| | This procedure evaluates the determinant of a square matrix remotely, and places the result(value of the determinant) in the buffer provided.
|
| double | determinant (eqn_cruncher::matrix_t const &_m) |
| | Look ma! I don't know how to calculate the determinant for a matrix, but I can still find the determinant for an nXn Matrix.
|
| void * | replace_and_remote_eval (void *vptr) |
| | Responsible for replacing a column in the matrix, and calling the remote determinant evaluation procedure.
|
| void * | replace_and_local_eval (void *vptr) |
| | Responsible for replacing a column in the matrix, and calling the remote determinant evaluation procedure.
|
| void | eval_variables (eqn_cruncher::matrix_t const &mat, std::vector< double > const &rhs, std::vector< double > &result) |
| | The mother procedure! This actually uses the other procedures to calculate the values of the individial variables.
|
| void | eat_ws (std::istream &in) |
| | Eats upto the next non-whitespace character in the input stream(in) passed.
|
| std::string | suffix_from_number (unsigned int num) |
| | Returns the suffix of the number when written in english.
|
| void | parse_file (std::string const &file_name, std::vector< std::string > &var_list, matrix_t &mat, std::vector< double > &rhs_list) |
| | This function is used to parse the input file, and extract the equations and the various coefficients, variable names, and constants from the equations, so that the later stages can properly act on them.
|
| void | process_args (eqn_cruncher::arg_stream &as) |
| void * | start_nms (void *vptr) |
| | This function starts the Node mamager's server, which is responsible for listening continuouslty for new connections from new clients that log on to the network, and wish to connect to the server on the specified port number.
|
| void | server (pthread_t *pthr, eqn_cruncher::server_data *psd) |
| | This is the function that is called from the main() function, and is responsible for setting up the server thread.
|
Variables |
| eqn_cruncher::node_manager | nm |
| | The globally shared Node manager object. This is the object used by every module in this application.
|
| std::ofstream | rlog |
| | The global logger object output stream to which the data is written.
|
| unsigned int | client_port |
| | The client port number.
|
| unsigned int | server_port |
| | The server port number.
|