[Telepathy] forwarding spec questions

Andres Salomon dilinger at collabora.co.uk
Fri Mar 19 18:23:04 PDT 2010


Thanks for the input!  I've uploaded an initial draft here -

http://git.collabora.co.uk/?p=user/dilinger/telepathy-spec;a=shortlog;h=refs/heads/forwarding

I still need to make the references to various enums/functions/signals
proper links still.

I have some comments below (after this, let's take further
discussion to the bug -
http://bugs.freedesktop.org/show_bug.cgi?id=13351 ).



On Wed, 17
Mar 2010 18:26:45 +0100 <mikhail.zabaluev at nokia.com> wrote:

> Hi,
> 
> > -----Original Message-----
> > From: ext Andres Salomon [mailto:dilinger at collabora.co.uk]
> > Sent: Wednesday, March 17, 2010 6:47 PM
> > To: Zabaluev Mikhail (Nokia-D/Helsinki)
> > Cc: telepathy at lists.freedesktop.org; sjoerd.simons at collabora.co.uk
> > Subject: Re: [Telepathy] forwarding spec questions
> > 
> > > method SetForwardingRule(u: Forwarding_Condition, a(uu):
> > > Forwarding_List) -> a(uu)
> > 
> > What happens if I attempt to call SetForwardingRule(Busy, {0, 231})
> > when
> > there's already an entry in the Forwarding_List array for Busy?
> > Does the old entry get overwritten, or can both Busy entries
> > co-exist in the array?
> 
> I think for simplicity sake, it should be overwritten. As well as any
> other rule that will effectively be changed by the implementation
> when setting this rule. Maybe there is little point in reflecting the
> effective rule in the return value as I indented (as there is already
> a signal for that), so the return value could get the replaced rule.
> 
> > > I'm not certain of how the conditional rules should supplement
> > > each other. Should NoReply also work if the subscriber is not
> > > reachable and the rule for NotReachable is not set? Or vice
> > > versa? Will anything supplement Busy? Or should it be at the
> > > discretion of the connection manager, which will be obliged to
> > > advertise all effective rules as apply to each condition?
> > >
> > 
> > Unconditional overrides everything else.  NotReachable is a specific
> > case, and shouldn't (in theory) apply to Busy/NoReply.  If the GSM
> > phone is on and in service range, Busy and NoReply should be the
> > only remaining options.
> > 
> > I would think that this maps to VOIP calls as well; NotReachable
> > implies the local user is not online (if the protocol doesn't allow
> > us to see whether or not a user's online, then NotReachable will
> > never be triggered).  If the user is online and is capable of
> > receiving calls, then Busy and NoReply are all that remain.
> 
> Sounds OK to me. But I'd like to keep a provision for the service to
> change any other rules as a side effect of setting one particular
> conditional rule. There might be protocols that cannot distinguish
> some of the proposed conditions. Also, setting Unconditional could
> explicitly remove all conditional rules as reflected by the
> ForwardingRulesChanged signal. 


I noted this in the spec, saying that one shouldn't modify other rules,
but if forced to.. multiple Changed signals should be raised.


> > In the case where the underlying network services automatically
> > supplement the forwarding rules, this should either be turned off,
> > or the CM can make that explicit (ie, setting NoReply while
> > NotReachable is unset results in a ForwardingRulesChanged signal
> > that has *both* set;
> 
> Right.
> 
> > likewise, setting Unconditional with nothing else set might raise
> > the ForwardingRulesChanged signal w/ every forwarding rule set).
> 
> That, or just one Unconditional rule survives. This way will make the
> job of a UI client easier.
> 
> Some finer points about the proposal:
> 
> - Does setting an empty list nullify the rule, or do we need a
> separate method to clear?
> 

I think empty list is fine.  I was quite tempted to change the
rules array to a struct for clarity's sake (if each rule is an element
in the struct, it's pretty clear that changing a single element will
overwrite the previous value), but held off for two reasons;
1) the dbus C api for structs is a pain, and
2) I can imagine wanting to add other rules.  If we expand the enum and
use an array for the rule list, I don't think we'd have ABI problems.
If we have a struct that's being passed around, I'm not sure what the
ABI situation would be like.



> - There should be a property to limit the number of entries per list,
> which can be 0 (or MAXUINT32?) if there's no explicit limit, and 1 if
> the protocol does not deal with lists. The CM may have the right to
> shorten the list, as long as it is properly signalled.

ACK.  I left the right-to-shorten-the-MaxForwards bit  out; do you have
a use case for that sort of thing?


> 
> - As mentioned before, a Boolean property to tell if timeouts are
> supported.
> 

I mentioned that timeouts may be ignored by the CM (due to a number of
reasons).  Do you think it's worth attempting to tell the client if
they're used or not?  In some cases, I can imagine the CM itself not
even knowing..



More information about the telepathy mailing list