pub struct InMemoryStore { /* private fields */ }Expand description
Implementations§
Source§impl InMemoryStore
impl InMemoryStore
Sourcepub fn new() -> InMemoryStore
pub fn new() -> InMemoryStore
创建新的内存存储
创建共享的内存存储
Sourcepub async fn message_count(&self) -> usize
pub async fn message_count(&self) -> usize
获取消息总数
Sourcepub async fn api_call_count(&self) -> usize
pub async fn api_call_count(&self) -> usize
获取 API 调用总数
Sourcepub async fn session_count(&self) -> usize
pub async fn session_count(&self) -> usize
获取会话总数
Trait Implementations§
Source§impl AgentStore for InMemoryStore
impl AgentStore for InMemoryStore
Source§fn get_agent<'life0, 'async_trait>(
&'life0 self,
_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Option<Agent>, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
InMemoryStore: 'async_trait,
fn get_agent<'life0, 'async_trait>(
&'life0 self,
_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Option<Agent>, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
InMemoryStore: 'async_trait,
根据 ID 获取 agent
Source§fn get_agent_by_code<'life0, 'life1, 'async_trait>(
&'life0 self,
_code: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<Agent>, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
InMemoryStore: 'async_trait,
fn get_agent_by_code<'life0, 'life1, 'async_trait>(
&'life0 self,
_code: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<Agent>, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
InMemoryStore: 'async_trait,
根据 code 获取 agent(全局查找)
Source§fn get_agent_by_code_and_tenant<'life0, 'life1, 'async_trait>(
&'life0 self,
_tenant_id: Uuid,
_code: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<Agent>, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
InMemoryStore: 'async_trait,
fn get_agent_by_code_and_tenant<'life0, 'life1, 'async_trait>(
&'life0 self,
_tenant_id: Uuid,
_code: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<Agent>, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
InMemoryStore: 'async_trait,
根据 code 和租户 ID 获取 agent
Source§fn list_agents<'life0, 'async_trait>(
&'life0 self,
_tenant_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Vec<Agent>, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
InMemoryStore: 'async_trait,
fn list_agents<'life0, 'async_trait>(
&'life0 self,
_tenant_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Vec<Agent>, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
InMemoryStore: 'async_trait,
列出租户的所有 agents
Source§fn get_active_agents<'life0, 'async_trait>(
&'life0 self,
_tenant_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Vec<Agent>, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
InMemoryStore: 'async_trait,
fn get_active_agents<'life0, 'async_trait>(
&'life0 self,
_tenant_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Vec<Agent>, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
InMemoryStore: 'async_trait,
获取租户所有启用的 agents
Source§fn get_agent_with_provider<'life0, 'async_trait>(
&'life0 self,
_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Option<AgentConfig>, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
InMemoryStore: 'async_trait,
fn get_agent_with_provider<'life0, 'async_trait>(
&'life0 self,
_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Option<AgentConfig>, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
InMemoryStore: 'async_trait,
根据 ID 获取 agent 及其 provider 配置
Source§fn get_agent_by_code_with_provider<'life0, 'life1, 'async_trait>(
&'life0 self,
_code: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<AgentConfig>, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
InMemoryStore: 'async_trait,
fn get_agent_by_code_with_provider<'life0, 'life1, 'async_trait>(
&'life0 self,
_code: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<AgentConfig>, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
InMemoryStore: 'async_trait,
根据 code 获取 agent 及其 provider 配置(全局查找)
Source§fn get_agent_by_code_and_tenant_with_provider<'life0, 'life1, 'async_trait>(
&'life0 self,
_tenant_id: Uuid,
_code: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<AgentConfig>, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
InMemoryStore: 'async_trait,
fn get_agent_by_code_and_tenant_with_provider<'life0, 'life1, 'async_trait>(
&'life0 self,
_tenant_id: Uuid,
_code: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<AgentConfig>, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
InMemoryStore: 'async_trait,
根据 code 和租户 ID 获取 agent 及其 provider 配置
Source§impl ApiCallStore for InMemoryStore
impl ApiCallStore for InMemoryStore
Source§fn save_api_call<'life0, 'life1, 'async_trait>(
&'life0 self,
call: &'life1 LLMApiCall,
) -> Pin<Box<dyn Future<Output = Result<(), PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
InMemoryStore: 'async_trait,
fn save_api_call<'life0, 'life1, 'async_trait>(
&'life0 self,
call: &'life1 LLMApiCall,
) -> Pin<Box<dyn Future<Output = Result<(), PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
InMemoryStore: 'async_trait,
保存 API 调用记录
Source§fn get_api_call<'life0, 'async_trait>(
&'life0 self,
id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Option<LLMApiCall>, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
InMemoryStore: 'async_trait,
fn get_api_call<'life0, 'async_trait>(
&'life0 self,
id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Option<LLMApiCall>, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
InMemoryStore: 'async_trait,
获取 API 调用记录
Source§fn query_api_calls<'life0, 'life1, 'async_trait>(
&'life0 self,
filter: &'life1 QueryFilter,
) -> Pin<Box<dyn Future<Output = Result<Vec<LLMApiCall>, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
InMemoryStore: 'async_trait,
fn query_api_calls<'life0, 'life1, 'async_trait>(
&'life0 self,
filter: &'life1 QueryFilter,
) -> Pin<Box<dyn Future<Output = Result<Vec<LLMApiCall>, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
InMemoryStore: 'async_trait,
查询 API 调用记录
Source§fn get_statistics<'life0, 'life1, 'async_trait>(
&'life0 self,
filter: &'life1 QueryFilter,
) -> Pin<Box<dyn Future<Output = Result<UsageStatistics, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
InMemoryStore: 'async_trait,
fn get_statistics<'life0, 'life1, 'async_trait>(
&'life0 self,
filter: &'life1 QueryFilter,
) -> Pin<Box<dyn Future<Output = Result<UsageStatistics, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
InMemoryStore: 'async_trait,
统计 API 调用
Source§fn delete_api_call<'life0, 'async_trait>(
&'life0 self,
id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<bool, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
InMemoryStore: 'async_trait,
fn delete_api_call<'life0, 'async_trait>(
&'life0 self,
id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<bool, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
InMemoryStore: 'async_trait,
删除 API 调用记录
Source§fn cleanup_old_records<'life0, 'async_trait>(
&'life0 self,
before: DateTime<Utc>,
) -> Pin<Box<dyn Future<Output = Result<i64, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
InMemoryStore: 'async_trait,
fn cleanup_old_records<'life0, 'async_trait>(
&'life0 self,
before: DateTime<Utc>,
) -> Pin<Box<dyn Future<Output = Result<i64, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
InMemoryStore: 'async_trait,
清理旧记录
Source§fn save_api_calls<'life0, 'life1, 'async_trait>(
&'life0 self,
calls: &'life1 [LLMApiCall],
) -> Pin<Box<dyn Future<Output = Result<(), PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
fn save_api_calls<'life0, 'life1, 'async_trait>(
&'life0 self,
calls: &'life1 [LLMApiCall],
) -> Pin<Box<dyn Future<Output = Result<(), PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
批量保存 API 调用记录
Source§impl Default for InMemoryStore
impl Default for InMemoryStore
Source§fn default() -> InMemoryStore
fn default() -> InMemoryStore
Returns the “default value” for a type. Read more
Source§impl MessageStore for InMemoryStore
impl MessageStore for InMemoryStore
Source§fn save_message<'life0, 'life1, 'async_trait>(
&'life0 self,
message: &'life1 LLMMessage,
) -> Pin<Box<dyn Future<Output = Result<(), PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
InMemoryStore: 'async_trait,
fn save_message<'life0, 'life1, 'async_trait>(
&'life0 self,
message: &'life1 LLMMessage,
) -> Pin<Box<dyn Future<Output = Result<(), PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
InMemoryStore: 'async_trait,
保存消息
Source§fn get_message<'life0, 'async_trait>(
&'life0 self,
id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Option<LLMMessage>, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
InMemoryStore: 'async_trait,
fn get_message<'life0, 'async_trait>(
&'life0 self,
id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Option<LLMMessage>, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
InMemoryStore: 'async_trait,
获取消息
Source§fn get_session_messages<'life0, 'async_trait>(
&'life0 self,
session_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Vec<LLMMessage>, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
InMemoryStore: 'async_trait,
fn get_session_messages<'life0, 'async_trait>(
&'life0 self,
session_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Vec<LLMMessage>, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
InMemoryStore: 'async_trait,
获取会话消息列表
Source§fn get_session_messages_paginated<'life0, 'async_trait>(
&'life0 self,
session_id: Uuid,
offset: i64,
limit: i64,
) -> Pin<Box<dyn Future<Output = Result<Vec<LLMMessage>, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
InMemoryStore: 'async_trait,
fn get_session_messages_paginated<'life0, 'async_trait>(
&'life0 self,
session_id: Uuid,
offset: i64,
limit: i64,
) -> Pin<Box<dyn Future<Output = Result<Vec<LLMMessage>, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
InMemoryStore: 'async_trait,
获取会话消息列表 (分页)
Source§fn delete_message<'life0, 'async_trait>(
&'life0 self,
id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<bool, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
InMemoryStore: 'async_trait,
fn delete_message<'life0, 'async_trait>(
&'life0 self,
id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<bool, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
InMemoryStore: 'async_trait,
删除消息
Source§fn delete_session_messages<'life0, 'async_trait>(
&'life0 self,
session_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<i64, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
InMemoryStore: 'async_trait,
fn delete_session_messages<'life0, 'async_trait>(
&'life0 self,
session_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<i64, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
InMemoryStore: 'async_trait,
删除会话所有消息
Source§fn count_session_messages<'life0, 'async_trait>(
&'life0 self,
session_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<i64, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
InMemoryStore: 'async_trait,
fn count_session_messages<'life0, 'async_trait>(
&'life0 self,
session_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<i64, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
InMemoryStore: 'async_trait,
统计会话消息数
Source§fn save_messages<'life0, 'life1, 'async_trait>(
&'life0 self,
messages: &'life1 [LLMMessage],
) -> Pin<Box<dyn Future<Output = Result<(), PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
fn save_messages<'life0, 'life1, 'async_trait>(
&'life0 self,
messages: &'life1 [LLMMessage],
) -> Pin<Box<dyn Future<Output = Result<(), PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
批量保存消息
Source§impl PersistenceStore for InMemoryStore
impl PersistenceStore for InMemoryStore
Source§fn backend_name(&self) -> &str
fn backend_name(&self) -> &str
获取存储后端名称
Source§fn is_connected(&self) -> bool
fn is_connected(&self) -> bool
检查连接状态
Source§impl ProviderStore for InMemoryStore
impl ProviderStore for InMemoryStore
Source§fn get_provider<'life0, 'async_trait>(
&'life0 self,
_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Option<Provider>, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
InMemoryStore: 'async_trait,
fn get_provider<'life0, 'async_trait>(
&'life0 self,
_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Option<Provider>, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
InMemoryStore: 'async_trait,
根据 ID 获取 provider
Source§fn get_provider_by_name<'life0, 'life1, 'async_trait>(
&'life0 self,
_tenant_id: Uuid,
_name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<Provider>, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
InMemoryStore: 'async_trait,
fn get_provider_by_name<'life0, 'life1, 'async_trait>(
&'life0 self,
_tenant_id: Uuid,
_name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<Provider>, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
InMemoryStore: 'async_trait,
根据名称和租户 ID 获取 provider
Source§fn list_providers<'life0, 'async_trait>(
&'life0 self,
_tenant_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Vec<Provider>, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
InMemoryStore: 'async_trait,
fn list_providers<'life0, 'async_trait>(
&'life0 self,
_tenant_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Vec<Provider>, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
InMemoryStore: 'async_trait,
列出租户的所有 providers
Source§fn get_enabled_providers<'life0, 'async_trait>(
&'life0 self,
_tenant_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Vec<Provider>, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
InMemoryStore: 'async_trait,
fn get_enabled_providers<'life0, 'async_trait>(
&'life0 self,
_tenant_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Vec<Provider>, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
InMemoryStore: 'async_trait,
获取租户所有启用的 providers
Source§impl SessionStore for InMemoryStore
impl SessionStore for InMemoryStore
Source§fn create_session<'life0, 'life1, 'async_trait>(
&'life0 self,
session: &'life1 ChatSession,
) -> Pin<Box<dyn Future<Output = Result<(), PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
InMemoryStore: 'async_trait,
fn create_session<'life0, 'life1, 'async_trait>(
&'life0 self,
session: &'life1 ChatSession,
) -> Pin<Box<dyn Future<Output = Result<(), PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
InMemoryStore: 'async_trait,
创建会话
Source§fn get_session<'life0, 'async_trait>(
&'life0 self,
id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Option<ChatSession>, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
InMemoryStore: 'async_trait,
fn get_session<'life0, 'async_trait>(
&'life0 self,
id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Option<ChatSession>, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
InMemoryStore: 'async_trait,
获取会话
Source§fn get_user_sessions<'life0, 'async_trait>(
&'life0 self,
user_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Vec<ChatSession>, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
InMemoryStore: 'async_trait,
fn get_user_sessions<'life0, 'async_trait>(
&'life0 self,
user_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Vec<ChatSession>, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
InMemoryStore: 'async_trait,
获取用户会话列表
Source§fn update_session<'life0, 'life1, 'async_trait>(
&'life0 self,
session: &'life1 ChatSession,
) -> Pin<Box<dyn Future<Output = Result<(), PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
InMemoryStore: 'async_trait,
fn update_session<'life0, 'life1, 'async_trait>(
&'life0 self,
session: &'life1 ChatSession,
) -> Pin<Box<dyn Future<Output = Result<(), PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
InMemoryStore: 'async_trait,
更新会话
Source§fn delete_session<'life0, 'async_trait>(
&'life0 self,
id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<bool, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
InMemoryStore: 'async_trait,
fn delete_session<'life0, 'async_trait>(
&'life0 self,
id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<bool, PersistenceError>> + Send + 'async_trait>>where
'life0: 'async_trait,
InMemoryStore: 'async_trait,
删除会话
Auto Trait Implementations§
impl !Freeze for InMemoryStore
impl !RefUnwindSafe for InMemoryStore
impl Send for InMemoryStore
impl Sync for InMemoryStore
impl Unpin for InMemoryStore
impl UnsafeUnpin for InMemoryStore
impl !UnwindSafe for InMemoryStore
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Message for T
impl<T> Message for T
Source§fn from_boxed(m: BoxedMessage) -> Result<Self, BoxedDowncastErr>
fn from_boxed(m: BoxedMessage) -> Result<Self, BoxedDowncastErr>
Convert a BoxedMessage to this concrete type
Source§fn box_message(self, pid: &ActorId) -> Result<BoxedMessage, BoxedDowncastErr>
fn box_message(self, pid: &ActorId) -> Result<BoxedMessage, BoxedDowncastErr>
Convert this message to a BoxedMessage