1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// Copyright 2019 Contributors to the Parsec project.
// SPDX-License-Identifier: Apache-2.0
//! # ListProviders operation
//!
//! List the providers available in the service, with some information.
use crate::requests::ProviderID;
use std::cmp::Eq;
use uuid::Uuid;

/// Structure holding the basic information that defines the providers in
/// the service for client discovery.
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct ProviderInfo {
    /// Unique, permanent, identifier of the provider.
    pub uuid: Uuid,
    /// Short description of the provider.
    pub description: String,
    /// Provider vendor.
    pub vendor: String,
    /// Provider implementation version major.
    pub version_maj: u32,
    /// Provider implementation version minor.
    pub version_min: u32,
    /// Provider implementation version revision number.
    pub version_rev: u32,
    /// Provider ID to use on the wire protocol to communicate with this provider.
    pub id: ProviderID,
}

/// Native object for provider listing operation.
#[derive(Copy, Clone, Debug)]
pub struct Operation;

/// Native object for provider listing result.
#[derive(Debug)]
pub struct Result {
    /// A list of `ProviderInfo` structures, one for each provider available in
    /// the service.
    pub providers: Vec<ProviderInfo>,
}