mirror of
				https://github.com/k3s-io/kubernetes.git
				synced 2025-10-30 21:30:16 +00:00 
			
		
		
		
	godep restore pushd $GOPATH/src/github.com/appc/spec git co master popd go get go4.org/errorutil rm -rf Godeps godep save ./... git add vendor git add -f $(git ls-files --other vendor/) git co -- Godeps/LICENSES Godeps/.license_file_state Godeps/OWNERS
		
			
				
	
	
		
			38 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package raft
 | |
| 
 | |
| import (
 | |
| 	"io"
 | |
| )
 | |
| 
 | |
| // FSM provides an interface that can be implemented by
 | |
| // clients to make use of the replicated log.
 | |
| type FSM interface {
 | |
| 	// Apply log is invoked once a log entry is committed.
 | |
| 	Apply(*Log) interface{}
 | |
| 
 | |
| 	// Snapshot is used to support log compaction. This call should
 | |
| 	// return an FSMSnapshot which can be used to save a point-in-time
 | |
| 	// snapshot of the FSM. Apply and Snapshot are not called in multiple
 | |
| 	// threads, but Apply will be called concurrently with Persist. This means
 | |
| 	// the FSM should be implemented in a fashion that allows for concurrent
 | |
| 	// updates while a snapshot is happening.
 | |
| 	Snapshot() (FSMSnapshot, error)
 | |
| 
 | |
| 	// Restore is used to restore an FSM from a snapshot. It is not called
 | |
| 	// concurrently with any other command. The FSM must discard all previous
 | |
| 	// state.
 | |
| 	Restore(io.ReadCloser) error
 | |
| }
 | |
| 
 | |
| // FSMSnapshot is returned by an FSM in response to a Snapshot
 | |
| // It must be safe to invoke FSMSnapshot methods with concurrent
 | |
| // calls to Apply.
 | |
| type FSMSnapshot interface {
 | |
| 	// Persist should dump all necessary state to the WriteCloser 'sink',
 | |
| 	// and call sink.Close() when finished or call sink.Cancel() on error.
 | |
| 	Persist(sink SnapshotSink) error
 | |
| 
 | |
| 	// Release is invoked when we are finished with the snapshot.
 | |
| 	Release()
 | |
| }
 |