Congratulations and thank you! On Fri, Aug 11, 2017 at 1:23 PM, Jacob Barrett <jbarr...@pivotal.io> wrote:
> In case you missed the big commit recently, the Geode Native components has > removed all globals.* > > The biggest win here is that we can more easily unit test sections of the > code that before was nearly impossible due to reliance on initialized > global instances of Cache, DistributedSystem, PoolManager, etc. All long > lived instances are children of Cache and have access to their "container" > Cache for accessing other components like PoolManager, DistributedSystem, > etc. The refactor probably isn't perfect but it is a step in the right > direction. Look for more unit tests to come. > > The next big win is that you can truly have more than a single Cache > instance in our process space. While this isn't a common intentional use > case, it is common in the .NET client implementation since a single > process, AppPool, could have several AppDomains each with their own > instance of Cache. In the old model all managed Cache instances shared the > singleton unmanaged Cache instance. This lead to confusion around > configuring multiple Caches in the same AppPool, think session state > provider and application lookaside caching in IIS, and restricted > configuration to share the same cluster and configuration. > > Obviously this is a HUGE breaking change. Almost all source using the C++ > or .NET clients will need to be refactored. While many should be pretty > obvious, look for updates coming to the examples soon to show you the > light. > > This change follows the major change where we switch from the home grown > SharedPtr/SharedBase refcounting memory management model to > std::shared_ptr. The next major refactoring coming is aligning the public > API with C++11 standards, like std::string, range-based for loops, etc. We > also plan to make the API more consistent between factories, getters, > setters, refs, pointers, etc. > > -Jake > > * Some lingering globals have been identified for removal. >