From: <svn...@op...> - 2009-07-10 09:08:42
|
Author: bricks Date: Fri Jul 10 11:08:34 2009 New Revision: 5700 URL: http://www.opensync.org/changeset/5700 Log: implemented first parts of merger api refs #1084 Added: branches/opensync-ticket1084/opensync/format/opensync_merger.c Modified: branches/opensync-ticket1084/opensync/CMakeLists.txt branches/opensync-ticket1084/opensync/format/opensync_merger.h branches/opensync-ticket1084/opensync/format/opensync_merger_private.h Modified: branches/opensync-ticket1084/opensync/CMakeLists.txt ============================================================================== --- branches/opensync-ticket1084/opensync/CMakeLists.txt Fri Jul 10 10:41:55 2009 (r5699) +++ branches/opensync-ticket1084/opensync/CMakeLists.txt Fri Jul 10 11:08:34 2009 (r5700) @@ -35,6 +35,7 @@ format/opensync_objformat.c format/opensync_objformat_sink.c format/opensync_time.c + format/opensync_merger.c group/opensync_group.c group/opensync_group_env.c group/opensync_member.c Added: branches/opensync-ticket1084/opensync/format/opensync_merger.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ branches/opensync-ticket1084/opensync/format/opensync_merger.c Fri Jul 10 11:08:34 2009 (r5700) @@ -0,0 +1,81 @@ +/* + * libopensync - A synchronization framework + * Copyright (C) 2009 Bjoern Ricks <bjo...@go...> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include "opensync.h" +#include "opensync_internals.h" + +#include "opensync_merger.h" +#include "opensync_merger_private.h" + +OSyncMerger *osync_merger_new(const char *objformat, const char *capsformat, OSyncError **error) +{ + OSyncMerger *merger = NULL; + osync_trace(TRACE_ENTRY, "%s(%s, %s, %p)", __func__, objformat, capsformat, error); + + merger = osync_try_malloc0(sizeof(OSyncMerger), error); + if (!merger) { + osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); + return NULL; + } + merger->ref_count = 1; + merger->objformat = osync_strdup(objformat); + merger->capsformat = osync_strdup(capsformat); + + osync_trace(TRACE_EXIT, "%s: %p", __func__, merger); + return merger; +} + +OSyncMerger *osync_merger_ref(OSyncMerger *merger) +{ + osync_return_val_if_fail(merger, NULL); + + g_atomic_int_inc(&(merger->ref_count)); + + return merger; +} + +void osync_merger_unref(OSyncMerger *merger) +{ + osync_return_if_fail(merger); + + if (g_atomic_int_dec_and_test(&(merger->ref_count))) { + if (merger->objformat) { + osync_free(merger->objformat); + } + + if (merger->capsformat) { + osync_free(merger->capsformat); + } + + osync_free(merger); + } +} + +void osync_merger_set_initialize_func(OSyncMerger *merger, OSyncMergerInitializeFunc initialize_func) +{ + osync_return_if_fail(merger); + merger->initialize_func = initialize_func; +} + +void osync_merger_set_finalize_func(OSyncMerger *merger, OSyncMergerFinalizeFunc finalize_func) +{ + osync_return_if_fail(merger); + merger->finalize_func = finalize_func; +} Modified: branches/opensync-ticket1084/opensync/format/opensync_merger.h ============================================================================== --- branches/opensync-ticket1084/opensync/format/opensync_merger.h Fri Jul 10 10:41:55 2009 (r5699) +++ branches/opensync-ticket1084/opensync/format/opensync_merger.h Fri Jul 10 11:08:34 2009 (r5700) @@ -32,11 +32,15 @@ typedef void * (* OSyncMergerInitializeFunc) (OSyncError **error); typedef void (* OSyncMergerFinalizeFunc) (void *user_data); -OSYNC_EXPORT OSyncMerger *osync_merger_new(const char *objformat, const char *capsformat, OSyncError **error) ; +OSYNC_EXPORT OSyncMerger *osync_merger_new(const char *objformat, const char *capsformat, OSyncError **error); + +OSYNC_EXPORT OSyncMerger *osync_merger_ref(OSyncMerger *merger); + +OSYNC_EXPORT void osync_merger_unref(OSyncMerger *merger); OSYNC_EXPORT void osync_merger_set_initialize_func(OSyncMerger *merger, OSyncMergerInitializeFunc initialize_func); -OSYNC_EXPORT void osync_merger_set_finalize_func(OSyncMerger *merger, OSyncMergerInitializeFunc finalize_func); +OSYNC_EXPORT void osync_merger_set_finalize_func(OSyncMerger *merger, OSyncMergerFinalizeFunc finalize_func); /*@}*/ Modified: branches/opensync-ticket1084/opensync/format/opensync_merger_private.h ============================================================================== --- branches/opensync-ticket1084/opensync/format/opensync_merger_private.h Fri Jul 10 10:41:55 2009 (r5699) +++ branches/opensync-ticket1084/opensync/format/opensync_merger_private.h Fri Jul 10 11:08:34 2009 (r5700) @@ -30,11 +30,11 @@ /*@{*/ struct OSyncMerger { - const char *objformat; - const char *capsformat; + char *objformat; + char *capsformat; int ref_count; OSyncMergerInitializeFunc initialize_func; - OSyncFormatFinalizeFunc finalize_func; + OSyncMergerFinalizeFunc finalize_func; void *user_data; }; |