/tucana

GRPC interface library

Primary LanguageRubyApache License 2.0Apache-2.0

Tucana

This repository is responsible for all gRPC definitions that we use.

Setup

See the setup guide for the following languages. Support for other languages is not planed!

Rust

See: Crate

[dependencies]
tucana = { version = "<version>" }

To enable additional features::

[dependencies]
tucana = { version = "<version>", features = ["sagittarius", "aquila"] }

Ruby

See: Gem

gem 'tucana', '<version>'

Don't forget to initialize the required feature:

# For Sagittarius
Tucana.load_protocol(:sagittarius)

# For Aquila
Tucana.load_protocol(:aquila)

Project Structure

The project is organized with services functioning as servers. Each protocol in the Sagittarius folder corresponds to services that Sagittarius must implement as a server.

.
├── aquila
│   ├── action - Action service (emits events, manages configs, and handles executions)
│   └── execution - Execution service (handles internal execution calls)
├── sagittarius
│   ├── action - Action service (manages logon/logoff requests for action configurations)
│   ├── datatype - DataType service 
│   ├── flow - Flow service & Flow types (handles flow updates)
│   ├── flow_definition - Defines a definition for a Flow
│   ├── ping - Ping service (performs life checks)
│   └── runtime_function - Service for updating the runtime functions
└── shared
    ├── datatype - Defines types for data types
    ├── event - Defines types for events
    ├── runtime_function_definition - Defines types for runtime functions
    ├── struct - Defines types for json representations
    └── translation - Contains translations with country codes and translated messages