diff options
Diffstat (limited to 'internal/serialize_reads')
| -rw-r--r-- | internal/serialize_reads/sr.go | 20 | 
1 files changed, 11 insertions, 9 deletions
diff --git a/internal/serialize_reads/sr.go b/internal/serialize_reads/sr.go index 0f623d3..9b45bf6 100644 --- a/internal/serialize_reads/sr.go +++ b/internal/serialize_reads/sr.go @@ -8,7 +8,8 @@ import (  	"github.com/rfjakob/gocryptfs/internal/tlog"  ) -type SerializerStruct struct { +// serializerState is used by the Wait and Done functions +type serializerState struct {  	// we get submissions through the "input" channel  	input chan *submission  	// q = Queue @@ -37,7 +38,7 @@ type submission struct {  	size int  } -func (sr *SerializerStruct) wait(offset int64, size int) { +func (sr *serializerState) wait(offset int64, size int) {  	ch := make(chan struct{})  	sb := &submission{  		ch:     ch, @@ -52,7 +53,7 @@ func (sr *SerializerStruct) wait(offset int64, size int) {  // push returns true if the queue is full after the element has been stored.  // It panics if it did not have space to store the element. -func (sr *SerializerStruct) push(sb *submission) (full bool) { +func (sr *serializerState) push(sb *submission) (full bool) {  	free := 0  	stored := false  	for i, v := range sr.q { @@ -77,7 +78,7 @@ func (sr *SerializerStruct) push(sb *submission) (full bool) {  }  // pop the submission with the lowest offset off the queue -func (sr *SerializerStruct) pop() *submission { +func (sr *serializerState) pop() *submission {  	var winner *submission  	var winnerIndex int  	for i, v := range sr.q { @@ -101,7 +102,7 @@ func (sr *SerializerStruct) pop() *submission {  	return winner  } -func (sr *SerializerStruct) eventLoop() { +func (sr *serializerState) eventLoop() {  	sr.input = make(chan *submission)  	empty := true  	for { @@ -128,7 +129,7 @@ func (sr *SerializerStruct) eventLoop() {  }  // Unblock a submission and wait for completion -func (sr *SerializerStruct) unblockOne() (empty bool) { +func (sr *serializerState) unblockOne() (empty bool) {  	winner := sr.pop()  	if winner == nil {  		return true @@ -139,10 +140,11 @@ func (sr *SerializerStruct) unblockOne() (empty bool) {  	return false  } -var serializer SerializerStruct +var serializer serializerState -// Called by fusefrontend.NewFS -func Init() { +// InitSerializer sets up the internal serializer state and starts the event loop. +// Called by fusefrontend.NewFS. +func InitSerializer() {  	serializer.input = make(chan *submission)  	serializer.q = make([]*submission, 10)  	go serializer.eventLoop()  | 
