211 lines
5.8 KiB
Rust
211 lines
5.8 KiB
Rust
// @generated by protoc-gen-roto — do not edit
|
|
#[allow(unused_imports)]
|
|
|
|
use roto_runtime::{ProtoAccessor, ProtoBuilder, Result, RotoError, read_varint, RepeatedFieldIterator};
|
|
use std::str;
|
|
use bytes::Bytes;
|
|
use tonic::{Request, Response, Status};
|
|
use tokio_stream::Stream;
|
|
use std::pin::Pin;
|
|
|
|
|
|
pub struct HelloRequest<'a> {
|
|
accessor: roto_runtime::ProtoAccessor<'a>,
|
|
name_offset: Option<usize>,
|
|
}
|
|
|
|
impl<'a> HelloRequest<'a> {
|
|
pub fn new(data: &'a [u8]) -> roto_runtime::Result<Self> {
|
|
let accessor = roto_runtime::ProtoAccessor::new(data)?;
|
|
let mut name_offset = None;
|
|
for item in accessor.fields() {
|
|
let (offset, tag, _) = item?;
|
|
if tag.field_number == 1 { name_offset = Some(offset); }
|
|
}
|
|
|
|
Ok(Self {
|
|
accessor,
|
|
name_offset,
|
|
})
|
|
}
|
|
|
|
pub fn name(&self) -> roto_runtime::Result<&'a str> {
|
|
let offset = self.name_offset.ok_or(roto_runtime::RotoError::FieldNotFound)?;
|
|
let (bytes, _) = self.accessor.get_value_at(offset)?;
|
|
str::from_utf8(bytes).map_err(|_| roto_runtime::RotoError::WireFormatViolation)
|
|
}
|
|
|
|
pub fn name_or_default(&self) -> roto_runtime::Result<&'a str> {
|
|
self.name().or(Ok(""))
|
|
}
|
|
|
|
pub fn has_name(&self) -> bool { self.name_offset.is_some() }
|
|
|
|
pub fn raw_fields(&self) -> roto_runtime::RawFieldIterator<'a> {
|
|
self.accessor.raw_fields()
|
|
}
|
|
|
|
}
|
|
|
|
pub struct HelloRequestBuilder<'b> {
|
|
builder: roto_runtime::ProtoBuilder<'b>,
|
|
name_written: bool,
|
|
}
|
|
|
|
impl<'b> HelloRequestBuilder<'b> {
|
|
pub fn builder(buf: &mut [u8]) -> HelloRequestBuilder<'_> {
|
|
HelloRequestBuilder {
|
|
builder: roto_runtime::ProtoBuilder::new(buf),
|
|
name_written: false,
|
|
}
|
|
}
|
|
|
|
pub fn name(mut self, value: &str) -> roto_runtime::Result<Self> {
|
|
self.builder.write_string(1, value)?;
|
|
self.name_written = true;
|
|
Ok(self)
|
|
}
|
|
|
|
pub fn with(mut self, msg: &HelloRequest<'_>) -> roto_runtime::Result<Self> {
|
|
for item in msg.raw_fields() {
|
|
let (field_number, raw_bytes) = item?;
|
|
let is_written = match field_number {
|
|
1 => self.name_written,
|
|
_ => false,
|
|
};
|
|
if !is_written {
|
|
self.builder.write_raw(raw_bytes)?;
|
|
}
|
|
}
|
|
Ok(self)
|
|
}
|
|
|
|
pub fn finish(self) -> roto_runtime::Result<&'b mut [u8]> {
|
|
self.builder.finish()
|
|
}
|
|
}
|
|
|
|
pub struct OwnedHelloRequest {
|
|
pub data: bytes::Bytes,
|
|
}
|
|
|
|
impl roto_runtime::RotoOwned for OwnedHelloRequest {
|
|
type Reader<'a> = HelloRequest<'a>;
|
|
fn reader(&self) -> HelloRequest<'_> {
|
|
HelloRequest::new(&self.data).expect("failed to create reader")
|
|
}
|
|
}
|
|
|
|
impl roto_runtime::RotoMessage for OwnedHelloRequest {
|
|
fn decode(buf: bytes::Bytes) -> roto_runtime::Result<Self> {
|
|
Ok(OwnedHelloRequest { data: buf })
|
|
}
|
|
|
|
fn bytes(&self) -> bytes::Bytes {
|
|
self.data.clone()
|
|
}
|
|
}
|
|
|
|
pub struct HelloResponse<'a> {
|
|
accessor: roto_runtime::ProtoAccessor<'a>,
|
|
message_offset: Option<usize>,
|
|
}
|
|
|
|
impl<'a> HelloResponse<'a> {
|
|
pub fn new(data: &'a [u8]) -> roto_runtime::Result<Self> {
|
|
let accessor = roto_runtime::ProtoAccessor::new(data)?;
|
|
let mut message_offset = None;
|
|
for item in accessor.fields() {
|
|
let (offset, tag, _) = item?;
|
|
if tag.field_number == 1 { message_offset = Some(offset); }
|
|
}
|
|
|
|
Ok(Self {
|
|
accessor,
|
|
message_offset,
|
|
})
|
|
}
|
|
|
|
pub fn message(&self) -> roto_runtime::Result<&'a str> {
|
|
let offset = self.message_offset.ok_or(roto_runtime::RotoError::FieldNotFound)?;
|
|
let (bytes, _) = self.accessor.get_value_at(offset)?;
|
|
str::from_utf8(bytes).map_err(|_| roto_runtime::RotoError::WireFormatViolation)
|
|
}
|
|
|
|
pub fn message_or_default(&self) -> roto_runtime::Result<&'a str> {
|
|
self.message().or(Ok(""))
|
|
}
|
|
|
|
pub fn has_message(&self) -> bool { self.message_offset.is_some() }
|
|
|
|
pub fn raw_fields(&self) -> roto_runtime::RawFieldIterator<'a> {
|
|
self.accessor.raw_fields()
|
|
}
|
|
|
|
}
|
|
|
|
pub struct HelloResponseBuilder<'b> {
|
|
builder: roto_runtime::ProtoBuilder<'b>,
|
|
message_written: bool,
|
|
}
|
|
|
|
impl<'b> HelloResponseBuilder<'b> {
|
|
pub fn builder(buf: &mut [u8]) -> HelloResponseBuilder<'_> {
|
|
HelloResponseBuilder {
|
|
builder: roto_runtime::ProtoBuilder::new(buf),
|
|
message_written: false,
|
|
}
|
|
}
|
|
|
|
pub fn message(mut self, value: &str) -> roto_runtime::Result<Self> {
|
|
self.builder.write_string(1, value)?;
|
|
self.message_written = true;
|
|
Ok(self)
|
|
}
|
|
|
|
pub fn with(mut self, msg: &HelloResponse<'_>) -> roto_runtime::Result<Self> {
|
|
for item in msg.raw_fields() {
|
|
let (field_number, raw_bytes) = item?;
|
|
let is_written = match field_number {
|
|
1 => self.message_written,
|
|
_ => false,
|
|
};
|
|
if !is_written {
|
|
self.builder.write_raw(raw_bytes)?;
|
|
}
|
|
}
|
|
Ok(self)
|
|
}
|
|
|
|
pub fn finish(self) -> roto_runtime::Result<&'b mut [u8]> {
|
|
self.builder.finish()
|
|
}
|
|
}
|
|
|
|
pub struct OwnedHelloResponse {
|
|
pub data: bytes::Bytes,
|
|
}
|
|
|
|
impl roto_runtime::RotoOwned for OwnedHelloResponse {
|
|
type Reader<'a> = HelloResponse<'a>;
|
|
fn reader(&self) -> HelloResponse<'_> {
|
|
HelloResponse::new(&self.data).expect("failed to create reader")
|
|
}
|
|
}
|
|
|
|
impl roto_runtime::RotoMessage for OwnedHelloResponse {
|
|
fn decode(buf: bytes::Bytes) -> roto_runtime::Result<Self> {
|
|
Ok(OwnedHelloResponse { data: buf })
|
|
}
|
|
|
|
fn bytes(&self) -> bytes::Bytes {
|
|
self.data.clone()
|
|
}
|
|
}
|
|
|
|
#[tonic::async_trait]
|
|
pub trait HelloWorldService: Send + Sync + 'static {
|
|
async fn hello_world(&self, request: Request<OwnedHelloRequest>) -> std::result::Result<Response<OwnedHelloResponse>, Status>;
|
|
}
|
|
|