R
RM
We have several hundred classes that essentially implement a variety of
features in our system. Communication between classes is via message
passing. Each class acts like a process, getting a time slice to process
any messages in its queue.
These classes are all at some point involved in a no down-time software
upgrade process that has little to do with their main function. This
upgrade process is really complex, with dependencies between classes,
involves the transfer of dynamic data from old version of class to new
version, with a central controller keeping track of which classes have
upgraded and which have not. Any class can abort the entire sequence if
it fails to respond.
One of the things we want to do is improve reporting from the classes so
we can detect classes that are blocking the process.
I thought of requiring each class to support new methods that would
implement a query interface to report status information, but since the
classes are largely independent of one another, this would not be feasible.
Another approach would be to introduce a friend class into each feature
class that would include a query interface and possibly even methods to
handle most of the logic related to software upgrades.
Anyone have any recommendations in this regard or other approaches that
might be used?
Thanks,
RM
features in our system. Communication between classes is via message
passing. Each class acts like a process, getting a time slice to process
any messages in its queue.
These classes are all at some point involved in a no down-time software
upgrade process that has little to do with their main function. This
upgrade process is really complex, with dependencies between classes,
involves the transfer of dynamic data from old version of class to new
version, with a central controller keeping track of which classes have
upgraded and which have not. Any class can abort the entire sequence if
it fails to respond.
One of the things we want to do is improve reporting from the classes so
we can detect classes that are blocking the process.
I thought of requiring each class to support new methods that would
implement a query interface to report status information, but since the
classes are largely independent of one another, this would not be feasible.
Another approach would be to introduce a friend class into each feature
class that would include a query interface and possibly even methods to
handle most of the logic related to software upgrades.
Anyone have any recommendations in this regard or other approaches that
might be used?
Thanks,
RM