The Swiss Army Knife C++ Events Framework for efficient (local or distributed) event driven programming