|
Percy++
A C++ implementation of Private Information Retrieval (PIR) protocols
|
An abstract base class for a PIR server. More...
#include <percyserver.h>
Classes | |
| class | Col |
| class | Elem |
| class | Matrix |
| class | Row |
| class | SubMatrix |
Public Member Functions | |
| virtual | ~PercyServer () |
| Destructor. More... | |
| void | be_byzantine () |
| Tell the server to be Byzantine. More... | |
| void | set_strassen_max_depth (nqueries_t depth) |
| Set the strassen max level. More... | |
| nqueries_t | get_strassen_max_depth () |
| Get the strassen max level. More... | |
| virtual bool | handle_request (std::istream &is, std::ostream &os, const std::vector< std::iostream * > &workers=std::vector< std::iostream * >()) |
| Handle a request from a single client. More... | |
| virtual bool | handle_request (const std::vector< std::istream * > &isv, const std::vector< std::ostream * > &osv, const std::vector< std::iostream * > &workers=std::vector< std::iostream * >()) |
| Handle a request from a number of clients simultaneously. More... | |
Static Public Member Functions | |
| static PercyServer * | make_server (DataStore *datastore, const PercyServerParams *params, PercyStats *stats=NULL) |
| Factory method called to get a server object for the given parameters. More... | |
Static Public Attributes | |
| static const nqueries_t | STRASSEN_OPTIMAL = -1 |
| Special strassen max level, when set to this value, the optimal strategy is used. More... | |
Protected Member Functions | |
| virtual bool | handle_request_impl (const std::vector< unsigned char * > &requests, const std::vector< unsigned char * > &responses)=0 |
| Implementation of handle_request(). More... | |
| virtual bool | handle_request_distributed (const std::vector< unsigned char * > &requests, const std::vector< unsigned char * > &responses, const std::vector< std::iostream * > &workers) |
| Implementation of handle_request() used for master servers. More... | |
| virtual bool | handle_request_threaded (const std::vector< unsigned char * > &requests, const std::vector< unsigned char * > &responses) |
| Implementation of handle_request() to be used when using multithreading. More... | |
| virtual void | combine_results (unsigned char *result, const std::vector< unsigned char * > &worker_results)=0 |
| Combines the results of threads/workers when partitioning database records (DIST_SPLIT_RECORDS). More... | |
| PercyServer (DataStore *datastore, const PercyServerParams *serverparams, PercyStats *stats=NULL) | |
| Constructor. More... | |
Protected Attributes | |
| bool | byzantine |
| Whether or not the server is Byzantine. More... | |
| DataStore * | datastore |
| The database used by the server. More... | |
| const PercyServerParams * | serverparams |
| The parameters for the server. More... | |
| PercyStats * | stats |
| Statistics collection object. More... | |
| nqueries_t | strassen_max_depth |
| Maximum depth allowed when using Strassen's matrix multiplication. More... | |
| nqueries_t | strassen_level_reached |
| The strassen level reached in computation. More... | |
| std::vector< PercyServer * > | subservers |
| When using multithreading, the server objects for the threads. More... | |
Friends | |
| class | RecursiveServer |
| void * | thread_work (void *arg) |
| template<typename GF2E_Element_ > | |
| std::ostream & | operator<< (std::ostream &os, const Matrix< GF2E_Element_ > &m) |
| template<typename GF2E_Element_ > | |
| std::ostream & | operator<< (std::ostream &os, const SubMatrix< GF2E_Element_ > &m) |
An abstract base class for a PIR server.
|
virtual |
Destructor.
|
protected |
Constructor.
Can only be called by derived classes.
| datastore | Database the server will use. |
| params | Parameters for the server. |
| stats | Statistics collection object. No statistics will be collected if NULL. |
| void be_byzantine | ( | ) |
Tell the server to be Byzantine.
|
protectedpure virtual |
Combines the results of threads/workers when partitioning database records (DIST_SPLIT_RECORDS).
| result | Buffer to be filled with combined result. |
| worker_results | The results from all threads/workers to be combined. |
| nqueries_t get_strassen_max_depth | ( | ) |
Get the strassen max level.
|
virtual |
Handle a request from a single client.
| is | Input stream from the client. |
| os | Output stream to the client. |
| workers | When the server is a master server, a list of input/output streams to/from the workers. |
Reimplemented in RecursiveServer.
|
virtual |
Handle a request from a number of clients simultaneously.
| isv | Input vector of streams from the clients. |
| osv | Output vector of streams to the clients. |
| workers | When the server is a master server, a list of input/output streams to/from the workers. |
|
protectedvirtual |
Implementation of handle_request() used for master servers.
Must be implemented in derived classes.
| requests | A set of query requests, one for each query. |
| responses | Buffers that must be filled with the query responses. |
| workers | When the server is a master server, a list of input/output streams to/from the workers. |
|
protectedpure virtual |
Implementation of handle_request().
Must be implemented in derived classes.
| requests | A set of query requests, one for each query. |
| responses | Buffers that must be filled with the query responses. |
|
protectedvirtual |
Implementation of handle_request() to be used when using multithreading.
Must be implemented in derived classes.
| requests | A set of query requests, one for each query. |
| responses | Buffers that must be filled with the query responses. |
|
static |
Factory method called to get a server object for the given parameters.
| datastore | Database the server will use. |
| params | Parameters for the server. |
| stats | Statistics collection object. No statistics will be collected if NULL. |
| void set_strassen_max_depth | ( | nqueries_t | depth | ) |
Set the strassen max level.
| depth | The strassen max level to use. |
|
protected |
Whether or not the server is Byzantine.
|
protected |
The database used by the server.
|
protected |
The parameters for the server.
|
protected |
Statistics collection object.
|
protected |
The strassen level reached in computation.
|
protected |
Maximum depth allowed when using Strassen's matrix multiplication.
|
static |
Special strassen max level, when set to this value, the optimal strategy is used.
|
protected |
When using multithreading, the server objects for the threads.
1.8.7