From 3fae8a200a072cce25ba7186c8e55bb34232679f Mon Sep 17 00:00:00 2001 From: Henry Date: Mon, 17 May 2021 15:31:29 +0200 Subject: [PATCH] change handler registration --- muxrpc/handlers/tunnel/server/plugin.go | 20 +++++++++++++++++++- roomsrv/init_handlers.go | 10 +++++----- roomsrv/manifest.go | 4 ++-- 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/muxrpc/handlers/tunnel/server/plugin.go b/muxrpc/handlers/tunnel/server/plugin.go index 22e3b49..67e2386 100644 --- a/muxrpc/handlers/tunnel/server/plugin.go +++ b/muxrpc/handlers/tunnel/server/plugin.go @@ -34,7 +34,8 @@ func New(log kitlog.Logger, netInfo network.ServerEndpointDetails, m *roomstate. return h } -func (h *Handler) Register(mux typemux.HandlerMux, namespace muxrpc.Method) { +func (h *Handler) RegisterTunnel(mux typemux.HandlerMux) { + var namespace = muxrpc.Method{"tunnel"} mux.RegisterAsync(append(namespace, "isRoom"), typemux.AsyncFunc(h.metadata)) mux.RegisterAsync(append(namespace, "ping"), typemux.AsyncFunc(h.ping)) @@ -49,3 +50,20 @@ func (h *Handler) Register(mux typemux.HandlerMux, namespace muxrpc.Method) { state: h.state, }) } + +func (h *Handler) RegisterRoom(mux typemux.HandlerMux) { + var namespace = muxrpc.Method{"room"} + mux.RegisterAsync(append(namespace, "metadata"), typemux.AsyncFunc(h.metadata)) + mux.RegisterAsync(append(namespace, "ping"), typemux.AsyncFunc(h.ping)) + + mux.RegisterAsync(append(namespace, "announce"), typemux.AsyncFunc(h.announce)) + mux.RegisterAsync(append(namespace, "leave"), typemux.AsyncFunc(h.leave)) + + mux.RegisterSource(append(namespace, "attendants"), typemux.SourceFunc(h.endpoints)) + + mux.RegisterDuplex(append(namespace, "connect"), connectHandler{ + logger: h.logger, + self: h.netInfo.RoomID, + state: h.state, + }) +} diff --git a/roomsrv/init_handlers.go b/roomsrv/init_handlers.go index 1d09676..73cd258 100644 --- a/roomsrv/init_handlers.go +++ b/roomsrv/init_handlers.go @@ -50,13 +50,13 @@ func (s *Server) initHandlers() { mux.RegisterAsync(muxrpc.Method{"manifest"}, manifest) mux.RegisterAsync(muxrpc.Method{"whoami"}, whoami) - // register tunnel.connect etc twice (as tunnel.* and room.*) - var method = muxrpc.Method{"tunnel"} - tunnelHandler.Register(mux, method) + // register old room v1 commands + tunnelHandler.RegisterTunnel(mux) - method = muxrpc.Method{"room"} - tunnelHandler.Register(mux, method) + // register new room v2 commands + tunnelHandler.RegisterRoom(mux) + var method = muxrpc.Method{"room"} mux.RegisterAsync(append(method, "registerAlias"), typemux.AsyncFunc(aliasHandler.Register)) mux.RegisterAsync(append(method, "revokeAlias"), typemux.AsyncFunc(aliasHandler.Revoke)) diff --git a/roomsrv/manifest.go b/roomsrv/manifest.go index fb8a635..f56f664 100644 --- a/roomsrv/manifest.go +++ b/roomsrv/manifest.go @@ -43,8 +43,8 @@ const manifest manifestHandler = ` "announce": "sync", "leave": "sync", "connect": "duplex", - "endpoints": "source", - "isRoom": "async", + "attendants": "source", + "metadata": "async", "ping": "sync" },