com.r3corda.core.protocols

## Package com.r3corda.core.protocols

### Types

AppContext | `data class AppContext` This is just some way to track what attachments need to be in the class loader, but may later include some app properties loaded from the attachments. And perhaps the authenticated user for an API call?
ProtocolLogic | `abstract class ProtocolLogic<T>` A sub-class of ProtocolLogic implements a protocol flow using direct, straight line blocking code. Thus you can write complex protocol logic in an ordinary fashion, without having to think about callbacks, restarting after a node crash, how many instances of your protocol there are running and so on.
ProtocolLogicRef | `data class ProtocolLogicRef` A class representing a ProtocolLogic instance which would be possible to safely pass out of the contract sandbox
ProtocolLogicRefFactory | `class ProtocolLogicRefFactory : SingletonSerializeAsToken` A class for conversion to and from ProtocolLogic and ProtocolLogicRef instances
ProtocolStateMachine | `interface ProtocolStateMachine<R>` The interface of ProtocolStateMachineImpl exposing methods and properties required by ProtocolLogic for compilation

### Exceptions

IllegalProtocolLogicException | `class IllegalProtocolLogicException : IllegalArgumentException`