'CPP program background waiting for jobs

I want to split up the following workflow of a C++ program:

Read serialized data (1 sec, which is already very fast for that size)
Search data (0.01 ms)
Return found data(0.00.. ms) Edit: found data is just a small file

Obviously reading the data takes most of the time. Additionally, the data that is being read, never changes. To speed up the workflow, I want to read the data once, then wait for requests. Just like a MySQL db, that is waiting for statements. Or any other Process that is running and just waiting for something to do. Right now, I start the program using the shell, and it will only be run inside a linux docker container.

What would be your approach to do that?

Goal: The program is always running and waiting for search metadata from another process (bash script?, a nodejs exec call), then perform search, then return data (write to file)

Dependency: I want to build this without eg nodejs v8 integration

Is Boost Asio a good startingpoint? Do I need to build a socket server? Are there easier ways?



Solution 1:[1]

This is very opinion-based.

I'd turn the program into a REST server. I hate boost, though, and recommend Poco::Net instead. If you want to see an example implementation:

[email protected]:jplflyer/ShowLib.git

And look at the RESTServer class.

I use JSON to pass messages around. It's become the industry standard.

Solution 2:[2]

I've used Boost.ASIO for network communication and it is a very good library with good documentation and example code.

But Boost is a huge library. One good thing about Boost.ASIO is you can compile it as a standalone library without much of the boost headers. Have a look here on how to compile Boost.ASIO as standalone library.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Joseph Larson
Solution 2 Aamir