#include <remoteserver.h>


Public Member Functions | |
| RemoteServer (const std::vector< std::string > &dbpaths, int fdin, int fdout, double active_timeout_, double idle_timeout_, bool writable=false) | |
| Construct a RemoteServer. | |
| ~RemoteServer () | |
| Destructor. | |
| void | run () |
| Repeatedly accept messages from the client and process them. | |
| const Xapian::Registry & | get_registry () const |
| Get the registry used for (un)serialisation. | |
| void | set_registry (const Xapian::Registry ®_) |
| Set the registry used for (un)serialisation. | |
Private Member Functions | |
| void | operator= (const RemoteServer &) |
| Don't allow assignment. | |
| RemoteServer (const RemoteServer &) | |
| Don't allow copying. | |
| message_type | get_message (double timeout, std::string &result, message_type required_type=MSG_MAX) |
| Accept a message from the client. | |
| void | send_message (reply_type type, const std::string &message) |
| Send a message to the client. | |
| void | send_message (reply_type type, const std::string &message, double end_time) |
| Send a message to the client, with specific end_time. | |
| void | msg_allterms (const std::string &message) |
| void | msg_document (const std::string &message) |
| void | msg_termexists (const std::string &message) |
| void | msg_collfreq (const std::string &message) |
| void | msg_termfreq (const std::string &message) |
| void | msg_valuestats (const std::string &message) |
| void | msg_keepalive (const std::string &message) |
| void | msg_doclength (const std::string &message) |
| void | msg_query (const std::string &message) |
| void | msg_termlist (const std::string &message) |
| void | msg_postlist (const std::string &message) |
| void | msg_positionlist (const std::string &message) |
| void | msg_writeaccess (const std::string &message) |
| void | msg_reopen (const std::string &message) |
| void | msg_update (const std::string &message) |
| void | msg_commit (const std::string &message) |
| void | msg_cancel (const std::string &message) |
| void | msg_adddocument (const std::string &message) |
| void | msg_deletedocument (const std::string &message) |
| void | msg_deletedocumentterm (const std::string &message) |
| void | msg_replacedocument (const std::string &message) |
| void | msg_replacedocumentterm (const std::string &message) |
| void | msg_getmetadata (const std::string &message) |
| void | msg_openmetadatakeylist (const std::string &message) |
| void | msg_setmetadata (const std::string &message) |
| void | msg_addspelling (const std::string &message) |
| void | msg_removespelling (const std::string &message) |
Private Attributes | |
| Xapian::Database * | db |
| The database we're using. | |
| Xapian::WritableDatabase * | wdb |
| The WritableDatabase we're using, or NULL if we're read-only. | |
| bool | writable |
| Do we support writing? | |
| double | active_timeout |
| Timeout for actions during a conversation. | |
| double | idle_timeout |
| Timeout while waiting for a new action from the client. | |
| Xapian::Registry | reg |
| The registry, which allows unserialisation of user subclasses. | |
Definition at line 36 of file remoteserver.h.
| RemoteServer::RemoteServer | ( | const RemoteServer & | ) | [private] |
Don't allow copying.
| RemoteServer::RemoteServer | ( | const std::vector< std::string > & | dbpaths, | |
| int | fdin, | |||
| int | fdout, | |||
| double | active_timeout_, | |||
| double | idle_timeout_, | |||
| bool | writable = false | |||
| ) |
Construct a RemoteServer.
| dbpaths | The paths to the Xapian databases to use. | |
| fdin | The file descriptor to read from. | |
| fdout | The file descriptor to write to (fdin and fdout may be the same). | |
| active_timeout_ | Timeout for actions during a conversation (specified in seconds). | |
| idle_timeout_ | Timeout while waiting for a new action from the client (specified in seconds). | |
| writable | Should the database be opened for writing? |
Definition at line 47 of file remoteserver.cc.
References Assert, AssertEq, RemoteConnection::context, db, encode_length(), Xapian::Database::get_avlength(), Xapian::Database::get_doccount(), Xapian::Database::get_doclength_lower_bound(), Xapian::Database::get_doclength_upper_bound(), Xapian::Database::get_lastdocid(), Xapian::Database::get_uuid(), Xapian::Database::has_positions(), REPLY_EXCEPTION, REPLY_GREETING, send_message(), serialise_error(), writable, XAPIAN_REMOTE_PROTOCOL_MAJOR_VERSION, and XAPIAN_REMOTE_PROTOCOL_MINOR_VERSION.
| RemoteServer::~RemoteServer | ( | ) |
| message_type RemoteServer::get_message | ( | double | timeout, | |
| std::string & | result, | |||
| message_type | required_type = MSG_MAX | |||
| ) | [private] |
Accept a message from the client.
Definition at line 116 of file remoteserver.cc.
References RealTime::end_time(), MSG_MAX, MSG_SHUTDOWN, and Xapian::Internal::str().
Referenced by msg_query(), and run().
| const Xapian::Registry& RemoteServer::get_registry | ( | ) | const [inline] |
| void RemoteServer::msg_adddocument | ( | const std::string & | message | ) | [private] |
Definition at line 589 of file remoteserver.cc.
References Xapian::WritableDatabase::add_document(), encode_length(), REPLY_ADDDOCUMENT, send_message(), unserialise_document(), and wdb.
Referenced by run().
| void RemoteServer::msg_addspelling | ( | const std::string & | message | ) | [private] |
Definition at line 686 of file remoteserver.cc.
References Xapian::WritableDatabase::add_spelling(), decode_length(), and wdb.
Referenced by run().
| void RemoteServer::msg_allterms | ( | const std::string & | message | ) | [private] |
Definition at line 234 of file remoteserver.cc.
References Xapian::Database::allterms_begin(), Xapian::Database::allterms_end(), db, encode_length(), REPLY_ALLTERMS, REPLY_DONE, and send_message().
Referenced by run().
| void RemoteServer::msg_cancel | ( | const std::string & | message | ) | [private] |
Definition at line 577 of file remoteserver.cc.
References Xapian::WritableDatabase::begin_transaction(), Xapian::WritableDatabase::cancel_transaction(), and wdb.
Referenced by run().
| void RemoteServer::msg_collfreq | ( | const std::string & | message | ) | [private] |
Definition at line 525 of file remoteserver.cc.
References db, encode_length(), Xapian::Database::get_collection_freq(), REPLY_COLLFREQ, and send_message().
Referenced by run().
| void RemoteServer::msg_commit | ( | const std::string & | message | ) | [private] |
Definition at line 566 of file remoteserver.cc.
References Xapian::WritableDatabase::commit(), REPLY_DONE, send_message(), and wdb.
Referenced by run().
| void RemoteServer::msg_deletedocument | ( | const std::string & | message | ) | [private] |
Definition at line 600 of file remoteserver.cc.
References decode_length(), Xapian::WritableDatabase::delete_document(), REPLY_DONE, send_message(), and wdb.
Referenced by run().
| void RemoteServer::msg_deletedocumentterm | ( | const std::string & | message | ) | [private] |
Definition at line 615 of file remoteserver.cc.
References Xapian::WritableDatabase::delete_document(), and wdb.
Referenced by run().
| void RemoteServer::msg_doclength | ( | const std::string & | message | ) | [private] |
Definition at line 557 of file remoteserver.cc.
References db, decode_length(), encode_length(), Xapian::Database::get_doclength(), REPLY_DOCLENGTH, and send_message().
Referenced by run().
| void RemoteServer::msg_document | ( | const std::string & | message | ) | [private] |
Definition at line 491 of file remoteserver.cc.
References db, decode_length(), encode_length(), Xapian::Document::get_data(), Xapian::Database::get_document(), REPLY_DOCDATA, REPLY_DONE, REPLY_VALUE, send_message(), Xapian::Document::values_begin(), and Xapian::Document::values_end().
Referenced by run().
| void RemoteServer::msg_getmetadata | ( | const std::string & | message | ) | [private] |
Definition at line 654 of file remoteserver.cc.
References db, Xapian::Database::get_metadata(), REPLY_METADATA, and send_message().
Referenced by run().
| void RemoteServer::msg_keepalive | ( | const std::string & | message | ) | [private] |
Definition at line 511 of file remoteserver.cc.
References db, Xapian::Database::keep_alive(), REPLY_DONE, and send_message().
Referenced by run().
| void RemoteServer::msg_openmetadatakeylist | ( | const std::string & | message | ) | [private] |
Definition at line 660 of file remoteserver.cc.
References db, Xapian::Database::metadata_keys_begin(), Xapian::Database::metadata_keys_end(), REPLY_DONE, REPLY_METADATAKEYLIST, and send_message().
Referenced by run().
| void RemoteServer::msg_positionlist | ( | const std::string & | message | ) | [private] |
Definition at line 268 of file remoteserver.cc.
References db, decode_length(), encode_length(), Xapian::Database::positionlist_begin(), Xapian::Database::positionlist_end(), REPLY_DONE, REPLY_POSITIONLIST, and send_message().
Referenced by run().
| void RemoteServer::msg_postlist | ( | const std::string & | message | ) | [private] |
Definition at line 288 of file remoteserver.cc.
References db, encode_length(), Xapian::Database::get_collection_freq(), Xapian::Database::get_termfreq(), Xapian::Database::postlist_begin(), Xapian::Database::postlist_end(), REPLY_DONE, REPLY_POSTLISTITEM, REPLY_POSTLISTSTART, and send_message().
Referenced by run().
| void RemoteServer::msg_query | ( | const std::string & | message | ) | [private] |
Definition at line 365 of file remoteserver.cc.
References active_timeout, Xapian::BAD_VALUENO, db, decode_length(), encode_length(), Xapian::Registry::get_match_spy(), get_message(), Xapian::Registry::get_weighting_scheme(), MSG_GETMSET, query(), reg, REPLY_RESULTS, REPLY_STATS, send_message(), serialise_mset(), serialise_stats(), Xapian::Weight::Internal::set_bounds_from_db(), MatchSpyList::spies, Xapian::MatchSpy::unserialise(), Xapian::Weight::unserialise(), Xapian::Query::Internal::unserialise(), unserialise_double(), unserialise_rset(), and unserialise_stats().
Referenced by run().
| void RemoteServer::msg_removespelling | ( | const std::string & | message | ) | [private] |
Definition at line 697 of file remoteserver.cc.
References decode_length(), Xapian::WritableDatabase::remove_spelling(), and wdb.
Referenced by run().
| void RemoteServer::msg_reopen | ( | const std::string & | message | ) | [private] |
Definition at line 325 of file remoteserver.cc.
References db, msg_update(), and Xapian::Database::reopen().
Referenced by run().
| void RemoteServer::msg_replacedocument | ( | const std::string & | message | ) | [private] |
Definition at line 624 of file remoteserver.cc.
References decode_length(), Xapian::WritableDatabase::replace_document(), unserialise_document(), and wdb.
Referenced by run().
| void RemoteServer::msg_replacedocumentterm | ( | const std::string & | message | ) | [private] |
Definition at line 637 of file remoteserver.cc.
References decode_length(), encode_length(), Xapian::WritableDatabase::replace_document(), REPLY_ADDDOCUMENT, send_message(), unserialise_document(), and wdb.
Referenced by run().
| void RemoteServer::msg_setmetadata | ( | const std::string & | message | ) | [private] |
Definition at line 672 of file remoteserver.cc.
References decode_length(), Xapian::WritableDatabase::set_metadata(), and wdb.
Referenced by run().
| void RemoteServer::msg_termexists | ( | const std::string & | message | ) | [private] |
Definition at line 519 of file remoteserver.cc.
References db, REPLY_TERMDOESNTEXIST, REPLY_TERMEXISTS, send_message(), and Xapian::Database::term_exists().
Referenced by run().
| void RemoteServer::msg_termfreq | ( | const std::string & | message | ) | [private] |
Definition at line 531 of file remoteserver.cc.
References db, encode_length(), Xapian::Database::get_termfreq(), REPLY_TERMFREQ, and send_message().
Referenced by run().
| void RemoteServer::msg_termlist | ( | const std::string & | message | ) | [private] |
Definition at line 249 of file remoteserver.cc.
References db, decode_length(), encode_length(), Xapian::Database::get_doclength(), REPLY_DOCLENGTH, REPLY_DONE, REPLY_TERMLIST, send_message(), Xapian::Database::termlist_begin(), and Xapian::Database::termlist_end().
Referenced by run().
| void RemoteServer::msg_update | ( | const std::string & | message | ) | [private] |
Definition at line 332 of file remoteserver.cc.
References db, encode_length(), Xapian::Database::get_avlength(), Xapian::Database::get_doccount(), Xapian::Database::get_doclength_lower_bound(), Xapian::Database::get_doclength_upper_bound(), Xapian::Database::get_lastdocid(), Xapian::Database::get_uuid(), Xapian::Database::has_positions(), REPLY_UPDATE, and send_message().
Referenced by msg_reopen(), msg_writeaccess(), and run().
| void RemoteServer::msg_valuestats | ( | const std::string & | message | ) | [private] |
Definition at line 537 of file remoteserver.cc.
References db, decode_length(), encode_length(), Xapian::Database::get_value_freq(), Xapian::Database::get_value_lower_bound(), Xapian::Database::get_value_upper_bound(), REPLY_VALUESTATS, and send_message().
Referenced by run().
| void RemoteServer::msg_writeaccess | ( | const std::string & | message | ) | [private] |
Definition at line 313 of file remoteserver.cc.
References RemoteConnection::context, db, Xapian::DB_OPEN, msg_update(), wdb, and writable.
Referenced by run().
| void RemoteServer::operator= | ( | const RemoteServer & | ) | [private] |
Don't allow assignment.
| void RemoteServer::run | ( | ) |
Repeatedly accept messages from the client and process them.
The loop continues until either the connection is closed, or a non-Xapian exception is thrown.
Definition at line 150 of file remoteserver.cc.
References get_message(), idle_timeout, msg_adddocument(), msg_addspelling(), msg_allterms(), msg_cancel(), msg_collfreq(), msg_commit(), msg_deletedocument(), msg_deletedocumentterm(), msg_doclength(), msg_document(), msg_getmetadata(), msg_keepalive(), msg_openmetadatakeylist(), msg_positionlist(), msg_postlist(), msg_query(), msg_removespelling(), msg_reopen(), msg_replacedocument(), msg_replacedocumentterm(), msg_setmetadata(), msg_termexists(), msg_termfreq(), msg_termlist(), msg_update(), msg_valuestats(), msg_writeaccess(), REPLY_EXCEPTION, send_message(), serialise_error(), and Xapian::Internal::str().
Referenced by RemoteTcpServer::handle_one_connection(), and main().
| void RemoteServer::send_message | ( | reply_type | type, | |
| const std::string & | message, | |||
| double | end_time | |||
| ) | [inline, private] |
Send a message to the client, with specific end_time.
Definition at line 80 of file remoteserver.h.
References RemoteConnection::send_message().
| void RemoteServer::send_message | ( | reply_type | type, | |
| const std::string & | message | |||
| ) | [private] |
Send a message to the client.
Definition at line 140 of file remoteserver.cc.
References active_timeout, and RealTime::end_time().
Referenced by msg_adddocument(), msg_allterms(), msg_collfreq(), msg_commit(), msg_deletedocument(), msg_doclength(), msg_document(), msg_getmetadata(), msg_keepalive(), msg_openmetadatakeylist(), msg_positionlist(), msg_postlist(), msg_query(), msg_replacedocumentterm(), msg_termexists(), msg_termfreq(), msg_termlist(), msg_update(), msg_valuestats(), RemoteServer(), and run().
| void RemoteServer::set_registry | ( | const Xapian::Registry & | reg_ | ) | [inline] |
double RemoteServer::active_timeout [private] |
Timeout for actions during a conversation.
The timeout is specified in seconds. If the timeout is exceeded then a Xapian::NetworkTimeoutError is thrown.
Definition at line 60 of file remoteserver.h.
Referenced by msg_query(), and send_message().
Xapian::Database* RemoteServer::db [private] |
The database we're using.
If we're writable, this is the same as wdb.
Definition at line 47 of file remoteserver.h.
Referenced by msg_allterms(), msg_collfreq(), msg_doclength(), msg_document(), msg_getmetadata(), msg_keepalive(), msg_openmetadatakeylist(), msg_positionlist(), msg_postlist(), msg_query(), msg_reopen(), msg_termexists(), msg_termfreq(), msg_termlist(), msg_update(), msg_valuestats(), msg_writeaccess(), RemoteServer(), and ~RemoteServer().
double RemoteServer::idle_timeout [private] |
Timeout while waiting for a new action from the client.
The timeout is specified in seconds. If the timeout is exceeded then a Xapian::NetworkTimeoutError is thrown.
Definition at line 67 of file remoteserver.h.
Referenced by run().
Xapian::Registry RemoteServer::reg [private] |
The registry, which allows unserialisation of user subclasses.
Definition at line 70 of file remoteserver.h.
Referenced by msg_query().
Xapian::WritableDatabase* RemoteServer::wdb [private] |
The WritableDatabase we're using, or NULL if we're read-only.
Definition at line 50 of file remoteserver.h.
Referenced by msg_adddocument(), msg_addspelling(), msg_cancel(), msg_commit(), msg_deletedocument(), msg_deletedocumentterm(), msg_removespelling(), msg_replacedocument(), msg_replacedocumentterm(), msg_setmetadata(), and msg_writeaccess().
bool RemoteServer::writable [private] |
Do we support writing?
Definition at line 53 of file remoteserver.h.
Referenced by msg_writeaccess(), and RemoteServer().