github.com/yasker/longhorn-engine@v0.0.0-20160621014712-6ed6cfca0729/types/types.go (about) 1 package types 2 3 import "io" 4 5 const ( 6 WO = Mode("WO") 7 RW = Mode("RW") 8 ERR = Mode("ERR") 9 ) 10 11 type ReaderWriterAt interface { 12 io.ReaderAt 13 io.WriterAt 14 } 15 16 type DiffDisk interface { 17 ReaderWriterAt 18 io.Closer 19 Fd() uintptr 20 } 21 22 type Backend interface { 23 ReaderWriterAt 24 io.Closer 25 Snapshot(name string) error 26 Size() (int64, error) 27 SectorSize() (int64, error) 28 } 29 30 type BackendFactory interface { 31 Create(address string) (Backend, error) 32 } 33 34 type Controller interface { 35 AddReplica(address string) error 36 RemoveReplica(address string) error 37 SetReplicaMode(address string, mode Mode) error 38 ListReplicas() []Replica 39 Start(address ...string) error 40 Shutdown() error 41 } 42 43 type Server interface { 44 ReaderWriterAt 45 Controller 46 } 47 48 type Mode string 49 50 type Replica struct { 51 Address string 52 Mode Mode 53 } 54 55 type Frontend interface { 56 Activate(name string, size, sectorSize int64, rw ReaderWriterAt) error 57 Shutdown() error 58 }