GEODE-2484: Replace ACE Map with synchronized unordered_map (#401)

* Adds an synchronized_map wrapper template to synchronize a map with a
  mutex.
* Replaces unsynchronized ACE Map with std::unordered_map.
* Replaces ACE synchronized Set with synchronized std::set
* Replaces ACE_Semaphore with std::mutex in ThinClientRegion
* Replaces ACE_Semaphore with std::condition_variable in ClientMetaDataService
* Replaces ACE_Task with std::thread in ClientMetaDataService
* Replaces ACE_RW_Thread_Mutex with boost::shared_mutex in ClientMetaDataService
* Replaces use of synchronize bounded queue.
 * Was not using the bounded aspect of the Queue type.
 * Converted to using std::deque directly.
 * Refactored out coalesce function.
* Replaces ACE_Task with std::thread in EvictionController
* Replace ACE_RW_Thread_Mutex with boost::shared_mutex in EvictionController
* Replace specialized IntQueue with std::queue in EvictionController
 * Use condition variables to avoid spurious wakeups.
* Replace raw pointer allocation with std::unique_ptr
* Replace specialized IntQueue with std::deque
* Replace ACE_Task with std::thread.
 * Adds new wrapper based on std::thread. 
* Cleanup includes for fast compilation.
* Use std::unique_ptr to manage destruct.
* Adds thread names to MacOS and Windows threads.
107 files changed
tree: 98f5bcbbf377fdc286b3c2e73208bd3781643a0c
  1. bin/
  2. clicache/
  3. cmake/
  4. contrib/
  5. cppcache/
  6. cryptoimpl/
  7. defaultSystem/
  8. dependencies/
  9. dhimpl/
  10. dist/
  11. docker/
  12. docs/
  13. etc/
  14. examples/
  15. executables/
  16. packer/
  17. sqliteimpl/
  18. templates/
  19. tests/
  20. xsds/
  21. .clang-format
  22. .clang-tidy
  23. .cpackignore
  24. .gitignore
  25. .lcovrc
  26. .lgtm.yml
  27. .ratignore
  28. .travis.yml
  29. BUILDING.md
  30. CMakeLists.txt
  31. CONTRIBUTING.md
  32. FindNativeClient.cmake
  33. FindNativeClientCPPCache.cmake
  34. LICENSE
  35. NOTICE
  36. README.md
README.md

Build Status License

Overview
Building from Source
Introduction
Application Development

Overview

Native Client is a client implementation for Apache Geode that does not require the Java server JARs.

Building from Source

Directions to build Native Client from source can be found in the source distribution in BUILDING.md.

Application Development

Native Client applications can be written in these client technologies:

Export Control

This distribution includes cryptographic software. The country in which you currently reside may have restrictions on the import, possession, use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check your country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted. See http://www.wassenaar.org/ for more information.

The U.S. Government Department of Commerce, Bureau of Industry and Security (BIS), has classified this software as Export Commodity Control Number (ECCN) 5D002.C.1, which includes information security software using or performing cryptographic functions with asymmetric algorithms. The form and manner of this Apache Software Foundation distribution makes it eligible for export under the License Exception ENC Technology Software Unrestricted (TSU) exception (see the BIS Export Administration Regulations, Section 740.13) for both object code and source code.

The following provides more details on the included cryptographic software:

  • Apache Geode links to and uses OpenSSL ciphers.