Add session and provider controller interfaces. Begun designing worker system.
This commit is contained in:
22
services/data_service/internal/manager/api.go
Normal file
22
services/data_service/internal/manager/api.go
Normal file
@@ -0,0 +1,22 @@
|
||||
package manager
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
"gitlab.michelsen.id/phillmichelsen/tessera/services/data_service/internal/domain"
|
||||
"gitlab.michelsen.id/phillmichelsen/tessera/services/data_service/internal/provider"
|
||||
)
|
||||
|
||||
type SessionController interface {
|
||||
NewSession(idleAfter time.Duration) uuid.UUID
|
||||
AttachClient(id uuid.UUID, inBuf, outBuf int) (chan<- domain.Message, <-chan domain.Message, error)
|
||||
DetachClient(id uuid.UUID) error
|
||||
ConfigureSession(id uuid.UUID, next []domain.Identifier) error
|
||||
CloseSession(id uuid.UUID) error
|
||||
}
|
||||
|
||||
type ProviderController interface {
|
||||
AddProvider(name string, p provider.Provider) error
|
||||
RemoveProvider(name string) error
|
||||
}
|
||||
@@ -47,7 +47,7 @@ func NewManager(r *router.Router) *Manager {
|
||||
return m
|
||||
}
|
||||
|
||||
// Public API (posts commands to loop)
|
||||
// API
|
||||
|
||||
// AddProvider adds and starts a new provider.
|
||||
func (m *Manager) AddProvider(name string, p provider.Provider) error {
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
package worker
|
||||
@@ -1 +0,0 @@
|
||||
package worker
|
||||
12
services/data_service/internal/worker/worker.go
Normal file
12
services/data_service/internal/worker/worker.go
Normal file
@@ -0,0 +1,12 @@
|
||||
package worker
|
||||
|
||||
import (
|
||||
"github.com/google/uuid"
|
||||
"gitlab.michelsen.id/phillmichelsen/tessera/services/data_service/internal/manager"
|
||||
)
|
||||
|
||||
type Worker interface {
|
||||
ID() uuid.UUID
|
||||
Start(cfg map[string]string, controller manager.SessionController) error
|
||||
Stop()
|
||||
}
|
||||
Reference in New Issue
Block a user