Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/spreed.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJoas Schilling <coding@schilljs.com>2020-04-15 18:07:58 +0300
committerJoas Schilling <coding@schilljs.com>2020-05-12 11:40:20 +0300
commiteda9d44a85df69b4e291d64aa239089ff93400cc (patch)
tree7fe5d8036227626a03fb5afd0bf97231af3e1706 /lib
parent21e22afa721ad772acdda9c13b8839af89e996be (diff)
Send the backend message to the correct backend server for now
Signed-off-by: Joas Schilling <coding@schilljs.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/Controller/SignalingController.php2
-rw-r--r--lib/Signaling/BackendNotifier.php21
-rw-r--r--lib/Signaling/Manager.php26
3 files changed, 24 insertions, 25 deletions
diff --git a/lib/Controller/SignalingController.php b/lib/Controller/SignalingController.php
index 0ac38ea35..2410744c5 100644
--- a/lib/Controller/SignalingController.php
+++ b/lib/Controller/SignalingController.php
@@ -149,7 +149,7 @@ class SignalingController extends OCSController {
}
$signalingMode = $this->talkConfig->getSignalingMode();
- $signaling = $this->signalingManager->getSignalingServerForConversation($room);
+ $signaling = $this->signalingManager->getSignalingServerLinkForConversation($room);
return new DataResponse([
'signalingMode' => $signalingMode,
diff --git a/lib/Signaling/BackendNotifier.php b/lib/Signaling/BackendNotifier.php
index da76192d5..87d6a4558 100644
--- a/lib/Signaling/BackendNotifier.php
+++ b/lib/Signaling/BackendNotifier.php
@@ -40,15 +40,19 @@ class BackendNotifier {
private $clientService;
/** @var ISecureRandom */
private $secureRandom;
+ /** @var Manager */
+ private $signalingManager;
public function __construct(Config $config,
ILogger $logger,
IClientService $clientService,
- ISecureRandom $secureRandom) {
+ ISecureRandom $secureRandom,
+ Manager $signalingManager) {
$this->config = $config;
$this->logger = $logger;
$this->clientService = $clientService;
$this->secureRandom = $secureRandom;
+ $this->signalingManager = $signalingManager;
}
/**
@@ -88,19 +92,8 @@ class BackendNotifier {
return;
}
- $servers = $this->config->getSignalingServers();
- $serverId = null;
- if ($this->config->getSignalingMode() === Config::SIGNALING_CLUSTER_CONVERSATION) {
- // FIXME need to send it to the right signaling server
- $serverId = $room->getAssignedSignalingServer();
- // FIXME some need to go to all HPBs?
- }
- if ($serverId === null) {
- // We can use any server of the available backends.
- $serverId = random_int(0, count($servers) - 1);
- }
-
- $signaling = $servers[$serverId];
+ // FIXME some need to go to all HPBs, but that doesn't scale, so bad luck for now :(
+ $signaling = $this->signalingManager->getSignalingServerForConversation($room);
$signaling['server'] = rtrim($signaling['server'], '/');
$url = '/api/v1/room/' . $room->getToken();
diff --git a/lib/Signaling/Manager.php b/lib/Signaling/Manager.php
index 23580cb68..521e7ada9 100644
--- a/lib/Signaling/Manager.php
+++ b/lib/Signaling/Manager.php
@@ -41,10 +41,16 @@ class Manager {
$this->cache = $cacheFactory->createDistributed('hpb_servers');
}
- public function getSignalingServerForConversation(?Room $room): string {
+ public function getSignalingServerLinkForConversation(?Room $room): string {
+ if ($this->talkConfig->getSignalingMode() === Config::SIGNALING_INTERNAL) {
+ return '';
+ }
+
+ return $this->getSignalingServerForConversation($room)['server'];
+ }
+
+ public function getSignalingServerForConversation(?Room $room): array {
switch ($this->talkConfig->getSignalingMode()) {
- case Config::SIGNALING_INTERNAL:
- return '';
case Config::SIGNALING_EXTERNAL:
return $this->getSignalingServerRandomly();
case Config::SIGNALING_CLUSTER_CONVERSATION:
@@ -53,26 +59,26 @@ class Manager {
}
return $this->getSignalingServerConversationCluster($room);
default:
- throw new \RuntimeException('Unknown signaling mode');
+ throw new \RuntimeException('Unsupported signaling mode');
}
}
- public function getSignalingServerRandomly(): string {
+ public function getSignalingServerRandomly(): array {
$servers = $this->talkConfig->getSignalingServers();
try {
$serverId = random_int(0, count($servers) - 1);
- return $servers[$serverId]['server'];
+ return $servers[$serverId];
} catch (\Exception $e) {
- return $servers[0]['server'];
+ return $servers[0];
}
}
- public function getSignalingServerConversationCluster(Room $room): string {
+ public function getSignalingServerConversationCluster(Room $room): array {
$serverId = $room->getAssignedSignalingServer();
$servers = $this->talkConfig->getSignalingServers();
if ($serverId !== null && isset($servers[$serverId])) {
- return $servers[$serverId]['server'];
+ return $servers[$serverId];
}
$randomServerId = random_int(0, count($servers) - 1);
@@ -83,6 +89,6 @@ class Manager {
$room->setAssignedSignalingServer($serverId);
}
- return $servers[$serverId]['server'];
+ return $servers[$serverId];
}
}