Krisztian Litkey [Wed, 27 Jun 2012 13:19:05 +0000 (16:19 +0300)]
build-sys: support for disabling individual plugins, and the console.
Krisztian Litkey [Wed, 27 Jun 2012 10:24:44 +0000 (13:24 +0300)]
build-sys: when warning, also tell how to install git hooks.
Krisztian Litkey [Tue, 26 Jun 2012 16:25:04 +0000 (19:25 +0300)]
cleanup: monsterously huge whitespace cleanup, git pre-commit hook.
From this point on, please configure your editor to
- use spaces instead of tabs
- warn about (or colorize) whitespace errors (tabs, trailing
whitespace, emply line with whitespace, etc.)
Also after having clones/pulled this update, please run a
'make install-git-hooks' at the top level directory. This will
install a custom pre-commit hook that prevents subsequent
commits that would accidentially introduce whitespace errors.
Krisztian Litkey [Tue, 26 Jun 2012 13:22:21 +0000 (16:22 +0300)]
build-sys: added a git hook for WS error checks.
Krisztian Litkey [Tue, 26 Jun 2012 09:47:17 +0000 (12:47 +0300)]
Merge branch 'devel'
Krisztian Litkey [Mon, 25 Jun 2012 13:27:42 +0000 (16:27 +0300)]
debug: semi-automatic infra to resolve debug file:line to function name
Unfortunately starting with 4.x proper support for __FUNCTION__ has
been degenerated to an alias to the C99-compatible func. Since func
is an automatic variable instead of an automatic macro, many of the
interesting stuff (such as constant-string concatenation) you cannot
do with it that were possible with __FUNCTION__.
This is a slight setback for our debug infra because the intention
was to set up the main debugging macro, mrp_debug, in such a way that
it would have autogenerated for every debug site a string table entry
of the format __DEBUG_SITE_function@file:line. Listing the existing
sites would have then simply become finding all matching entries in the
string table and printing them out.
Now with the degenerated >= 4.x gcc, we only get file and line number
information but not function name. To overcome this, support has been
added to the debug infra for registering the necessary information to
do the extra file:line to function name mapping. Moreover, a simple
script and some common boilerplate code has been added to help make
use of all this without having to really understand the details of how
it all works, or having to touch any of your code (other than placing
mrp_debug's wherever appropriate).
You can take a look at src/Makefile.am and check how the common or core
libraries or the dbus plugin is built to see what you need to do to
automatically generate the necessary debug function info.
Krisztian Litkey [Wed, 20 Jun 2012 16:40:15 +0000 (19:40 +0300)]
Merge branch 'master' of github.com:otcshare/murphy
Ismo Puustinen [Wed, 20 Jun 2012 08:40:54 +0000 (11:40 +0300)]
common: fixed clang compile error.
Ismo Puustinen [Wed, 20 Jun 2012 11:26:06 +0000 (14:26 +0300)]
common: add a header include to msg.h.
Ismo Puustinen [Wed, 20 Jun 2012 11:29:04 +0000 (14:29 +0300)]
console: make connection_evt static.
Krisztian Litkey [Wed, 20 Jun 2012 16:31:18 +0000 (19:31 +0300)]
core: ignore plugin start failure for try-loaded plugins.
Hmm... as Ismo pointed out probably the correct semantics for
try-load is to ignore both load-time and start-time errors for
plugins that are loaded with a try-load-plugin directive in
the config file.
Krisztian Litkey [Wed, 20 Jun 2012 15:45:38 +0000 (18:45 +0300)]
Console command infra overhaul, added core commands, debug control.
Krisztian Litkey [Wed, 20 Jun 2012 15:40:40 +0000 (18:40 +0300)]
murphy-console: crash fix.
Krisztian Litkey [Wed, 20 Jun 2012 15:40:01 +0000 (18:40 +0300)]
common: added runtime-controllable debug infra.
Krisztian Litkey [Wed, 20 Jun 2012 15:37:19 +0000 (18:37 +0300)]
common/console: check return-while-busy once, just like with transports.
Krisztian Litkey [Wed, 20 Jun 2012 15:28:33 +0000 (18:28 +0300)]
common/macros: added stringifying macro.
Krisztian Litkey [Wed, 20 Jun 2012 15:27:42 +0000 (18:27 +0300)]
comon/dbus: use MRP_UNUSED and mrp_debug macros where appropriate.
Krisztian Litkey [Wed, 20 Jun 2012 15:25:28 +0000 (18:25 +0300)]
plugins/console: crash fix, remove #if 0'd code.
Krisztian Litkey [Wed, 20 Jun 2012 08:21:18 +0000 (11:21 +0300)]
common: removed old tcp/udp-transport.c.
Krisztian Litkey [Tue, 19 Jun 2012 16:10:58 +0000 (19:10 +0300)]
build: export aptly named globals as well.
Ismo Puustinen [Mon, 18 Jun 2012 15:07:42 +0000 (18:07 +0300)]
meta: added a .gitattributes file to highlight whitespace errors.
Krisztian Litkey [Mon, 18 Jun 2012 08:31:55 +0000 (11:31 +0300)]
common: handle gracefully disconnect requests for NULL transports.
Krisztian Litkey [Fri, 15 Jun 2012 12:25:15 +0000 (15:25 +0300)]
common: added missing dbus-glue.c.
Krisztian Litkey [Fri, 15 Jun 2012 12:20:38 +0000 (15:20 +0300)]
common: added missing murphy-pulse.pc.in.
Krisztian Litkey [Fri, 8 Jun 2012 22:34:04 +0000 (01:34 +0300)]
common/pulse-glue: added libmurphy-pulse, a PulseAudio murphy superloop.
libmurphy-pulse provides the necessary gluing code to enable the murphy
mainloop to be pumped by a PulseAudio mainloop.
Krisztian Litkey [Fri, 8 Jun 2012 22:16:09 +0000 (01:16 +0300)]
common: added support for externally pumped mainloops (superloops).
Murphy mainloop has now an abstraction - called a superloop - for
external mainloops that pump the murphy mainloop. This abstraction
layer defines the set of functions one needs to implement to integrate
the native murphy mainloop to an external mainloop. Practically this
means implementing functios for
- adding/deleting file descriptor I/O watches,
- adding/deleting/modifying timers, and
- adding/deleting/enabling/disabling deferred callbacks
To integrate murphy to any external mainloop one needs to
- implement these functions using the external mainloop, and
- register these functions as the superloops API to murphy
(using mrp_set_superloop)
After this whenever the superloop is iterated/run, the murphy mainloop
will be iterated/run as well.
Krisztian Litkey [Thu, 7 Jun 2012 14:13:20 +0000 (17:13 +0300)]
build: generate dbus lib .pc file, removed extra header typo/cut'n'pasteo.
Krisztian Litkey [Wed, 6 Jun 2012 19:00:10 +0000 (22:00 +0300)]
common/tests: added missing dbus-test.c.
Krisztian Litkey [Wed, 6 Jun 2012 14:57:16 +0000 (17:57 +0300)]
common: DBUS transport sender-based filtering for connected mode.
Krisztian Litkey [Wed, 6 Jun 2012 14:22:19 +0000 (17:22 +0300)]
common: pass also name owner to DBUS name tracking callbacks.
Krisztian Litkey [Wed, 6 Jun 2012 13:24:02 +0000 (16:24 +0300)]
common: (untested) raw transport, small cleanups, stricter decoding checks.
Krisztian Litkey [Wed, 6 Jun 2012 13:23:52 +0000 (16:23 +0300)]
common: don't unref msg mrp_dbus_send did not allocate.
Krisztian Litkey [Tue, 5 Jun 2012 19:40:26 +0000 (22:40 +0300)]
common: added DBUS transport data blob member encodingt.
Krisztian Litkey [Tue, 5 Jun 2012 19:38:55 +0000 (22:38 +0300)]
common: added data blob member default encoding.
Krisztian Litkey [Tue, 5 Jun 2012 15:42:54 +0000 (18:42 +0300)]
common: BLOB encoding/decoding for generic messages in DBUS transport.
Krisztian Litkey [Tue, 5 Jun 2012 15:40:17 +0000 (18:40 +0300)]
daemon: don't crash if a config file starts with a comment.
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