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  }