#
# 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"
lazy_static = "1.4"
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.9.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"
