I am developing a new TCP protocol where changes need to be made in TcpSocketBase::SendPendingData(). It appears that I cannot use TcpCongestionOps or TcpRecoveryOps to achieve what I need, so I chose to create an AbcSocketBase as a subclass of TcpSocketBase. Now, I would like to use this type of socket in a simulation along with the BulkSendApplication and PacketSinkApplication. From the manual, I found that I can use
Config::SetDefault ("ns3::TcpL4Protocol::SocketType", StringValue ("ns3::TcpNewReno"));
to set a TcpCongestionOps class, but how can I tell Applications to use the AbcSocketBase?
I have thought of one solution, but I feel that I may be missing something: implement a AbcTcpL4Protocol, and AbcTcpSocketFactory class, and use the factory as a parameter to the Application constructor. Is this the only solution with the given constraints, or am I missing something?