Skip to content

Same table names in different namespaces not supported #180

Description

@jmillan

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
};

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions