couchbase-core 1.0.1

Couchbase SDK core networking and protocol implementation, not intended for direct use
Documentation
/*
 *
 *  * Copyright (c) 2025 Couchbase, Inc.
 *  *
 *  * Licensed under the Apache License, Version 2.0 (the "License");
 *  * you may not use this file except in compliance with the License.
 *  * You may obtain a copy of the License at
 *  *
 *  *    http://www.apache.org/licenses/LICENSE-2.0
 *  *
 *  * Unless required by applicable law or agreed to in writing, software
 *  * distributed under the License is distributed on an "AS IS" BASIS,
 *  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  * See the License for the specific language governing permissions and
 *  * limitations under the License.
 *
 */

#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
#[non_exhaustive]
pub enum HelloFeature {
    DataType,
    Tls,
    TCPNoDelay,
    SeqNo,
    TCPDelay,
    Xattr,
    Xerror,
    SelectBucket,
    Snappy,
    SnappyEverywhere,
    Json,
    Duplex,
    ClusterMapNotif,
    UnorderedExec,
    Durations,
    AltRequests,
    SyncReplication,
    Collections,
    PreserveExpiry,
    PointInTimeRecovery,
    CreateAsDeleted,
    ReplaceBodyWithXattr,
    ClusterMapKnownVersion,
    DedupeNotMyVbucketClustermap,
    ClusterMapChangeNotificationBrief,
    Unknown(u16),
}

impl From<HelloFeature> for u16 {
    fn from(value: HelloFeature) -> u16 {
        match value {
            HelloFeature::DataType => 0x01,
            HelloFeature::Tls => 0x02,
            HelloFeature::TCPNoDelay => 0x03,
            HelloFeature::SeqNo => 0x04,
            HelloFeature::TCPDelay => 0x05,
            HelloFeature::Xattr => 0x06,
            HelloFeature::Xerror => 0x07,
            HelloFeature::SelectBucket => 0x08,
            HelloFeature::Snappy => 0x0a,
            HelloFeature::Json => 0x0b,
            HelloFeature::Duplex => 0x0c,
            HelloFeature::ClusterMapNotif => 0x0d,
            HelloFeature::UnorderedExec => 0x0e,
            HelloFeature::Durations => 0x0f,
            HelloFeature::AltRequests => 0x10,
            HelloFeature::SyncReplication => 0x11,
            HelloFeature::Collections => 0x12,
            HelloFeature::SnappyEverywhere => 0x13,
            HelloFeature::PreserveExpiry => 0x14,
            HelloFeature::PointInTimeRecovery => 0x16,
            HelloFeature::CreateAsDeleted => 0x17,
            HelloFeature::ReplaceBodyWithXattr => 0x19,
            HelloFeature::ClusterMapKnownVersion => 0x1d,
            HelloFeature::DedupeNotMyVbucketClustermap => 0x1e,
            HelloFeature::ClusterMapChangeNotificationBrief => 0x1f,
            HelloFeature::Unknown(code) => code,
        }
    }
}

impl From<u16> for HelloFeature {
    fn from(value: u16) -> Self {
        match value {
            0x01 => HelloFeature::DataType,
            0x02 => HelloFeature::Tls,
            0x03 => HelloFeature::TCPNoDelay,
            0x04 => HelloFeature::SeqNo,
            0x05 => HelloFeature::TCPDelay,
            0x06 => HelloFeature::Xattr,
            0x07 => HelloFeature::Xerror,
            0x08 => HelloFeature::SelectBucket,
            0x0a => HelloFeature::Snappy,
            0x0b => HelloFeature::Json,
            0x0c => HelloFeature::Duplex,
            0x0d => HelloFeature::ClusterMapNotif,
            0x0e => HelloFeature::UnorderedExec,
            0x0f => HelloFeature::Durations,
            0x10 => HelloFeature::AltRequests,
            0x11 => HelloFeature::SyncReplication,
            0x12 => HelloFeature::Collections,
            0x13 => HelloFeature::SnappyEverywhere,
            0x14 => HelloFeature::PreserveExpiry,
            0x16 => HelloFeature::PointInTimeRecovery,
            0x17 => HelloFeature::CreateAsDeleted,
            0x19 => HelloFeature::ReplaceBodyWithXattr,
            0x1d => HelloFeature::ClusterMapKnownVersion,
            0x1e => HelloFeature::DedupeNotMyVbucketClustermap,
            0x1f => HelloFeature::ClusterMapChangeNotificationBrief,
            code => HelloFeature::Unknown(code),
        }
    }
}