vrpc 2.5.1 → 3.0.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,72 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
6
6
  and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [3.0.0-alpha.3] - 25 Nov 2021
9
+
10
+ ### Fixed
11
+
12
+ - missing 'create' event in VrpcAdapter
13
+ - respecting isolation state in callAll
14
+
15
+ ### Changed
16
+
17
+ - cleaned API and tests from deprecation supports, those will now result in
18
+ errors
19
+ - intercepting return value of EventEmitter functions and changing it from
20
+ potentially gigantic object (as it returns `this`) to `true`
21
+
22
+ ## [3.0.0-alpha.2] - 19 Nov 2021
23
+
24
+ ### Fixed
25
+
26
+ - leaking event registrations on remote-controlled instance when event consumer
27
+ was not creator of the instance
28
+
29
+ ## Changed
30
+
31
+ - reduced payload of callback message by omitting the original return value
32
+ - changed prefix of mqtt client id to `vc3` and `va3`, respectively
33
+
34
+ ## [3.0.0-alpha.1] - 10 Nov 2021
35
+
36
+ ### Changed
37
+
38
+ - layout and content of this repository, only javascript related code is left
39
+ - naming of public API classes is made consistent
40
+ - VrpcAdapter
41
+ - VrpcAgent
42
+ - VrpcClient (formerly VrpcRemote)
43
+ - VrpcNative (formerly VrpcLocal)
44
+ - RPC wire protocol got changed and simplified, a protocol version is attached
45
+ to every message (`v: 3`)
46
+ - concept of isolated and shared proxy instances
47
+ ([#51](https://github.com/heisenware/vrpc/issues/51)) got implemented
48
+ - all namings including 'binding' got renamed for the more appropriate 'adapter'
49
+ - calling embedded C++ code got a completely new API (VrpcNative)
50
+
51
+ ### Added
52
+
53
+ - injection of proxy-, instance-, and client id into proxy instance [Node.js] (#49)
54
+ - public accessor for client id [Node.js] (#49)
55
+ - signal `clientGone` on agent, indicating that a state-changing client went
56
+ [Node.js]
57
+
58
+ ### Fixed
59
+
60
+ - Bug during clientId extraction for an exited client (causing leaks for
61
+ anonymous instances)
62
+
63
+ ## [2.6.0] - 12 Jul 2021
64
+
65
+ ### Added
66
+
67
+ - support for event and callback registrations when using `callAll`
68
+
69
+ ### Fixed
70
+
71
+ - prevented proxyId of `VrpcRemote` from potential collisions
72
+ - improved proxyId generation of `VrpcLocal`
73
+
8
74
  ## [2.5.1] - 29 Jun 2021
9
75
 
10
76
  ### Fixed
package/README.md CHANGED
@@ -5,72 +5,47 @@
5
5
  [![Semver](https://img.shields.io/badge/semver-2.0.0-blue)](https://semver.org/spec/v2.0.0.html)
6
6
  [![GitHub Releases](https://img.shields.io/github/tag/heisenware/vrpc.svg)](https://github.com/heisenware/vrpc/tag)
7
7
  [![GitHub Issues](https://img.shields.io/github/issues/heisenware/vrpc.svg)](http://github.com/heisenware/vrpc/issues)
8
+ ![ci](https://github.com/heisenware/vrpc/actions/workflows/ci.yml/badge.svg)
8
9
 
9
- ---
10
- ## Visit our website: https://vrpc.io
11
- ---
10
+ ## Visit our website: [vrpc.io](https://vrpc.io)
12
11
 
13
12
  ## What is VRPC?
14
13
 
15
- VRPC - Variadic Remote Procedure Calls - is a modern and asynchronous
16
- implementation of the old RPC (remote procedure calls) idea. Basically, it
17
- allows to directly call functions written in any programming language by
18
- functions written in any other (or the same) programming language.
14
+ VRPC - Variadic Remote Procedure Calls - is an enhancement of the old RPC
15
+ (remote procedure calls) idea. Like RPC, it allows to directly call functions
16
+ written in any programming language by functions written in any other (or the
17
+ same) programming language. Unlike RPC, VRPC furthermore supports:
19
18
 
20
- VRPC is modern as existing code can be made remotely callable:
19
+ - non-intrusive adaption of existing code, making it callable remotely
20
+ - remote function calls on many distributed receivers at the same time (one
21
+ client - multiple agents)
22
+ - service discovery
23
+ - outbound-connection-only network architecture (using MQTT technology)
24
+ - isolated (multi-tenant) and shared access modes to remote resources
25
+ - asynchronous language constructs (callbacks, promises, event-loops)
26
+ - OOP (classes, objects, member functions) and functional (lambda) patterns
27
+ - exception forwarding
21
28
 
22
- - without having to change it
23
- - without the need to program any binding code or complex
24
- schemas
25
- - without the need to run a server
29
+ VRPC is available for an entire spectrum of programming technologies including
30
+ embedded, data-science, and web technologies.
26
31
 
27
- VRPC is unique as it supports the full power of the programming language in use,
28
- such as:
32
+ As a robust and highly performing communication system, it can build the
33
+ foundation of complex digitization projects in the area of (I)IoT or
34
+ Cloud-Computing.
29
35
 
30
- - automated memory handling
31
- - language native and custom data type support
32
- - callback mechanisms
33
- - asynchronicity (i.e. event-loop integration)
34
- - exception handling
35
- - object orientation
36
- - lambda and closures support
36
+ ## This is VRPC for Javascript (Node.js and Browser)
37
37
 
38
- Depending on the targeted technologies, VRPC ships as a library (static or
39
- dynamic linkage), executable or source package.
38
+ Understand how to use it by looking at the examples:
40
39
 
41
- ## Examples
40
+ - [Agent Example](examples/agent/README.md)
41
+ - [Client Example](examples/client/README.md)
42
+ - [Simple C++ Embedding Example](examples/native1/README.md)
43
+ - [Advanced C++ Embedding Example](examples/native2/README.md)
42
44
 
43
- ### Embedding C++ into Node.js
45
+ Get all the details by reading the documentation:
44
46
 
45
- - [Simple C++ to Node.js Binding Example](docs/examples/CppNodeExample1.md)
46
- - [Advanced C++ to Node.js Binding Example](docs/examples/CppNodeExample2.md)
47
+ - [API Reference](docs/api.md)
48
+ - [RPC Protocol Details](docs/protocol.md)
47
49
 
48
- ### Embedding C++ into Python3
49
-
50
- - [Simple C++ to Python Binding Example](docs/examples/CppPythonExample1.md)
51
- - [Advanced C++ to Python Binding Example](docs/examples/CppPythonExample2.md)
52
-
53
- ### Making existing C++ code remotely callable (agent)
54
-
55
- - [Simple C++ Agent Example](docs/examples/CppAgentLinuxExample1.md)
56
- - [Advanced C++ Agent Example](docs/examples/CppAgentLinuxExample2.md)
57
-
58
- ### Making existing Node.js code remotely callable (agent)
59
-
60
- - [Node.js Agent Example](docs/examples/NodeAgentExample.md)
61
-
62
- ### Calling code remotely from Node.js (client)
63
-
64
- - [Node.js Remote Client Example](docs/examples/NodeClientExample.md)
65
-
66
- ### Frontend-Backend communication
67
-
68
- - [Simple React Todos App](https://github.com/heisenware/react-vrpc/tree/master/examples/vrpc-react-todos-1)
69
- - [Advanced React Todos App](https://github.com/heisenware/react-vrpc/tree/master/examples/vrpc-react-todos-2)
70
-
71
- ## Reference Documentation
72
-
73
- - [RPC Protocol Details](docs/reference/remoteProtocol.md)
74
- - [C++ Binding Syntax](docs/reference/cppBinding.md)
75
- - [C++ Agent](docs/reference/cppAgent.md)
76
- - [Node.js API](docs/reference/nodeJs.md)
50
+ > This open-source project is professionally managed and supported by
51
+ > [Heisenware GmbH](https://heisenware.com).
@@ -6,8 +6,6 @@
6
6
  ['"<!(echo $VRPC_DEBUG)"=="1"', {'defines': ['VRPC_DEBUG']}],
7
7
  ],
8
8
  'defines': ['VRPC_WITH_DL'],
9
- 'sources': ['vrpc/addon.cpp'],
10
- 'include_dirs': ['cpp'],
11
9
  'cflags_cc!': ['-std=gnu++0x', '-fno-rtti', '-fno-exceptions'],
12
10
  'cflags_cc': ['-std=c++14', '-fPIC'],
13
11
  'conditions': [
@@ -17,7 +15,9 @@
17
15
  'GCC_ENABLE_CPP_EXCEPTIONS': 'YES',
18
16
  }
19
17
  }]
20
- ]
18
+ ],
19
+ 'sources': ['vrpc/addon.cpp'],
20
+ 'include_dirs': ['.']
21
21
  },
22
22
  {
23
23
  'target_name': 'vrpc_test',
@@ -36,29 +36,7 @@
36
36
  }]
37
37
  ],
38
38
  'sources': ['vrpc/addon.cpp'],
39
- 'include_dirs': ['vrpc', 'test/fixtures']
39
+ 'include_dirs': ['.', 'tests/native/fixtures']
40
40
  },
41
- {
42
- 'target_name': 'vrpc-test',
43
- 'target_conditions': [
44
- ['"<!(echo $VRPC_DEBUG)"=="1"', {'defines': ['VRPC_DEBUG']}],
45
- ],
46
- 'type': 'executable',
47
- 'sources': [
48
- 'test/cpp/main.cpp',
49
- 'test/cpp/vrpcTest.cpp'
50
- ],
51
- 'include_dirs': ['third_party/include', 'vrpc'],
52
- 'cflags_cc!': ['-std=gnu++0x', '-fno-rtti', '-fno-exceptions'],
53
- 'cflags_cc': ['-std=c++14'],
54
- 'conditions': [
55
- ['OS=="mac"', {
56
- 'xcode_settings': {
57
- 'GCC_ENABLE_CPP_RTTI': 'YES',
58
- 'GCC_ENABLE_CPP_EXCEPTIONS': 'YES',
59
- }
60
- }]
61
- ]
62
- }
63
41
  ]
64
42
  }