Ryan Lortie [Wed, 8 Jan 2014 17:01:57 +0000 (12:01 -0500)]
configure.ac: trivial typo fix in last commit
-ldb vs. -ldl
Ryan Lortie [Tue, 7 Jan 2014 21:36:12 +0000 (16:36 -0500)]
tests: #include <sys/wait.h> for WIFEXITED
https://bugzilla.gnome.org/show_bug.cgi?id=721737
Ryan Lortie [Tue, 7 Jan 2014 21:31:53 +0000 (16:31 -0500)]
Remove #include <malloc.h> from a file
This ancient header has long been deprecated in favour of <stdlib.h> but
this file uses GLib memory functions anyway, so neither is required.
https://bugzilla.gnome.org/show_bug.cgi?id=721737
Ryan Lortie [Tue, 7 Jan 2014 21:10:13 +0000 (16:10 -0500)]
Bug 721733 - Tweak Berkeley DB detection logic
Make two changes to the logic that we use to find the Berkeley DB:
- in the default case where --with-libdb is not given, do not attempt
to add the default ${prefix}/include and ${prefix}/lib to the CFLAGS
and LIBS. Only do this if --with-libdb is explicitly given.
- in the case where --with-libdb is not given, and DB_CFLAGS or DB_LIBS
is already set, use those values instead of our own guesses
This allows the build to proceed on FreeBSD, where the headers are in an
unusual location and the library has an unusual name.
https://bugzilla.gnome.org/show_bug.cgi?id=721733
Matthew Barnes [Mon, 6 Jan 2014 16:52:07 +0000 (11:52 -0500)]
Bug 721527 - License text contains obsolete FSF postal address
Matthew Barnes [Tue, 7 Jan 2014 14:45:40 +0000 (09:45 -0500)]
Remove camel/README.COPYRIGHT.
The instructions are out-of-date, and advise contacting Novell Inc.
Matthew Barnes [Mon, 6 Jan 2014 12:53:22 +0000 (07:53 -0500)]
Bump SOURCES_DBUS_SERVICE_NAME version.
To cover both the new "ServerError" D-Bus signal and the new built-in
"system-proxy" data source.
Andika Triwidada [Sat, 4 Jan 2014 03:15:01 +0000 (10:15 +0700)]
Updated Indonesian translation
Marek Černocký [Fri, 3 Jan 2014 06:36:36 +0000 (07:36 +0100)]
Updated Czech translation
Rafael Ferreira [Fri, 3 Jan 2014 01:40:31 +0000 (23:40 -0200)]
Updated Brazilian Portuguese translation
Fran Diéguez [Mon, 30 Dec 2013 00:10:53 +0000 (01:10 +0100)]
Updated Galician translations
Gabor Kelemen [Sat, 28 Dec 2013 20:13:55 +0000 (21:13 +0100)]
Updated Hungarian translation
Dimitris Spingos [Thu, 26 Dec 2013 16:36:55 +0000 (18:36 +0200)]
Updated Greek translation
William Jon McCann [Wed, 18 Dec 2013 10:24:00 +0000 (05:24 -0500)]
Update project homepage URL
Matthew Barnes [Mon, 16 Dec 2013 18:12:08 +0000 (13:12 -0500)]
Post-release version bump.
Matthew Barnes [Mon, 16 Dec 2013 17:01:37 +0000 (12:01 -0500)]
NEWS update for 3.11.3 release.
Matthew Barnes [Tue, 10 Dec 2013 21:00:13 +0000 (16:00 -0500)]
CamelIMAPXServer: Fix handling of LSUB responses.
If we receive an LSUB response on a mailbox name but no corresponding
LIST response, ignore it. IMAP allows subscriptions to mailbox names
regardless of whether the mailbox actually exists. Not useful to us.
Matthew Barnes [Tue, 10 Dec 2013 19:41:14 +0000 (14:41 -0500)]
CamelStore: Fix typo preventing valid folder renames.
Matthew Barnes [Tue, 10 Dec 2013 19:30:32 +0000 (14:30 -0500)]
IMAPX: Remove unused member from GetMessageData struct.
Matthew Barnes [Sun, 8 Dec 2013 16:19:08 +0000 (11:19 -0500)]
Coding style and whitespace cleanups.
Matthew Barnes [Sun, 8 Dec 2013 16:42:17 +0000 (11:42 -0500)]
Update API documentation.
Colin Walters [Fri, 22 Nov 2013 20:02:21 +0000 (15:02 -0500)]
Bug 715035 - cache-reaper: Demote g_message() -> g_debug()
No need to tell the system administrator about these.
Matthew Barnes [Fri, 6 Dec 2013 17:25:41 +0000 (12:25 -0500)]
CamelMimeFilter: Function signature cleanup.
Matthew Barnes [Fri, 6 Dec 2013 17:05:50 +0000 (12:05 -0500)]
CamelGpgContext: Fix broken debugging statements.
Camel likes to use this debugging idiom:
#define d(x)
and then wraps debugging statements like so:
d (printf (...));
One is supposed to enable debugging by changing the macro to:
#define d(x) x
This idiom makes debugging statements hard to grep for, but moreover
they don't get compiled regularly and so they tend to bit rot.
As was the case in CamelGpgContext, where the debugging statements
didn't build because they were still written for Camel's old home-
grown object system.
Matthew Barnes [Fri, 6 Dec 2013 16:52:11 +0000 (11:52 -0500)]
CamelStreamFilter: Fix broken debugging statements.
Camel likes to use this debugging idiom:
#define d(x)
and then wraps debugging statements like so:
d (printf (...));
One is supposed to enable debugging by changing the macro to:
#define d(x) x
This idiom makes debugging statements hard to grep for, but moreover
they don't get compiled regularly and so they tend to bit rot.
As was the case in CamelStreamFilter, where the debugging statements
didn't build because they were calling CamelStream functions as they
existed YEARS ago.
Piotr Drąg [Fri, 6 Dec 2013 15:58:53 +0000 (16:58 +0100)]
Updated POTFILES.skip
Tristan Van Berkom [Fri, 6 Dec 2013 06:08:15 +0000 (15:08 +0900)]
Migrated tests/cursor-example to examples/cursor
Examples can be added to the examples subdirectory which does
not belong in 'tests'. Note that the new documentation contains
an examples section, the file eds-cursor-example.sgml is manually
written and includes source code inline, along with some commentary
on the source code example.
Tristan Van Berkom [Fri, 6 Dec 2013 06:03:56 +0000 (15:03 +0900)]
Restructuring documentation build.
This commit unifies the various EDS related reference manuals into
a single 'eds' reference manual. This comprises libedataserver, libebackend,
libebook, libebook-contacts, libedata-book, libecal, libedata-cal into
a single reference manual. The camel and private reference manuals are
left alone.
Tristan Van Berkom [Fri, 6 Dec 2013 06:07:44 +0000 (15:07 +0900)]
ETestServerFixture: Fixing gtk-doc comments.
Tristan Van Berkom [Fri, 6 Dec 2013 06:00:11 +0000 (15:00 +0900)]
Libedataserver: Fixing gtk-doc comments and adding gtk-doc section headers
Tristan Van Berkom [Fri, 6 Dec 2013 05:59:54 +0000 (14:59 +0900)]
Libebackend: Fixing gtk-doc comments and adding gtk-doc section headers
Tristan Van Berkom [Fri, 6 Dec 2013 05:59:14 +0000 (14:59 +0900)]
Calendar: Fixing gtk-doc comments and adding gtk-doc section headers
Tristan Van Berkom [Fri, 6 Dec 2013 05:58:38 +0000 (14:58 +0900)]
Addressbook: Fixing gtk-doc comments and adding gtk-doc section headers
Matthew Barnes [Thu, 5 Dec 2013 15:03:05 +0000 (10:03 -0500)]
CamelFolderSummary: Add a FIXME comment.
Resolving corner cases so I can get rid of camel_folder_lock/unlock().
Matthew Barnes [Thu, 5 Dec 2013 14:26:44 +0000 (09:26 -0500)]
CamelTransport: Stop using the internal 'send_lock'.
Use camel_service_queue_task() instead of locking an internal mutex.
This ensures methods are run in the order they were called, and also
makes cancellation of a waiting method immediate instead of blocking
until it acquires the mutex it's competing for.
This requires flip-flopping the synchronous and asynchronous functions,
so that the synchronous function calls its asynchronous counterpart with
help from CamelAsyncClosure.
Matthew Barnes [Sun, 1 Dec 2013 15:41:45 +0000 (10:41 -0500)]
CamelStore: Stop using the internal 'folder_lock'.
Use camel_service_queue_task() instead of locking an internal mutex.
This ensures methods are run in the order they were called, and also
makes cancellation of a waiting method immediate instead of blocking
until it acquires the mutex it's competing for.
This requires flip-flopping some synchronous and asynchronous functions,
so that the synchronous function calls its asynchronous counterpart with
help from CamelAsyncClosure.
Removed functions:
camel_store_lock()
camel_store_unlock()
Matthew Barnes [Sun, 1 Dec 2013 15:38:43 +0000 (10:38 -0500)]
Add CAMEL_CHECK_LOCAL_GERROR.
Same as CAMEL_CHECK_GERROR, but for direct GError pointers.
Example:
success = class->foo (object, some_data, &local_error);
CAMEL_CHECK_LOCAL_GERROR (object, foo, success, local_error);
return success;
Matthew Barnes [Sat, 30 Nov 2013 17:08:25 +0000 (12:08 -0500)]
Add camel_service_queue_task().
Adds a GTask to a queue of waiting tasks with the same source object.
Queued tasks execute one at a time from a separate thread in the order
they were added.
This is primarily intended for use by CamelStore, CamelTransport and
CamelFolder to achieve ordered invocation of synchronous class methods.
This will finally fix Camel's long-standing (mis)use of mutexes as a
dispatch mechanism, which doesn't preserve order and isn't cancellable.
Matthew Barnes [Wed, 4 Dec 2013 22:37:11 +0000 (17:37 -0500)]
Bug 710361 - GError corruption in imapx_command_fetch_message_done()
camel_imapx_job_take_error() was being called twice on the same GError.
The 2nd call freed the GError set in the 1st call, which corrupted the
memory. Put a safeguard in camel_imapx_job_take_error() to catch this
in the future.
Matthew Barnes [Wed, 4 Dec 2013 17:14:52 +0000 (12:14 -0500)]
Bug 719720 - Refcount error in imapx_command_select_done()
We were finalizing the CamelIMAPXCommand too early, and then trying
to use it further down in the logic. This of course led to crashes.
Failed command structures were also leaking. Fixed that too.
Matthew Barnes [Wed, 4 Dec 2013 14:52:00 +0000 (09:52 -0500)]
Remove --enable-strict configure option.
GLib/GTK+ uses different deprecation macros nowadays.
The MIN_REQUIRED macros do a better job of catching deprecated symbol
usage up to the minimum build requirement, and the MAX_ALLOWED macros
catch symbol usage that violates our minimum build requirement.
These newer deprecation macros are always enabled, so we don't need a
special configure flag for them.
Matthew Barnes [Wed, 4 Dec 2013 14:39:43 +0000 (09:39 -0500)]
Deprecate ECancellable[Rec]Mutex.
Lionel Landwerlin [Wed, 4 Dec 2013 14:24:12 +0000 (09:24 -0500)]
Bug 719774 - Missing linker flag in evolution-addressbook-factory
Colin Walters [Wed, 4 Dec 2013 14:10:25 +0000 (09:10 -0500)]
Bug 719307 - trust-prompt: Squash a compiler warning
gcc tells us this could be uninitialized, which will only happen if we
fail to base64 decode.
Tristan Van Berkom [Wed, 4 Dec 2013 08:01:37 +0000 (17:01 +0900)]
Moved all libecal/client tests to have a namespace
Avoid naming conflicts when installing tests into ${pkglibexecdir}/installed-tests
Tristan Van Berkom [Wed, 4 Dec 2013 08:00:37 +0000 (17:00 +0900)]
Moved all libebook/client tests to have a namespace
Avoid naming conflicts when installing tests into ${pkglibexecdir}/installed-tests
Philip Withnall [Fri, 29 Nov 2013 08:58:40 +0000 (08:58 +0000)]
tests: Fix potential g_object_unref(NULL) calls in libebook tests
Found by scan-build.
https://bugzilla.gnome.org/719533
Philip Withnall [Fri, 29 Nov 2013 08:56:57 +0000 (08:56 +0000)]
libedata-cal: Fix a potential g_strstrip(NULL) call
If the calendar contained any attendees _not_ prefixed with ‘mailto:’,
the text variable would be NULL, and would cause an assertion failure in
g_strstrip().
Found by scan-build.
https://bugzilla.gnome.org/719533
Philip Withnall [Fri, 29 Nov 2013 08:51:11 +0000 (08:51 +0000)]
libecal: Refactor system timezone key file parsing code
Previously, the code could call g_strstrip(NULL) if a line started with
a quotation mark but didn’t end with one, e.g.:
MyKey="some-unbalanced-value
The code now ignores unbalanced quotation marks, returning the odd one
in the value rather than crashing (or stripping it).
Found by scan-build.
https://bugzilla.gnome.org/719533
Philip Withnall [Tue, 3 Dec 2013 20:26:57 +0000 (15:26 -0500)]
EBookBackendCache: Remove an unnecessary NULL check.
A newly-created EContact is never NULL, so the check is redundant.
It was confusing the static analyser.
https://bugzilla.gnome.org/719533
Philip Withnall [Tue, 3 Dec 2013 19:55:29 +0000 (14:55 -0500)]
CamelPOP3Folder: Fix a potential g_object_unref(NULL) call
If all the branch conditions in this function evaluate to FALSE, the
stream is never set, and hence g_object_unref(NULL) is called on exiting
the function.
Found by scan-build.
https://bugzilla.gnome.org/719533
Matthew Barnes [Mon, 2 Dec 2013 13:32:16 +0000 (08:32 -0500)]
CamelTransport: Port to GTask.
Matthew Barnes [Mon, 2 Dec 2013 13:45:32 +0000 (08:45 -0500)]
CamelSubscribable: Port to GTask.
Matthew Barnes [Sun, 1 Dec 2013 17:05:05 +0000 (12:05 -0500)]
CamelStore: Port to GTask.
Matthew Barnes [Mon, 2 Dec 2013 20:40:41 +0000 (15:40 -0500)]
CamelSession: Port to GTask.
Matthew Barnes [Tue, 3 Dec 2013 16:05:24 +0000 (11:05 -0500)]
CamelService: Port to GTask.
Matthew Barnes [Mon, 2 Dec 2013 19:56:38 +0000 (14:56 -0500)]
CamelSasl: Port to GTask.
Matthew Barnes [Mon, 2 Dec 2013 17:00:45 +0000 (12:00 -0500)]
CamelOfflineFolder: Port to GTask.
Matthew Barnes [Mon, 2 Dec 2013 20:01:42 +0000 (15:01 -0500)]
CamelNetworkService: Port to GTask.
Matthew Barnes [Mon, 2 Dec 2013 16:34:50 +0000 (11:34 -0500)]
CamelMimePart: Port to GTask.
Matthew Barnes [Tue, 3 Dec 2013 14:31:02 +0000 (09:31 -0500)]
CamelFolder: Port to GTask.
Matthew Barnes [Mon, 2 Dec 2013 15:38:59 +0000 (10:38 -0500)]
CamelDataWrapper: Port to GTask.
Matthew Barnes [Mon, 2 Dec 2013 15:03:25 +0000 (10:03 -0500)]
CamelCipherContext: Port to GTask.
Matthew Barnes [Mon, 2 Dec 2013 20:27:56 +0000 (15:27 -0500)]
CamelSession: Remove all asynchronous class methods.
For consistency with CamelStore, CamelFolder, etc.
Matthew Barnes [Mon, 2 Dec 2013 18:03:03 +0000 (13:03 -0500)]
CamelSasl: Remove all asynchronous class methods.
For consistency with CamelStore, CamelFolder, etc.
Matthew Barnes [Mon, 2 Dec 2013 16:40:39 +0000 (11:40 -0500)]
CamelOfflineFolder: Remove all asynchronous class methods.
For consistency with CamelStore, CamelFolder, etc.
Matthew Barnes [Mon, 2 Dec 2013 15:48:25 +0000 (10:48 -0500)]
CamelMimePart: Remove all asynchronous class methods.
For consistency with CamelStore, CamelFolder, etc.
Matthew Barnes [Mon, 2 Dec 2013 15:12:28 +0000 (10:12 -0500)]
CamelDataWrapper: Remove all asynchronous class methods.
For consistency with CamelStore, CamelFolder, etc.
Matthew Barnes [Mon, 2 Dec 2013 14:29:03 +0000 (09:29 -0500)]
CamelCipherContext: Remove all asynchronous class methods.
For consistency with CamelStore, CamelFolder, etc.
Tristan Van Berkom [Tue, 3 Dec 2013 10:10:44 +0000 (19:10 +0900)]
Install test vcards if --enable-installed-tests is configured.
Also, load the vcards from ${pkglibexecdir}/installed-tests/vcards
in the case that TEST_INSTALLED_SERVICES is specified
Tristan Van Berkom [Tue, 3 Dec 2013 09:48:17 +0000 (18:48 +0900)]
Better handling of the TEST_INSTALLED_SERVICES variable
Don't set the encapsulated environment variables when running installed.
Tristan Van Berkom [Mon, 2 Dec 2013 15:23:11 +0000 (00:23 +0900)]
test-server-utils: Only create the work directory when running with `make check'
Tristan Van Berkom [Mon, 2 Dec 2013 14:02:03 +0000 (23:02 +0900)]
Final fix for eds-installed-tests.m4
o Add echo "Installing test.meta" so we can see it in build output
o Fix META_DIRECTORY to be ${datadir}/installed-tests
instead of ${datadir}/share/installed-tests
Tristan Van Berkom [Mon, 2 Dec 2013 12:59:41 +0000 (21:59 +0900)]
Fixed eds-installed-tests.m4 to consider DESTDIR.
Tristan Van Berkom [Mon, 2 Dec 2013 09:03:55 +0000 (18:03 +0900)]
Use EDS_INSTALLED_TESTS macros to install tests
This commit adds the usage of EDS_INSTALLED_TESTS and a few lines
to all the test directories which can run installed.
Tristan Van Berkom [Mon, 2 Dec 2013 09:03:18 +0000 (18:03 +0900)]
Added m4/eds-installed-tests.m4 with the EDS_INSTALLED_TESTS macro
The EDS_INSTALLED_TESTS macro prepares EDS for installed tests
and adds the --enable-installed-tests option (off by default).
Also it defines the EDS_INSTALLED_TESTS_RULE which can be used
in test makefiles.
Tristan Van Berkom [Mon, 2 Dec 2013 10:54:39 +0000 (19:54 +0900)]
e-test-server-utils.c: Behave differently when running installed.
When running installed, use mkstemp to generate a unique addressbook
source uid.
Tristan Van Berkom [Mon, 2 Dec 2013 06:46:59 +0000 (15:46 +0900)]
ETestServerFixture: Fixed fixture futher for finalization.
Last related commit did not fix the problem correctly, now care
is taken to ensure there are no races while checking for client
and registry finalization, as the clients tend not only to finalize
asynchronously, but choose to do so in a different thread in which
they were created.
Matthew Barnes [Sun, 1 Dec 2013 14:54:22 +0000 (09:54 -0500)]
camel_subscribable_folder_is_subscribed: Remove lock.
Don't see any reason to lock here. Providers ought to be able to handle
this concurrently with other methods. Let any side-effects reveal them-
selves so we can fix them or document them.
Matthew Barnes [Sun, 1 Dec 2013 14:43:25 +0000 (09:43 -0500)]
camel_store_get_inbox_folder_sync: Remove lock.
Don't see any reason to lock here. Providers ought to be able to handle
this concurrently with other methods. Let any side-effects reveal them-
selves so we can fix them or document them.
Matthew Barnes [Sun, 1 Dec 2013 14:04:57 +0000 (09:04 -0500)]
CamelService: Use CamelAsyncClosure.
Relinquish its internal 'AsyncClosure' struct, which is identical.
Matthew Barnes [Sun, 1 Dec 2013 14:01:43 +0000 (09:01 -0500)]
Add CamelAsyncClosure.
Identical to EAsyncClosure in libedataserver, for use in Camel.
eternalhui [Sun, 1 Dec 2013 14:19:28 +0000 (22:19 +0800)]
Update Chinese simplified translation
Tristan Van Berkom [Sun, 1 Dec 2013 06:43:45 +0000 (15:43 +0900)]
test-client-cursor-operations.c: Removed bogus test for invalid sexp
No search expression is invalid anymore.
Tristan Van Berkom [Sun, 1 Dec 2013 05:40:24 +0000 (14:40 +0900)]
test-client-custom-summary: Added test for the 'x-evolution-any-field' NULL special case
x-evolution-any-field with a NULL value (or byte) means 'get all contacts'.
Tristan Van Berkom [Sat, 30 Nov 2013 06:40:11 +0000 (15:40 +0900)]
EBookSqlite: Improved performance and simplified code
After much discussion on sqlite-users mailing list, I found
the real, correct technique for querying our multi attribute
values on the auxiliary tables.
o Removed the crack query optimizer
o Added the index to aux_table.uid (this is important
to optimize contact inserts, as we have to delete
all aux_table.uid entries in the case of a replace).
o Drop the LEFT JOIN statements in favor of
JOIN 'folder_id_email_list' AS 'email_list' ON +email_list.uid = summary.uid
This does not create exponentially huge data sets because of the ON
statement, the '+' ensures that email_list.uid is ineligable for
indexing, since we want to use email_list.value indexes later on.
Fabiano Fidêncio [Wed, 27 Nov 2013 21:37:35 +0000 (22:37 +0100)]
Bug #715057 - Weather calendar is using Fahrenheit units as default
Matthew Barnes [Sat, 30 Nov 2013 13:17:42 +0000 (08:17 -0500)]
Remove unused camel_session_get_main_context().
Matthew Barnes [Sat, 30 Nov 2013 13:07:58 +0000 (08:07 -0500)]
Remove unused camel_service_get_session().
Matthew Barnes [Sat, 30 Nov 2013 13:07:35 +0000 (08:07 -0500)]
Avoid camel_service_get_session().
Use camel_service_ref_session() instead.
Tristan Van Berkom [Sat, 30 Nov 2013 06:35:10 +0000 (15:35 +0900)]
test-server-utils: Fixed to wait for clients to finalize
Previously we would get sporadic errors from tests when clients
do not finalize synchronously in response to g_object_unref().
However this syncrhonous finalization is not really mandated by
the API, so instead we give them a grace period to finalize and
error out if they fail to finalize eventually.
Matthew Barnes [Fri, 29 Nov 2013 20:22:23 +0000 (15:22 -0500)]
Fix build break in e-data-book-factory.c.
Missing #include <locale.h>
Matthew Barnes [Thu, 28 Nov 2013 17:23:13 +0000 (12:23 -0500)]
CamelIMAPXSettings: Remove unused "mobile-mode" property.
Not used by Evolution and not clear what this mode even means.
Removing it makes a bunch of confusing complexity drop out, which is
justication enough for me.
Matthew Barnes [Thu, 28 Nov 2013 17:08:01 +0000 (12:08 -0500)]
CamelPOP3Settings: Remove unused "batch-fetch-count" property.
Was tied to "mobile mode", no longer used.
Matthew Barnes [Thu, 28 Nov 2013 17:05:19 +0000 (12:05 -0500)]
CamelPOP3Settings: Remove unused "mobile-mode" property.
Not used by Evolution and not clear what this mode even means.
Removing it makes a bunch of confusing complexity drop out, which is
justification enough for me.
Matthew Barnes [Thu, 28 Nov 2013 16:10:33 +0000 (11:10 -0500)]
CamelFolder: Remove unused fetch_messages_sync() method.
The method is not used by Evolution and was partially broken anyway.
The boolean return value was overloaded to mean both whether an error
occurred AND whether there were more messages to fetch. That's more
than two possible states and would have required an additional "out"
parameter to clarify, but I'm not going to bother with it.
Matthew Barnes [Thu, 28 Nov 2013 14:31:07 +0000 (09:31 -0500)]
CamelFolder: Remove all asynchronous class methods.
Rationale:
When I originally added Camel's asynchronous API, I thought providers
could choose to override the synchronous or asynchronous class methods.
Years later, turns out the asynchronous methods were never overridden,
and it wouldn't have worked anyway. The asynchronous methods by default
invoke an associated synchronous function from a worker thread, but many
of Camel's synchronous functions do extra processing around invoking the
synchronous class method. camel_store_get_folder_sync() is an example.
If a provider tried to implement synchronous methods in terms of the
asynchronous methods, then that extra processing in the synchronous
functions could potentially get skipped.
Removing the asynchronous class methods should help clarify how Camel
providers are intended to be written.
The removal should have no impact on existing Camel providers, all of
which implement only the synchronous class methods. I've even padded
the CamelFolderClass struct to keep the binary interface intact.
Matthew Barnes [Thu, 28 Nov 2013 13:49:38 +0000 (08:49 -0500)]
CamelSubscribable: Remove all asynchronous class methods.
Rationale:
When I originally added Camel's asynchronous API, I thought providers
could choose to override the synchronous or asynchronous class methods.
Years later, turns out the asynchronous methods were never overridden,
and it wouldn't have worked anyway. The asynchronous methods by default
invoke an associated synchronous function from a worker thread, but many
of Camel's synchronous functions do extra processing around invoking the
synchronous class method. camel_store_get_folder_sync() is an example.
If a provider tried to implement synchronous methods in terms of the
asynchronous methods, then that extra processing in the synchronous
functions could potentially get skipped.
Removing the asynchronous class methods should help clarify how Camel
providers are intended to be written.
The removal should have no impact on existing Camel providers, all of
which implement only the synchronous class methods. I've even padded
the CamelSubscribableInterface struct to keep the binary interface
intact.
Matthew Barnes [Thu, 28 Nov 2013 13:35:00 +0000 (08:35 -0500)]
CamelTransport: Remove all asynchronous class methods.
Rationale:
When I originally added Camel's asynchronous API, I thought providers
could choose to override the synchronous or asynchronous class methods.
Years later, turns out the asynchronous methods were never overridden,
and it wouldn't have worked anyway. The asynchronous methods by default
invoke an associated synchronous function from a worker thread, but many
of Camel's synchronous functions do extra processing around invoking the
synchronous class method. camel_store_get_folder_sync() is an example.
If a provider tried to implement synchronous methods in terms of the
asynchronous methods, then that extra processing in the synchronous
functions could potentially get skipped.
Removing the asynchronous class methods should help clarify how Camel
providers are intended to be written.
The removal should have no impact on existing Camel providers, all of
which implement only the synchronous class methods. I've even padded
the CamelTransportClass struct to keep the binary interface intact.
Matthew Barnes [Thu, 28 Nov 2013 01:48:47 +0000 (20:48 -0500)]
CamelStore: Remove all asynchronous class methods.
Rationale:
When I originally added Camel's asynchronous API, I thought providers
could choose to override the synchronous or asynchronous class methods.
Years later, turns out the asynchronous methods were never overridden,
and it wouldn't have worked anyway. The asynchronous methods by default
invoke an associated synchronous function from a worker thread, but many
of Camel's synchronous functions do extra processing around invoking the
synchronous class method. camel_store_get_folder_sync() is an example.
If a provider tried to implement synchronous methods in terms of the
asynchronous methods, then that extra processing in the synchronous
functions could potentially get skipped.
Removing the asynchronous class methods should help clarify how Camel
providers are intended to be written.
The removal should have no impact on existing Camel providers, all of
which implement only the synchronous class methods. I've even padded
the CamelStoreClass struct to keep the binary interface intact.