#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You 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.
#
[package]
name = "rocketmq"
version = "5.0.0"
edition = "2021"
rust-version = "1.61"
authors = [
    "SSpirits <admin@lv5.moe>",
    "Zhanhui Li <lizhanhui@gmail.com>",
]

license = "Apache-2.0"
readme = "./README.md"
repository = "https://github.com/apache/rocketmq-clients/tree/master/rust"
documentation = "https://docs.rs/rocketmq"
description = "Rust client for Apache RocketMQ"
keywords = ["rocketmq", "api", "client", "sdk", "grpc"]

[dependencies]
tokio = { version = "1", features = ["full"] }
tokio-rustls = { version = "0.24.0", features = ["default", "dangerous_configuration"] }
tokio-stream = "0.1.12"
async-trait = "0.1.68"
tonic = { version = "0.9.0", features = ["tls", "default", "channel", "tls-roots"] }
prost = "0.11.8"
prost-types = "0.11.8"

thiserror = "1.0"
anyhow = "1.0.70"
parking_lot = "0.12"
hostname = "0.3.1"
os_info = "3"

slog = { version = "2.7.0", features = ["max_level_trace", "release_max_level_info"] }
slog-term = "2.9.0"
slog-async = "2.7.0"
slog-json = "2.6.1"

opentelemetry = { version = "0.19.0", features = ["metrics", "rt-tokio"] }
opentelemetry-otlp = { version = "0.12.0", features = ["metrics", "grpc-tonic"] }
minitrace = "0.4"

byteorder = "1"
mac_address = "1.1.4"
hex = "0.4.3"
time = "0.3"
once_cell = "1.18.0"

mockall = "0.11.4"
mockall_double = "0.3.0"

siphasher = "0.3.10"
ring = "0.16.20"

[build-dependencies]
tonic-build = "0.9.0"
which = "4.4.0"
version_check = "0.9.4"
regex = "1.7.3"

[dev-dependencies]
wiremock-grpc = "0.0.3-alpha2"
futures = "0.3"
awaitility = "0.3.0"

[features]
default = ["example_ack"]
example_ack = []
example_change_invisible_duration = []
