1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- /*
- The storage package contains the storage engines data types at its root, and the
- actual engines in its subpackages.
- */
- package storage
- import "code.osinet.fr/fgm/gache/protocol"
- // Flag is normally used as a bit mask.
- type Flag uint64;
- /*
- Key is defined to ease switching from strings to more complex types at a later
- time should the need arise, whilst keeping the interfaces.
- */
- type Key string;
- /*
- Timestamp is a UNIX UTC timestamp. This type is only exposed
- because it is used in the Memcached protocol, so passing it directly avoid
- computations.
- It may be negative, as the protocol needs this to mark an immediate expiration.
- Any date/time handling beyond passing/returning protocol units should still use
- time.Time values, not these timestamps.
- See https://golang.org/pkg/time/#Unix
- */
- type Timestamp int64;
- type GetResult struct {
- Key Key
- Length uint64
- Flags Flag
- }
- type GetResults []GetResult
- type Storage interface {
- Get([]Key) (GetResults, error)
- Set(key Key, flags Flag, expire Timestamp, value []byte) error
- Delete(key Key) (protocol.Result, error)
- FlushAll(delay ...Timestamp) error
- Quit()
- }
|