On Fri, Sep 16, 2016 at 5:08 PM, Christopher James Halse Rogers <ch...@cooperteam.net> wrote:


On Fri, Sep 16, 2016 at 4:51 PM, Alan Griffiths <alan.griffi...@canonical.com> wrote:
On 16/09/16 02:51, Christopher James Halse Rogers wrote:
On Thu, Sep 15, 2016 at 12:11 PM, Daniel van Vugt <daniel.van.v...@canonical.com> wrote:
So actually... I now think it's OK providing the base class is named *Observer. And only some implementations would be called *Report.

I would also be happy with this; various components take an Observer (which provides a register-interested-party API), and Reports register themselves as interested parties.

1. the user of the "Report" interface is the core code - which is simply reporting something. The code reads "report->xxx()" which is clear.
2. we've had this name for years, without considering it a problem.

3. Some implementations of "Report" log, some don't - which is the behaviour that was originally intended (and what we all want).

4. I *think* the current issue is simply that we want to add support for multiple reports/observers so that code using Mir can get notifications without disabling the supplied logging/lttng options. We have existing generic "observer" code that can be used to composite reports.

In short, I agree that "Reports" are taking the "Observer" role from the pattern language, but I think the more specific name is good here and I don't follow why folks want the pain of a rename.

So, I think what's happening here is:

For some subset (including me) of the Mir team, the term “Report” has a bunch of implicit semantics, including
*) This is optional, for post-hoc human-based debugging only
*) This is *purely* observational; it might log in any number of ways, but the *only* state it's going to change is the state of some logging system. *) The calls are approximately equal to printf; relatively cheap and simple.

Which is why (1) and (2) are problematic - we *do* think that the meaning of report->xxx() is clear, and isn't a problem, but we think it means something significantly different to what you do.

Also - this is why the pain of a rename might be appropriate. At least some of our code that calls reports will *break* if it's used to drive code. Because we've not considered reports to be arbitrary callbacks, we do things like call them while holding locks that will cause deadlocks if code calls back into the object.


--
Mir-devel mailing list
Mir-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/mir-devel

Reply via email to