Add deb pkg and release workflows, update debian files. [Stephen L Arnold]
Support timeout when receiving channel messages. [S. Lockwood-Childs]
Pub-sub for notifications of settings changes. [S. Lockwood-Childs]
Each component can receive notifications for changes to its own settings. These notifications are generated by the redis server https://redis.io/docs/manual/keyspace-notifications/
Runtime config of redis-ipc itself. [S. Lockwood-Childs]
Functions for configuring behavior of redis-ipc itself see RIPC_DEFAULT_* definitions for default values if not called
// configure verbosity level for debug channel int redis_ipc_config_debug_verbosity(int verbosity);
// configure whether debug messages will be shown on stderr int redis_ipc_config_stderr_debug(int enable_stderr);
// configure which component will be authorized to write settings // (RIPC_COMPONENT_ANY works as wildcard for "any") int redis_ipc_config_settings_writer(const char *writer_component);
Add dist target to tox cmds, update templates. [Stephen L Arnold]
- templates: fix UK spellng, update verbiage
- add dist target for release workflow
- Remove pull_request from conda-dev workflow (PR speed up) [Stephen L Arnold]
- Add or-true workaround for valgrind command_check. [Stephen L Arnold]
- this makes it match the other valgrind checks
- Update test output files. [S. Lockwood-Childs]
- Update dependabot config. [Stephen L Arnold]
- use custom prefix in commit msg
- add label (if found)
- no need to set target-branch for default
Workaround in env workflow, use the same gcovr config in ubuntus. [Stephen L Arnold]
Bump workflow action versions, update to latest coverage.yml. [Stephen L Arnold]
- cleanup github ci warning annotations
- revert to upstream lcov_coberura_xml
Fix "choke" action in github workflow. [S. Lockwood-Childs]
if ctest is allowed to run before steps that run the tests under valgrind, the redis server started up in pre-commands will get shut down. Instead run tests via ctest using 'tests' target. Now "choke" action in github should pass.
Cache global redis-ipc config in per-thread memory. [S. Lockwood- Childs]
It's not efficient to be going out to the redis server to look up the current stderr-debug setting... load it once during thread init, and after that only if explicitly called
Also started printing all 4 of the published messages in pub-sub test, instead of just the first couple.
Clean up stderr debugging. [S. Lockwood-Childs]
Added helper function stderr_debug() for the simple debug calls that check if debugging is enabled then do a single-line print. It adds a prefix ($COMPONENT) to the message, to make debugging flow easier to understand in multi-thread / multi-process apps.
The debug messages that are printed piece-wise while iterating through a list are not handled by the new helper, so are mostly left alone, aside from adding prefix of component name to the message.
Clean up lookup of stderr-debug config setting. [S. Lockwood-Childs]
Improve strategy for preventing infinite recursion due to calling stderr_debug_is_enabled() in the process of looking up whether or not stderr debug is in fact enabled.
Use a per-thread "force_quiet" flag to temporarily disable stderr debug during the lookup of the stderr-debug config setting, instead of trying to add "force_quiet" parameter to every function involved in looking up config settings (missed validate_redis_reply() before, and this is cleaner)
Ci: bump irongut/CodeCoverageSummary from 1.1.0 to 1.3.0. [dependabot[bot]]
Bumps [irongut/CodeCoverageSummary](https://github.com/irongut/CodeCoverageSummary) from 1.1.0 to 1.3.0. - [Release notes](https://github.com/irongut/CodeCoverageSummary/releases) - [Commits](https://github.com/irongut/CodeCoverageSummary/compare/v1.1.0...v1.3.0)
--- updated-dependencies: - dependency-name: irongut/CodeCoverageSummary
dependency-type: direct:production update-type: version-update:semver-minor
...
Fix format type (remove stray back-tick) [Stephen L Arnold]
Add issue template for automation queue. [Stephen L Arnold]
Add dependabot.yml config for gh actions. [Stephen L Arnold]
Update mark-stale workflow action, add dispatch. [Stephen L Arnold]
- Switch to individual issue template files to drive project cards.
[Stephen L Arnold]
- uses/used for non-beta (as of Nov2021) GH project automation
- Add clang/llvm source coverage module, test with tox. [Stephen L
Arnold]
- use cmake options to enable coverage and set reporting formats
- update pr comment action to use hide option
- Switch back to recreate option on PR comments. [Stephen L Arnold]
- slightly less clutter, basically the same on browser refresh
- Relax cmake_minimum_required to 3.10. [Stephen L Arnold]
- use the default version available in bionic/PPA as minimum
- Bump CodeCoverageSummary action to latest. [Stephen L Arnold]
- Display paths we found, try llvm_dir path hint with suffix. [Stephen L
Arnold]
- compiler path for clang is just /usr/bin and llvm tools get installed as tool_name-version_major
- Replace github env path hack with cmake PATH hints. [Stephen L Arnold]
- install llvm-11 in focal, see if cmake can find it
- Add extra clang deps, set and pass CC/CXX env vars. [Stephen L Arnold]
- update path for llvm bin directory so we can find llvm-cov
- Update smoke/coverage deps, use new llvm source coverage in workflow. [Stephen L Arnold]
- Add missing skip-on-push to coverage comment step. [Stephen L Arnold]
- Use legible/working sed regex for summary rate value. [Stephen L
Arnold]
- update comment action version, update workflow comments/rev
- Force clang/llvm-12 for coverage, set version for find_package.
[Stephen L Arnold]
- explicitly set ENV_LLVM_VER, add tail to pick the summary value
- Un-split ubuntu json-c deps in affected workflows. [Stephen L Arnold]
- Add PR/issue managers, update readme/changelog and debian packaging
files. [Stephen L Arnold]
- auto-assign PR to author, mark stale via cron
- add tox clang command and requirements to readme
- minimum ubuntu build environment is bionic
- Bump version(s) for release 0.0.5 => 0.0.6. [Stephen L Arnold]
- Collect some coverage report artifacts for introspection. [Stephen L
Arnold]
- set ubuntu deps for clang-10 instead of 11
- test without cmake toolchain file
- Adjust coverage includes/excludes, add xml format command to tox. [Stephen L Arnold]
- Json.hh: provide == and != operators. [S. Lockwood-Childs]
- Bump version for release 0.0.4 => 0.0.5 and updte changelog. [Stephen
L Arnold]
- save precommit autoupdates
- Json.hh: provide has_field() alternative to throwing missing-field exception. [S. Lockwood-Childs]
Add initial pre-commit config. [Stephen L Arnold]
Add cmake module to generate coverage data. [Stephen L Arnold]
- cmake module replicates makefile.am lcov/genhtml commands
- tox bionic env updated to generate full coverage
- move lcov to common deps in smoke workflow
- note full coverage reqiures 2 passes, one with and one without the runtime socket path override (true for both autotools and cmake builds)
- enabling cmake coverage also enables building test binaries;
both are currently OFF by default
- WITH_COVERAGE enables RIPC_BUILD_TESTING
- enable RIPC_BUILD_TESTING to build test binaries only
One more (fast) workflow to test setting path ENV var. [Stephen L Arnold]
- split env path, build (cmake and autotools) across ubuntu versions
- note bionic lcov is too old for autotools, use cmake instead
Updates all tox envs, adds valgrind with ci workflow. [Stephen L Arnold]
- valgrind args are currently hard-coded in tox.ini
- uses three of five test executables
Test ccache module in conda devenv (not enbaled currently) [Stephen L Arnold]
- can be used on linux; coughs broken compiler error on macos
Add FindJSONC module, update cmake cfg and recipe. [Stephen L Arnold]
Add cmake test coverage, checked with ctest build-and-test/gcovr. [Stephen L Arnold]
Add cmake module for conda env, disable windows. [Stephen L Arnold]
Add conda CI workflow, cleanup cmake options. [Stephen L Arnold]
Add local conda build recipe. [Stephen L Arnold]
Update cmake to create and install pkgconfig file. [S. Lockwood- Childs]
Note that library version is still being maintained in 2 places, both CMakeLists.txt and configure.ac -- would be good to move it to a separate version file that both can share, at some point.
Update cmake to check for json-c with pkg-config. [S. Lockwood-Childs]
Use consistent strategy for finding json-c and hiredis dependencies, which might be managed by pkg-config rather than native cmake modules
Add cmake build cfg, fix configure version and template typo. [Stephen L Arnold]
- Update pre-commit hooks, bump version for next release. [Stephen L Arnold]
- Be more explicit with coverage badge. [Stephen L Arnold]
- Set cmake-format intending to 4 and reformat. [Stephen L Arnold]
- Add overview of gitchangelog commit message handling. [Stephen L Arnold]
- Apply post-rebase pre-commit format updates. [Stephen L Arnold]
- disable cmake auto-format around custom coverage command
- Add some dev docs, add rst doc checks to pre-commit config. [Stephen L
Arnold]
- add doc8 and some pygrep hooks to validate .rst formatting
- add some pre-commit dev docs, usage and config hooks
- validate docs, reflow some text, fix some warnings
- make ChangeLog.rst an actual .rst doc
- Add pre-commit bash formatter, apply changes. [Stephen L Arnold]
- update .pre-commit-config.yaml with prettysh
- add prettysh to tox -e lint command
- commit autogen.sh format changes
- Add contributing section with pre-commit install steps. [Stephen L Arnold]
- Pre-commit badge and readme cleanup. [Stephen L Arnold]
- Add runtime path ENV to coverage workflow. [Stephen L Arnold]
- test coverage results
- Limit PPA dep installs, add setenv for tox. [Stephen L Arnold]
- add setenv with override for RIPC_SERVER_PATH (auto,bionic)
- reorder dep install commands, limit PPA installs (smoke)
- fix bash quoting for nested quotes
- Use gcovr from pip, update gcovr args for bionic. [Stephen L Arnold]
- unexpected coverage output between ubuntu versions
- Let cmake use socket path ENV var or path as build option. [Stephen L
Arnold]
- leave option empty/define unset if not found
- prefer path found in env over build option
- pass ENV var in tox.ini
- Add section on tox commands, remove redis-ipc-py section. [Stephen L Arnold]
- Json_test coughs runtime exception on macos, disable for now. [Stephen
L Arnold]
- tested on macos-10/11 in github (macos-10 did not run)
- Bump action version, remove temporary fix for coverage data. [Stephen L Arnold]
- Still more coverage refactoring. [Stephen L Arnold]
- Still has parse error, cleanup misc, disable fix, upload data. [Stephen L Arnold]
- Upgrade CodeCoverageSummary action to latest, remove DTD. [Stephen L
Arnold]
- add more sed and rename script => fix_cov_file.sh
- Add required deps, remove cruft (workflows) [Stephen L Arnold]
- Add coverage workflow, update readme, nuke codecov. [Stephen L Arnold]
- Test new action branch. [Stephen L Arnold]
- Remove python/related files => moved to redis-ipc-py repo. [Stephen L Arnold]
- Something amiss with running cccc-action container? [Stephen L Arnold]
- the same smoke workflow is fine in the pcr repos
- Remove python-only workflows and badges. [Stephen L Arnold]
- Disable full conda workflow on PR, add dispatch to cov-test. [Stephen L Arnold]
- Update readme build steps (add conda) and .gitignore. [Stephen L
Arnold]
- updates for deps, autotools, cmake, and conda
- ignore generated environment.yml file
- Remove ccache; not enough payoff, too much baggage. [Stephen L Arnold]
- Add coverage/deps for devenv workflow, fix matrix. [Stephen L Arnold]
- Remove macos until more debug, re-enable ccache on linux. [Stephen L Arnold]
- Use conda-dev/env setup for conda-dev workflow. [Stephen L Arnold]
- General build cleanup in cmake cfg and conda recipe. [Stephen L
Arnold]
- disable cmake modules, prefer pkg-config over find_package
- adjust conda recipe deps and tests, add extra macos flags
- Disable conda-dev and try full conda workflow. [Stephen L Arnold]
- Switch generators, add cmake threads_init, test macos exc. [Stephen L
Arnold]
- json_test coughs an exception on macos, syscall warning
- Add pkg-config dep and FindPython module. [Stephen L Arnold]
- Use agnostic build-test command across all platforms. [Stephen L Arnold]
Add missing arg in readme example. [Stephen L Arnold]
Document fixes and pre-commit autoupdates. [Stephen L Arnold]
Improve gitchangelog config, populate ChangeLog => ..v0.0.3. [Stephen L Arnold]
- use updated cfg with built-in rest_py for ChangeLog.rst
- add experimental md template file for release page
- add initial gitchangelog doc, update readme
Pre-commit whitespace/eol cleanup commit. [Stephen L Arnold]
Tweak pre-commit cfg, apply cmake/shell changes. [Stephen L Arnold]
- yaml checks cough parse error on std conda meta.yaml format
- cmake-format needs fencing/rulers to mark comments
- add excludes and fence markers
- restore missing clang toolchain file
Local autotools env and small nit in PR coverage xml report names. [Stephen L Arnold]
- isolate internal env, override via ENV_RIPC_RUNTIME_DIR
- define package (internal) env var names using tox defaults
- move tox env commands to replicate workflow
Create both html coverage reports, add inc/ dir to metrics artifact. [Stephen L Arnold]
- create both html reports, one for functions and one for branches
- note each report is created via separate tox cmds
- sync up metrics source code with coverage
- update conda devenv file, use Ninja generator
Signed-off-by: Stephen L Arnold <[email protected]>
chg: dev: py38/39 is not resolving deps like 37, remove jinja py ver
- this should really not be necessary, somehow devenv is inconsistent
- it should work fine across all python versions 36 => 39
- even on macos
Cleanup ci cmds (per OS env), add python dep for conda devenv. [Stephen L Arnold]
- bionic lcov is too old for required include usage
- devenv needs jinja python dep per CI version
Cleanup coverage flags, upload coverage report. [Stephen L Arnold]
- speedup: switch coverage workflow to ctest
- cleanup: make sure covrage builds are identical
- add cov report artifact upload to smoke workflow (no gh-pages branch yet)
- add/update coverage cfgs and tox commands
Remove stale results until next scan (cov-test workflow) [Stephen L Arnold]
- add check for data file before triggering convert/upload steps
Use local lcov config file for make cov, fix name in ci. [Stephen L Arnold]
Refactor coverage generation/reporting, add fix script. [Stephen L Arnold]
- add autobuild to tox, use lcov => gcovr for report
- xml seems more compliant, except for pkg name="."
- add fix_pkg_name.sh and run it in coverage workflow
Sort out coverage config, enable debug for branches/lines. [Stephen L Arnold]
Switch metrics action to latest release => 0.3. [Stephen L Arnold]
- fixes metrics report artifact uploads
Remove action options until gh-pages branch is pushed. [Stephen L Arnold]
- add readme note about python module move
Make sure autotools and cmake use the same soname/version. [Stephen L Arnold]
- add missing configure check for pthreads (autotools)
- allow SCM_VERSION to override static version (cmake)
Restore missing target property versions. [Stephen L Arnold]
Set recipe soversion, add include guard for unistd.h !win. [Stephen L Arnold]
Disable macos include block in conda-dev workflow. [Stephen L Arnold]
Update changelog for 0.0.4 release, revert macos ci test. [Stephen L Arnold]
Update version in configure.ac, fix typo and check macos. [Stephen L Arnold]
Json.hh: make cpplint happier. [S. Lockwood-Childs]
Json.hh: throw custom exception for missing fields. [S. Lockwood- Childs]
caller might want to specifically know about missing fields, so make that a specific exception that can be caught
Json.hh: fix json constructor from json_object ptr. [S. Lockwood- Childs]
- if ptr is null, create an empty object
- if ptr is non-null, take a reference on it so it will not get freed until json wrapper object is done with it
Fix package_version var for cmake and autotools. [Stephen L Arnold]
Add cmake-format cfg file, apply formatting updates. [Stephen L Arnold]
- this seems to keep more of the original format
- although it does add more dangling close-parens
Restore gcovr funtion report to coverage artifact. [Stephen L Arnold]
Fix generated pkgconfig file. [S. Lockwood-Childs]
Now the @prefix@ in redis-ipc.pc.in should get substituted when building with cmake (already worked for autotools builds)
Update smoke/runtime workflows to use lcov from PPA on bionic. [Stephen L Arnold]
Configurable path to redis server socket. [S. Lockwood-Childs]
compile-time configuration with RIPC_RUNTIME_DIR * with cmake
cmake -DRIPC_RUNTIME_DIR=/var/tmp/redis-ipc
- with automake export RIPC_RUNTIME_DIR=/var/tmp/redis-ipc ./configure
In each case, default path will be $RIPC_RUNTIME_DIR/socket Note that matches the usage of RIPC_RUNTIME_DIR in scripts/run_redis.sh If you set RIPC_RUNTIME_DIR when building, use the same value when using run_redis.sh to setup for tests.
Path can be overrident at runtime by setting RIPC_SERVER_PATH NOTE this is full path, not just the parent dir like RIPC_RUNTIME_DIR:
export RIPC_SERVER_PATH=/var/tmp/redis-ipc/socket
Allow building deb from git repo. [S. Lockwood-Childs]
Make dpkg-buildpackage not require a pre-existing source tarball
Include pkgconfig when building deb. [S. Lockwood-Childs]
Also removed python from deb packaging, since it moved to separate repo
Sync with deb packaging files from PPA. [S. Lockwood-Childs]
PPA is at https://launchpad.net/~nerdboy/+archive/ubuntu/embedded
Cheg: dev: test temp fix for coverage workflow data parse error. [Stephen L Arnold]
- remove temp fix when upstream issue is fixed
- limit metrics collection to src/ directory only
- adjust gcovr cmd root/path args, cleanup cruft
Updated coverity results from after cleanup commit. [S. Lockwood- Childs]
Clean up current detections from code scanners. [S. Lockwood-Childs]
Fix dev: use correct syntax in last devenv workflow step. [Stephen L Arnold]
Use new action release and set source directories for analysis. [Stephen L Arnold]
Update recipe, add pkg-config to test commands, disable inspect. [Stephen L Arnold]
Add develop branch to all workflowa, inspect conda pkgs. [Stephen L Arnold]
Dis-able conda dev workflow, debug on macos (segfault) [Stephen L Arnold]
Revert msvc include changes, re-enable conda-dev workflow. [Stephen L Arnold]
Remove windows (msvc) from CI workflows and conda recipe. [Stephen L Arnold]
Add more (win) build deps, tweak simple pkg tests. [Stephen L Arnold]
Set install libdir, update host deps and build scripts. [Stephen L Arnold]
- Add issue/PR templates and base .gitignore file. [Stephen L Arnold]
- Add pkconfig.in file, update configure.ac. [Stephen L Arnold]
- Add readme section for overlay/ppa package installs. [Stephen L Arnold]
- Test conversion and display of coverity results as SARIF data. [Stephen L Arnold]
- Cpplint cleanup and workflow (#8) [Steve Arnold]
- add doctest to pylint workflow, with minimal nose cfg
- cpplint cleanup commit, mainly whitespace, if/else, and curly braces
- cleanup indenting, revert if/else brace changes, add cfg file
- fix constructor warnings in inc/json.hh, add cpplint worklow
- Revert action to @main and set branch for metrics. [Stephen L Arnold]
- Use new action release and set source directories for analysis. [Stephen L Arnold]
- Silence "/tmp" path socket warning with a usage comment. [Stephen L Arnold]
- Add pylint workflow (check only, fail under 9.25) [Stephen L Arnold]
- More fun with badges. [Stephen L Arnold]
- Add bandit workflow (with github annotaions), disable flake8 ignores. [Stephen L Arnold]
- Update readme status, use status table. [Stephen L Arnold]
- Add codeql analysis to its own workflow, enable extra queries. [Stephen L Arnold]
- Add python examples to readme (doctest-able even) [Stephen L Arnold]
- Pylint cleanup commit, update pep8speaks config. [Stephen L Arnold]
- Flake8 cleanup commit, add modified gitchangelog.rc and flake8 cfg. [Stephen L Arnold]
Switch build status badge to (internal) github actions. [Stephen L Arnold]
Test alternate github license provider 2. [Stephen L Arnold]
Update license (filename) to GPL-2.0 generated by github. [Stephen L Arnold]
Add status badges to readme file (#4) [Steve Arnold]
- add status badges to readme file
- fix license file parsing (on github) and add SPDX id to primary sources
Make gettid() conditional on glibc version. [Stephen L Arnold]
Add project-level codecov config file. [Stephen L Arnold]
Separate src prepare from src configure, display coverage in CI. [Stephen L Arnold]
Enable coverage with html default report, add to smoke workflow. [Stephen L Arnold]
Fix gcc build error and remove obsolete json-c usage. [Stephen L Arnold]
Add github CI and test across ubuntu/toolchain versions. [Stephen L Arnold]
Ditch extraneous header file from python branch. [S. Lockwood-Childs]
Some redis-py fixes in python module. [S. Lockwood-Childs]
- redis.Connection is for tcp connections, not unix sockets, use redis.StrictRedis instead
- blpop() returns None on timeout or (queue, value) if successful in popping value from queue
Debug fix properly access globals. [nll]
Deleted bogus comma. [nll]
This is a version ready to be tested it is not checked out. [nll]
Add server-side class to python module. [S. Lockwood-Childs]
- client-side class has one public method
redis_ipc_send_and_receive()
- but server-side class has two
redis_ipc_receive_command() redis_ipc_send_reply()
because server has to do some processing between getting a command and sending back a reply
C library encodes tid as integer, so match in python module. [S. Lockwood-Childs]
Python module is really close to client-side functionality. [S. Lockwood-Childs]
"client-side" means the code that generates commands and receives replies, as opposed to "server-side" code that waits for commands and services them.
python now follows C-library conventions so it should (soon) interoperate with a server app written in C:
same mandatory fields for commands
cmd["timestamp"] cmd["component"] cmd["thread"] cmd["tid"] cmd["results_queue"] cmd["command_id"]
same naming of queues for commands and their replies
- command queue in format "queues.commands.$SERVER_COMPONENT"
- reply queue in format "queues.results.$CLIENT_COMPONENT.$CLIENT_THREAD"
TODO:
Still need to fill in the actual redis connection bits, plus generate real timestamps for commands
This version can do a few things it thinks it can send and receive messages, but it can not those functions are stubs the file can be imported into Python the code is written to raise exceptions, but none are handled yet no logging is performed. [nll]
New version of skeleton and a tiny bit of meat. [nll]
A little more client code for redis. [nll]
A little more client code. [nll]
Skeleton of redis client. [nll]
A file was added proclaiming the vital features of the client library to implement in Python as a first phase no comment on what a new phase might bring. [nll]
Redis_ipc.h: explicitly declare init/cleanup functions. [Steve Arnold]
Fixes QA warnings about implicit declarations.
Make debian packaging straight from git work. [S. Lockwood-Childs]
alternative is to do 'make dist' and use that as upstream tarball, either way should work...
Fix date stamp in debian/copyright file. [Steve Arnold]
Tweak debian/ubuntu packaging so it should work. [S. Lockwood-Childs]
Add readme for example programs. [S. Lockwood-Childs]
Add initial debian packaging files (still untested) [Steve Arnold]
"tests" were more examples than tests, for now count running as "passed" [S. Lockwood-Childs]
Cleanup cruft, need to test with running redis server. [Steve Arnold]
Building lib and test programs works; custom test runner tweaks still needed. [Steve Arnold]
Working libtool shared library build (no tests yet, so still a WIP) [Steve Arnold]
Still not sure if that's what we want...
Not quite working - WIP. [Steve Arnold]
Make new autotools baseline, move to subdirs, add Makefile.am and configure.ac, populate initial GPL files. [Steve Arnold]
Fix build against current json-c paths and names. [Steve Arnold]
Still filling holes in README doc. [Stephanie Lockwood-Childs]
Another README formatting tweakage. [Stephanie Lockwood-Childs]
README formatting fixes. [Stephanie Lockwood-Childs]
Putting documentation README. [Stephanie Lockwood-Childs]
Still a work in progress, some sections missing...
Connect to unix socket instead of localhost tcp. [Stephanie Lockwood- Childs]
Unix sockets are better for performance (and security, since permissions can constrain what clients use the socket) than localhost tcp connections, so a hard-coded path of /tmp/redis-ipc/socket replaces the old localhost & port in the category of things-that-probably-belong-in-a-config
Provide sample output file for each test prog. [Stephanie Lockwood- Childs]
Fix crashes after failing to connect to redis server. [Stephanie Lockwood-Childs]
Support 'make testprogs' [Stephanie Lockwood-Childs]
Test program cleanup. [Stephanie Lockwood-Childs]
test.c was a dupe, json_test can now be built from Makefile
Native build should be default. [Stephanie Lockwood-Childs]
When cross-compiling, set CROSS_COMPILE and SYSROOT. Skip setting them for native compiles.
Just a couple more debug messages. [Stephanie Lockwood-Childs]
Helped with debugging an app crash when a field was missing from redis
Added GNU hash to linker args. [Stephen Arnold]
Update makefile and added missing includes to test source files. [Stephen Arnold]
Switched to thread-local storage. [Stephanie Lockwood-Childs]
Discovered that arm compiler should support __thread variables, so was able to switch per-thread struct to thread-local without having to roll my own via different entries in a list.
Multi-thread test program which would segfault about 1 in 3 times (due to the threads stomping on each other) now succeeded 100 times in a row.
Make header C++ safe. [Stephanie Lockwood-Childs]
use ifdef's to insert 'extern C' block in header when compiled under C++
Added wrapper class for json-c access from C++ [Stephanie Lockwood- Childs]
json-c brings with it the typical reference-tracking pain of dynamically allocated C objects, but redis_ipc uses it anyway to provide C compatibility. This wrapper class is intended to make use of a returned json_object * much less painful for applications that are written in C++ instead.
Fix segfault after redis connection error. [Stephanie Lockwood-Childs]
Fix single-field read of settings/status hashes. [Stephanie Lockwood- Childs]
Return value was pointing to stuff that was going out of scope, so needed to stdup() a copy. Made note in the .h that, as usual, caller is responsible for cleanup when done with returned value.
Add targets for test programs and install. [Stephanie Lockwood-Childs]
Implemented single-field hash operations. [Stephanie Lockwood-Childs]
Single-field versions of setting and status hash operations seem to be working now.
Setting hash read/write implemented. [Stephanie Lockwood-Childs]
Successfully performed setting write and read back with test program. Currently library is looking for component "db" as the one privileged to update settings, but that probably isn't the right name.
Still need to implement single-field operations for both status and setting hashes.
Status hash read/write implemented. [Stephanie Lockwood-Childs]
Successfully performed status write and read back with test program.
While adding hash support, discovered that redis syntax errors do not result in NULL replies but rather REDIS_REPLY_ERROR type replies, so redis reply checking had to be reworked accordingly.
Pairing of command and result. [Stephanie Lockwood-Childs]
After sending a command, the submitter will now discard result entries that do not have a matching ID and keep looking for the one that belongs to the just-submitted command.
Send command and receive result almost works. [Stephanie Lockwood- Childs]
Command processing is close to finished: one process can queue a command, and another process can receive and send back a result.
Still need to put in the check to see that a received reply matches the recently-sent command (compare the command id strings).
Queueing commands. [Stephanie Lockwood-Childs]
The first half of sending commands has been implemented and exercised with test program. The command is being properly formatted and pushed to a redis queue, but parsing the result still needs to be filled out.
Also cleaned up internal func ipc_path() to be less redundant.
Cleanup func. [Stephanie Lockwood-Childs]
Implemented cleanup func, though will need to revisit both init and cleanup to make them work with multi-thread processes (switch to a list of per-thread structs for saving state, as noted in FIXMEs).
Subscribers can listen on channels. [Stephanie Lockwood-Childs]
Finished up initial cut at pub/sub API by implementing the blocking listener function. Caller is responsible for not trying to listen until one or more channels have been subscribed, though library could track subscriptions if that became a problem.
Test program is now able to post messages from one process and receive them from another.
Implement subscribe/unsubscribe. [Stephanie Lockwood-Childs]
Implemented functions for subscribe/unsubscribe from event or debug channels. The correct redis commands appear to be sent by the test program, and further verification awaits implementation of receiving published events/debug messages.
Implement sending of events. [Stephanie Lockwood-Childs]
events can now be published on redis
Added timestamps to debug. [Stephanie Lockwood-Childs]
Debug channel is working. [Stephanie Lockwood-Childs]
Haven't implemented timestamp field for debug messages yet, but other than that debug messages are working -- JSON message looks correct and gets sent to redis pub/sub channel.
Implementing init and send-debug funcs. [Stephanie Lockwood-Childs]
Init function seems to work, debug function is mostly there -- generates json text, but prints to stdout instead of really publishing to redis.
Starting library implementation. [Stephanie Lockwood-Childs]
Started implementing functions. Init and send-debug functions are mostly implemented and compile now (not run-tested yet)
Initial design but not implementation. [Stephanie Lockwood-Childs]
Library include file has proposed function signatures
None of the functions have been implemented yet however