ShmeaDB

ShmeaDB ("shmee-dee-bee") is a Function as a Service library that makes easy both a request / response and an event driven actor model across computer nodes. We allow one to serialize C++ primitives and classes and send them over an encrypted wire. Database functionality is primitive.

Powerful and easy to use tools make ShmeaDB a strong foundation for any secure application, optimized for the most CPU-intensive operations.

Note: Compatible with Linux. Untested on Windows and macOS.

Features

Create Networked Events

Easy to make custom networked events.

Transport Data Quickly to Other Computers

Protocol designed for easy transport of G classes to other computer nodes (Encrypted).

Easily Serialize Standard Data Types

Variant data type (GType, includes strings) plus support for vectors (GList) and matrices (GTable).

(Primitive) Database Functionality

Basic database functionality for managing CSVs quickly and easily.



GNet Example


                    int main(int argc, char* argv[])
                    {
                        GNet::GServer* serverInstance = new GNet::GServer();

                        // Defined elsewhere
                        MyCustomEvent* newService = new MyCustomEvent(serverInstance);

                        // Add services to be executed when called from any thread
                        serverInstance->addService(newService);

                        // command line args
                        bool localOnly = false;
                        if (argc > 1)
                        {
                            localOnly = (strcmp(argv[1], "local") == 0);
                        }

                        // Launch the server
                        serverInstance->run(localOnly);

                        // Launch a gui or blocking process
                        ...

                        // Cleanup GNet
                        serverInstance->stop();

                        // Instead of a return or exit necassary
                        pthread_exit(EXIT_SUCCESS);
                    }
                

ShmeaDB Example


                    shmea::GList newRow;
                    newRow.addLong(timestamp);
                    newRow.addDouble(1.0);
                    newRow.addDouble(high);
                    newRow.addDouble(low);
                    cTable.addRow(newRow);
                

Build Example




Performance

Minimal Footprint. Boilerplate networking solution for any application.



Join the Community

Real-time help? Find us on Discord.

Contribute

Contribute code or report issues on GitHub.