Skip to content

Instantly share code, notes, and snippets.

@mniak
Created September 18, 2023 20:27
Show Gist options
  • Save mniak/e71db16ce2b0e9da49962b92d04d1ed2 to your computer and use it in GitHub Desktop.
Save mniak/e71db16ce2b0e9da49962b92d04d1ed2 to your computer and use it in GitHub Desktop.

Revisions

  1. mniak created this gist Sep 18, 2023.
    35 changes: 35 additions & 0 deletions callerback.go
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,35 @@
    package duplicomp

    type PessimisticCallerback struct {
    succeded bool
    successCallbacks []func()
    failureCallbacks []func()
    }

    func (self *PessimisticCallerback) Callback() {
    if self.succeded {
    for _, dispose := range self.successCallbacks {
    if dispose != nil {
    dispose()
    }
    }
    } else {
    for _, dispose := range self.failureCallbacks {
    if dispose != nil {
    dispose()
    }
    }
    }
    }

    func (self *PessimisticCallerback) OnFailure(fn func()) {
    self.failureCallbacks = append(self.failureCallbacks, fn)
    }

    func (self *PessimisticCallerback) OnSuccess(fn func()) {
    self.successCallbacks = append(self.successCallbacks, fn)
    }

    func (self *PessimisticCallerback) Succeeded() {
    self.succeded = true
    }