strukturag_nextcloud-spreed.../grpc_sessions.proto
Joachim Bauch 72e38b7814
Prevent duplicate virtual sessions in participant update events.
This can happen if these sessions are returned by Nextcloud and then the
local session is added.

Also fixes events in clustered scenarios where virtual sessions are available
on on server but the update events are generated on a different one.
2024-10-30 11:59:28 +01:00

91 lines
2.4 KiB
Protocol Buffer

/**
* Standalone signaling server for the Nextcloud Spreed app.
* Copyright (C) 2022 struktur AG
*
* @author Joachim Bauch <bauch@struktur.de>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
syntax = "proto3";
option go_package = "github.com/strukturag/nextcloud-spreed-signaling;signaling";
package signaling;
service RpcSessions {
rpc LookupResumeId(LookupResumeIdRequest) returns (LookupResumeIdReply) {}
rpc LookupSessionId(LookupSessionIdRequest) returns (LookupSessionIdReply) {}
rpc IsSessionInCall(IsSessionInCallRequest) returns (IsSessionInCallReply) {}
rpc GetInternalSessions(GetInternalSessionsRequest) returns (GetInternalSessionsReply) {}
rpc ProxySession(stream ClientSessionMessage) returns (stream ServerSessionMessage) {}
}
message LookupResumeIdRequest {
string resumeId = 1;
}
message LookupResumeIdReply {
string sessionId = 1;
}
message LookupSessionIdRequest {
string roomSessionId = 1;
// Optional: set if the session should be disconnected with a given reason.
string disconnectReason = 2;
}
message LookupSessionIdReply {
string sessionId = 1;
}
message IsSessionInCallRequest {
string sessionId = 1;
string roomId = 2;
string backendUrl = 3;
}
message IsSessionInCallReply {
bool inCall = 1;
}
message GetInternalSessionsRequest {
string roomId = 1;
string backendUrl = 2;
}
message InternalSessionData {
string sessionId = 1;
uint32 inCall = 2;
repeated string features = 3;
}
message VirtualSessionData {
string sessionId = 1;
uint32 inCall = 2;
}
message GetInternalSessionsReply {
repeated InternalSessionData internalSessions = 1;
repeated VirtualSessionData virtualSessions = 2;
}
message ClientSessionMessage {
bytes message = 1;
}
message ServerSessionMessage {
bytes message = 1;
}