[esnacc-dev] [PATCH v0] cxxlib: Add ROSE definitions
Aaron Conole
aconole at bytheb.org
Tue Jun 13 14:50:28 UTC 2017
Hi all,
Aaron Conole <aconole at bytheb.org> writes:
> This commit adds an initial implementation of the Remote Operations Service
> Element (ROSE) to the esnacc compiler. This is based on work contributed by
> estos GmbH. This initial implementation does not have compiler support.
> It is merely the library portion for the C++ library.
>
> Note that there is currently an auto-assigned operation ID based on hash. I
> haven't looked at whether ROSE would support this, or if manually assigned
> operation IDs is required by the standard. If so, I'll need to rework the
> API slightly, but the idea was to keep the user away from needing that
> information.
>
> This commit does not:
> - implement the invoke, response, reject, error state machines.
> - add tests
>
> Signed-off-by: Aaron Conole <aconole at bytheb.org>
> CC: Stephen Eckbauer <ste at estos.de>
> ---
This has been delegated to Sagara in patchwork. It can be marked as
superceded, thanks.
Looking at the spec, it seems the version that estos uses is not
completely ROSE-alike. I've made a few modifications; specifically,
my incremental follows (note the choice on operation code, and the
redone invokeId). This means that the code currently being used
internally at Estos will need some rework - we'll likely have some
compatibility issues to work out.
---
diff --git a/asn1specs/snaccrose.asn b/asn1specs/snaccrose.asn
index 6bc278f..85a384c 100644
--- a/asn1specs/snaccrose.asn
+++ b/asn1specs/snaccrose.asn
@@ -5,8 +5,8 @@
-- Portions Copright (C), estos GmbH and estos/stm
SNACC-ROSE { joint-iso-itu-t remote-operations(4)
- informationObjects(5)
- version1(0) } DEFINITIONS ::= BEGIN
+ generic-PDUs(6)
+ version1(0) } DEFINITIONS IMPLICIT TAGS ::= BEGIN
-- Default ROSE message sent
ROSEMessage ::= CHOICE {
@@ -36,18 +36,32 @@ ROSEAuthResult ::= SEQUENCE {
}
+-- ROSE Basic types
+
+InvokeId ::= CHOICE {
+ present INTEGER,
+ absent NULL
+}
+
-- ROSE messages
ROSEInvoke ::= SEQUENCE {
- sessionID [1] UTF8String OPTIONAL,
- invokeID INTEGER,
- linked-ID [0] IMPLICIT INTEGER OPTIONAL,
- operationName [2] UTF8String OPTIONAL,
- authentication [3] ROSEAuthRequest OPTIONAL,
- operationID INTEGER,
+ sessionID [0] UTF8String OPTIONAL,
+ invokeId InvokeId,
+ linkedId CHOICE {
+ present [0] IMPLICIT INTEGER,
+ absent [1] IMPLICIT NULL
+ },
+ authentication [1] ROSEAuthRequest OPTIONAL,
+ operationID CHOICE {
+ local INTEGER,
+ global OBJECT IDENTIFIER,
+ -- esnacc specific extension
+ name UTF8String
+ },
argument ANY OPTIONAL
}
-
+
ROSEResult ::= SEQUENCE {
sessionID [1] UTF8String OPTIONAL,
invokeID INTEGER,
@@ -72,7 +86,8 @@ ROSEReject ::= SEQUENCE {
},
reject RejectProblem OPTIONAL,
- -- the following are an etsos extension to reject for transmitting cause
+ -- the following are an etsos extension to reject for transmitting
+ -- additional cause information
details UTF8String OPTIONAL,
authentication [4] ROSEAuthResult OPTIONAL
}
More information about the dev
mailing list