Krisztian Litkey [Mon, 4 Jun 2012 15:24:18 +0000 (18:24 +0300)]
common: initial version of DBUS low-level and transport abstractions.
Krisztian Litkey [Mon, 4 Jun 2012 15:20:37 +0000 (18:20 +0300)]
common: comparison and a bad hash function for string hashtables.
Krisztian Litkey [Mon, 4 Jun 2012 15:18:25 +0000 (18:18 +0300)]
common: simple refcounting macros.
Krisztian Litkey [Mon, 4 Jun 2012 15:17:17 +0000 (18:17 +0300)]
common: export custom data array size calculation (for DBUS transport).
Krisztian Litkey [Mon, 4 Jun 2012 15:14:17 +0000 (18:14 +0300)]
console: fix blob vs. string inconsistency thinko.
Krisztian Litkey [Mon, 4 Jun 2012 15:10:52 +0000 (18:10 +0300)]
common: {dgram,stream}-transport fixes.
Krisztian Litkey [Mon, 4 Jun 2012 10:10:27 +0000 (13:10 +0300)]
common: fix string array members in mrp_data_free.
Krisztian Litkey [Fri, 1 Jun 2012 14:32:40 +0000 (17:32 +0300)]
common: fix mrp_msg_field_t underallocation for array types.
Krisztian Litkey [Mon, 28 May 2012 09:35:11 +0000 (12:35 +0300)]
common: minor transport changes, transport test fixes.
Renamed transport events and requests, the generic messaging versions
recv* and send* are now called recvmsg* and sendmsg*. Changed accept
to not take event callbacks for the new accepted transport, instead
the callbacks need to be given to the listening transport and are
inherited from there.
Added basic event callback checks: connection-oriented transports
require connection, close, and recvmsg*. Connectionless transports
require recvfrom*. For connect (usually sender-filtering) to succeed
on a connectionless transports, it needs to have a recv* callback
specified.
Krisztian Litkey [Fri, 25 May 2012 17:29:48 +0000 (20:29 +0300)]
common: removed old transport tests.
Krisztian Litkey [Fri, 25 May 2012 17:27:59 +0000 (20:27 +0300)]
common: added (manual) transport-test.
Krisztian Litkey [Fri, 25 May 2012 17:26:37 +0000 (20:26 +0300)]
transport: fix type reported by transport address resolution.
Krisztian Litkey [Fri, 18 May 2012 07:10:09 +0000 (10:10 +0300)]
transport: added custom data and raw modes to transport/messaging layer.
In addition to generic messages and the default generic message mode,
you can now put a transport into custom data and raw modes. In raw more
the transport acts as a transparent bitpipe ie. basically like a normal
socket. In custom data mode, you first describe and register the data
structures you want to pass over the transport with the messaging layer
and then you can directly pass any of these data structures to the
appropriate sending/receiving routines and the messaging layer will
automatically take care of the encoding/decoding for you.
Krisztian Litkey [Fri, 11 May 2012 11:33:02 +0000 (14:33 +0300)]
common: slightly reworked default messaging abstraction
Hmm... I'm not happy with this at all. It's better than the original
quick-hack proto but not by a large enough margin. It probably needs
quite a bit of work still eventually. One thing that needs to be added
is a way to let users use the transport layer without forcing the default
messaging abstraction/encoding/decoding on them. This should preferably
happen by allowing users to send (almost) arbitrary data structures over
a transport by providing a descriptor that describes the layout of the
data structure in terms of offset/MRP_MSG_FIELD_* allowing the transport
or messaging layer to do the encoding/decoding of the data. The sending
part is relatively easy. The trickier part is the receiving side and to
come up with an API that is simple and intuitive enough to be usable yet
allows one to flexibly multiplex any number of structure types over the
same transport connection...
Krisztian Litkey [Tue, 8 May 2012 13:48:55 +0000 (16:48 +0300)]
Merge branch 'master' into devel
Krisztian Litkey [Tue, 8 May 2012 13:48:41 +0000 (16:48 +0300)]
Merge branch 'master' of github.com:otcshare/murphy
Krisztian Litkey [Tue, 8 May 2012 13:44:11 +0000 (16:44 +0300)]
Merge branch 'documentation' into devel
Krisztian Litkey [Tue, 8 May 2012 13:43:14 +0000 (16:43 +0300)]
Merge branch 'documentation'
Krisztian Litkey [Tue, 8 May 2012 13:20:52 +0000 (16:20 +0300)]
sample-config: minor commenting.
Krisztian Litkey [Tue, 8 May 2012 13:01:33 +0000 (16:01 +0300)]
transport: consolidated IP{v4,v6}/unix transports to {stream,dgram}-transpor
The recognized address prefixes are now tcp4, tcp6, udp4, udp6, unxstrm,
and unxdgrm. If you omit the type-specifier prefix, the address resolver
code will try to figure out the type based on the address itself ('[',
']', '@', '/'). However, a prefix specifies both the address family and
the connection-oriented vs. connectionlessness of the transport. The
resolver cannot guess which one you want if you omit the prefix and you
will always end up with connection-oriented transports in this case (as
these are registered before the datagram ones).
If you are careless and try to use prefixless string addresses for datagram
transports, you will get quite difficult to understand errors (as you end
up polling an unconnected, unlistened socket for readability).
One way to get around this would be to change the API so that
- only the address family is passed to the address resolver
- the socket type (dgram/stream) is passed to the transport creation
Although, this would be a more natural abstraction... maybe another day.
Krisztian Litkey [Mon, 7 May 2012 13:42:33 +0000 (16:42 +0300)]
console: for the sake of testing, a UDP-capable console/console-client.
No, it does not need to always make sense... I just wanted to check how
big chunk of code you need to write in addition to handling the connection-
oriented/connectionless differences.
Krisztian Litkey [Mon, 7 May 2012 13:27:49 +0000 (16:27 +0300)]
common/transport: some minor API cleanup, saner address resolving
There's plenty of things to write and clean up in the transport layer.
For a starter,
1) The message API is not sane. Fields should be tagged by integers
and not strings. It was a quick hack just to test the transports.
The basic encoder/decoder needs to be changed to an integer-tagged,
typed, TLV.
2) We also need unix-domain stream and dgram transports, maybe also IPv6
TCP and UDP transports. Once we have those, it'd make sense to combine
(or otherwise consolidate) the connection-oriented and connectionless
transport code as largely they would end up being identical anyway...
So IOW IPv4/v6 UDP, unix-domain dgram would share a large part of
their code, and similarly IPv4/v6 TCP and unix-domain stream would
share a large part of their code.
3) We need to write a DBUS transport to check if the current abstraction
is generic enough (or rather how far it is from being generic enough
and fix any remaining diffs).
4) While we're at it, an SHM-based transport wouldn't hurt either...
Janos Kovacs [Sun, 6 May 2012 23:52:40 +0000 (02:52 +0300)]
documentation-tools: eliminating/supressing some garbage prints
Janos Kovacs [Sun, 6 May 2012 23:07:02 +0000 (02:07 +0300)]
documentation-tools: doxygen automatic dependency generation
Some primitive doxygen depency generation added. Based on the doxygen
configuration file we try to guess the .h.c dependencies. However,
doxygen can have directories + patterns in which case we are living
on our wild guesses how doxygen finds the dependencies that are
not in the same directory.
MRP_DOCINIT autoconf macro was also introduced to initiate the
documentation building
Janos Kovacs [Sat, 5 May 2012 12:07:55 +0000 (15:07 +0300)]
documentation: oops, this Makefile.am was forgotten
Janos Kovacs [Sat, 5 May 2012 11:50:17 +0000 (14:50 +0300)]
documentation: plugin-developer-guide content update
Janos Kovacs [Sat, 5 May 2012 11:37:11 +0000 (14:37 +0300)]
documentation-tools: doc-tools finalized + makefiles
* plugin developer guide can be generated
* faking shavings and hiding the flood of doc-toolchain garbage
* manual dependencies (automatic dependency generation will be
the next big step)
Janos Kovacs [Fri, 4 May 2012 23:17:17 +0000 (02:17 +0300)]
documentation-tools: fixing doxml2db to open the output file for writing
Janos Kovacs [Fri, 4 May 2012 14:45:13 +0000 (17:45 +0300)]
documentation: some doxygen comments were added
some initial doxygen comments were added to be able to test the documentation
toolchain
Janos Kovacs [Fri, 4 May 2012 14:41:18 +0000 (17:41 +0300)]
documentation-tools: doxml2db.py introduced
doxml2db.py is to convert doxml files into docbook fragments
ie. chapters or sections. These chapters or sections in turn can be included
to the main docbook.
Krisztian Litkey [Thu, 3 May 2012 18:52:45 +0000 (21:52 +0300)]
tcp-transport: update leftover misleading comment.
Krisztian Litkey [Thu, 3 May 2012 15:58:36 +0000 (18:58 +0300)]
sample config: load two instances of test for command testing.
Krisztian Litkey [Thu, 3 May 2012 15:57:54 +0000 (18:57 +0300)]
daemon/config: kludge for partial-line comment support.
Krisztian Litkey [Thu, 3 May 2012 08:16:29 +0000 (11:16 +0300)]
common,core: support automatic console command registration for plugins
Krisztian Litkey [Thu, 3 May 2012 08:14:36 +0000 (11:14 +0300)]
common/transport: address is const for resolve.
Krisztian Litkey [Thu, 3 May 2012 00:02:27 +0000 (03:02 +0300)]
common: receive-side buffering fixes, added tcp_resolve.
Krisztian Litkey [Wed, 2 May 2012 22:38:11 +0000 (01:38 +0300)]
common: added a UDP transport to check if the abstraction is generic enough.
Krisztian Litkey [Wed, 2 May 2012 22:36:42 +0000 (01:36 +0300)]
common: preliminary resolve and bind support for transport layer.
Krisztian Litkey [Wed, 2 May 2012 17:30:04 +0000 (20:30 +0300)]
murphy.conf: try-load the console plugin in the sample config file.
Krisztian Litkey [Wed, 2 May 2012 17:29:19 +0000 (20:29 +0300)]
plugins-test: added a few commands for console testing.
Krisztian Litkey [Wed, 2 May 2012 17:26:05 +0000 (20:26 +0300)]
Added murphy-console, a client for the TCP console (plugin).
Krisztian Litkey [Wed, 2 May 2012 17:20:37 +0000 (20:20 +0300)]
plugins: added a TCP-transport based console plugin.
Krisztian Litkey [Wed, 2 May 2012 17:19:39 +0000 (20:19 +0300)]
common,core: include msg,transport,console to the convenience headers.
Krisztian Litkey [Wed, 2 May 2012 17:14:12 +0000 (20:14 +0300)]
core: added core console infra, a few basic commands for test.
Krisztian Litkey [Wed, 2 May 2012 16:52:16 +0000 (19:52 +0300)]
common: added a TCP transport implementation.
Krisztian Litkey [Wed, 2 May 2012 16:46:01 +0000 (19:46 +0300)]
common: added generic transport layer.
Krisztian Litkey [Wed, 2 May 2012 16:43:30 +0000 (19:43 +0300)]
common: added msg.[hc], a (preliminary) message interface for transports.
Krisztian Litkey [Wed, 2 May 2012 16:30:58 +0000 (19:30 +0300)]
daemon: fix stupid array sizing thinko.
Krisztian Litkey [Wed, 2 May 2012 16:27:46 +0000 (19:27 +0300)]
common: comment type fix.
Krisztian Litkey [Wed, 2 May 2012 16:24:02 +0000 (19:24 +0300)]
build: removed a bunch commented out conditionals.
Krisztian Litkey [Mon, 30 Apr 2012 12:38:57 +0000 (15:38 +0300)]
mainloop: handle more gracefully if fd is closed before delete_io_watch.
EPOLL_CTL_DEL sets errno to ENOENT if w->fd is closed (by the user)
after mrp_del_io_watch is called but before delete_io_watch gets around
to purge the watch and update our epoll bookkeeping. Don't treat this as
an error and avoid printing an error message.
Krisztian Litkey [Fri, 27 Apr 2012 14:04:14 +0000 (17:04 +0300)]
common: changed realloc macro to preserve ptr upon failure akin to reallocz.
Krisztian Litkey [Wed, 2 May 2012 14:01:56 +0000 (17:01 +0300)]
daemon: potentially uninitialized var. fix.
Krisztian Litkey [Thu, 26 Apr 2012 13:10:45 +0000 (16:10 +0300)]
common: fix calloc-like macro to set memory to zero.
Krisztian Litkey [Wed, 25 Apr 2012 23:24:24 +0000 (02:24 +0300)]
common: added mrp_datadup.
Krisztian Litkey [Mon, 30 Apr 2012 08:30:50 +0000 (11:30 +0300)]
common: fix copy-paste typo in pkg-config file.
Krisztian Litkey [Mon, 30 Apr 2012 08:27:34 +0000 (11:27 +0300)]
common: fix incorrect include paths in log.[hc].
Ismo Puustinen [Fri, 27 Apr 2012 10:55:30 +0000 (13:55 +0300)]
murphy-db: make pkg-config link also against the base library.
Janos Kovacs [Tue, 24 Apr 2012 23:52:16 +0000 (02:52 +0300)]
documentation: dblyxfix.py is now filtering <dummy> tags
Janos Kovacs [Mon, 23 Apr 2012 03:44:18 +0000 (06:44 +0300)]
documentation: fixing some bugs to get the first version work
Janos Kovacs [Mon, 23 Apr 2012 03:04:26 +0000 (06:04 +0300)]
documentation: make clean will delete the copied svg files
Janos Kovacs [Mon, 23 Apr 2012 02:57:02 +0000 (05:57 +0300)]
documentation: first version of document generation
* pdf generation
* no doxygen support yet
Janos Kovacs [Sat, 21 Apr 2012 16:53:38 +0000 (19:53 +0300)]
murphy-db: some cosmetic changes in mql-scanner.l
Some of the regexp's in mql-scanner.l got a facelift in order to produce
prettier ABNF description using abnf.py
Janos Kovacs [Sat, 21 Apr 2012 16:43:24 +0000 (19:43 +0300)]
murphy: abnf.py script now uses both the flex and bison file to generate ABNF
* flex support added for the automatic document generation, ie. ABNF is
generated from the regexp's in the definition section
* more correct ABNF description is generated
* the output is directly includable into DocBook xml file
Krisztian Litkey [Sat, 21 Apr 2012 09:46:08 +0000 (12:46 +0300)]
build: shave linker script generation.
Krisztian Litkey [Sat, 21 Apr 2012 09:15:56 +0000 (12:15 +0300)]
common,core: added top-level convenience include files.
Krisztian Litkey [Fri, 20 Apr 2012 18:11:45 +0000 (21:11 +0300)]
mainloop-test: enable logging.
Krisztian Litkey [Fri, 20 Apr 2012 18:11:31 +0000 (21:11 +0300)]
mainloop: I/O watch removal fix (thinko + incorrect EPOLL_CTL_DEL).
Krisztian Litkey [Thu, 19 Apr 2012 20:29:59 +0000 (23:29 +0300)]
mainloop: fix I/O watch HUP processing.
(e)poll uses (E)POLLRDHUP for input direction close/shutdown. The event
enum now has HUP for (POLLHUP|POLLRDHUP). RDHUP and WRHUP has been added
for POLLRDHUP and POLLHUP, respectively. Let's see if this will confuse
people...
Krisztian Litkey [Thu, 19 Apr 2012 09:46:19 +0000 (12:46 +0300)]
build: don't PKG_CHECK for dbus-glib.
Krisztian Litkey [Thu, 19 Apr 2012 09:45:21 +0000 (12:45 +0300)]
build: glib plugin needs glib, not dbus-glib.
Krisztian Litkey [Thu, 19 Apr 2012 08:19:39 +0000 (11:19 +0300)]
daemon: updated test config.
Krisztian Litkey [Thu, 19 Apr 2012 08:07:10 +0000 (11:07 +0300)]
build: generate/use linker scripts for murphy-db.
Krisztian Litkey [Thu, 19 Apr 2012 08:06:17 +0000 (11:06 +0300)]
build: clean up built linker-scripts during clean.
Krisztian Litkey [Thu, 19 Apr 2012 08:03:37 +0000 (11:03 +0300)]
build: linker-script generator pattern argument handling fix.
Krisztian Litkey [Wed, 18 Apr 2012 15:14:31 +0000 (18:14 +0300)]
shave: add support for lex/flex and yacc/bison.
Janos Kovacs [Tue, 17 Apr 2012 01:11:59 +0000 (04:11 +0300)]
murphy-db: mql syntax documentation
First incarnation of the abnf.py which produces the grammar description
directly from mql-scanner.l and mql-parser.y. The lexer regexp's are not
translated to ABNF yet.
Janos Kovacs [Sun, 15 Apr 2012 20:45:26 +0000 (23:45 +0300)]
murphy-db: mql transaction support
Use of transaction names (eg. BEGIN foo; COMMIT foo; etc)
precompiled transaction statements (begin, commit and rollback).
Janos Kovacs [Tue, 10 Apr 2012 23:23:30 +0000 (02:23 +0300)]
murphy-db: rest of mql transaction create routines
Test cases for string results only, ie. event result based
test cases are missing.
Janos Kovacs [Mon, 9 Apr 2012 20:07:15 +0000 (23:07 +0300)]
murphy-db: triggers introduced
mqi is fairily completei.
mql is just to see how the API will look like (only column change works)
cosmetic changes to confirm the agreed coding style (mostly typedef stuff).
Janos Kovacs [Sun, 25 Mar 2012 22:50:59 +0000 (01:50 +0300)]
murphy-db: pkg-config support for murphy-db
Janos Kovacs [Sun, 25 Mar 2012 21:36:37 +0000 (00:36 +0300)]
murphy-db: cleanup the include file names and dependencies
Janos Kovacs [Sun, 25 Mar 2012 19:44:10 +0000 (22:44 +0300)]
murphy-db: initial commit of the MurphyDB
Krisztian Litkey [Tue, 17 Apr 2012 13:30:19 +0000 (16:30 +0300)]
build: install .pc files & non-existing docs, honour libdir for plugins.
Generate and install pkgconfig files. Honour ${libdir} in the default
plugin directory and make ${libdir} available also as a macro. Install
(the non-existing) documentation.
Krisztian Litkey [Fri, 13 Apr 2012 13:17:09 +0000 (16:17 +0300)]
plugins: add some of the missing functionality (plugin metadata, checks)
Added plugin and API versioning, singletons, author et al metadata,
API version check and singletonnes check. Started adding plugin states.
Krisztian Litkey [Fri, 13 Apr 2012 13:18:32 +0000 (16:18 +0300)]
common: a simple directory scanning routine.
Krisztian Litkey [Thu, 12 Apr 2012 15:14:29 +0000 (18:14 +0300)]
plugins: don't hardcode 'plugin-' prefix twice.
Krisztian Litkey [Thu, 12 Apr 2012 10:48:53 +0000 (13:48 +0300)]
plugins: added basic support for plugin arguments.
Krisztian Litkey [Thu, 12 Apr 2012 10:47:21 +0000 (13:47 +0300)]
common: more pedantic array allocation macros.
Krisztian Litkey [Tue, 10 Apr 2012 10:33:00 +0000 (13:33 +0300)]
core: don't log low-level load errors for non-existing plugins.
Krisztian Litkey [Tue, 10 Apr 2012 10:26:33 +0000 (13:26 +0300)]
build: added brindging Makefiles to common, core, daemon and plugins.
Krisztian Litkey [Tue, 10 Apr 2012 10:02:46 +0000 (13:02 +0300)]
daemon: unified config directive handling, added info/warning/error directives.
Krisztian Litkey [Fri, 6 Apr 2012 11:52:51 +0000 (14:52 +0300)]
doc: added author info and coding style guide.
Krisztian Litkey [Fri, 6 Apr 2012 11:49:27 +0000 (14:49 +0300)]
build: removed unused Makefile.am's.
Krisztian Litkey [Fri, 6 Apr 2012 11:44:15 +0000 (14:44 +0300)]
daemon: added a config file for testing the parser.
Krisztian Litkey [Fri, 6 Apr 2012 11:42:30 +0000 (14:42 +0300)]
plugins: added glib plugin.
Krisztian Litkey [Fri, 6 Apr 2012 11:41:20 +0000 (14:41 +0300)]
plugins: added dbus core plugin.
Krisztian Litkey [Fri, 6 Apr 2012 11:39:58 +0000 (14:39 +0300)]
plugins: a primitive plugin to test the loading/unloading infra.
Krisztian Litkey [Fri, 6 Apr 2012 11:36:55 +0000 (14:36 +0300)]
daemon: skeleton of the daemon, config parsing.
Krisztian Litkey [Fri, 6 Apr 2012 11:33:58 +0000 (14:33 +0300)]
common: added utils for misc. routines (currently just daemonization).