#include <remote-database.h>
Inheritance diagram for RemoteDatabase:
Public Member Functions | |
RemoteDatabase * | as_remotedatabase () |
Return this pointer as a RemoteDatabase*. | |
void | keep_alive () |
Send a keep-alive message. | |
void | set_query (const Xapian::Query::Internal *query, Xapian::termcount qlen, Xapian::valueno collapse_key, Xapian::Enquire::docid_order order, Xapian::valueno sort_key, Xapian::Enquire::Internal::sort_setting sort_by, bool sort_value_forward, int percent_cutoff, Xapian::weight weight_cutoff, const Xapian::Weight *wtscheme, const Xapian::RSet &omrset) |
Set the query. | |
bool | get_remote_stats (bool nowait, Stats &out) |
Get the Stats from the remote server. | |
void | send_global_stats (Xapian::doccount first, Xapian::doccount maxitems, Xapian::doccount check_at_least, const Stats &stats) |
Send the global Stats to the remote server. | |
void | get_mset (Xapian::MSet &mset) |
Get the MSet from the remote server. | |
TermList * | open_term_list (Xapian::docid did) const |
Get remote termlist. | |
TermList * | open_allterms (const string &prefix) const |
Iterate all terms. | |
bool | has_positions () const |
Check whether this database contains any positional information. | |
void | reopen () |
Reopen the database to the latest available revision. | |
LeafPostList * | open_post_list (const string &tname) const |
Open a posting list. | |
Xapian::doccount | read_post_list (const string &term, NetworkPostList &pl) const |
PositionList * | open_position_list (Xapian::docid did, const string &tname) const |
Open a position list for the given term in the given document. | |
Xapian::Document::Internal * | open_document (Xapian::docid did, bool lazy) const |
Get a remote document. | |
Xapian::doccount | get_doccount () const |
Get the document count. | |
Xapian::docid | get_lastdocid () const |
Get the last used docid. | |
Xapian::doclength | get_avlength () const |
Find out the remote average document length. | |
Xapian::doclength | get_doclength (Xapian::docid did) const |
Get the length of a given document. | |
bool | term_exists (const string &tname) const |
Check if term exists. | |
Xapian::doccount | get_termfreq (const string &tname) const |
Find frequency of term. | |
Xapian::termcount | get_collection_freq (const string &tname) const |
Return the total number of occurrences of the given term. | |
void | flush () |
Flush pending modifications to the database. | |
void | cancel () |
Cancel pending modifications to the database. | |
Xapian::docid | add_document (const Xapian::Document &doc) |
Add a new document to the database. | |
void | delete_document (Xapian::docid did) |
Delete a document in the database. | |
void | delete_document (const std::string &unique_term) |
void | replace_document (Xapian::docid did, const Xapian::Document &doc) |
Replace a given document in the database. | |
Xapian::docid | replace_document (const std::string &unique_term, const Xapian::Document &document) |
Protected Member Functions | |
RemoteDatabase (int fd, Xapian::timeout timeout_, const string &context_, bool writable) | |
Constructor. | |
reply_type | get_message (string &message, reply_type required_type=REPLY_MAX) const |
Receive a message from the server. | |
void | send_message (message_type type, const string &data) const |
Send a message to the server. | |
void | do_close () |
Close the socket. | |
bool | get_posting (Xapian::docid &did, Xapian::weight &w, string &value) |
Protected Attributes | |
Xapian::timeout | timeout |
The timeout value used in network communications, in milliseconds. | |
Private Member Functions | |
void | operator= (const RemoteDatabase &) |
Don't allow assignment. | |
RemoteDatabase (const RemoteDatabase &) | |
Don't allow copying. | |
void | update_stats (message_type msg_code=MSG_UPDATE) const |
Private Attributes | |
RemoteConnection | link |
The object which does the I/O. | |
Xapian::doccount | doccount |
The remote document count, given at open. | |
Xapian::docid | lastdocid |
The remote last docid, given at open. | |
Xapian::doclength | avlength |
The remote document avlength, given at open. | |
bool | has_positional_info |
Has positional information? | |
string | context |
The context to return with any error messages. | |
bool | cached_stats_valid |
A subclass of this class is required which opens a TCP connection or pipe to the remote database server. This subclass works in combination with the RemoteSubMatch class during the match process.
Definition at line 45 of file remote-database.h.
RemoteDatabase::RemoteDatabase | ( | const RemoteDatabase & | ) | [private] |
Don't allow copying.
RemoteDatabase::RemoteDatabase | ( | int | fd, | |
Xapian::timeout | timeout_, | |||
const string & | context_, | |||
bool | writable | |||
) | [protected] |
Constructor.
The constructor is protected so that raw instances can't be created - a derived class must be instantiated which has code in the constructor to open the socket.
fd | The file descriptor for the connection to the server. | |
timeout_ | The timeout used with the network operations. Generally a Xapian::NetworkTimeoutError exception will be thrown if the remote end doesn't respond for this length of time (in milliseconds). A timeout of 0 means that operations will never timeout. | |
context_ | The context to return with any error messages. | |
writable | Is this a WritableDatabase? |
Definition at line 47 of file remote-database.cc.
References avlength, context, decode_length(), doccount, get_message(), has_positional_info, lastdocid, om_tostring(), REPLY_GREETING, STRINGIZE, Xapian::Database::Internal::transaction_state, Xapian::Database::Internal::TRANSACTION_UNIMPLEMENTED, unserialise_double(), XAPIAN_REMOTE_PROTOCOL_MAJOR_VERSION, and XAPIAN_REMOTE_PROTOCOL_MINOR_VERSION.
void RemoteDatabase::operator= | ( | const RemoteDatabase & | ) | [private] |
Don't allow assignment.
void RemoteDatabase::update_stats | ( | message_type | msg_code = MSG_UPDATE |
) | const [private] |
Definition at line 298 of file remote-database.cc.
References avlength, cached_stats_valid, context, decode_length(), doccount, get_message(), has_positional_info, lastdocid, REPLY_UPDATE, send_message(), and unserialise_double().
Referenced by get_avlength(), get_doccount(), get_lastdocid(), has_positions(), open_allterms(), open_term_list(), and reopen().
reply_type RemoteDatabase::get_message | ( | string & | message, | |
reply_type | required_type = REPLY_MAX | |||
) | const [protected] |
Receive a message from the server.
Definition at line 393 of file remote-database.cc.
References context, RemoteConnection::get_message(), link, OmTime::now(), om_tostring(), REPLY_EXCEPTION, REPLY_MAX, timeout, and unserialise_error().
Referenced by add_document(), delete_document(), flush(), get_collection_freq(), get_doclength(), get_mset(), get_remote_stats(), get_termfreq(), keep_alive(), open_allterms(), open_document(), open_position_list(), open_term_list(), read_post_list(), RemoteDatabase(), replace_document(), term_exists(), and update_stats().
void RemoteDatabase::send_message | ( | message_type | type, | |
const string & | data | |||
) | const [protected] |
Send a message to the server.
Definition at line 414 of file remote-database.cc.
References link, OmTime::now(), RemoteConnection::send_message(), and timeout.
Referenced by add_document(), cancel(), delete_document(), flush(), get_collection_freq(), get_doclength(), get_termfreq(), keep_alive(), open_allterms(), open_document(), open_position_list(), open_term_list(), read_post_list(), replace_document(), send_global_stats(), set_query(), term_exists(), and update_stats().
void RemoteDatabase::do_close | ( | ) | [protected] |
Close the socket.
Definition at line 423 of file remote-database.cc.
References RemoteConnection::do_close(), Xapian::Database::Internal::dtor_called(), link, Xapian::Database::Internal::transaction_state, and Xapian::Database::Internal::TRANSACTION_UNIMPLEMENTED.
Referenced by ProgClient::~ProgClient().
bool RemoteDatabase::get_posting | ( | Xapian::docid & | did, | |
Xapian::weight & | w, | |||
string & | value | |||
) | [protected] |
RemoteDatabase * RemoteDatabase::as_remotedatabase | ( | ) | [virtual] |
Return this pointer as a RemoteDatabase*.
Reimplemented from Xapian::Database::Internal.
Definition at line 114 of file remote-database.cc.
void RemoteDatabase::keep_alive | ( | ) | [virtual] |
Send a keep-alive message.
Reimplemented from Xapian::Database::Internal.
Definition at line 120 of file remote-database.cc.
References get_message(), MSG_KEEPALIVE, REPLY_DONE, and send_message().
void RemoteDatabase::set_query | ( | const Xapian::Query::Internal * | query, | |
Xapian::termcount | qlen, | |||
Xapian::valueno | collapse_key, | |||
Xapian::Enquire::docid_order | order, | |||
Xapian::valueno | sort_key, | |||
Xapian::Enquire::Internal::sort_setting | sort_by, | |||
bool | sort_value_forward, | |||
int | percent_cutoff, | |||
Xapian::weight | weight_cutoff, | |||
const Xapian::Weight * | wtscheme, | |||
const Xapian::RSet & | omrset | |||
) |
Set the query.
query | The query. | |
qlen | The query length. | |
collapse_key | The value number to collapse matches on. | |
order | Sort order for docids. | |
sort_key | The value number to sort on. | |
sort_by | Which order to apply sorts in. | |
sort_value_forward | Sort order for values. | |
percent_cutoff | Percentage cutoff. | |
weight_cutoff | Weight cutoff. | |
wtscheme | Weighting scheme. | |
omrset | The rset. |
Definition at line 441 of file remote-database.cc.
References encode_length(), MSG_QUERY, Xapian::Weight::name(), query(), send_message(), Xapian::Weight::serialise(), serialise_double(), and serialise_rset().
Referenced by MultiMatch::MultiMatch().
bool RemoteDatabase::get_remote_stats | ( | bool | nowait, | |
Stats & | out | |||
) |
Get the Stats from the remote server.
Definition at line 480 of file remote-database.cc.
References get_message(), link, RemoteConnection::ready_to_read(), REPLY_STATS, and unserialise_stats().
Referenced by RemoteSubMatch::prepare_match().
void RemoteDatabase::send_global_stats | ( | Xapian::doccount | first, | |
Xapian::doccount | maxitems, | |||
Xapian::doccount | check_at_least, | |||
const Stats & | stats | |||
) |
Send the global Stats to the remote server.
Definition at line 492 of file remote-database.cc.
References encode_length(), MSG_GETMSET, send_message(), and serialise_stats().
Referenced by RemoteSubMatch::start_match().
void RemoteDatabase::get_mset | ( | Xapian::MSet & | mset | ) |
Get the MSet from the remote server.
Definition at line 505 of file remote-database.cc.
References get_message(), REPLY_RESULTS, and unserialise_mset().
Referenced by RemoteSubMatch::get_mset(), and RemoteSubMatch::get_postlist_and_term_info().
TermList * RemoteDatabase::open_term_list | ( | Xapian::docid | did | ) | const [virtual] |
Get remote termlist.
Implements Xapian::Database::Internal.
Definition at line 128 of file remote-database.cc.
References cached_stats_valid, context, decode_length(), doccount, encode_length(), get_message(), MSG_TERMLIST, AutoPtr< _Tp >::release(), REPLY_DOCLENGTH, REPLY_DONE, REPLY_TERMLIST, send_message(), NetworkTermListItem::termfreq, NetworkTermListItem::tname, unserialise_double(), update_stats(), and NetworkTermListItem::wdf.
TermList * RemoteDatabase::open_allterms | ( | const string & | prefix | ) | const [virtual] |
Iterate all terms.
Implements Xapian::Database::Internal.
Definition at line 171 of file remote-database.cc.
References cached_stats_valid, context, decode_length(), doccount, get_message(), MSG_ALLTERMS, AutoPtr< _Tp >::release(), REPLY_ALLTERMS, REPLY_DONE, send_message(), NetworkTermListItem::termfreq, NetworkTermListItem::tname, and update_stats().
bool RemoteDatabase::has_positions | ( | ) | const [virtual] |
Check whether this database contains any positional information.
Implements Xapian::Database::Internal.
Definition at line 254 of file remote-database.cc.
References cached_stats_valid, has_positional_info, and update_stats().
void RemoteDatabase::reopen | ( | ) | [virtual] |
Reopen the database to the latest available revision.
Database backends which don't support simultaneous update and reading probably don't need to do anything here.
Reimplemented from Xapian::Database::Internal.
Definition at line 261 of file remote-database.cc.
References MSG_REOPEN, and update_stats().
LeafPostList * RemoteDatabase::open_post_list | ( | const string & | tname | ) | const [virtual] |
Open a posting list.
Method defined by subclass to open a posting list. This is a list of all the documents which contain a given term.
tname | The term whose posting list is being requested. |
Implements Xapian::Database::Internal.
Definition at line 202 of file remote-database.cc.
Xapian::doccount RemoteDatabase::read_post_list | ( | const string & | term, | |
NetworkPostList & | pl | |||
) | const |
Definition at line 208 of file remote-database.cc.
References NetworkPostList::append_posting(), context, decode_length(), get_message(), MSG_POSTLIST, REPLY_DONE, REPLY_POSTLISTITEM, REPLY_POSTLISTSTART, and send_message().
PositionList * RemoteDatabase::open_position_list | ( | Xapian::docid | did, | |
const string & | tname | |||
) | const [virtual] |
Open a position list for the given term in the given document.
did | The document id for which a position list is being requested. | |
tname | The term for which a position list is being requested. |
Implements Xapian::Database::Internal.
Definition at line 231 of file remote-database.cc.
References context, decode_length(), encode_length(), get_message(), MSG_POSITIONLIST, REPLY_DONE, REPLY_POSITIONLIST, and send_message().
Xapian::Document::Internal * RemoteDatabase::open_document | ( | Xapian::docid | did, | |
bool | lazy | |||
) | const [virtual] |
Get a remote document.
Implements Xapian::Database::Internal.
Definition at line 273 of file remote-database.cc.
References context, decode_length(), encode_length(), get_message(), MSG_DOCUMENT, REPLY_DOCDATA, REPLY_DONE, REPLY_VALUE, and send_message().
Xapian::doccount RemoteDatabase::get_doccount | ( | ) | const [virtual] |
Get the document count.
Implements Xapian::Database::Internal.
Definition at line 319 of file remote-database.cc.
References cached_stats_valid, doccount, and update_stats().
Xapian::docid RemoteDatabase::get_lastdocid | ( | ) | const [virtual] |
Get the last used docid.
Implements Xapian::Database::Internal.
Definition at line 326 of file remote-database.cc.
References cached_stats_valid, lastdocid, and update_stats().
Xapian::doclength RemoteDatabase::get_avlength | ( | ) | const [virtual] |
Find out the remote average document length.
Implements Xapian::Database::Internal.
Definition at line 333 of file remote-database.cc.
References avlength, cached_stats_valid, and update_stats().
Xapian::doclength RemoteDatabase::get_doclength | ( | Xapian::docid | did | ) | const [virtual] |
Get the length of a given document.
Document length, for the purposes of Xapian, is defined to be the number of instances of terms within a document. Expressed differently, the sum of the within document frequencies over all the terms in the document.
did | The document id of the document whose length is being requested. |
Implements Xapian::Database::Internal.
Definition at line 377 of file remote-database.cc.
References Assert, context, encode_length(), get_message(), MSG_DOCLENGTH, REPLY_DOCLENGTH, send_message(), and unserialise_double().
bool RemoteDatabase::term_exists | ( | const string & | tname | ) | const [virtual] |
Check if term exists.
Implements Xapian::Database::Internal.
Definition at line 340 of file remote-database.cc.
References Assert, context, get_message(), MSG_TERMEXISTS, REPLY_TERMDOESNTEXIST, REPLY_TERMEXISTS, and send_message().
Xapian::doccount RemoteDatabase::get_termfreq | ( | const string & | tname | ) | const [virtual] |
Find frequency of term.
Implements Xapian::Database::Internal.
Definition at line 353 of file remote-database.cc.
References Assert, decode_length(), get_message(), MSG_TERMFREQ, REPLY_TERMFREQ, and send_message().
Xapian::termcount RemoteDatabase::get_collection_freq | ( | const string & | tname | ) | const [virtual] |
Return the total number of occurrences of the given term.
This is the sum of the number of ocurrences of the term in each document: ie, the sum of the within document frequencies of the term.
tname | The term whose collection frequency is being requested. |
Implements Xapian::Database::Internal.
Definition at line 365 of file remote-database.cc.
References Assert, decode_length(), get_message(), MSG_COLLFREQ, REPLY_COLLFREQ, and send_message().
void RemoteDatabase::flush | ( | ) | [virtual] |
Flush pending modifications to the database.
See WritableDatabase::flush() for more information.
Reimplemented from Xapian::Database::Internal.
Definition at line 513 of file remote-database.cc.
References get_message(), MSG_FLUSH, REPLY_DONE, and send_message().
void RemoteDatabase::cancel | ( | ) | [virtual] |
Cancel pending modifications to the database.
Reimplemented from Xapian::Database::Internal.
Definition at line 523 of file remote-database.cc.
References cached_stats_valid, MSG_CANCEL, and send_message().
Xapian::docid RemoteDatabase::add_document | ( | const Xapian::Document & | document | ) | [virtual] |
Add a new document to the database.
See WritableDatabase::add_document() for more information.
Reimplemented from Xapian::Database::Internal.
Definition at line 531 of file remote-database.cc.
References cached_stats_valid, decode_length(), get_message(), MSG_ADDDOCUMENT, REPLY_ADDDOCUMENT, send_message(), and serialise_document().
void RemoteDatabase::delete_document | ( | Xapian::docid | did | ) | [virtual] |
Delete a document in the database.
See WritableDatabase::delete_document() for more information.
Reimplemented from Xapian::Database::Internal.
Definition at line 546 of file remote-database.cc.
References cached_stats_valid, dummy, encode_length(), get_message(), MSG_DELETEDOCUMENT, REPLY_DONE, and send_message().
void RemoteDatabase::delete_document | ( | const std::string & | unique_term | ) |
Definition at line 557 of file remote-database.cc.
References cached_stats_valid, MSG_DELETEDOCUMENTTERM, and send_message().
void RemoteDatabase::replace_document | ( | Xapian::docid | did, | |
const Xapian::Document & | document | |||
) | [virtual] |
Replace a given document in the database.
See WritableDatabase::replace_document() for more information.
Reimplemented from Xapian::Database::Internal.
Definition at line 565 of file remote-database.cc.
References cached_stats_valid, encode_length(), MSG_REPLACEDOCUMENT, send_message(), and serialise_document().
Xapian::docid RemoteDatabase::replace_document | ( | const std::string & | unique_term, | |
const Xapian::Document & | document | |||
) |
Definition at line 577 of file remote-database.cc.
References cached_stats_valid, decode_length(), encode_length(), get_message(), MSG_REPLACEDOCUMENTTERM, REPLY_ADDDOCUMENT, send_message(), and serialise_document().
RemoteConnection RemoteDatabase::link [mutable, private] |
The object which does the I/O.
Definition at line 53 of file remote-database.h.
Referenced by do_close(), get_message(), get_remote_stats(), and send_message().
Xapian::doccount RemoteDatabase::doccount [mutable, private] |
The remote document count, given at open.
Definition at line 56 of file remote-database.h.
Referenced by get_doccount(), open_allterms(), open_term_list(), RemoteDatabase(), and update_stats().
Xapian::docid RemoteDatabase::lastdocid [mutable, private] |
The remote last docid, given at open.
Definition at line 59 of file remote-database.h.
Referenced by get_lastdocid(), RemoteDatabase(), and update_stats().
Xapian::doclength RemoteDatabase::avlength [mutable, private] |
The remote document avlength, given at open.
Definition at line 62 of file remote-database.h.
Referenced by get_avlength(), RemoteDatabase(), and update_stats().
bool RemoteDatabase::has_positional_info [mutable, private] |
Has positional information?
Definition at line 65 of file remote-database.h.
Referenced by has_positions(), RemoteDatabase(), and update_stats().
string RemoteDatabase::context [private] |
The context to return with any error messages.
Definition at line 68 of file remote-database.h.
Referenced by get_doclength(), get_message(), open_allterms(), open_document(), open_position_list(), open_term_list(), read_post_list(), RemoteDatabase(), term_exists(), and update_stats().
bool RemoteDatabase::cached_stats_valid [mutable, private] |
Definition at line 70 of file remote-database.h.
Referenced by add_document(), cancel(), delete_document(), get_avlength(), get_doccount(), get_lastdocid(), has_positions(), open_allterms(), open_term_list(), replace_document(), and update_stats().
Xapian::timeout RemoteDatabase::timeout [protected] |
The timeout value used in network communications, in milliseconds.
Definition at line 103 of file remote-database.h.
Referenced by get_message(), and send_message().