You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
package needle
type AsyncRequest struct { N *Needle IsWriteRequest bool ActualSize int64 offset uint64 size uint64 doneChan chan interface{} isUnchanged bool err error }
func NewAsyncRequest(n *Needle, isWriteRequest bool) *AsyncRequest { return &AsyncRequest{ offset: 0, size: 0, ActualSize: 0, doneChan: make(chan interface{}), N: n, isUnchanged: false, IsWriteRequest: isWriteRequest, err: nil, } }
func (r *AsyncRequest) WaitComplete() (uint64, uint64, bool, error) { <-r.doneChan return r.offset, r.size, r.isUnchanged, r.err }
func (r *AsyncRequest) Complete(offset uint64, size uint64, isUnchanged bool, err error) { r.offset = offset r.size = size r.isUnchanged = isUnchanged r.err = err close(r.doneChan) }
func (r *AsyncRequest) UpdateResult(offset uint64, size uint64, isUnchanged bool, err error) { r.offset = offset r.size = size r.isUnchanged = isUnchanged r.err = err }
func (r *AsyncRequest) Submit() { close(r.doneChan) }
func (r *AsyncRequest) IsSucceed() bool { return r.err == nil }
|