aboutsummaryrefslogtreecommitdiff
path: root/roomserver/api/input.go
diff options
context:
space:
mode:
Diffstat (limited to 'roomserver/api/input.go')
-rw-r--r--roomserver/api/input.go16
1 files changed, 15 insertions, 1 deletions
diff --git a/roomserver/api/input.go b/roomserver/api/input.go
index bb4e040d..d9cffad2 100644
--- a/roomserver/api/input.go
+++ b/roomserver/api/input.go
@@ -21,6 +21,7 @@ import (
"net/http"
commonHTTP "github.com/matrix-org/dendrite/common/http"
+ fsAPI "github.com/matrix-org/dendrite/federationsender/api"
"github.com/matrix-org/gomatrixserverlib"
opentracing "github.com/opentracing/opentracing-go"
)
@@ -106,6 +107,9 @@ type InputRoomEventsResponse struct {
// RoomserverInputAPI is used to write events to the room server.
type RoomserverInputAPI interface {
+ // needed to avoid chicken and egg scenario when setting up the
+ // interdependencies between the roomserver and the FS input API
+ SetFederationSenderAPI(fsInputAPI fsAPI.FederationSenderInternalAPI)
InputRoomEvents(
ctx context.Context,
request *InputRoomEventsRequest,
@@ -122,12 +126,22 @@ func NewRoomserverInputAPIHTTP(roomserverURL string, httpClient *http.Client) (R
if httpClient == nil {
return nil, errors.New("NewRoomserverInputAPIHTTP: httpClient is <nil>")
}
- return &httpRoomserverInputAPI{roomserverURL, httpClient}, nil
+ return &httpRoomserverInputAPI{roomserverURL, httpClient, nil}, nil
}
type httpRoomserverInputAPI struct {
roomserverURL string
httpClient *http.Client
+ // The federation sender API allows us to send federation
+ // requests from the new perform input requests, still TODO.
+ fsInputAPI fsAPI.FederationSenderInternalAPI
+}
+
+// SetFederationSenderInputAPI passes in a federation sender input API reference
+// so that we can avoid the chicken-and-egg problem of both the roomserver input API
+// and the federation sender input API being interdependent.
+func (h *httpRoomserverInputAPI) SetFederationSenderAPI(fsInputAPI fsAPI.FederationSenderInternalAPI) {
+ h.fsInputAPI = fsInputAPI
}
// InputRoomEvents implements RoomserverInputAPI