inter-application messaging system written as a test for a job.
Python
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
README
exampleServer.py
explaination.txt
iams.py

README

iams - Inter-Application Messaging System

Written as a test for Partheon.

Tracking my train of thought in this file for design.

Initial design (before writting any code) is to use Python and use its socket functionality, using JSON for the serialization allowing for an ID to be sent along with the message. 
Going to have the recieving application send a message in acknowledgement and verify that a message is only acted on if the ID has timed out. 
Going to use a standard queue for storing messages until they are acknowledged as recieved. 
Test does not specify whether the app can/should be multithreaded, considering using stackless to allow for using channels to communication between the coroutines which would make recieving messages a lot more certain. That or just have the messaging object checked on as part of a event loop style.
Initial handshake will send the location where messages can be sent to the specific applicaition.

Two example apps:
1. application that send anything written on stdin to the server specified on the commandline and writes anything recieved to stdout.

2. server that responds to properly formed requests with the requested data, and says something to the client application if the request is malformed.

Objects:
ChrisIPCClient -- An object that uses JSON to serialize objects and sends them to the socket specified at objection creation.
ChrisIPCServer -- An object that binds to an address or unix socket location. Uses JSON deserialize recieved objects and adds them to a queue.

ChrisIPCClient's send method will have a way of indicating that it expects a message back, if it expects a message back, it will ignore the first ack and wait for a message with content with the same ID. This allows the server to not have to worry about acks and be able to send the data again if it is requested again, allowing the client to be the only one that worries about acks.