80 lines
3.1 KiB
Java
80 lines
3.1 KiB
Java
package meerkat.bulletinboard;
|
|
|
|
import meerkat.comm.CommunicationException;
|
|
import meerkat.protobuf.Voting.*;
|
|
|
|
import static meerkat.protobuf.BulletinBoardAPI.*;
|
|
|
|
import java.util.Collection;
|
|
import java.util.List;
|
|
|
|
/**
|
|
* Created by talm on 24/10/15.
|
|
*/
|
|
public interface BulletinBoardClient {
|
|
|
|
/**
|
|
* Initialize the client to use some specified servers
|
|
* @param clientParams contains the parameters required for the client setup
|
|
*/
|
|
void init(BulletinBoardClientParams clientParams);
|
|
|
|
/**
|
|
* Post a message to the bulletin board in a synchronous manner
|
|
* @param msg is the message to be posted
|
|
* @return a unique message ID for the message, that can be later used to retrieve the batch
|
|
* @throws CommunicationException
|
|
*/
|
|
MessageID postMessage(BulletinBoardMessage msg) throws CommunicationException;
|
|
|
|
/**
|
|
* Perform an end-to-end post of a signed batch message
|
|
* @param completeBatch contains all the data of the batch including the meta-data and the signature
|
|
* @return a unique identifier for the batch message
|
|
* @throws CommunicationException
|
|
*/
|
|
public MessageID postBatch(CompleteBatch completeBatch) throws CommunicationException;
|
|
|
|
/**
|
|
* Check how "safe" a given message is in a synchronous manner
|
|
* @param id is the unique message identifier for retrieval
|
|
* @return a normalized "redundancy score" from 0 (local only) to 1 (fully published)
|
|
*/
|
|
float getRedundancy(MessageID id);
|
|
|
|
/**
|
|
* Read all messages posted matching the given filter in a synchronous manner
|
|
* Note that if messages haven't been "fully posted", this might return a different
|
|
* set of messages in different calls. However, messages that are fully posted
|
|
* are guaranteed to be included.
|
|
* @param filterList return only messages that match the filters (null means no filtering)
|
|
* @return the list of messages
|
|
*/
|
|
List<BulletinBoardMessage> readMessages(MessageFilterList filterList) throws CommunicationException;
|
|
|
|
/**
|
|
* Read a given batch message from the bulletin board
|
|
* @param batchSpecificationMessage contains the data required to specify a single batch instance
|
|
* @return the complete batch
|
|
* @throws CommunicationException
|
|
*/
|
|
CompleteBatch readBatch(BatchSpecificationMessage batchSpecificationMessage) throws CommunicationException;
|
|
|
|
/**
|
|
* Create a SyncQuery to test against that corresponds with the current server state for a specific filter list
|
|
* Should only be called on instances for which the actual server contacted is known (i.e. there is only one server)
|
|
* @param generateSyncQueryParams defines the required information needed to generate the query
|
|
* These are represented as fractions of the total number of relevant messages
|
|
* @return The generated SyncQuery
|
|
* @throws CommunicationException when no DB can be contacted
|
|
*/
|
|
SyncQuery generateSyncQuery(GenerateSyncQueryParams generateSyncQueryParams) throws CommunicationException;
|
|
|
|
/**
|
|
* Closes all connections, if any.
|
|
* This is done in a synchronous (blocking) way.
|
|
*/
|
|
void close();
|
|
|
|
}
|