#grpc #code0 #ruby

tucana

The rust crate for the internal gRPC communication of Code0

8 releases

0.0.17 Feb 3, 2025
0.0.16 Feb 1, 2025
0.0.15 Jan 6, 2025
0.0.14 Dec 29, 2024
0.0.10 Nov 19, 2024

#1075 in Network programming

27 downloads per month
Used in code0-flow

Apache-2.0

135KB
3K SLoC

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

Dependencies

~5–11MB
~119K SLoC