protocols

## Package protocols

### Types

AbstractRequestMessage | `abstract class AbstractRequestMessage` Abstract superclass for request messages sent to services, which includes common fields such as replyTo and replyToTopic.
FetchAttachmentsProtocol | `class FetchAttachmentsProtocol : FetchDataProtocol<Attachment, ByteArray>` Given a set of hashes either loads from from local storage or requests them from the other peer. Downloaded attachments are saved to local storage automatically.
FetchDataProtocol | `abstract class FetchDataProtocol<T : NamedByHash, W : Any> : ProtocolLogic<Result<T>>` An abstract protocol for fetching typed data from a remote peer.
FetchTransactionsProtocol | `class FetchTransactionsProtocol : FetchDataProtocol<SignedTransaction, SignedTransaction>` Given a set of tx hashes (IDs), either loads them from local disk or asks the remote peer to provide them.

RatesFixProtocol

`open class RatesFixProtocol : ProtocolLogic<Unit>`

This protocol queries the given oracle for an interest rate fix, and if it is within the given tolerance embeds the fix in the transaction and then proceeds to get the oracle to sign it. Although the call method combines the query and signing step, you can run the steps individually by constructing this object and then using the public methods for each step.

ResolveTransactionsProtocol

`class ResolveTransactionsProtocol : ProtocolLogic<Unit>`

This protocol fetches each transaction identified by the given hashes from either disk or network, along with all their dependencies, and verifies them together using a single TransactionGroup. If no exception is thrown, then all the transactions have been successfully verified and inserted into the local database.

TimestampingProtocol | `class TimestampingProtocol : ProtocolLogic<LegallyIdentifiable>` The TimestampingProtocol class is the client code that talks to a NodeTimestamperService on some remote node. It is a ProtocolLogic, meaning it can either be a sub-protocol of some other protocol, or be driven independently.
TwoPartyDealProtocol | `object TwoPartyDealProtocol` Classes for manipulating a two party deal or agreement.
TwoPartyTradeProtocol | `object TwoPartyTradeProtocol` This asset trading protocol implements a "delivery vs payment" type swap. It has two parties (B and S for buyer and seller) and the following steps: