As you can see in the following example, having tables with the same name in different namespaces is not supported. They are reduced to one (ie: Check for DumpResponse).
In our case we're using a quite wide schema and having namespaces make perfect sense.
.fbs schema:
union Body {
FBS.Worker.DumpResponse,
FBS.Worker.ResourceUsageResponse,
FBS.WebRtcServer.DumpResponse,
FBS.Router.DumpResponse,
FBS.Transport.ProduceResponse,
FBS.Transport.ConsumeResponse,
FBS.Transport.RestartIceResponse,
FBS.PlainTransport.ConnectResponse,
FBS.PlainTransport.DumpResponse,
FBS.PlainTransport.GetStatsResponse,
FBS.PipeTransport.ConnectResponse,
FBS.PipeTransport.DumpResponse,
FBS.PipeTransport.GetStatsResponse,
FBS.DirectTransport.DumpResponse,
FBS.DirectTransport.GetStatsResponse,
FBS.WebRtcTransport.ConnectResponse,
FBS.WebRtcTransport.DumpResponse,
FBS.WebRtcTransport.GetStatsResponse,
FBS.Producer.DumpResponse,
FBS.Producer.GetStatsResponse,
FBS.Consumer.DumpResponse,
FBS.Consumer.GetStatsResponse,
FBS.Consumer.SetPreferredLayersResponse,
FBS.Consumer.SetPriorityResponse,
FBS.DataProducer.DumpResponse,
FBS.DataProducer.GetStatsResponse,
FBS.DataConsumer.GetBufferedAmountResponse,
FBS.DataConsumer.DumpResponse,
FBS.DataConsumer.GetStatsResponse,
}
The following rust code is generated:
pub enum Body {
DumpResponse(::planus::alloc::boxed::Box<super::data_consumer::DumpResponse>),
ResourceUsageResponse(
::planus::alloc::boxed::Box<super::worker::ResourceUsageResponse>,
),
ProduceResponse(::planus::alloc::boxed::Box<super::transport::ProduceResponse>),
ConsumeResponse(::planus::alloc::boxed::Box<super::transport::ConsumeResponse>),
RestartIceResponse(
::planus::alloc::boxed::Box<super::transport::RestartIceResponse>,
),
ConnectResponse(
::planus::alloc::boxed::Box<super::web_rtc_transport::ConnectResponse>,
),
GetStatsResponse(
::planus::alloc::boxed::Box<super::data_consumer::GetStatsResponse>,
),
SetPreferredLayersResponse(
::planus::alloc::boxed::Box<super::consumer::SetPreferredLayersResponse>,
),
SetPriorityResponse(
::planus::alloc::boxed::Box<super::consumer::SetPriorityResponse>,
),
GetBufferedAmountResponse(
::planus::alloc::boxed::Box<super::data_consumer::GetBufferedAmountResponse>,
),
}
This is the generated code for c++:
enum class Body : uint8_t {
NONE = 0,
FBS_Worker_DumpResponse = 1,
FBS_Worker_ResourceUsageResponse = 2,
FBS_WebRtcServer_DumpResponse = 3,
FBS_Router_DumpResponse = 4,
FBS_Transport_ProduceResponse = 5,
FBS_Transport_ConsumeResponse = 6,
FBS_Transport_RestartIceResponse = 7,
FBS_PlainTransport_ConnectResponse = 8,
FBS_PlainTransport_DumpResponse = 9,
FBS_PlainTransport_GetStatsResponse = 10,
FBS_PipeTransport_ConnectResponse = 11,
FBS_PipeTransport_DumpResponse = 12,
FBS_PipeTransport_GetStatsResponse = 13,
FBS_DirectTransport_DumpResponse = 14,
FBS_DirectTransport_GetStatsResponse = 15,
FBS_WebRtcTransport_ConnectResponse = 16,
FBS_WebRtcTransport_DumpResponse = 17,
FBS_WebRtcTransport_GetStatsResponse = 18,
FBS_Producer_DumpResponse = 19,
FBS_Producer_GetStatsResponse = 20,
FBS_Consumer_DumpResponse = 21,
FBS_Consumer_GetStatsResponse = 22,
FBS_Consumer_SetPreferredLayersResponse = 23,
FBS_Consumer_SetPriorityResponse = 24,
FBS_DataProducer_DumpResponse = 25,
FBS_DataProducer_GetStatsResponse = 26,
FBS_DataConsumer_GetBufferedAmountResponse = 27,
FBS_DataConsumer_DumpResponse = 28,
FBS_DataConsumer_GetStatsResponse = 29,
MIN = NONE,
MAX = FBS_DataConsumer_GetStatsResponse
};
As you can see in the following example, having tables with the same name in different namespaces is not supported. They are reduced to one (ie: Check for
DumpResponse).In our case we're using a quite wide schema and having namespaces make perfect sense.
.fbs schema:
The following rust code is generated:
This is the generated code for c++: