Greetings, Just looking over the code a bit, and I really appreciate the level of comments in the code!
I am interesting in learning how the generic design works when it comes to this (with my assumptions, please correct me where appropriate): 1. When data is being stored in-memory, it is stored in some sort of collection like a conconcurrenthashmap. So this in memory structure gets appended to until a certain criteria is met (time based, # of items, size of data), then it gets flushed/sinked to one of the many implementations. 2. How does this collection get sinked all the while accepting new data. I also am guessing that this process is abstracted, so future implementations can just borrow on this functionality and now have to worry about concurrency issues. I would really appreciate if someone could highlight how the above works, and where the relevant code would be so I can absorb it :)
