From f3e916e2fe90f8ab3443374a880184908b35045f Mon Sep 17 00:00:00 2001 From: Mathew Kamkar <578302+matkam@users.noreply.github.com> Date: Thu, 28 Oct 2021 21:02:17 -0700 Subject: [PATCH] Room Allocator Interface (#161) * room allocator interface * remove wire bind * fix test --- pkg/service/interfaces.go | 4 ++++ pkg/service/roomallocator.go | 19 +++++++++++++++---- pkg/service/roomallocator_test.go | 2 +- pkg/service/roommanager.go | 11 ----------- pkg/service/roomservice.go | 4 ++-- pkg/service/rtcservice.go | 4 ++-- pkg/service/wire.go | 3 ++- 7 files changed, 26 insertions(+), 21 deletions(-) diff --git a/pkg/service/interfaces.go b/pkg/service/interfaces.go index 333a43a56..cb4d791e8 100644 --- a/pkg/service/interfaces.go +++ b/pkg/service/interfaces.go @@ -41,3 +41,7 @@ type RoomManager interface { HasParticipants() bool Stop() } + +type RoomAllocator interface { + CreateRoom(ctx context.Context, req *livekit.CreateRoomRequest) (*livekit.Room, error) +} diff --git a/pkg/service/roomallocator.go b/pkg/service/roomallocator.go index e55bc7cd6..371b42f5a 100644 --- a/pkg/service/roomallocator.go +++ b/pkg/service/roomallocator.go @@ -13,20 +13,20 @@ import ( "github.com/livekit/livekit-server/pkg/routing/selector" ) -type RoomAllocator struct { +type StandardRoomAllocator struct { config *config.Config router routing.Router selector selector.NodeSelector roomStore RoomStore } -func NewRoomAllocator(conf *config.Config, router routing.Router, rs RoomStore) (*RoomAllocator, error) { +func NewRoomAllocator(conf *config.Config, router routing.Router, rs RoomStore) (RoomAllocator, error) { ns, err := selector.CreateNodeSelector(conf) if err != nil { return nil, err } - return &RoomAllocator{ + return &StandardRoomAllocator{ config: conf, router: router, selector: ns, @@ -36,7 +36,7 @@ func NewRoomAllocator(conf *config.Config, router routing.Router, rs RoomStore) // CreateRoom creates a new room from a request and allocates it to a node to handle // it'll also monitor its state, and cleans it up when appropriate -func (r *RoomAllocator) CreateRoom(ctx context.Context, req *livekit.CreateRoomRequest) (*livekit.Room, error) { +func (r *StandardRoomAllocator) CreateRoom(ctx context.Context, req *livekit.CreateRoomRequest) (*livekit.Room, error) { token, err := r.roomStore.LockRoom(ctx, req.Name, 5*time.Second) if err != nil { return nil, err @@ -104,3 +104,14 @@ func (r *RoomAllocator) CreateRoom(ctx context.Context, req *livekit.CreateRoomR return rm, nil } + +func applyDefaultRoomConfig(room *livekit.Room, conf *config.RoomConfig) { + room.EmptyTimeout = conf.EmptyTimeout + room.MaxParticipants = conf.MaxParticipants + for _, codec := range conf.EnabledCodecs { + room.EnabledCodecs = append(room.EnabledCodecs, &livekit.Codec{ + Mime: codec.Mime, + FmtpLine: codec.FmtpLine, + }) + } +} diff --git a/pkg/service/roomallocator_test.go b/pkg/service/roomallocator_test.go index 2191f59d6..9e0d5ac84 100644 --- a/pkg/service/roomallocator_test.go +++ b/pkg/service/roomallocator_test.go @@ -25,7 +25,7 @@ func TestCreateRoom(t *testing.T) { }) } -func newTestRoomAllocator(t *testing.T) (*service.RoomAllocator, *config.Config) { +func newTestRoomAllocator(t *testing.T) (service.RoomAllocator, *config.Config) { store := &servicefakes.FakeRoomStore{} store.LoadRoomReturns(nil, service.ErrRoomNotFound) router := &routingfakes.FakeRouter{} diff --git a/pkg/service/roommanager.go b/pkg/service/roommanager.go index 5012af925..404763069 100644 --- a/pkg/service/roommanager.go +++ b/pkg/service/roommanager.go @@ -571,17 +571,6 @@ func (r *LocalRoomManager) notifyEvent(event *livekit.WebhookEvent) { }) } -func applyDefaultRoomConfig(room *livekit.Room, conf *config.RoomConfig) { - room.EmptyTimeout = conf.EmptyTimeout - room.MaxParticipants = conf.MaxParticipants - for _, codec := range conf.EnabledCodecs { - room.EnabledCodecs = append(room.EnabledCodecs, &livekit.Codec{ - Mime: codec.Mime, - FmtpLine: codec.FmtpLine, - }) - } -} - func iceServerForStunServers(servers []string) *livekit.ICEServer { iceServer := &livekit.ICEServer{} for _, stunServer := range servers { diff --git a/pkg/service/roomservice.go b/pkg/service/roomservice.go index 8be3744e1..c7781b22d 100644 --- a/pkg/service/roomservice.go +++ b/pkg/service/roomservice.go @@ -14,11 +14,11 @@ import ( // A rooms service that supports a single node type RoomService struct { router routing.Router - roomAllocator *RoomAllocator + roomAllocator RoomAllocator roomStore RoomStore } -func NewRoomService(ra *RoomAllocator, rs RoomStore, router routing.Router) (svc *RoomService, err error) { +func NewRoomService(ra RoomAllocator, rs RoomStore, router routing.Router) (svc *RoomService, err error) { svc = &RoomService{ router: router, roomAllocator: ra, diff --git a/pkg/service/rtcservice.go b/pkg/service/rtcservice.go index 00557ad38..b0144de62 100644 --- a/pkg/service/rtcservice.go +++ b/pkg/service/rtcservice.go @@ -21,13 +21,13 @@ import ( type RTCService struct { router routing.Router - roomAllocator *RoomAllocator + roomAllocator RoomAllocator upgrader websocket.Upgrader currentNode routing.LocalNode isDev bool } -func NewRTCService(conf *config.Config, ra *RoomAllocator, router routing.Router, currentNode routing.LocalNode) *RTCService { +func NewRTCService(conf *config.Config, ra RoomAllocator, router routing.Router, currentNode routing.LocalNode) *RTCService { s := &RTCService{ router: router, roomAllocator: ra, diff --git a/pkg/service/wire.go b/pkg/service/wire.go index 14ae55d8c..78c0a67f7 100644 --- a/pkg/service/wire.go +++ b/pkg/service/wire.go @@ -1,4 +1,5 @@ -//+build wireinject +//go:build wireinject +// +build wireinject package service