| package statemgr |
| |
| // Storage is the union of Transient and Persistent, for state managers that |
| // have both transient and persistent storage. |
| // |
| // Types implementing this interface coordinate between their Transient |
| // and Persistent implementations so that the persistent operations read |
| // or write the transient store. |
| type Storage interface { |
| Transient |
| Persistent |
| } |
| |
| // Full is the union of all of the more-specific state interfaces. |
| // |
| // This interface may grow over time, so state implementations aiming to |
| // implement it may need to be modified for future changes. To ensure that |
| // this need can be detected, always include a statement nearby the declaration |
| // of the implementing type that will fail at compile time if the interface |
| // isn't satisfied, such as: |
| // |
| // var _ statemgr.Full = (*ImplementingType)(nil) |
| type Full interface { |
| Storage |
| Locker |
| } |