mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2024-12-03 18:19:04 +08:00
56 lines
1.2 KiB
Go
56 lines
1.2 KiB
Go
|
package needle
|
||
|
|
||
|
type AsyncRequest struct {
|
||
|
N *Needle
|
||
|
IsWriteRequest bool
|
||
|
ActualSize int64
|
||
|
Fsync bool
|
||
|
offset uint64
|
||
|
size uint64
|
||
|
doneChan chan interface{}
|
||
|
isUnchanged bool
|
||
|
err error
|
||
|
}
|
||
|
|
||
|
func NewAsyncRequest(n *Needle, isWriteRequest bool, fsync bool) *AsyncRequest {
|
||
|
return &AsyncRequest{
|
||
|
offset: 0,
|
||
|
size: 0,
|
||
|
ActualSize: 0,
|
||
|
doneChan: make(chan interface{}),
|
||
|
N: n,
|
||
|
isUnchanged: false,
|
||
|
IsWriteRequest: isWriteRequest,
|
||
|
Fsync: fsync,
|
||
|
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
|
||
|
}
|