??
This commit is contained in:
78
server/service.go
Normal file
78
server/service.go
Normal file
@@ -0,0 +1,78 @@
|
||||
package server
|
||||
|
||||
import (
|
||||
"log"
|
||||
|
||||
"github.com/marcopeocchi/yt-dlp-web-ui/server/sys"
|
||||
)
|
||||
|
||||
type Service int
|
||||
|
||||
type Running []ProcessResponse
|
||||
type Pending []string
|
||||
|
||||
type NoArgs struct{}
|
||||
type Args struct {
|
||||
Id string
|
||||
URL string
|
||||
Params []string
|
||||
}
|
||||
|
||||
// Exec spawns a Process.
|
||||
// The result of the execution is the newly spawned process Id.
|
||||
func (t *Service) Exec(args Args, result *string) error {
|
||||
log.Printf("Spawning new process for %s\n", args.URL)
|
||||
p := Process{mem: &db, url: args.URL, params: args.Params}
|
||||
p.Start()
|
||||
*result = p.id
|
||||
return nil
|
||||
}
|
||||
|
||||
// Progess retrieves the Progress of a specific Process given its Id
|
||||
func (t *Service) Progess(args Args, progress *DownloadProgress) error {
|
||||
*progress = db.Get(args.Id).Progress
|
||||
return nil
|
||||
}
|
||||
|
||||
// Pending retrieves a slice of all Pending/Running processes ids
|
||||
func (t *Service) Pending(args NoArgs, pending *Pending) error {
|
||||
*pending = Pending(db.Keys())
|
||||
return nil
|
||||
}
|
||||
|
||||
// Running retrieves a slice of all Processes progress
|
||||
func (t *Service) Running(args NoArgs, running *Running) error {
|
||||
*running = db.All()
|
||||
return nil
|
||||
}
|
||||
|
||||
// Kill kills a process given its id and remove it from the memoryDB
|
||||
func (t *Service) Kill(args string, killed *string) error {
|
||||
proc := db.Get(args)
|
||||
var err error
|
||||
if proc != nil {
|
||||
err = proc.Kill()
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
// KillAll kills all process unconditionally and removes them from
|
||||
// the memory db
|
||||
func (t *Service) KillAll(args NoArgs, killed *string) error {
|
||||
keys := db.Keys()
|
||||
var err error
|
||||
for _, key := range keys {
|
||||
proc := db.Get(key)
|
||||
if proc != nil {
|
||||
proc.Kill()
|
||||
}
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
// FreeSpace gets the available from package sys util
|
||||
func (t *Service) FreeSpace(args NoArgs, free *uint64) error {
|
||||
freeSpace, err := sys.FreeSpace()
|
||||
*free = freeSpace
|
||||
return err
|
||||
}
|
||||
Reference in New Issue
Block a user