GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — cpp-client/DESIGN at main · infinispan/cpp-client

Expand file tree

/

DESIGN

Copy path
More file actions
More file actions

Latest commit

 

History

History
History
66 lines (46 loc) · 2.26 KB
/

DESIGN

Copy path

File metadata and controls

66 lines (46 loc) · 2.26 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
Hot Rod C++ client
==================
This client provides high performance access to an Infinispan cache
via the Hot Rod wire protocol.
See the README for supported platforms.
The source is divided roughly as follows:
include, src/hotrod/api : the public interface
src/hotrod/impl: a close match (hopefully) of the Java
client/hotrod/impl subdirectory
src/hotrod/sys: platform dependent code
Another way of describing "sys" is to provide a means to write
platform neutral code in the rest of the tree. "Platform" can mean
different operating systems, but can also refer to the evolutionary
stage of the C++ compiler (depending on how much of C++11 is
available).
The "api" part should feel like a natural C++ use of Hot Rod, as
opposed to Java shoehorned into a C++ syntax.
Platform neutral code
=====================
By contrast, the "impl" subdirectory should relax C++ ideology to
allow the code logic to resemble the naming and logic flow of the Java
client as closely as possible without producing poorly performing or
unmaintainable code. It would be nice if this code eschewed fancier
C++ techniques so that it is approachable to programmers with limited
C++ background, including Java Hot Rod developers, who may wish to
review code, fix bugs, or roll up their sleeves and dive in.
An important goal is to allow the logic to be shared between clients as
bugs are fixed and new functionality is implemented.
Platform specific code
======================
CMake is used to select which platform dependent code is to be used on each
platform. #ifdef statements are used sparingly, typically to allow
the compiler to find include files or provide definitions.
Code should be coded, in order of preference, as:
vanilla c++03
c++11 + c++03 workarounds
POSIX + Windows (+ other?) workarounds
3rd party libraries
===================
3rd party libraries, such as Boost, are deliberately avoided even
though they can offer useful functionality. Because they are also
popular with users, who may be relying on a different version of the
software, it becomes very difficult to accommodate both the user and
Hot Rod at the same time with a single version or concurrent versions
that can run at the same time without interference.
TBD: protocol buffers library, how to reconcile.
You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.