Download core/p2p/node.go from AbdulElahGwaith/LocalAI: direct link, hf CLI and curl.
- Browser
- Download file 1.2 kB
-
https://huggingface.co/AbdulElahGwaith/LocalAI/resolve/main/core/p2p/node.go
- Command line
-
hf download hf://AbdulElahGwaith/LocalAI/core/p2p/node.go
-
curl -L -o node.go https://huggingface.co/AbdulElahGwaith/LocalAI/resolve/main/core/p2p/node.go
1.2 kB
| package p2p | |
| import ( | |
| "slices" | |
| "strings" | |
| "sync" | |
| "github.com/mudler/LocalAI/core/schema" | |
| ) | |
| const ( | |
| defaultServicesID = "services" | |
| WorkerID = "worker" | |
| ) | |
| var mu sync.Mutex | |
| var nodes = map[string]map[string]schema.NodeData{} | |
| func GetAvailableNodes(serviceID string) []schema.NodeData { | |
| if serviceID == "" { | |
| serviceID = defaultServicesID | |
| } | |
| mu.Lock() | |
| defer mu.Unlock() | |
| var availableNodes = []schema.NodeData{} | |
| for _, v := range nodes[serviceID] { | |
| availableNodes = append(availableNodes, v) | |
| } | |
| slices.SortFunc(availableNodes, func(a, b schema.NodeData) int { | |
| return strings.Compare(a.ID, b.ID) | |
| }) | |
| return availableNodes | |
| } | |
| func GetNode(serviceID, nodeID string) (schema.NodeData, bool) { | |
| if serviceID == "" { | |
| serviceID = defaultServicesID | |
| } | |
| mu.Lock() | |
| defer mu.Unlock() | |
| if _, ok := nodes[serviceID]; !ok { | |
| return schema.NodeData{}, false | |
| } | |
| nd, exists := nodes[serviceID][nodeID] | |
| return nd, exists | |
| } | |
| func AddNode(serviceID string, node schema.NodeData) { | |
| if serviceID == "" { | |
| serviceID = defaultServicesID | |
| } | |
| mu.Lock() | |
| defer mu.Unlock() | |
| if nodes[serviceID] == nil { | |
| nodes[serviceID] = map[string]schema.NodeData{} | |
| } | |
| nodes[serviceID][node.ID] = node | |
| } | |