Changeset 1232

Show
Ignore:
Timestamp:
08/25/06 13:57:03 (2 years ago)
Author:
abauer
Message:

Added the fixes from andrew

Location:
plugins/python-module/src
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • plugins/python-module/src/python_module.c

    r1150 r1232  
    3030typedef struct MemberData { 
    3131        PyThreadState *interp_thread; 
     32        PyObject *osync_module; 
    3233        PyObject *module; 
    3334        PyObject *object; 
     
    6869} 
    6970 
    70 static PyObject *pm_make_change(PyObject *module, OSyncChange *change, OSyncError **error) 
     71static PyObject *pm_make_change(PyObject *osync_module, OSyncChange *change, OSyncError **error) 
    7172{ 
    7273        PyObject *pychg_cobject = PyCObject_FromVoidPtr(change, NULL); 
     
    7778        } 
    7879         
    79         PyObject *pychg = PyObject_CallMethod(module, "OSyncChange", "O", pychg_cobject); 
     80        PyObject *pychg = PyObject_CallMethod(osync_module, "OSyncChange", "O", pychg_cobject); 
    8081        if (!pychg) { 
    8182                osync_error_set(error, OSYNC_ERROR_GENERIC, "Cannot create Python OSyncChange"); 
     
    8788} 
    8889 
    89 static PyObject *pm_make_context(PyObject *module, OSyncContext *ctx, OSyncError **error) 
     90static PyObject *pm_make_context(PyObject *osync_module, OSyncContext *ctx, OSyncError **error) 
    9091{ 
    9192        PyObject *pyctx_cobject = PyCObject_FromVoidPtr(ctx, NULL); 
     
    9697        } 
    9798         
    98         PyObject *pyctx = PyObject_CallMethod(module, "OSyncContext", "O", pyctx_cobject); 
     99        PyObject *pyctx = PyObject_CallMethod(osync_module, "OSyncContext", "O", pyctx_cobject); 
    99100        if (!pyctx) { 
    100101                osync_error_set(error, OSYNC_ERROR_GENERIC, "Cannot create Python OSyncContext"); 
     
    106107} 
    107108 
    108 static PyObject *pm_make_member(PyObject *module, OSyncMember *member, OSyncError **error) 
     109static PyObject *pm_make_member(PyObject *osync_module, OSyncMember *member, OSyncError **error) 
    109110{ 
    110111        PyObject *pymember_cobject = PyCObject_FromVoidPtr(member, NULL); 
     
    115116        } 
    116117         
    117         PyObject *pymember = PyObject_CallMethod(module, "OSyncMember", "O", pymember_cobject); 
     118        PyObject *pymember = PyObject_CallMethod(osync_module, "OSyncMember", "O", pymember_cobject); 
    118119        if (!pymember) { 
    119120                osync_error_set(error, OSYNC_ERROR_GENERIC, "Cannot create Python OSyncMember"); 
     
    146147        } 
    147148         
    148         if (!pm_load_opensync(error)) 
     149        if (!(data->osync_module = pm_load_opensync(error))) 
    149150                goto error_free_interp; 
    150151         
     
    152153                goto error_free_interp; 
    153154         
    154         PyObject *pymember = pm_make_member(data->module, member, error); 
     155        PyObject *pymember = pm_make_member(data->osync_module, member, error); 
    155156        if (!pymember) 
    156157                goto error_unload_module; 
     
    214215        PyEval_AcquireThread(data->interp_thread); 
    215216 
    216         pycontext = pm_make_context(data->module, ctx, error); 
     217        pycontext = pm_make_context(data->osync_module, ctx, error); 
    217218        if (!pycontext) { 
    218219                PyEval_ReleaseThread(data->interp_thread); 
     
    223224 
    224225        if (chg) { 
    225                 PyObject *pychange = pm_make_change(data->module, chg, error); 
     226                PyObject *pychange = pm_make_change(data->osync_module, chg, error); 
    226227                if (!pychange) { 
    227228                        PyEval_ReleaseThread(data->interp_thread); 
     
    312313 *       accepted objtypes/formats info) 
    313314 */ 
    314 static osync_bool register_plugin(OSyncEnv *env, const char *filename, OSyncError **error) 
     315static osync_bool register_plugin(OSyncEnv *env, PyObject *osync_module, 
     316                                  const char *filename, OSyncError **error) 
    315317{ 
    316318        osync_trace(TRACE_ENTRY, "%s(%p, %s, %p)", __func__, env, filename, error); 
     
    341343        } 
    342344         
    343         PyObject *pyinfo = PyObject_CallMethod(module, "OSyncPluginInfo", "O", pyinfo_cobject); 
     345        PyObject *pyinfo = PyObject_CallMethod(osync_module, "OSyncPluginInfo", "O", pyinfo_cobject); 
    344346        if (!pyinfo) { 
    345347                osync_error_set(error, OSYNC_ERROR_GENERIC, "Cannot create Python OSyncPluginInfo"); 
     
    369371} 
    370372 
    371 static osync_bool scan_for_plugins(OSyncEnv *env) 
     373static osync_bool scan_for_plugins(OSyncEnv *env, PyObject *osync_module) 
    372374{ 
    373375        osync_trace(TRACE_ENTRY, "%s(%p)", __func__, env); 
     
    385387                char *filename = g_build_filename(path, de, NULL); 
    386388                OSyncError *error = NULL; 
    387                 if (!register_plugin(env, filename, &error)) 
     389                if (!register_plugin(env, osync_module, filename, &error)) 
    388390                        osync_debug("python", 1, "Couldn't register plugin \"%s\": %s", filename, osync_error_print(&error)); 
    389391 
     
    408410 
    409411        OSyncError *error = NULL; 
    410         if (!pm_load_opensync(&error)) 
     412        PyObject *osync_module = pm_load_opensync(&error);  
     413        if (!osync_module) 
    411414                return; 
    412415 
    413         scan_for_plugins(env); 
    414 } 
     416        scan_for_plugins(env, osync_module); 
     417} 
  • plugins/python-module/src/sample.py

    r532 r1232  
    1 from opensync import * 
     1import opensync 
    22 
    33class SyncClass: 
     
    1313                if self.__member.get_slow_sync("data"): 
    1414                        print "Slow-sync requested" 
    15                 change = OSyncChange() 
     15                change = opensync.OSyncChange() 
    1616                change.uid = "testuid" 
    17                 change.set_data("testdata", 9, TRUE) 
     17                change.data = "testdata" 
    1818                change.format = "plain" 
    1919                change.objtype = "data" 
    20                 change.changetype = CHANGE_ADDED 
     20                change.changetype = opensync.CHANGE_ADDED 
    2121                change.report(ctx) 
    2222                ctx.report_success() 
     
    2525        def commit_change(self, ctx, chg): 
    2626                print "commit called!!" 
    27                 print "Opensync wants me to write data with size " + str(chg.datasize) 
     27                print "Opensync wants me to write data with size " + len(chg.data) 
    2828                ctx.report_success() 
    2929