Skip to content

Commit d37186b

Browse files
committed
Public release 0.2.0
1 parent 249117d commit d37186b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

84 files changed

+6457
-5754
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ build/
44
.hg/
55
*.pro.user
66
CMakeLists.txt.user
7+
*.vpp~*
78

.hgignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@ doc/html
55
*.vpp~*
66
CMakeLists.txt.user
77
.git
8+
*.vpp.working

CHANGELOG.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
v0.2.0
2+
======
3+
Overhauled API to make use of fluent API techniques. Some Advanced WAMP Profile features are now supported.
4+
5+
### Details
6+
- Renamed some classes:
7+
- `Client` -> `Session`
8+
- `CoroClient` -> `CoroSession`
9+
- `internal::Session` -> `internal::Dialogue`
10+
- `internal::ClientImplBase` -> `internal::ClientInterface`
11+
- `internal::ClientImpl` -> `internal::Client`
12+
- Removed the `Args` class, as similar functionality is now provided by `Payload` with a cleaner API
13+
- Folded `CoroErrcClient` into `CoroClient` (now `SessionClient`) by taking an extra, optional `std::error_code` pointer
14+
- `Session` (formerly `Client`) now makes extensive use of fluent API techniques, via data objects declared in `<cppwamp/dialoguedata.hpp>` and `<cppwamp/sessiondata.hpp>` (#6, #7, #34)
15+
- `Subscription` and `Registration` are now returned via shared pointer, and are no longer "handle" objects that mimic a shared pointer (#40).
16+
- Added `operator[]` support to `Variant`, to make it more convenient to access elements/members.
17+
- Added `Variant::valueOr` to make it easier to treat a Variant as an optional value.
18+
- Added support for the "low-hanging fruit" among advanced WAMP features. These are features that only require some `Details` or `Options` attributes to be set, and require no other special treatment by the client (#10, #11, #12, #13, #14, #15, #23, #24, #25, #26, #27, #35, #37, #38):
19+
- General: agent identification, feature announcement
20+
- _Callee_: `call_trustlevels`, `caller_identification`, `pattern_based_registration`, progressive_call_results
21+
- _Caller_: `call_timeout`, `callee_blackwhite_listing`, `caller_exclusion`, `caller_identification`
22+
- _Publisher_: `publisher_exclusion`, `publisher_identification`, `subscriber_blackwhite_listing`
23+
- _Subscriber_: `pattern_based_subscription`, `publication_trustlevels`, `publisher_identification`
24+
25+
v0.1.2
26+
======
27+
Initial public release.
28+
29+
* * *
30+
_Copyright © Butterfly Energy Systems, 2014-2015_

README.md

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ Documentation
5555

5656
- [Tutorial](https://github.com/ecorm/cppwamp/wiki/Tutorial)
5757
- [Reference Documentation](http://ecorm.github.io/cppwamp/doc/index.html)
58+
- [Release Notes](./CHANGELOG.md)
5859

5960
Tested Platforms
6061
----------------
@@ -63,8 +64,8 @@ This library has been tested with:
6364

6465
- GCC 4.8.2, x86_64-linux-gnu, on Linux Mint 17 (based on Ubuntu 14.04)
6566

66-
Usage Examples
67-
--------------
67+
Usage Examples (using coroutines)
68+
---------------------------------
6869

6970
### Establishing a WAMP session
7071
```c++
@@ -75,10 +76,11 @@ boost::asio::spawn(iosvc, [&](boost::asio::yield_context yield)
7576
auto tcp = wamp::legacy::TcpConnector::create(iosvc, "localhost",
7677
8001, wamp::Json::id());
7778

78-
auto client = wamp::CoroClient<>::create(tcp);
79-
client->connect(yield);
80-
auto sid = client->join("realm", yield);
81-
std::cout << "Client joined. Session ID = " << sid << "\n";
79+
auto session = wamp::CoroSession<>::create(tcp);
80+
session->connect(yield);
81+
auto sessionInfo = session->join(Realm("myrealm"), yield);
82+
std::cout << "Client joined. Session ID = "
83+
<< sessionInfo.id() << "\n";
8284

8385
// etc.
8486
});
@@ -94,41 +96,41 @@ void add(wamp::Invocation inv, int n, int m)
9496
9597
boost::asio::spawn(iosvc, [&](boost::asio::yield_context yield)
9698
{
97-
...
98-
auto reg = client->enroll<int, int>("add", &add, yield);
99-
...
99+
:::
100+
auto reg = session->enroll<int, int>(Procedure("add"), &add, yield);
101+
:::
100102
});
101103
```
102104

103105
### Calling a remote procedure
104106
```c++
105-
auto result = client->call("add", {2, 2}, yield);
107+
auto result = session->call(Rpc("add").withArgs({2, 2}), yield);
106108
int sum = 0;
107-
result.to(sum);
109+
result.convertTo(sum);
108110
std::cout << "2 + 2 is " << sum << "\n";
109111
```
110112
111113
### Subscribing to a topic
112114
```c++
113-
void sensorSampled(wamp::PublicationId pid, float value)
115+
void sensorSampled(wamp::Event event, float value)
114116
{
115-
std::cout << "Sensor sampled, publication ID = " << pid
117+
std::cout << "Sensor sampled, publication ID = " << event.pubId()
116118
<< " value = " << value << "\n";
117119
}
118120
119121
boost::asio::spawn(iosvc, [&](boost::asio::yield_context yield)
120122
{
121-
...
122-
auto sub = client->subscribe<float>("sensorSampled", &sensorSampled,
123-
yield);
124-
...
123+
:::
124+
auto sub = session->subscribe<float>(Topic("sensorSampled"),
125+
&sensorSampled, yield);
126+
:::
125127
});
126128
```
127129

128130
### Publishing an event
129131
```c++
130132
float value = std::rand() % 10;
131-
client->publish("sensorSampled", {value});
133+
session->publish(Pub("sensorSampled").withArgs({value}));
132134
```
133135
134136
Questions, Discussions, and Issues

cppwamp/CMakeLists.txt

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,53 +5,51 @@
55
# http://www.boost.org/LICENSE_1_0.txt)
66
#-------------------------------------------------------------------------------
77

8-
set(SOURCES
9-
src/asiotransport.cpp
10-
src/client.cpp
11-
src/error.cpp
12-
src/legacytransport.cpp)
8+
set(SOURCES src/cppwamp.cpp)
139

1410
set(HEADERS
15-
include/cppwamp/args.hpp
1611
include/cppwamp/asiodefs.hpp
1712
include/cppwamp/asyncresult.hpp
18-
include/cppwamp/client.hpp
1913
include/cppwamp/codec.hpp
2014
include/cppwamp/connector.hpp
21-
include/cppwamp/coroclient.hpp
22-
include/cppwamp/coroerrcclient.hpp
15+
include/cppwamp/corosession.hpp
16+
include/cppwamp/dialoguedata.hpp
2317
include/cppwamp/error.hpp
24-
include/cppwamp/invocation.hpp
2518
include/cppwamp/json.hpp
2619
include/cppwamp/legacytcpconnector.hpp
2720
include/cppwamp/legacyudsconnector.hpp
2821
include/cppwamp/msgpack.hpp
2922
include/cppwamp/null.hpp
23+
include/cppwamp/options.hpp
24+
include/cppwamp/payload.hpp
3025
include/cppwamp/rawsockdefs.hpp
3126
include/cppwamp/registration.hpp
27+
include/cppwamp/session.hpp
28+
include/cppwamp/sessiondata.hpp
3229
include/cppwamp/subscription.hpp
3330
include/cppwamp/tcpconnector.hpp
3431
include/cppwamp/udsconnector.hpp
3532
include/cppwamp/variant.hpp
3633
include/cppwamp/varianttuple.hpp
34+
include/cppwamp/version.hpp
3735
include/cppwamp/visitor.hpp
3836
include/cppwamp/wampdefs.hpp
3937
include/cppwamp/internal/asioconnector.hpp
4038
include/cppwamp/internal/asioendpoint.hpp
4139
include/cppwamp/internal/asiolistener.hpp
4240
include/cppwamp/internal/asiotransport.hpp
4341
include/cppwamp/internal/callee.hpp
44-
include/cppwamp/internal/clientimpl.hpp
45-
include/cppwamp/internal/clientimplbase.hpp
42+
include/cppwamp/internal/client.hpp
43+
include/cppwamp/internal/clientinterface.hpp
4644
include/cppwamp/internal/config.hpp
45+
include/cppwamp/internal/dialogue.hpp
4746
include/cppwamp/internal/endian.hpp
4847
include/cppwamp/internal/legacyasioendpoint.hpp
4948
include/cppwamp/internal/legacyasiotransport.hpp
5049
include/cppwamp/internal/messagetraits.hpp
5150
include/cppwamp/internal/rawsockhandshake.hpp
5251
include/cppwamp/internal/rawsockheader.hpp
5352
include/cppwamp/internal/registrationimpl.hpp
54-
include/cppwamp/internal/session.hpp
5553
include/cppwamp/internal/subscriber.hpp
5654
include/cppwamp/internal/subscriptionimpl.hpp
5755
include/cppwamp/internal/tcpacceptor.hpp
@@ -66,26 +64,29 @@ set(HEADERS
6664
)
6765

6866
set(INLINES
69-
include/cppwamp/internal/args.ipp
7067
include/cppwamp/internal/asyncresult.ipp
71-
include/cppwamp/internal/client.ipp
72-
include/cppwamp/internal/coroclient.ipp
73-
include/cppwamp/internal/coroerrcclient.ipp
68+
include/cppwamp/internal/corosession.ipp
69+
include/cppwamp/internal/dialoguedata.ipp
7470
include/cppwamp/internal/endian.ipp
7571
include/cppwamp/internal/error.ipp
76-
include/cppwamp/internal/invocation.ipp
7772
include/cppwamp/internal/json.ipp
7873
include/cppwamp/internal/legacytcpconnector.ipp
7974
include/cppwamp/internal/legacyudsconnector.ipp
8075
include/cppwamp/internal/messagetraits.ipp
8176
include/cppwamp/internal/msgpack.ipp
8277
include/cppwamp/internal/null.ipp
78+
include/cppwamp/internal/options.ipp
79+
include/cppwamp/internal/passkey.hpp
80+
include/cppwamp/internal/payload.ipp
8381
include/cppwamp/internal/registration.ipp
82+
include/cppwamp/internal/session.ipp
83+
include/cppwamp/internal/sessiondata.ipp
8484
include/cppwamp/internal/subscription.ipp
8585
include/cppwamp/internal/tcpconnector.ipp
8686
include/cppwamp/internal/udsconnector.ipp
8787
include/cppwamp/internal/variant.ipp
8888
include/cppwamp/internal/varianttuple.ipp
89+
include/cppwamp/internal/version.ipp
8990
include/cppwamp/internal/visitor.ipp
9091
)
9192

cppwamp/cppwamp.pro

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,44 +10,44 @@ CONFIG += plugin precompile_header
1010
CONFIG -= qt
1111

1212
SOURCES += \
13-
src/asiotransport.cpp \
14-
src/client.cpp \
15-
src/error.cpp \
16-
src/legacytransport.cpp
13+
src/cppwamp.cpp
1714

1815
HEADERS += \
19-
include/cppwamp/args.hpp \
2016
include/cppwamp/asiodefs.hpp \
2117
include/cppwamp/asyncresult.hpp \
22-
include/cppwamp/client.hpp \
2318
include/cppwamp/codec.hpp \
2419
include/cppwamp/connector.hpp \
25-
include/cppwamp/coroclient.hpp \
26-
include/cppwamp/coroerrcclient.hpp \
20+
include/cppwamp/corosession.hpp \
21+
include/cppwamp/dialoguedata.hpp \
2722
include/cppwamp/error.hpp \
28-
include/cppwamp/invocation.hpp \
2923
include/cppwamp/json.hpp \
3024
include/cppwamp/legacytcpconnector.hpp \
3125
include/cppwamp/legacyudsconnector.hpp \
3226
include/cppwamp/msgpack.hpp \
3327
include/cppwamp/null.hpp \
28+
include/cppwamp/options.hpp \
29+
include/cppwamp/payload.hpp \
3430
include/cppwamp/rawsockdefs.hpp \
3531
include/cppwamp/registration.hpp \
32+
include/cppwamp/session.hpp \
33+
include/cppwamp/sessiondata.hpp \
3634
include/cppwamp/subscription.hpp \
3735
include/cppwamp/tcpconnector.hpp \
3836
include/cppwamp/udsconnector.hpp \
3937
include/cppwamp/variant.hpp \
4038
include/cppwamp/varianttuple.hpp \
39+
include/cppwamp/version.hpp \
4140
include/cppwamp/visitor.hpp \
4241
include/cppwamp/wampdefs.hpp \
4342
include/cppwamp/internal/asioconnector.hpp \
4443
include/cppwamp/internal/asioendpoint.hpp \
4544
include/cppwamp/internal/asiolistener.hpp \
4645
include/cppwamp/internal/asiotransport.hpp \
4746
include/cppwamp/internal/callee.hpp \
48-
include/cppwamp/internal/clientimpl.hpp \
49-
include/cppwamp/internal/clientimplbase.hpp \
47+
include/cppwamp/internal/client.hpp \
48+
include/cppwamp/internal/clientinterface.hpp \
5049
include/cppwamp/internal/config.hpp \
50+
include/cppwamp/internal/dialogue.hpp \
5151
include/cppwamp/internal/endian.hpp \
5252
include/cppwamp/internal/legacyasioendpoint.hpp \
5353
include/cppwamp/internal/legacyasiotransport.hpp \
@@ -56,7 +56,6 @@ HEADERS += \
5656
include/cppwamp/internal/rawsockhandshake.hpp \
5757
include/cppwamp/internal/rawsockheader.hpp \
5858
include/cppwamp/internal/registrationimpl.hpp \
59-
include/cppwamp/internal/session.hpp \
6059
include/cppwamp/internal/subscriber.hpp \
6160
include/cppwamp/internal/subscriptionimpl.hpp \
6261
include/cppwamp/internal/tcpacceptor.hpp \
@@ -69,27 +68,30 @@ HEADERS += \
6968
include/cppwamp/internal/variantvisitors.hpp \
7069
include/cppwamp/internal/wampmessage.hpp \
7170
\
72-
include/cppwamp/internal/args.ipp \
7371
include/cppwamp/internal/asyncresult.ipp \
74-
include/cppwamp/internal/client.ipp \
75-
include/cppwamp/internal/coroclient.ipp \
76-
include/cppwamp/internal/coroerrcclient.ipp \
72+
include/cppwamp/internal/corosession.ipp \
73+
include/cppwamp/internal/dialoguedata.ipp \
7774
include/cppwamp/internal/endian.ipp \
7875
include/cppwamp/internal/error.ipp \
79-
include/cppwamp/internal/invocation.ipp \
8076
include/cppwamp/internal/json.ipp \
8177
include/cppwamp/internal/legacytcpconnector.ipp \
8278
include/cppwamp/internal/legacyudsconnector.ipp \
8379
include/cppwamp/internal/messagetraits.ipp \
8480
include/cppwamp/internal/msgpack.ipp \
8581
include/cppwamp/internal/null.ipp \
82+
include/cppwamp/internal/options.ipp \
83+
include/cppwamp/internal/passkey.hpp \
84+
include/cppwamp/internal/payload.ipp \
8685
include/cppwamp/internal/registration.ipp \
86+
include/cppwamp/internal/session.ipp \
87+
include/cppwamp/internal/sessiondata.ipp \
8788
include/cppwamp/internal/subscription.ipp \
8889
include/cppwamp/internal/tcpconnector.ipp \
8990
include/cppwamp/internal/udsconnector.ipp \
9091
include/cppwamp/internal/variant.ipp \
9192
include/cppwamp/internal/varianttuple.ipp \
92-
include/cppwamp/internal/visitor.ipp \
93+
include/cppwamp/internal/version.ipp \
94+
include/cppwamp/internal/visitor.ipp
9395

9496
OTHER_FILES += \
9597
CMakeLists.txt
@@ -106,7 +108,7 @@ QMAKE_CXXFLAGS += -std=c++11
106108
QMAKE_CXXFLAGS += -pthread
107109

108110
#Stop compiling at first error
109-
QMAKE_CXXFLAGS += -Wfatal-errors
111+
#QMAKE_CXXFLAGS += -Wfatal-errors
110112

111113
#Add debugging symbols if in debug configuration
112114
CONFIG(debug, debug|release) {

0 commit comments

Comments
 (0)