|
|
|
|
@ -115,8 +115,6 @@ func (t TaskType) String() string {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// --- Specific Task Implementations ---
|
|
|
|
|
|
|
|
|
|
// ReadChunkTask reads a specific chunk of a file.
|
|
|
|
|
@ -169,7 +167,11 @@ func (t *ReadChunkTask) TaskID() string { return t.taskID }
|
|
|
|
|
func (t *ReadChunkTask) DirPath() string { return filepath.Dir(t.Path) }
|
|
|
|
|
func (t *ReadChunkTask) Context() context.Context { return t.ctx }
|
|
|
|
|
func (t *ReadChunkTask) Timeout() time.Duration { return 5 * time.Second }
|
|
|
|
|
func (t *ReadChunkTask) Cancel() { if t.cancel != nil { t.cancel() } }
|
|
|
|
|
func (t *ReadChunkTask) Cancel() {
|
|
|
|
|
if t.cancel != nil {
|
|
|
|
|
t.cancel()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// StatFileTask retrieves file metadata (like size and modification time).
|
|
|
|
|
// The plan indicates this replaces the full-file ReadFileTask for opening.
|
|
|
|
|
@ -216,7 +218,11 @@ func (t *StatFileTask) TaskID() string { return t.taskID }
|
|
|
|
|
func (t *StatFileTask) DirPath() string { return filepath.Dir(t.Path) }
|
|
|
|
|
func (t *StatFileTask) Context() context.Context { return t.ctx }
|
|
|
|
|
func (t *StatFileTask) Timeout() time.Duration { return 5 * time.Second }
|
|
|
|
|
func (t *StatFileTask) Cancel() { if t.cancel != nil { t.cancel() } }
|
|
|
|
|
func (t *StatFileTask) Cancel() {
|
|
|
|
|
if t.cancel != nil {
|
|
|
|
|
t.cancel()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// FileStat holds file metadata.
|
|
|
|
|
type FileStat struct {
|
|
|
|
|
@ -273,7 +279,11 @@ func (t *BuildLineIndexTask) TaskID() string { return t.taskID }
|
|
|
|
|
func (t *BuildLineIndexTask) DirPath() string { return filepath.Dir(t.Path) }
|
|
|
|
|
func (t *BuildLineIndexTask) Context() context.Context { return t.ctx }
|
|
|
|
|
func (t *BuildLineIndexTask) Timeout() time.Duration { return 30 * time.Second }
|
|
|
|
|
func (t *BuildLineIndexTask) Cancel() { if t.cancel != nil { t.cancel() } }
|
|
|
|
|
func (t *BuildLineIndexTask) Cancel() {
|
|
|
|
|
if t.cancel != nil {
|
|
|
|
|
t.cancel()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// BuildIndexTask builds the directory index for the browser.
|
|
|
|
|
type BuildIndexTask struct {
|
|
|
|
|
@ -310,7 +320,11 @@ func (t *BuildIndexTask) TaskID() string { return t.taskID }
|
|
|
|
|
func (t *BuildIndexTask) DirPath() string { return t.Dir }
|
|
|
|
|
func (t *BuildIndexTask) Context() context.Context { return t.ctx }
|
|
|
|
|
func (t *BuildIndexTask) Timeout() time.Duration { return 5 * time.Second }
|
|
|
|
|
func (t *BuildIndexTask) Cancel() { if t.cancel != nil { t.cancel() } }
|
|
|
|
|
func (t *BuildIndexTask) Cancel() {
|
|
|
|
|
if t.cancel != nil {
|
|
|
|
|
t.cancel()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// LoadPagesTask loads specific pages from a directory index.
|
|
|
|
|
type LoadPagesTask struct {
|
|
|
|
|
@ -349,7 +363,11 @@ func (t *LoadPagesTask) TaskID() string { return t.taskID }
|
|
|
|
|
func (t *LoadPagesTask) DirPath() string { return t.Dir }
|
|
|
|
|
func (t *LoadPagesTask) Context() context.Context { return t.ctx }
|
|
|
|
|
func (t *LoadPagesTask) Timeout() time.Duration { return 5 * time.Second }
|
|
|
|
|
func (t *LoadPagesTask) Cancel() { if t.cancel != nil { t.cancel() } }
|
|
|
|
|
func (t *LoadPagesTask) Cancel() {
|
|
|
|
|
if t.cancel != nil {
|
|
|
|
|
t.cancel()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ReadDirTask reads directory entries.
|
|
|
|
|
type ReadDirTask struct {
|
|
|
|
|
@ -387,7 +405,11 @@ func (t *ReadDirTask) TaskID() string { return t.taskID }
|
|
|
|
|
func (t *ReadDirTask) DirPath() string { return t.Dir }
|
|
|
|
|
func (t *ReadDirTask) Context() context.Context { return t.ctx }
|
|
|
|
|
func (t *ReadDirTask) Timeout() time.Duration { return 5 * time.Second }
|
|
|
|
|
func (t *ReadDirTask) Cancel() { if t.cancel != nil { t.cancel() } }
|
|
|
|
|
func (t *ReadDirTask) Cancel() {
|
|
|
|
|
if t.cancel != nil {
|
|
|
|
|
t.cancel()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// SaveStateTask persists application state.
|
|
|
|
|
type SaveStateTask struct {
|
|
|
|
|
@ -427,7 +449,11 @@ func (t *SaveStateTask) TaskID() string { return t.taskID }
|
|
|
|
|
func (t *SaveStateTask) DirPath() string { return filepath.Dir(t.Path) }
|
|
|
|
|
func (t *SaveStateTask) Context() context.Context { return t.ctx }
|
|
|
|
|
func (t *SaveStateTask) Timeout() time.Duration { return 5 * time.Second }
|
|
|
|
|
func (t *SaveStateTask) Cancel() { if t.cancel != nil { t.cancel() } }
|
|
|
|
|
func (t *SaveStateTask) Cancel() {
|
|
|
|
|
if t.cancel != nil {
|
|
|
|
|
t.cancel()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// SaveUndoTask persists undo stack.
|
|
|
|
|
type SaveUndoTask struct {
|
|
|
|
|
@ -467,7 +493,11 @@ func (t *SaveUndoTask) TaskID() string { return t.taskID }
|
|
|
|
|
func (t *SaveUndoTask) DirPath() string { return filepath.Dir(t.Path) }
|
|
|
|
|
func (t *SaveUndoTask) Context() context.Context { return t.ctx }
|
|
|
|
|
func (t *SaveUndoTask) Timeout() time.Duration { return 5 * time.Second }
|
|
|
|
|
func (t *SaveUndoTask) Cancel() { if t.cancel != nil { t.cancel() } }
|
|
|
|
|
func (t *SaveUndoTask) Cancel() {
|
|
|
|
|
if t.cancel != nil {
|
|
|
|
|
t.cancel()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ReadFileTask reads the full content of a file.
|
|
|
|
|
// Used as a fallback for small files or initial load before chunking is set up.
|
|
|
|
|
@ -505,7 +535,11 @@ func (t *ReadFileTask) TaskID() string { return t.taskID }
|
|
|
|
|
func (t *ReadFileTask) DirPath() string { return filepath.Dir(t.Path) }
|
|
|
|
|
func (t *ReadFileTask) Context() context.Context { return t.ctx }
|
|
|
|
|
func (t *ReadFileTask) Timeout() time.Duration { return 5 * time.Second }
|
|
|
|
|
func (t *ReadFileTask) Cancel() { if t.cancel != nil { t.cancel() } }
|
|
|
|
|
func (t *ReadFileTask) Cancel() {
|
|
|
|
|
if t.cancel != nil {
|
|
|
|
|
t.cancel()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// SearchData is the payload of a completed SearchTask: the byte ranges
|
|
|
|
|
// [start, end) of every match of Query in the scanned Text, ascending and
|
|
|
|
|
@ -593,7 +627,11 @@ func (t *SearchTask) TaskID() string { return t.taskID }
|
|
|
|
|
func (t *SearchTask) DirPath() string { return "" }
|
|
|
|
|
func (t *SearchTask) Context() context.Context { return t.ctx }
|
|
|
|
|
func (t *SearchTask) Timeout() time.Duration { return 10 * time.Second }
|
|
|
|
|
func (t *SearchTask) Cancel() { if t.cancel != nil { t.cancel() } }
|
|
|
|
|
func (t *SearchTask) Cancel() {
|
|
|
|
|
if t.cancel != nil {
|
|
|
|
|
t.cancel()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// WriteFileTask writes content to a file.
|
|
|
|
|
type WriteFileTask struct {
|
|
|
|
|
@ -632,7 +670,11 @@ func (t *WriteFileTask) TaskID() string { return t.taskID }
|
|
|
|
|
func (t *WriteFileTask) DirPath() string { return filepath.Dir(t.Path) }
|
|
|
|
|
func (t *WriteFileTask) Context() context.Context { return t.ctx }
|
|
|
|
|
func (t *WriteFileTask) Timeout() time.Duration { return 5 * time.Second }
|
|
|
|
|
func (t *WriteFileTask) Cancel() { if t.cancel != nil { t.cancel() } }
|
|
|
|
|
func (t *WriteFileTask) Cancel() {
|
|
|
|
|
if t.cancel != nil {
|
|
|
|
|
t.cancel()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// --- Mock File System (for testing/development) ---
|
|
|
|
|
// MockFS implements the pool.FileSystem interface for testing.
|
|
|
|
|
@ -739,6 +781,3 @@ func (m *MockFS) ReadDir(path string) ([]types.DirEntry, error) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var _ FileSystem = (*MockFS)(nil) // Compile-time interface check
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|