Initial commit of the scratchpad work for Plato in C++
Started working on plato_daemon and plato_client, which is somewhat working except for a seg fault having to do with a bad allocator. It will take a while to track down.
Just about have the interprocess portion working, the only thing holding me back right now is the ambiguity of what insert function is supposed to be called. Apparently this has something to do with boost::interprocess::basic_string having a templated constructor, which is a problem in the key type apparently.
Pruned a lot of dead code
Fixed the problem, but I'm not sure how. I'm about to implement boost::log, boost::program_options, and the core data structure.
Contemplating the move to memory-mapped files instead of using plain shared memory. This means no more serialize, lots of time being spent contemplating caching, etc, and all of the offset_ptr goodness.
Starting to implement a very dumbed down version of the data structures with all of the shared memory requirements. It's going to be a while.
Oh hey, what do you know? It compiles! I need to factor out a lot of the typedefs and some other things to get the client up to speed now.
Got the types separated to the common header file, it appears to be running alright. Now I need to add command arguments, but I'm going to probably try to find something other than boost::program_options. I Probably should hammer out the logging functionality as well.
Trying to work out a getopts-like solution for plato_client, but all of the libraries I've looked at, it's difficult to specify non-flagged options like commands. I might start writing a simple one myself if I can't resolve this quickly.
Put off working on the parser for a bit and instead made a class for containing the data structures, called PlatoDB. I've been testing this with the daemon, and writing the important functions as member methods.
Working out the interface for the PlatoDB class functions
Got a decent number of the PlatoDB member functions working, but still have a lot more to go.
It seems that the client version also works with little effort. I'll work on a testing framework for this, along with a logging framework. Then I'll try to get a command-line interface.
Did away with the tclap arg parsing, it's just done by hand. Also attempted to add boost::uuid to PlatoDB, but either we'll have to increase from std::size_t in the rnode, or we'll have to figure out how to make boost::uuid objects smaller.
Everything seems to be working smoothly with my hi-tech UUID solution, so now I need to think about how the client deals with files of another filesystem.
Added a license and a readme, might as well push this up onto github. I'll be working on it, only pushing changes when everything tests fine.
Fixed conflict in .gitignore.