@@ -237,10 +237,23 @@ class LteMacBase : public cSimpleModule
237237 return cellId_;
238238 }
239239
240- // Returns the virtual buffers
241- std::map<MacCid, LteMacBuffer*> * getMacBuffers ( )
240+ // Returns the virtual buffer for a specific CID
241+ LteMacBuffer* getMacBuffer (MacCid cid )
242242 {
243- return &macBuffers_;
243+ auto it = macBuffers_.find (cid);
244+ if (it == macBuffers_.end ())
245+ throw cRuntimeError (" LteMacBase::getMacBuffer - Buffer for CID %s not found" , cid.str ().c_str ());
246+ return it->second ;
247+ }
248+
249+ // Returns list of active buffer CIDs
250+ std::vector<MacCid> getActiveMacBufferCids ()
251+ {
252+ std::vector<MacCid> activeCids;
253+ activeCids.reserve (macBuffers_.size ());
254+ for (const auto & [cid,_] : macBuffers_)
255+ activeCids.push_back (cid);
256+ return activeCids;
244257 }
245258
246259 // Returns Traffic Class to cid mapping
@@ -249,10 +262,23 @@ class LteMacBase : public cSimpleModule
249262 return lcgMap_;
250263 }
251264
252- // Returns connection descriptors
253- std::map<MacCid, FlowControlInfo>& getConnDesc ()
265+ // Returns flow control info for a specific CID
266+ const FlowControlInfo& getConnDesc (MacCid cid)
267+ {
268+ auto it = connDesc_.find (cid);
269+ if (it == connDesc_.end ())
270+ throw cRuntimeError (" LteMacBase: Connection %s not found" , cid.str ().c_str ());
271+ return it->second ;
272+ }
273+
274+ // Returns list of active connection CIDs
275+ std::vector<MacCid> getActiveConnectionCids ()
254276 {
255- return connDesc_;
277+ std::vector<MacCid> activeCids;
278+ activeCids.reserve (connDesc_.size ());
279+ for (const auto & [cid,_] : connDesc_)
280+ activeCids.push_back (cid);
281+ return activeCids;
256282 }
257283
258284 // Returns the harq tx buffers
0 commit comments