#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CreateRequest {
#[prost(string, tag="1")]
pub parent_fid: ::prost::alloc::string::String,
#[prost(oneof="create_request::El", tags="2, 3, 4, 5")]
pub el: ::core::option::Option<create_request::El>,
}
pub mod create_request {
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum El {
#[prost(message, tag="2")]
Member(super::Member),
#[prost(message, tag="3")]
Room(super::Room),
#[prost(message, tag="4")]
WebrtcPlay(super::WebRtcPlayEndpoint),
#[prost(message, tag="5")]
WebrtcPub(super::WebRtcPublishEndpoint),
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct IdRequest {
#[prost(string, repeated, tag="1")]
pub fid: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ApplyRequest {
#[prost(string, tag="1")]
pub parent_fid: ::prost::alloc::string::String,
#[prost(oneof="apply_request::El", tags="2, 3, 4, 5")]
pub el: ::core::option::Option<apply_request::El>,
}
pub mod apply_request {
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum El {
#[prost(message, tag="2")]
Member(super::Member),
#[prost(message, tag="3")]
Room(super::Room),
#[prost(message, tag="4")]
WebrtcPlay(super::WebRtcPlayEndpoint),
#[prost(message, tag="5")]
WebrtcPub(super::WebRtcPublishEndpoint),
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Response {
#[prost(message, optional, tag="1")]
pub error: ::core::option::Option<Error>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CreateResponse {
#[prost(map="string, string", tag="1")]
pub sid: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
#[prost(message, optional, tag="2")]
pub error: ::core::option::Option<Error>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetResponse {
#[prost(map="string, message", tag="1")]
pub elements: ::std::collections::HashMap<::prost::alloc::string::String, Element>,
#[prost(message, optional, tag="2")]
pub error: ::core::option::Option<Error>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Error {
#[prost(uint32, tag="1")]
pub code: u32,
#[prost(string, tag="2")]
pub text: ::prost::alloc::string::String,
#[prost(string, tag="3")]
pub doc: ::prost::alloc::string::String,
#[prost(string, tag="4")]
pub element: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Element {
#[prost(oneof="element::El", tags="1, 2, 3, 4")]
pub el: ::core::option::Option<element::El>,
}
pub mod element {
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum El {
#[prost(message, tag="1")]
Member(super::Member),
#[prost(message, tag="2")]
Room(super::Room),
#[prost(message, tag="3")]
WebrtcPlay(super::WebRtcPlayEndpoint),
#[prost(message, tag="4")]
WebrtcPub(super::WebRtcPublishEndpoint),
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Room {
#[prost(string, tag="1")]
pub id: ::prost::alloc::string::String,
#[prost(map="string, message", tag="2")]
pub pipeline: ::std::collections::HashMap<::prost::alloc::string::String, room::Element>,
}
pub mod room {
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Element {
#[prost(oneof="element::El", tags="1, 2, 3")]
pub el: ::core::option::Option<element::El>,
}
pub mod element {
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum El {
#[prost(message, tag="1")]
Member(super::super::Member),
#[prost(message, tag="2")]
WebrtcPlay(super::super::WebRtcPlayEndpoint),
#[prost(message, tag="3")]
WebrtcPub(super::super::WebRtcPublishEndpoint),
}
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Member {
#[prost(string, tag="1")]
pub id: ::prost::alloc::string::String,
#[prost(string, tag="2")]
pub on_join: ::prost::alloc::string::String,
#[prost(string, tag="3")]
pub on_leave: ::prost::alloc::string::String,
#[prost(message, optional, tag="6")]
pub idle_timeout: ::core::option::Option<::prost_types::Duration>,
#[prost(message, optional, tag="7")]
pub reconnect_timeout: ::core::option::Option<::prost_types::Duration>,
#[prost(message, optional, tag="8")]
pub ping_interval: ::core::option::Option<::prost_types::Duration>,
#[prost(map="string, message", tag="9")]
pub pipeline: ::std::collections::HashMap<::prost::alloc::string::String, member::Element>,
#[prost(oneof="member::Credentials", tags="4, 5")]
pub credentials: ::core::option::Option<member::Credentials>,
}
pub mod member {
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Element {
#[prost(oneof="element::El", tags="1, 2")]
pub el: ::core::option::Option<element::El>,
}
pub mod element {
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum El {
#[prost(message, tag="1")]
WebrtcPlay(super::super::WebRtcPlayEndpoint),
#[prost(message, tag="2")]
WebrtcPub(super::super::WebRtcPublishEndpoint),
}
}
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum Credentials {
#[prost(string, tag="4")]
Hash(::prost::alloc::string::String),
#[prost(string, tag="5")]
Plain(::prost::alloc::string::String),
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct WebRtcPublishEndpoint {
#[prost(string, tag="1")]
pub id: ::prost::alloc::string::String,
#[prost(enumeration="web_rtc_publish_endpoint::P2p", tag="2")]
pub p2p: i32,
#[prost(string, tag="3")]
pub on_start: ::prost::alloc::string::String,
#[prost(string, tag="4")]
pub on_stop: ::prost::alloc::string::String,
#[prost(bool, tag="5")]
pub force_relay: bool,
#[prost(message, optional, tag="6")]
pub audio_settings: ::core::option::Option<web_rtc_publish_endpoint::AudioSettings>,
#[prost(message, optional, tag="7")]
pub video_settings: ::core::option::Option<web_rtc_publish_endpoint::VideoSettings>,
}
pub mod web_rtc_publish_endpoint {
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AudioSettings {
#[prost(enumeration="PublishPolicy", tag="1")]
pub publish_policy: i32,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct VideoSettings {
#[prost(enumeration="PublishPolicy", tag="1")]
pub publish_policy: i32,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum PublishPolicy {
Optional = 0,
Required = 1,
Disabled = 2,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum P2p {
Never = 0,
IfPossible = 1,
Always = 2,
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct WebRtcPlayEndpoint {
#[prost(string, tag="1")]
pub id: ::prost::alloc::string::String,
#[prost(string, tag="2")]
pub src: ::prost::alloc::string::String,
#[prost(string, tag="3")]
pub on_start: ::prost::alloc::string::String,
#[prost(string, tag="4")]
pub on_stop: ::prost::alloc::string::String,
#[prost(bool, tag="5")]
pub force_relay: bool,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Ping {
#[prost(uint32, tag="1")]
pub nonce: u32,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Pong {
#[prost(uint32, tag="1")]
pub nonce: u32,
}
pub mod control_api_client {
#![allow(unused_variables, dead_code, missing_docs, clippy::let_unit_value)]
use tonic::codegen::*;
#[derive(Debug, Clone)]
pub struct ControlApiClient<T> {
inner: tonic::client::Grpc<T>,
}
impl ControlApiClient<tonic::transport::Channel> {
pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
where
D: std::convert::TryInto<tonic::transport::Endpoint>,
D::Error: Into<StdError>,
{
let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
Ok(Self::new(conn))
}
}
impl<T> ControlApiClient<T>
where
T: tonic::client::GrpcService<tonic::body::BoxBody>,
T::Error: Into<StdError>,
T::ResponseBody: Body<Data = Bytes> + Send + 'static,
<T::ResponseBody as Body>::Error: Into<StdError> + Send,
{
pub fn new(inner: T) -> Self {
let inner = tonic::client::Grpc::new(inner);
Self { inner }
}
pub fn with_interceptor<F>(
inner: T,
interceptor: F,
) -> ControlApiClient<InterceptedService<T, F>>
where
F: tonic::service::Interceptor,
T::ResponseBody: Default,
T: tonic::codegen::Service<
http::Request<tonic::body::BoxBody>,
Response = http::Response<
<T as tonic::client::GrpcService<tonic::body::BoxBody>>::ResponseBody,
>,
>,
<T as tonic::codegen::Service<
http::Request<tonic::body::BoxBody>,
>>::Error: Into<StdError> + Send + Sync,
{
ControlApiClient::new(InterceptedService::new(inner, interceptor))
}
#[must_use]
pub fn send_gzip(mut self) -> Self {
self.inner = self.inner.send_gzip();
self
}
#[must_use]
pub fn accept_gzip(mut self) -> Self {
self.inner = self.inner.accept_gzip();
self
}
pub async fn create(
&mut self,
request: impl tonic::IntoRequest<super::CreateRequest>,
) -> Result<tonic::Response<super::CreateResponse>, tonic::Status> {
self.inner
.ready()
.await
.map_err(|e| {
tonic::Status::new(
tonic::Code::Unknown,
format!("Service was not ready: {}", e.into()),
)
})?;
let codec = tonic::codec::ProstCodec::default();
let path = http::uri::PathAndQuery::from_static("/api.ControlApi/Create");
self.inner.unary(request.into_request(), path, codec).await
}
pub async fn delete(
&mut self,
request: impl tonic::IntoRequest<super::IdRequest>,
) -> Result<tonic::Response<super::Response>, tonic::Status> {
self.inner
.ready()
.await
.map_err(|e| {
tonic::Status::new(
tonic::Code::Unknown,
format!("Service was not ready: {}", e.into()),
)
})?;
let codec = tonic::codec::ProstCodec::default();
let path = http::uri::PathAndQuery::from_static("/api.ControlApi/Delete");
self.inner.unary(request.into_request(), path, codec).await
}
pub async fn get(
&mut self,
request: impl tonic::IntoRequest<super::IdRequest>,
) -> Result<tonic::Response<super::GetResponse>, tonic::Status> {
self.inner
.ready()
.await
.map_err(|e| {
tonic::Status::new(
tonic::Code::Unknown,
format!("Service was not ready: {}", e.into()),
)
})?;
let codec = tonic::codec::ProstCodec::default();
let path = http::uri::PathAndQuery::from_static("/api.ControlApi/Get");
self.inner.unary(request.into_request(), path, codec).await
}
pub async fn apply(
&mut self,
request: impl tonic::IntoRequest<super::ApplyRequest>,
) -> Result<tonic::Response<super::CreateResponse>, tonic::Status> {
self.inner
.ready()
.await
.map_err(|e| {
tonic::Status::new(
tonic::Code::Unknown,
format!("Service was not ready: {}", e.into()),
)
})?;
let codec = tonic::codec::ProstCodec::default();
let path = http::uri::PathAndQuery::from_static("/api.ControlApi/Apply");
self.inner.unary(request.into_request(), path, codec).await
}
pub async fn healthz(
&mut self,
request: impl tonic::IntoRequest<super::Ping>,
) -> Result<tonic::Response<super::Pong>, tonic::Status> {
self.inner
.ready()
.await
.map_err(|e| {
tonic::Status::new(
tonic::Code::Unknown,
format!("Service was not ready: {}", e.into()),
)
})?;
let codec = tonic::codec::ProstCodec::default();
let path = http::uri::PathAndQuery::from_static("/api.ControlApi/Healthz");
self.inner.unary(request.into_request(), path, codec).await
}
}
}
pub mod control_api_server {
#![allow(unused_variables, dead_code, missing_docs, clippy::let_unit_value)]
use tonic::codegen::*;
#[async_trait]
pub trait ControlApi: Send + Sync + 'static {
async fn create(
&self,
request: tonic::Request<super::CreateRequest>,
) -> Result<tonic::Response<super::CreateResponse>, tonic::Status>;
async fn delete(
&self,
request: tonic::Request<super::IdRequest>,
) -> Result<tonic::Response<super::Response>, tonic::Status>;
async fn get(
&self,
request: tonic::Request<super::IdRequest>,
) -> Result<tonic::Response<super::GetResponse>, tonic::Status>;
async fn apply(
&self,
request: tonic::Request<super::ApplyRequest>,
) -> Result<tonic::Response<super::CreateResponse>, tonic::Status>;
async fn healthz(
&self,
request: tonic::Request<super::Ping>,
) -> Result<tonic::Response<super::Pong>, tonic::Status>;
}
#[derive(Debug)]
pub struct ControlApiServer<T: ControlApi> {
inner: _Inner<T>,
accept_compression_encodings: (),
send_compression_encodings: (),
}
struct _Inner<T>(Arc<T>);
impl<T: ControlApi> ControlApiServer<T> {
pub fn new(inner: T) -> Self {
Self::from_arc(Arc::new(inner))
}
pub fn from_arc(inner: Arc<T>) -> Self {
let inner = _Inner(inner);
Self {
inner,
accept_compression_encodings: Default::default(),
send_compression_encodings: Default::default(),
}
}
pub fn with_interceptor<F>(
inner: T,
interceptor: F,
) -> InterceptedService<Self, F>
where
F: tonic::service::Interceptor,
{
InterceptedService::new(Self::new(inner), interceptor)
}
}
impl<T, B> tonic::codegen::Service<http::Request<B>> for ControlApiServer<T>
where
T: ControlApi,
B: Body + Send + 'static,
B::Error: Into<StdError> + Send + 'static,
{
type Response = http::Response<tonic::body::BoxBody>;
type Error = std::convert::Infallible;
type Future = BoxFuture<Self::Response, Self::Error>;
fn poll_ready(
&mut self,
_cx: &mut Context<'_>,
) -> Poll<Result<(), Self::Error>> {
Poll::Ready(Ok(()))
}
fn call(&mut self, req: http::Request<B>) -> Self::Future {
let inner = self.inner.clone();
match req.uri().path() {
"/api.ControlApi/Create" => {
#[allow(non_camel_case_types)]
struct CreateSvc<T: ControlApi>(pub Arc<T>);
impl<T: ControlApi> tonic::server::UnaryService<super::CreateRequest>
for CreateSvc<T> {
type Response = super::CreateResponse;
type Future = BoxFuture<
tonic::Response<Self::Response>,
tonic::Status,
>;
fn call(
&mut self,
request: tonic::Request<super::CreateRequest>,
) -> Self::Future {
let inner = self.0.clone();
let fut = async move { (*inner).create(request).await };
Box::pin(fut)
}
}
let accept_compression_encodings = self.accept_compression_encodings;
let send_compression_encodings = self.send_compression_encodings;
let inner = self.inner.clone();
let fut = async move {
let inner = inner.0;
let method = CreateSvc(inner);
let codec = tonic::codec::ProstCodec::default();
let mut grpc = tonic::server::Grpc::new(codec)
.apply_compression_config(
accept_compression_encodings,
send_compression_encodings,
);
let res = grpc.unary(method, req).await;
Ok(res)
};
Box::pin(fut)
}
"/api.ControlApi/Delete" => {
#[allow(non_camel_case_types)]
struct DeleteSvc<T: ControlApi>(pub Arc<T>);
impl<T: ControlApi> tonic::server::UnaryService<super::IdRequest>
for DeleteSvc<T> {
type Response = super::Response;
type Future = BoxFuture<
tonic::Response<Self::Response>,
tonic::Status,
>;
fn call(
&mut self,
request: tonic::Request<super::IdRequest>,
) -> Self::Future {
let inner = self.0.clone();
let fut = async move { (*inner).delete(request).await };
Box::pin(fut)
}
}
let accept_compression_encodings = self.accept_compression_encodings;
let send_compression_encodings = self.send_compression_encodings;
let inner = self.inner.clone();
let fut = async move {
let inner = inner.0;
let method = DeleteSvc(inner);
let codec = tonic::codec::ProstCodec::default();
let mut grpc = tonic::server::Grpc::new(codec)
.apply_compression_config(
accept_compression_encodings,
send_compression_encodings,
);
let res = grpc.unary(method, req).await;
Ok(res)
};
Box::pin(fut)
}
"/api.ControlApi/Get" => {
#[allow(non_camel_case_types)]
struct GetSvc<T: ControlApi>(pub Arc<T>);
impl<T: ControlApi> tonic::server::UnaryService<super::IdRequest>
for GetSvc<T> {
type Response = super::GetResponse;
type Future = BoxFuture<
tonic::Response<Self::Response>,
tonic::Status,
>;
fn call(
&mut self,
request: tonic::Request<super::IdRequest>,
) -> Self::Future {
let inner = self.0.clone();
let fut = async move { (*inner).get(request).await };
Box::pin(fut)
}
}
let accept_compression_encodings = self.accept_compression_encodings;
let send_compression_encodings = self.send_compression_encodings;
let inner = self.inner.clone();
let fut = async move {
let inner = inner.0;
let method = GetSvc(inner);
let codec = tonic::codec::ProstCodec::default();
let mut grpc = tonic::server::Grpc::new(codec)
.apply_compression_config(
accept_compression_encodings,
send_compression_encodings,
);
let res = grpc.unary(method, req).await;
Ok(res)
};
Box::pin(fut)
}
"/api.ControlApi/Apply" => {
#[allow(non_camel_case_types)]
struct ApplySvc<T: ControlApi>(pub Arc<T>);
impl<T: ControlApi> tonic::server::UnaryService<super::ApplyRequest>
for ApplySvc<T> {
type Response = super::CreateResponse;
type Future = BoxFuture<
tonic::Response<Self::Response>,
tonic::Status,
>;
fn call(
&mut self,
request: tonic::Request<super::ApplyRequest>,
) -> Self::Future {
let inner = self.0.clone();
let fut = async move { (*inner).apply(request).await };
Box::pin(fut)
}
}
let accept_compression_encodings = self.accept_compression_encodings;
let send_compression_encodings = self.send_compression_encodings;
let inner = self.inner.clone();
let fut = async move {
let inner = inner.0;
let method = ApplySvc(inner);
let codec = tonic::codec::ProstCodec::default();
let mut grpc = tonic::server::Grpc::new(codec)
.apply_compression_config(
accept_compression_encodings,
send_compression_encodings,
);
let res = grpc.unary(method, req).await;
Ok(res)
};
Box::pin(fut)
}
"/api.ControlApi/Healthz" => {
#[allow(non_camel_case_types)]
struct HealthzSvc<T: ControlApi>(pub Arc<T>);
impl<T: ControlApi> tonic::server::UnaryService<super::Ping>
for HealthzSvc<T> {
type Response = super::Pong;
type Future = BoxFuture<
tonic::Response<Self::Response>,
tonic::Status,
>;
fn call(
&mut self,
request: tonic::Request<super::Ping>,
) -> Self::Future {
let inner = self.0.clone();
let fut = async move { (*inner).healthz(request).await };
Box::pin(fut)
}
}
let accept_compression_encodings = self.accept_compression_encodings;
let send_compression_encodings = self.send_compression_encodings;
let inner = self.inner.clone();
let fut = async move {
let inner = inner.0;
let method = HealthzSvc(inner);
let codec = tonic::codec::ProstCodec::default();
let mut grpc = tonic::server::Grpc::new(codec)
.apply_compression_config(
accept_compression_encodings,
send_compression_encodings,
);
let res = grpc.unary(method, req).await;
Ok(res)
};
Box::pin(fut)
}
_ => {
Box::pin(async move {
Ok(
http::Response::builder()
.status(200)
.header("grpc-status", "12")
.header("content-type", "application/grpc")
.body(empty_body())
.unwrap(),
)
})
}
}
}
}
impl<T: ControlApi> Clone for ControlApiServer<T> {
fn clone(&self) -> Self {
let inner = self.inner.clone();
Self {
inner,
accept_compression_encodings: self.accept_compression_encodings,
send_compression_encodings: self.send_compression_encodings,
}
}
}
impl<T: ControlApi> Clone for _Inner<T> {
fn clone(&self) -> Self {
Self(self.0.clone())
}
}
impl<T: std::fmt::Debug> std::fmt::Debug for _Inner<T> {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{:?}", self.0)
}
}
impl<T: ControlApi> tonic::transport::NamedService for ControlApiServer<T> {
const NAME: &'static str = "api.ControlApi";
}
}