On Sun, Aug 13, 2017 at 01:20:14PM +0200, Joël Krähemann wrote:
> The AgsApplicationContext acts as a base entry point to your
> application. It is an extensible singleton
> where functions are added by interfaces.
> 
> In order to use libags-thread.so.0 you have to implement
> AgsConcurrencyProvider provider in your application context.
> 
> Likewise for libags-audio.so.0 you have to implement
> AgsConcurrencyProvider provider and AgsSoundProvider because
> it depends on thread routines.
> 
> Both library use the very same base class but you can use
> libags-thread.so.0 without ever knowing about audio. Here are
> some implementations:
> 
> * AgsXorgApplicationContext
> * AgsAudioApplicationContext
> * AgsServerApplicationContext
> 
> The advantage of having a application context is you can provide your
> very own extensions and you just have to derivate
> AgsApplicationContext and implement wished interfaces.
> 
> There is another interface in development AgsServiceProvider if you do
> J2EE you might have seen such as using
> Spring.
> 
> AgsRecallFactory is an advanced factory pattern as you put in a string
> you get a list of objects back. It does instantiate
> AgsRecall sub-types you can view it as a kind of effect processor.
> 
> Managers are singletons, too. They usually keep track of objects. In
> general you can add, remove and lookup objects of it.
> It is really common to use hashmaps in its implementation.

Now I better understand, thanks for the explanations.

--
Sébastien

> On Sun, Aug 13, 2017 at 12:33 PM, Sébastien Wilmet <swil...@gnome.org> wrote:
> > On Thu, Aug 10, 2017 at 02:39:12PM +0200, Joël Krähemann wrote:
> >> I use some patterns like:
> >>
> >> http://git.savannah.nongnu.org/cgit/gsequencer.git/tree/ags/audio/ags_recall_factory.h
> >> http://git.savannah.nongnu.org/cgit/gsequencer.git/tree/ags/plugin/ags_lv2_manager.h
> >> ...
> >>
> >> Or having an application context:
> >>
> >> http://git.savannah.nongnu.org/cgit/gsequencer.git/tree/ags/X/ags_xorg_application_context.h
> >> http://git.savannah.nongnu.org/cgit/gsequencer.git/tree/ags/thread/ags_concurrency_provider.h
> >> http://git.savannah.nongnu.org/cgit/gsequencer.git/tree/ags/audio/ags_sound_provider.h
> >
> > Can you describe a little those patterns? What are the intents?
_______________________________________________
gtk-devel-list mailing list
gtk-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-devel-list

Reply via email to