On Mon, 2004-03-15 at 16:25, Tom Foottit wrote:
> On Mon, 2004-03-15 at 09:39, Armin Bauer wrote:
> <snip>
> > I started to work on 0.90, especially on the dbus framework we need.
> 
> Remember to keep it in your sandbox until we branch 0.82 :)

i currently keep it on my companies CVS

> 
> > 
> > But i have come across some questions:
> > 
> > 1. how to write the syncType plugins (the plugins that handle the
> > formats that are passed through the engine)? .so and load them with
> > dlopen in the engine? .so and let them run in a separate process and
> > connect with the dbus? anything else?
> 
> Well, using dbus over a simple dlopen() would require the sync type
> plugins to need the advantages of dbus - namely the independence
> provided by a separate process. Right off the top of my head I can't see
> why they would, so dlopen()ing them should be ok.

the dbus offers a much greater independence to the plugins since they
can interecept and alter all the communication between the engine and
the plugin.

so here is my proposal:
- dlopen the plugin
- call a function on the plugin which installs a message handler which
sees all the messages of a certain format
- provide convinience functions to these plugins for say extracting the
SyncObject from a message etc

this way we dont need a new process but still get the flexibility of
using it with the bus


> 
> > 
> > 2. the config files for the syncPlugins:
> > the syncplugins still need to be configured (what currently is in the
> > files like "remoteevolution"). Should we just provide two functions for
> > the plugins "loadconfig" and "storeconfig" which will take arbitrary
> > data and pass the config through the dbus and let multisyncd store it?
> > or should we only use xml (would mean that every plugin needs to parse
> > xml configs)?
> 
> This is a good question. If each plugin stores its own configuration
> then you get flexibility at the cost of more work for the plugin writer.
> If we store the the configuration centrally then it will be easier to
> write plugins and debugging config problems will be easier. So, I think
> that I would prefer a storeconfig()/loadconfig() approach.

what i meant is if we should allow every plugin to use its own config
format or if we should require every plugin to use xml.

storing a config would look like this:

- client calls storeconfig(pointertoconfig)
- we base64 encode the config as it is
- transmit it over the wire via dbus
- multisyncd process stores it away

currently if have the config file for a syncgroup like this:

<syncgroup>
        <member>
                <type>palm-sync</type>
                <uid>122134</uid>
                <config>
                        <username>Armin Bauer</username>
                        <id>1000</id>
                        <debuglevel>1</debuglevel>
                        <type>0</type>
                        <speed>115200</speed>
                        <timeout>0</timeout>
                        <sockaddr>/dev/ttyS1</sockaddr>
                        <popup>1</popup>
                        <mismatch>1</mismatch>
                </config>
        </member>
        <member>
                <type>ldap-sync</type>
                <uid>123234</uid>
                <config>
                        <servername>localhost</servername>
                        <serverport>389</serverport>
                        <binddn>cn=admin,dc=debian,dc=org</binddn>
                        <pwd>test</pwd>
                        <searchbase>ou=people,dc=debian,dc=org</searchbase>
                        <filter>(cn=*)</filter>
                        <scope>1</scope>
                        <debuglevel>1</debuglevel>
                        <authmech>SIMPLE</authmech>
                        <encryption>0</encryption>
                        <write>1</write>
                        <anonymous>0</anonymous>
                </config>
        </member>
</syncgroup>

so everything below <config> would get sent to the plugin as xmlcode
(thats very easy to implement). the other possibility would be:

<syncgroup>
        <member>
                <type>palm-sync</type>
                <uid>122134</uid>
                <config>path/to/configfile1</config>
        </member>
        <member>
                <type>ldap-sync</type>
                <uid>123234</uid>
                <config>path/to/configfile2</config>
        </member>
</syncgroup>

here the configfile could hold any dataformat choosen by the plugin. if
needed it will be loaded , base64 encoded and transmitted.

> 
> Tom
>  
> 



-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
_______________________________________________
Multisync-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/multisync-devel

Reply via email to