danielle.madeley at collabora.co.uk
Tue Aug 24 04:52:44 PDT 2010
On Tue, 2010-08-24 at 12:33 +0100, Simon McVittie wrote:
> Yes ish, but we can't use that naming, because we already have a
> TpChannelFactory in CMs. Also, I think it should probably be a GInterface,
> not a base class.
That did cross my mind.
> How about TpClientChannelFactory as the GInterface, and TpDefaultChannelFactory
> as the reference implementation?
> > TpBaseChannelFactory has one method you need to implement,
> > create_channel, which gives you a path, and the properties, and expects
> > you to call whatever preparation you need, eventually calling back to
> > tp_base_channel_factory_channel_ready().
> If it's expected to be async, I think it'd be better to have
> create_channel_async and create_channel_finish, and use the GAsyncResult
> I wonder whether it should just be synchronous, and do the preparation
> separately, though; if it's async, then we can't use it in any context
> where we need an object synchronously. It seems better to allow for that -
> we'd prefer to get an unprepared object of the right app-specific subclass
> than an unprepared TpChannel, surely?
TpChannel* create_channel (Factory, path, properties);
void prepare_channel_async (Factory, TpChannel*);
gboolean prepare_channel_finish (Factory, GAsyncResult*, GError**);
So that you can always create the channel, and then optionally have the
factory do some async preparation that's additional to simply preparing
the core features.
Software Developer, Collabora Ltd. Melbourne, Australia
More information about the telepathy