34 lines
		
	
	
		
			787 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			787 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Package sync is an interface for distributed synchronization
 | |
| package sync // import "go.unistack.org/micro/v4/sync"
 | |
| 
 | |
| import (
 | |
| 	"errors"
 | |
| )
 | |
| 
 | |
| // ErrLockTimeout error
 | |
| var ErrLockTimeout = errors.New("lock timeout")
 | |
| 
 | |
| // Sync is an interface for distributed synchronization
 | |
| type Sync interface {
 | |
| 	// Initialise options
 | |
| 	Init(...Option) error
 | |
| 	// Return the options
 | |
| 	Options() Options
 | |
| 	// Elect a leader
 | |
| 	Leader(id string, opts ...LeaderOption) (Leader, error)
 | |
| 	// Lock acquires a lock
 | |
| 	Lock(id string, opts ...LockOption) error
 | |
| 	// Unlock releases a lock
 | |
| 	Unlock(id string) error
 | |
| 	// Sync implementation
 | |
| 	String() string
 | |
| }
 | |
| 
 | |
| // Leader provides leadership election
 | |
| type Leader interface {
 | |
| 	// resign leadership
 | |
| 	Resign() error
 | |
| 	// status returns when leadership is lost
 | |
| 	Status() chan bool
 | |
| }
 |