Reports as system-state Observers

Christopher James Halse Rogers chris at cooperteam.net
Fri Sep 16 01:51:42 UTC 2016


On Thu, Sep 15, 2016 at 12:11 PM, Daniel van Vugt 
<daniel.van.vugt at 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.

> 
> 
> On 15/09/16 10:10, Daniel van Vugt wrote:
>> That's a good point. We don't need to change all the reporting 
>> locations.
>> 
>> I still don't like the idea of having to delegate within reports, as
>> well as changing their construction methods.
>> 
>> Although I now realize my other concern that we'd have to change all
>> reports at once for consistency also isn't true. If a user said:
>> 
>>   --something-report=log,lttng,...
>> 
>> and the SomethingReport didn't support multiple implementations yet 
>> then
>> that's just a syntax error.
>> 
>> I guess my remaining concern that's unresolved is the existing
>> assumption that reports don't affect the control flow of the server. 
>> But
>> that's really just a naming issue -- if it was called 
>> SomethingObserver
>> then it would be OK. Just the word "report" makes me think it is
>> ineffectual to server behavior.
>> 
>> 
>> On 15/09/16 10:01, Christopher James Halse Rogers wrote:
>>> On Thu, Sep 15, 2016 at 11:57 AM, Daniel van Vugt
>>> <daniel.van.vugt at canonical.com> wrote:
>>>> Not impossible, but it feels too ugly. I would prefer to keep 
>>>> reports
>>>> for debugging/logging only where they don't affect the behavior of 
>>>> the
>>>> server. And programmers can assume this is true without knowing the
>>>> implementation details of any given subsystem.
>>> 
>>> I agree, but
>>>> 
>>>> 
>>>> The implementation is potentially also ugly. At each point where a
>>>> report happens you can't any more say:
>>>>    report_interface->report_something()
>>>> because that would only call one implementation. So we would need 
>>>> to
>>>> change the architecture of all reports and for consistency change 
>>>> them
>>>> all. It doesn't sound nice.
>>> 
>>> ...this wouldn't actually be true? We'd just make 
>>> the_report_interface()
>>> not an override point and instead always have the same 
>>> implementation
>>> (which would then delegate to whichever report implementations have 
>>> been
>>> registered).
>>> 
>>> 
>> 
> 
> --
> Mir-devel mailing list
> Mir-devel at lists.ubuntu.com
> Modify settings or unsubscribe at: 
> https://lists.ubuntu.com/mailman/listinfo/mir-devel




More information about the Mir-devel mailing list