|
package base |
|
|
|
import ( |
|
"sync" |
|
|
|
pb "github.com/mudler/LocalAI/pkg/grpc/proto" |
|
) |
|
|
|
|
|
|
|
|
|
|
|
type SingleThread struct { |
|
Base |
|
backendBusy sync.Mutex |
|
} |
|
|
|
|
|
func (llm *SingleThread) Locking() bool { |
|
return true |
|
} |
|
|
|
func (llm *SingleThread) Lock() { |
|
llm.backendBusy.Lock() |
|
} |
|
|
|
func (llm *SingleThread) Unlock() { |
|
llm.backendBusy.Unlock() |
|
} |
|
|
|
func (llm *SingleThread) Busy() bool { |
|
r := llm.backendBusy.TryLock() |
|
if r { |
|
llm.backendBusy.Unlock() |
|
} |
|
return r |
|
} |
|
|
|
|
|
func (llm *SingleThread) Status() (pb.StatusResponse, error) { |
|
mud := memoryUsage() |
|
|
|
state := pb.StatusResponse_READY |
|
if llm.Busy() { |
|
state = pb.StatusResponse_BUSY |
|
} |
|
|
|
return pb.StatusResponse{ |
|
State: state, |
|
Memory: mud, |
|
}, nil |
|
} |
|
|