Trait Codec
pub trait Codec:
Send
+ Sync
+ 'static {
// Required methods
fn encode_setup(
&self,
config: &SessionConfig,
) -> Result<Vec<u8>, CodecError>;
fn encode_command(
&self,
cmd: &SessionCommand,
config: &SessionConfig,
) -> Result<Vec<u8>, CodecError>;
fn decode_message(&self, data: &[u8]) -> Result<ServerMessage, CodecError>;
}Expand description
Encodes client commands into wire bytes and decodes server bytes into messages.
The default implementation is JsonCodec, which serializes commands as JSON
and parses server responses via ServerMessage::parse.
§Implementors
JsonCodec– Standard JSON codec. Encodes setup messages, audio (base64), text, tool responses, and activity signals. Decodes server JSON intoServerMessagevariants. Handles platform-specific wire stripping (e.g., removingschedulingfields for Vertex AI).
Required Methods§
fn encode_setup(&self, config: &SessionConfig) -> Result<Vec<u8>, CodecError>
fn encode_setup(&self, config: &SessionConfig) -> Result<Vec<u8>, CodecError>
Encode the initial setup message for the given session configuration.
fn encode_command(
&self,
cmd: &SessionCommand,
config: &SessionConfig,
) -> Result<Vec<u8>, CodecError>
fn encode_command( &self, cmd: &SessionCommand, config: &SessionConfig, ) -> Result<Vec<u8>, CodecError>
Encode a session command into wire bytes.
fn decode_message(&self, data: &[u8]) -> Result<ServerMessage, CodecError>
fn decode_message(&self, data: &[u8]) -> Result<ServerMessage, CodecError>
Decode raw bytes from the server into a ServerMessage.