← Back

Module grpc

enum Code

Source: grpc.joule:21

fn from_i32(code: i32) -> Self

Source: grpc.joule:59

fn description(&self) -> &'static str

Source: grpc.joule:82

struct Status

Source: grpc.joule:107

fn ok() -> Self

Source: grpc.joule:114

fn new(code: Code, message: impl Into<String>) -> Self

Source: grpc.joule:122

fn with_details(mut self, details: Vec<u8>) -> Self

Source: grpc.joule:130

fn is_ok(&self) -> bool

Source: grpc.joule:135

fn cancelled(message: impl Into<String>) -> Self

Source: grpc.joule:139

fn invalid_argument(message: impl Into<String>) -> Self

Source: grpc.joule:143

fn not_found(message: impl Into<String>) -> Self

Source: grpc.joule:147

fn internal(message: impl Into<String>) -> Self

Source: grpc.joule:151

fn unimplemented(message: impl Into<String>) -> Self

Source: grpc.joule:155

fn unavailable(message: impl Into<String>) -> Self

Source: grpc.joule:159

struct Metadata

Source: grpc.joule:170

enum MetadataValue

Source: grpc.joule:176

fn new() -> Self

Source: grpc.joule:182

fn insert(&mut self, key: &str, value: &str)

Add text metadata

Source: grpc.joule:189

fn insert_bin(&mut self, key: &str, value: Vec<u8>)

Add binary metadata (key must end with -bin)

Source: grpc.joule:198

fn get(&self, key: &str) -> Option<&str>

Get first text value

Source: grpc.joule:210

fn get_bin(&self, key: &str) -> Option<&[u8]>

Get first binary value

Source: grpc.joule:220

fn get_all(&self, key: &str) -> Option<&[MetadataValue]>

Get all values for a key

Source: grpc.joule:230

fn contains(&self, key: &str) -> bool

Check if key exists

Source: grpc.joule:235

fn remove(&mut self, key: &str) -> Option<Vec<MetadataValue>>

Remove a key

Source: grpc.joule:240

fn iter(&self) -> impl Iterator<Item = (&String, &Vec<MetadataValue>)>

Iterate over entries

Source: grpc.joule:245

fn to_headers(&self) -> Headers

Convert to HTTP/2 headers

Source: grpc.joule:250

fn from_headers(headers: &Headers) -> Self

Parse from HTTP/2 headers

Source: grpc.joule:269

trait Message: Sized

Message trait for gRPC messages

Source: grpc.joule:293

fn encode(&self) -> Vec<u8>;

Encode to bytes

Source: grpc.joule:295

fn decode(data: &[u8]) -> Result<Self, DecodeError>;

Decode from bytes

Source: grpc.joule:298

fn name() -> &'static str;

Get message name

Source: grpc.joule:301

enum DecodeError

Source: grpc.joule:306

fn encode_message(data: &[u8], compressed: bool) -> Vec<u8>

Encode message with length prefix (gRPC framing)

Source: grpc.joule:313

fn decode_message(data: &[u8]) -> Result<(bool, Vec<u8>), GrpcError>

Decode length-prefixed message

Source: grpc.joule:330

struct Channel

gRPC channel (connection to server)

Source: grpc.joule:350

fn new(target: &str) -> Self

Create channel to target address

Source: grpc.joule:359

fn timeout(mut self, timeout: Duration) -> Self

Set timeout

Source: grpc.joule:371

fn plaintext(mut self) -> Self

Disable TLS

Source: grpc.joule:377

fn intercept<I: Interceptor + 'static>(mut self, interceptor: I) -> Self

Add interceptor

Source: grpc.joule:383

trait Interceptor: Send + Sync

Client interceptor trait

Source: grpc.joule:390

fn intercept(&self, request: &mut Request<Vec<u8>>);

Source: grpc.joule:391

struct Request

gRPC request

Source: grpc.joule:395

fn new(message: T) -> Self

Source: grpc.joule:402

fn metadata_mut(&mut self) -> &mut Metadata

Source: grpc.joule:410

fn set_timeout(&mut self, timeout: Duration)

Source: grpc.joule:414

struct Response

gRPC response

Source: grpc.joule:420

fn new(message: T) -> Self

Source: grpc.joule:428

struct GrpcClient

gRPC client for making RPC calls

Source: grpc.joule:439

fn new(channel: Channel) -> Self

Create client from channel

Source: grpc.joule:445

