CGIN (Code-Generated IN) is a suite of tools, libraries, and frameworks from OpenCloud that we use to build SS7 resource adaptors and tools for the Rhino platform.
The CGIN tool chain supports a build process for generating:
-
protocol APIs that developers use to build applications on the Rhino platform
-
protocol libraries that plug into the CGIN Unified Resource Adaptor
-
protocol schema definitions that plug into the Scenario Editor and the Scenario Simulator.
The outputs of the CGIN tool chain are collected into the CGIN Connectivity Pack.
Building support for protocols and using the generated results
The following diagram shows an overview of the CGIN tool chain in relation to protocol engineers who are building support for protocols, and software engineers who use the generated results.
1 Prepare input …
Input to the CGIN process includes:
-
ASN.1 protocol definitions — The ASN.1 defines the Application Contexts (ACs) defined by the protocol; all the requests, responses, and errors possible for those ACs; as well as the parameters of these messages.
-
Protocol and API adaptations — Protocol engineers can script custom adaptations of the protocol using the OpenCloud adaptation Domain Specific Language (DSL). For example a protocol engineer can: exploit existing handwritten types by mapping them to ASN.1 types, interpret data contained within plain
OCTET STRINGs
, define how the protocol fits into the OpenCloud call-control API hierarchy, and so on.
2 Execute the CGIN tool chain …
The CGIN tool chain is then used by protocol engineers to transform the ASN.1 and adaptation definition into:
-
an API and corresponding SLEE resource adaptor type — so software engineers can write SLEE-based applications that use the protocol
-
documentation of the API in the form of Javadoc — to make the software engineers' job easier as they write their applications
-
Java components that plug into the OpenCloud Unified Resource Adaptor — so software engineers can run their applications on the Rhino platform
-
a protocol schema definition — so software engineers can write scenario definitions (signaling use cases) for the protocol, using the Scenario Editor, to use with the Scenario Simulator for functional and load testing.