is_local
member into CORBA::Object. I'll take the easier route for now. We should implement this as a base template, something like:
template<class T> Intrusive_Node {
public:
void next (T *);
T* next () const;
private:
T* next_;
};
and use it as follows:
class TAO_Queued_Message : public Intrusive_Node<TAO_Queued_Message>
{
};
Look into adding a template parameter to each of the templates in question that would be a trait containing the means for releasing references managed by the templates. Doing so should work around the non-dependent name issues in g++ 3.4, thus easing the requirement that this header be parsed last.
There is no control on a per-sequence type basis, only on a per-underlying type basis, for example, the following two IDL sequences would get the same behavior: // IDL typedef sequence<MyStruct> MyStructSequence; typedef sequence<MyStruct> MyStructList;
There is no way to control behavior on a per-sequence basis, i.e. to have some sequences of longs checked while others are not. This is easy to fix, simply:
Implementing the Leader/Followers loop in this class, as well as the callbacks to communicate that an event has completed leads to excessive coupling. A better design would use a separate class to signal the events, that would allow us to remove the Leader/Followers logic from the ORB. However, that requires other major changes and it somewhat complicates the design.
Currently this class offers little abstraction, the follower loop should be implemented by this class.
Change the ORB to allocate oneway and AMI buffer from global memory, to avoid the data copy in this path. What happens if the there is no queueing? Can we check that before allocating the memory?
Since we only use a limited functionality of ACE_Svc_Handler we could probably implement a generic adapter class (TAO_Transport_Event_Handler or something), this will reduce footprint and simplify the process of implementing a pluggable protocol.
This method has to be renamed to event_handler()
This method has to be renamed to event_handler()
the method name is confusing! Calling it handle_input() would probably make things easier to understand and follow!
Ideally the following should be inline.
purge_entry has a return value, use it