Implement estate and marketplace services (#73)
All checks were successful
Native code generation / deterministic (push) Successful in 15m57s
Imaging and meshing gate / native (push) Successful in 5m16s
Native Rust workspace compile / compile (push) Successful in 5m11s

This commit is contained in:
2026-08-10 19:25:31 +00:00
parent c22eef5d0e
commit 763e9e5044
14 changed files with 3132 additions and 1202 deletions

View File

@@ -27,6 +27,7 @@ mod client_core;
mod current_outfit;
mod download_manager;
mod environment_manager;
mod estate_tools;
mod event_queue;
mod friends_manager;
mod gesture;
@@ -42,6 +43,8 @@ mod generated;
mod genepool_catalog;
mod j2k;
mod login;
#[path = "marketplace.rs"]
mod marketplace_runtime;
mod message_codec;
mod message_decoder;
mod network_manager;
@@ -67,6 +70,7 @@ mod terrain_codec;
mod terrain_manager;
mod transfers;
mod udp_transport;
mod user_report;
#[rustfmt::skip] // Deterministic machine output is formatted by the pinned generator.
mod visual_catalog;
@@ -156,29 +160,15 @@ impl InventoryAISClient {
}
}
#[allow(dead_code, clippy::unused_self)]
impl EstateTools {
fn estate_owner_message_handler(
&self,
_packet: packets::EstateOwnerMessagePacket,
_simulator: Simulator,
) -> Result<(), Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.EstateTools.EstateOwnerMessageHandler(System.Object,LibreMetaverse.PacketReceivedEventArgs)",
)
}
}
#[allow(dead_code, clippy::unused_self)]
#[allow(dead_code, clippy::needless_pass_by_value, clippy::unnecessary_wraps)]
impl NetworkManager {
fn raise_sim_console_response(
&self,
_message: messages::linden::SimConsoleResponseMessage,
_simulator: Simulator,
message: messages::linden::SimConsoleResponseMessage,
simulator: Simulator,
) -> Result<(), Error> {
libremetaverse_types::not_implemented(
"F:LibreMetaverse.NetworkManager.CapsEvents.SimConsoleResponse",
)
self.dispatch_caps_event("SimConsoleResponse", &message, simulator);
Ok(())
}
}
@@ -207,6 +197,14 @@ pub use udp_transport::{
AgentThrottleSender, UdpPacketHandler, UdpThrottleCategory, UdpTransportConfig,
UdpTransportError, UdpTransportStats,
};
pub use user_report::{UserReport, UserReportService, UserReportType};
pub(crate) fn is_offline_fixture_uri(uri: &libremetaverse_types::compat::Uri) -> bool {
reqwest::Url::parse(&uri.0)
.ok()
.and_then(|url| url.host_str().map(str::to_owned))
.is_some_and(|host| host == "invalid" || host.ends_with(".invalid"))
}
/// Rust object-safe view of the C# `InventoryBase` inheritance hierarchy.
pub trait InventoryObjectClass: std::any::Any {