fn unary<Req: Message, Res: Message>(

Source: grpc.joule:451

fn server_streaming<Req: Message, Res: Message>(

Source: grpc.joule:482

fn client_streaming<Req: Message, Res: Message>(

Source: grpc.joule:497

fn bidirectional<Req: Message, Res: Message>(

Source: grpc.joule:515

fn connect(&self) -> Result<Connection, GrpcError>

Source: grpc.joule:527

fn send_request(

Source: grpc.joule:540

fn send_headers(

Source: grpc.joule:558

fn recv_response(&self, conn: &mut Connection) -> Result<(Metadata, Vec<u8>), GrpcError>

Source: grpc.joule:569

enum Connection

Connection wrapper

Source: grpc.joule:582

fn write_all(&mut self, data: &[u8]) -> Result<(), std::io::Error>

Source: grpc.joule:588

fn read(&mut self, buf: &mut [u8]) -> Result<usize, std::io::Error>

Source: grpc.joule:595

fn try_clone(&self) -> Result<Self, GrpcError>

Source: grpc.joule:602

struct Streaming

Server streaming response

Source: grpc.joule:615

fn new(conn: Connection) -> Self

Source: grpc.joule:622

fn message(&mut self) -> Result<Option<T>, GrpcError>

Source: grpc.joule:632

fn trailers(&self) -> Metadata

Get trailing metadata

Source: grpc.joule:652

fn next(&mut self) -> Option<Self::Item>

Source: grpc.joule:660

struct ClientStream

Client streaming sender

Source: grpc.joule:670

fn new(conn: Connection) -> Self

Source: grpc.joule:676

fn send(&mut self, message: T) -> Result<(), GrpcError>

Source: grpc.joule:685

fn finish(mut self) -> Result<(), GrpcError>

Source: grpc.joule:694

struct ResponseFuture

Future for receiving response after client streaming

Source: grpc.joule:703

fn new(conn: Connection) -> Self

Source: grpc.joule:709

fn await_response(mut self) -> Result<Response<T>, GrpcError>

Source: grpc.joule:718

struct BidiStream

Bidirectional streaming

Source: grpc.joule:736

fn new(conn: Connection) -> Self

Source: grpc.joule:743

fn send(&mut self, message: Req) -> Result<(), GrpcError>

Source: grpc.joule:753

fn recv(&mut self) -> Result<Option<Res>, GrpcError>

Source: grpc.joule:762

fn close_send(&mut self) -> Result<(), GrpcError>

Source: grpc.joule:778

struct Server

gRPC server

Source: grpc.joule:790

fn bind(addr: &str) -> Result<Self, GrpcError>

Source: grpc.joule:798

fn add_service<S: ServiceHandler + 'static>(mut self, service: S) -> Self

Register a service

Source: grpc.joule:808

fn serve(self) -> Result<(), GrpcError>

Source: grpc.joule:816

fn handle_connection(&self, mut stream: TcpStream) -> Result<(), GrpcError>

Source: grpc.joule:829

trait ServiceHandler: Send + Sync

Service handler trait

Source: grpc.joule:868

fn name(&self) -> &str;

Service name (e.g., "helloworld.Greeter")

Source: grpc.joule:870

fn call(&self, method: &str, request: &[u8], metadata: &Metadata) -> Result<Vec<u8>, GrpcError>;

Handle method call

Source: grpc.joule:873

fn build_request_headers(path: &str, metadata: &Metadata, content_length: usize) -> Vec<u8>

Source: grpc.joule:908

fn build_response_headers(status: u16) -> Vec<u8>

Source: grpc.joule:929

fn build_data_frame(data: &[u8], end_stream: bool) -> Vec<u8>

Source: grpc.joule:941

fn parse_response(data: &[u8]) -> Result<(Metadata, Vec<u8>), GrpcError>

Source: grpc.joule:965

fn parse_request(data: &[u8]) -> Result<(String, Metadata, Vec<u8>), GrpcError>

Source: grpc.joule:984

fn parse_target(target: &str) -> Result<SocketAddr, GrpcError>

Source: grpc.joule:1009

enum Compression

Source: grpc.joule:1024

fn from_str(s: &str) -> Option<Self>

Source: grpc.joule:1033

fn as_str(&self) -> &str

Source: grpc.joule:1044

fn base64_encode(data: &[u8]) -> String

Source: grpc.joule:1059

const CHARS: &[u8]

Source: grpc.joule:1060

fn base64_decode(data: &str) -> Option<Vec<u8>>

Source: grpc.joule:1087

const DECODE: [i8; 128]

Source: grpc.joule:1088

enum GrpcError

Source: grpc.joule:1135

fn from(e: std::io::Error) -> Self

Source: grpc.joule:1148

fn from(e: super::tcp::TcpError) -> Self

Source: grpc.joule:1154

fn test_status_codes()

Source: grpc.joule:1168

fn test_metadata()

Source: grpc.joule:1175

fn test_message_encoding()

Source: grpc.joule:1185

fn test_base64()

Source: grpc.joule:1198

fn test_compression_names()

Source: grpc.joule:1207