mirror of
https://github.com/RetroShare/RetroShare.git
synced 2024-12-28 08:59:37 -05:00
search spy
This commit is contained in:
parent
54ee6509d1
commit
41251fdd9e
@ -85,7 +85,9 @@ public:
|
|||||||
EXPR_SIZE_MB = 8 } token ;
|
EXPR_SIZE_MB = 8 } token ;
|
||||||
|
|
||||||
static Expression *toExpr(const LinearizedExpression& e) ;
|
static Expression *toExpr(const LinearizedExpression& e) ;
|
||||||
|
|
||||||
|
std::string GetStrings();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static Expression *toExpr(const LinearizedExpression& e,int&,int&,int&) ;
|
static Expression *toExpr(const LinearizedExpression& e,int&,int&,int&) ;
|
||||||
static void readStringExpr(const LinearizedExpression& e,int& n_ints,int& n_strings,std::list<std::string>& strings,bool& b,StringOperator& op) ;
|
static void readStringExpr(const LinearizedExpression& e,int& n_ints,int& n_strings,std::list<std::string>& strings,bool& b,StringOperator& op) ;
|
||||||
|
@ -907,6 +907,7 @@ void p3turtle::handleSearchRequest(RsTurtleSearchRequestItem *item)
|
|||||||
req.origin = item->PeerId() ;
|
req.origin = item->PeerId() ;
|
||||||
req.time_stamp = time(NULL) ;
|
req.time_stamp = time(NULL) ;
|
||||||
req.depth = item->depth ;
|
req.depth = item->depth ;
|
||||||
|
req.keywords = item->GetKeywords() ;
|
||||||
|
|
||||||
// If it's not for us, perform a local search. If something found, forward the search result back.
|
// If it's not for us, perform a local search. If something found, forward the search result back.
|
||||||
|
|
||||||
@ -2079,6 +2080,7 @@ void p3turtle::getInfo( std::vector<std::vector<std::string> >& hashes_info,
|
|||||||
info.source_peer_id = it->second.origin ;
|
info.source_peer_id = it->second.origin ;
|
||||||
info.age = now - it->second.time_stamp ;
|
info.age = now - it->second.time_stamp ;
|
||||||
info.depth = it->second.depth ;
|
info.depth = it->second.depth ;
|
||||||
|
info.keywords = it->second.keywords ;
|
||||||
|
|
||||||
search_reqs_info.push_back(info) ;
|
search_reqs_info.push_back(info) ;
|
||||||
}
|
}
|
||||||
|
@ -172,6 +172,7 @@ class TurtleRequestInfo
|
|||||||
uint32_t time_stamp ; // last time the tunnel was actually used. Used for cleaning old tunnels.
|
uint32_t time_stamp ; // last time the tunnel was actually used. Used for cleaning old tunnels.
|
||||||
int depth ; // depth of the request. Used to optimize tunnel length.
|
int depth ; // depth of the request. Used to optimize tunnel length.
|
||||||
std::set<uint32_t> responses; // responses to this request. Useful to avoid spamming tunnel responses.
|
std::set<uint32_t> responses; // responses to this request. Useful to avoid spamming tunnel responses.
|
||||||
|
std::string keywords;
|
||||||
};
|
};
|
||||||
|
|
||||||
class TurtleTunnel
|
class TurtleTunnel
|
||||||
|
@ -71,7 +71,9 @@ class RsTurtleSearchRequestItem: public RsTurtleItem
|
|||||||
virtual RsTurtleSearchRequestItem *clone() const = 0 ; // used for cloning in routing methods
|
virtual RsTurtleSearchRequestItem *clone() const = 0 ; // used for cloning in routing methods
|
||||||
|
|
||||||
virtual void performLocalSearch(std::list<TurtleFileInfo>&) const = 0 ; // abstracts the search method
|
virtual void performLocalSearch(std::list<TurtleFileInfo>&) const = 0 ; // abstracts the search method
|
||||||
|
|
||||||
|
virtual std::string GetKeywords() = 0;
|
||||||
|
|
||||||
uint32_t request_id ; // randomly generated request id.
|
uint32_t request_id ; // randomly generated request id.
|
||||||
uint16_t depth ; // Used for limiting search depth.
|
uint16_t depth ; // Used for limiting search depth.
|
||||||
};
|
};
|
||||||
@ -82,7 +84,9 @@ class RsTurtleStringSearchRequestItem: public RsTurtleSearchRequestItem
|
|||||||
RsTurtleStringSearchRequestItem() : RsTurtleSearchRequestItem(RS_TURTLE_SUBTYPE_STRING_SEARCH_REQUEST) {}
|
RsTurtleStringSearchRequestItem() : RsTurtleSearchRequestItem(RS_TURTLE_SUBTYPE_STRING_SEARCH_REQUEST) {}
|
||||||
|
|
||||||
std::string match_string ; // string to match
|
std::string match_string ; // string to match
|
||||||
|
|
||||||
|
std::string GetKeywords() { return match_string; }
|
||||||
|
|
||||||
virtual RsTurtleSearchRequestItem *clone() const { return new RsTurtleStringSearchRequestItem(*this) ; }
|
virtual RsTurtleSearchRequestItem *clone() const { return new RsTurtleStringSearchRequestItem(*this) ; }
|
||||||
virtual void performLocalSearch(std::list<TurtleFileInfo>&) const ;
|
virtual void performLocalSearch(std::list<TurtleFileInfo>&) const ;
|
||||||
|
|
||||||
@ -99,6 +103,8 @@ class RsTurtleRegExpSearchRequestItem: public RsTurtleSearchRequestItem
|
|||||||
|
|
||||||
RsRegularExpression::LinearizedExpression expr ; // Reg Exp in linearised mode
|
RsRegularExpression::LinearizedExpression expr ; // Reg Exp in linearised mode
|
||||||
|
|
||||||
|
std::string GetKeywords() { return expr.GetStrings(); }
|
||||||
|
|
||||||
virtual RsTurtleSearchRequestItem *clone() const { return new RsTurtleRegExpSearchRequestItem(*this) ; }
|
virtual RsTurtleSearchRequestItem *clone() const { return new RsTurtleRegExpSearchRequestItem(*this) ; }
|
||||||
virtual void performLocalSearch(std::list<TurtleFileInfo>&) const ;
|
virtual void performLocalSearch(std::list<TurtleFileInfo>&) const ;
|
||||||
|
|
||||||
|
@ -199,6 +199,17 @@ void LinearizedExpression::readStringExpr(const LinearizedExpression& e,int& n_i
|
|||||||
strings.push_back(e._strings[n_strings++]) ;
|
strings.push_back(e._strings[n_strings++]) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string LinearizedExpression::GetStrings()
|
||||||
|
{
|
||||||
|
std::string str;
|
||||||
|
for (std::vector<std::string>::const_iterator i = this->_strings.begin(); i != this->_strings.end(); ++i)
|
||||||
|
{
|
||||||
|
str += *i;
|
||||||
|
str += " ";
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
Expression *LinearizedExpression::toExpr(const LinearizedExpression& e,int& n_tok,int& n_ints,int& n_strings)
|
Expression *LinearizedExpression::toExpr(const LinearizedExpression& e,int& n_tok,int& n_ints,int& n_strings)
|
||||||
{
|
{
|
||||||
LinearizedExpression::token tok = static_cast<LinearizedExpression::token>(e._tokens[n_tok++]) ;
|
LinearizedExpression::token tok = static_cast<LinearizedExpression::token>(e._tokens[n_tok++]) ;
|
||||||
|
@ -795,8 +795,7 @@ void SearchDialog::advancedSearch(RsRegularExpression::Expression* expression)
|
|||||||
TurtleRequestId req_id = rsTurtle->turtleSearch(e) ;
|
TurtleRequestId req_id = rsTurtle->turtleSearch(e) ;
|
||||||
|
|
||||||
// This will act before turtle results come to the interface, thanks to the signals scheduling policy.
|
// This will act before turtle results come to the interface, thanks to the signals scheduling policy.
|
||||||
// The text "bool exp" should be replaced by an appropriate text describing the actual search.
|
initSearchResult(QString::fromStdString(e.GetStrings()),req_id, ui.FileTypeComboBox->currentIndex(), true) ;
|
||||||
initSearchResult("bool exp",req_id, ui.FileTypeComboBox->currentIndex(), true) ;
|
|
||||||
|
|
||||||
rsFiles -> SearchBoolExp(expression, results, RS_FILE_HINTS_REMOTE);// | DIR_FLAGS_NETWORK_WIDE | DIR_FLAGS_BROWSABLE);
|
rsFiles -> SearchBoolExp(expression, results, RS_FILE_HINTS_REMOTE);// | DIR_FLAGS_NETWORK_WIDE | DIR_FLAGS_BROWSABLE);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user