Implement network manager simulator lifecycle (#53)
All checks were successful
Native code generation / deterministic (push) Successful in 8m55s
Imaging and meshing gate / native (push) Successful in 2m45s
JPEG 2000 feature / linux (push) Successful in 1m41s
Native Rust workspace compile / compile (push) Successful in 1m57s
Skia feature / linux (push) Successful in 31m12s
All checks were successful
Native code generation / deterministic (push) Successful in 8m55s
Imaging and meshing gate / native (push) Successful in 2m45s
JPEG 2000 feature / linux (push) Successful in 1m41s
Native Rust workspace compile / compile (push) Successful in 1m57s
Skia feature / linux (push) Successful in 31m12s
This commit is contained in:
@@ -38,6 +38,19 @@ TARGETS = {
|
||||
# implementations. The generated module keeps catalog markers and re-exports
|
||||
# the hand-written type so coverage remains deterministic.
|
||||
NATIVE_TYPES = {
|
||||
"T:LibreMetaverse.Caps.EventQueueCallback": "crate::network_manager::CapsEventQueueCallback",
|
||||
"T:LibreMetaverse.CapsEventDictionary": "crate::network_manager::CapsEventDictionary",
|
||||
"T:LibreMetaverse.DisconnectedEventArgs": "crate::network_manager::DisconnectedEventArgs",
|
||||
"T:LibreMetaverse.GenericStreamingMessageEventArgs": "crate::network_manager::GenericStreamingMessageEventArgs",
|
||||
"T:LibreMetaverse.NetworkManager.IncomingPacket": "crate::network_manager::NetworkManagerIncomingPacket",
|
||||
"T:LibreMetaverse.NetworkManager.OutgoingPacket": "crate::network_manager::NetworkManagerOutgoingPacket",
|
||||
"T:LibreMetaverse.PacketEventDictionary": "crate::network_manager::PacketEventDictionary",
|
||||
"T:LibreMetaverse.PacketReceivedEventArgs": "crate::network_manager::PacketReceivedEventArgs",
|
||||
"T:LibreMetaverse.PacketSentEventArgs": "crate::network_manager::PacketSentEventArgs",
|
||||
"T:LibreMetaverse.SimChangedEventArgs": "crate::network_manager::SimChangedEventArgs",
|
||||
"T:LibreMetaverse.SimConnectedEventArgs": "crate::network_manager::SimConnectedEventArgs",
|
||||
"T:LibreMetaverse.SimConnectingEventArgs": "crate::network_manager::SimConnectingEventArgs",
|
||||
"T:LibreMetaverse.SimDisconnectedEventArgs": "crate::network_manager::SimDisconnectedEventArgs",
|
||||
"T:LibreMetaverse.ArchetypeParam": "crate::genepool_catalog::ArchetypeParam",
|
||||
"T:LibreMetaverse.AttentionData": "crate::attention_catalog::AttentionData",
|
||||
"T:LibreMetaverse.AttentionSet": "crate::attention_catalog::AttentionSet",
|
||||
@@ -132,7 +145,9 @@ NATIVE_TYPES = {
|
||||
# hand-written, while its fixed public methods remain generator-audited.
|
||||
NATIVE_DECLARATIONS = {
|
||||
"T:LibreMetaverse.GridClient": "crate::client_core::GridClient",
|
||||
"T:LibreMetaverse.NetworkManager": "crate::network_manager::NetworkManager",
|
||||
"T:LibreMetaverse.Settings": "crate::client_core::Settings",
|
||||
"T:LibreMetaverse.Simulator": "crate::network_manager::Simulator",
|
||||
"T:LibreMetaverse.StructuredData.OSDParser": "crate::model::OSDParser",
|
||||
}
|
||||
|
||||
@@ -163,6 +178,122 @@ NATIVE_MEMBER_BODIES = {
|
||||
"self.shutdown().map_err(Into::into)",
|
||||
"M:LibreMetaverse.GridClient.ToString":
|
||||
"String::new()",
|
||||
"E:LibreMetaverse.NetworkManager.Disconnected":
|
||||
"self.native_subscribe_disconnected(handler)",
|
||||
"E:LibreMetaverse.NetworkManager.GenericStreamingMessage":
|
||||
"self.native_subscribe_generic_streaming_message(handler)",
|
||||
"E:LibreMetaverse.NetworkManager.PacketSent":
|
||||
"self.native_subscribe_packet_sent(handler)",
|
||||
"E:LibreMetaverse.NetworkManager.SimChanged":
|
||||
"self.native_subscribe_sim_changed(handler)",
|
||||
"E:LibreMetaverse.NetworkManager.SimConnected":
|
||||
"self.native_subscribe_sim_connected(handler)",
|
||||
"E:LibreMetaverse.NetworkManager.SimConnecting":
|
||||
"self.native_subscribe_sim_connecting(handler)",
|
||||
"E:LibreMetaverse.NetworkManager.SimDisconnected":
|
||||
"self.native_subscribe_sim_disconnected(handler)",
|
||||
"M:LibreMetaverse.NetworkManager.#ctor(LibreMetaverse.GridClient)":
|
||||
"crate::network_manager::NetworkManager::native_new(client)",
|
||||
"M:LibreMetaverse.NetworkManager.Connect(System.Net.IPAddress,System.UInt16,System.UInt64,System.Boolean,System.Uri)":
|
||||
"self.native_connect(std::net::SocketAddr::new(ip, port), handle, set_default, seedcaps, crate::network_manager::Simulator::DEFAULT_REGION_SIZE_X, crate::network_manager::Simulator::DEFAULT_REGION_SIZE_Y)",
|
||||
"M:LibreMetaverse.NetworkManager.Connect(System.Net.IPAddress,System.UInt16,System.UInt64,System.Boolean,System.Uri,System.UInt32,System.UInt32)":
|
||||
"self.native_connect(std::net::SocketAddr::new(ip, port), handle, set_default, seedcaps, size_x, size_y)",
|
||||
"M:LibreMetaverse.NetworkManager.Connect(System.Net.IPEndPoint,System.UInt64,System.Boolean,System.Uri)":
|
||||
"self.native_connect(end_point, handle, set_default, seedcaps, crate::network_manager::Simulator::DEFAULT_REGION_SIZE_X, crate::network_manager::Simulator::DEFAULT_REGION_SIZE_Y)",
|
||||
"M:LibreMetaverse.NetworkManager.Connect(System.Net.IPEndPoint,System.UInt64,System.Boolean,System.Uri,System.UInt32,System.UInt32)":
|
||||
"self.native_connect(end_point, handle, set_default, seedcaps, size_x, size_y)",
|
||||
"M:LibreMetaverse.NetworkManager.ConnectAsync(System.Net.IPAddress,System.UInt16,System.UInt64,System.Boolean,System.Uri)":
|
||||
"self.native_connect_async(std::net::SocketAddr::new(ip, port), handle, set_default, seedcaps, crate::network_manager::Simulator::DEFAULT_REGION_SIZE_X, crate::network_manager::Simulator::DEFAULT_REGION_SIZE_Y).await",
|
||||
"M:LibreMetaverse.NetworkManager.ConnectAsync(System.Net.IPEndPoint,System.UInt64,System.Boolean,System.Uri,System.UInt32,System.UInt32)":
|
||||
"self.native_connect_async(end_point, handle, set_default, seedcaps, size_x, size_y).await",
|
||||
"M:LibreMetaverse.NetworkManager.DisconnectSim(LibreMetaverse.Simulator,System.Boolean)":
|
||||
"self.native_disconnect_sim(simulator, send_close_circuit)",
|
||||
"M:LibreMetaverse.NetworkManager.EnqueueIncoming(LibreMetaverse.NetworkManager.IncomingPacket)":
|
||||
"self.native_enqueue_incoming(packet)",
|
||||
"M:LibreMetaverse.NetworkManager.EnqueueOutgoing(LibreMetaverse.NetworkManager.OutgoingPacket)":
|
||||
"self.native_enqueue_outgoing(packet)",
|
||||
"M:LibreMetaverse.NetworkManager.FindSimulator(System.Net.IPEndPoint)":
|
||||
"Ok(self.native_find_endpoint(end_point))",
|
||||
"M:LibreMetaverse.NetworkManager.FindSimulator(System.UInt64)":
|
||||
"Ok(self.native_find_handle(handle))",
|
||||
"M:LibreMetaverse.NetworkManager.RegisterCallback(LibreMetaverse.Packets.PacketType,System.EventHandler{LibreMetaverse.PacketReceivedEventArgs})":
|
||||
"self.native_register_callback(type_, callback, true)",
|
||||
"M:LibreMetaverse.NetworkManager.RegisterCallback(LibreMetaverse.Packets.PacketType,System.EventHandler{LibreMetaverse.PacketReceivedEventArgs},System.Boolean)":
|
||||
"self.native_register_callback(type_, callback, is_async)",
|
||||
"M:LibreMetaverse.NetworkManager.RegisterEventCallback(System.String,LibreMetaverse.Caps.EventQueueCallback)":
|
||||
"self.native_register_caps(caps_event, callback)",
|
||||
"M:LibreMetaverse.NetworkManager.SendPacket(LibreMetaverse.Packets.Packet)":
|
||||
"self.native_send_packet(packet, None)",
|
||||
"M:LibreMetaverse.NetworkManager.SendPacket(LibreMetaverse.Packets.Packet,LibreMetaverse.Simulator)":
|
||||
"self.native_send_packet(packet, simulator)",
|
||||
"M:LibreMetaverse.NetworkManager.Shutdown(LibreMetaverse.NetworkManager.DisconnectType)":
|
||||
"self.native_shutdown(type_, format!(\"{type_:?}\"))",
|
||||
"M:LibreMetaverse.NetworkManager.Shutdown(LibreMetaverse.NetworkManager.DisconnectType,System.String)":
|
||||
"self.native_shutdown(type_, message)",
|
||||
"M:LibreMetaverse.NetworkManager.ShutdownAsync(LibreMetaverse.NetworkManager.DisconnectType,System.String)":
|
||||
"self.native_shutdown_async(type_, message).await",
|
||||
"M:LibreMetaverse.NetworkManager.UnregisterCallback(LibreMetaverse.Packets.PacketType,System.EventHandler{LibreMetaverse.PacketReceivedEventArgs})":
|
||||
"self.native_unregister_callback(type_, callback)",
|
||||
"M:LibreMetaverse.NetworkManager.UnregisterEventCallback(System.String,LibreMetaverse.Caps.EventQueueCallback)":
|
||||
"self.native_unregister_caps(caps_event, callback)",
|
||||
"P:LibreMetaverse.NetworkManager.CircuitCode":
|
||||
"self.native_circuit_code()",
|
||||
"P:LibreMetaverse.NetworkManager.CircuitCode#set":
|
||||
"self.native_set_circuit_code(value)",
|
||||
"P:LibreMetaverse.NetworkManager.Connected":
|
||||
"self.native_connected()",
|
||||
"P:LibreMetaverse.NetworkManager.Connected#set":
|
||||
"self.native_set_connected(value)",
|
||||
"P:LibreMetaverse.NetworkManager.CurrentSim":
|
||||
"self.native_current_sim()",
|
||||
"P:LibreMetaverse.NetworkManager.CurrentSim#set":
|
||||
"self.native_set_current_sim(value)",
|
||||
"P:LibreMetaverse.NetworkManager.InboxCount":
|
||||
"self.native_inbox_count()",
|
||||
"P:LibreMetaverse.NetworkManager.OutboxCount":
|
||||
"self.native_outbox_count()",
|
||||
"M:LibreMetaverse.Simulator.#ctor(LibreMetaverse.GridClient,System.Net.IPEndPoint,System.UInt64,System.UInt32,System.UInt32)":
|
||||
"crate::network_manager::Simulator::native_new(client, address, handle, size_x, size_y)",
|
||||
"M:LibreMetaverse.Simulator.Connect(System.Boolean)":
|
||||
"self.native_connect(move_to_sim)",
|
||||
"M:LibreMetaverse.Simulator.ConnectAsync(System.Boolean)":
|
||||
"self.native_connect_async(move_to_sim).await",
|
||||
"M:LibreMetaverse.Simulator.Disconnect(System.Boolean)":
|
||||
"self.native_disconnect(send_close_circuit)",
|
||||
"M:LibreMetaverse.Simulator.Dispose":
|
||||
"self.native_dispose()",
|
||||
"M:LibreMetaverse.Simulator.Equals(System.Object)":
|
||||
"self.native_equals(obj)",
|
||||
"M:LibreMetaverse.Simulator.GetHashCode":
|
||||
"self.native_hash_code()",
|
||||
"M:LibreMetaverse.Simulator.Pause":
|
||||
"self.native_pause()",
|
||||
"M:LibreMetaverse.Simulator.Resume":
|
||||
"self.native_resume()",
|
||||
"M:LibreMetaverse.Simulator.SendPacket(LibreMetaverse.Packets.Packet)":
|
||||
"self.native_send_packet(packet)",
|
||||
"M:LibreMetaverse.Simulator.SendPacketData(System.Byte[],System.Int32,LibreMetaverse.Packets.PacketType,System.Boolean)":
|
||||
"self.native_send_packet_data(data, data_length, type_, do_zerocode)",
|
||||
"M:LibreMetaverse.Simulator.SendPing":
|
||||
"self.native_send_ping()",
|
||||
"M:LibreMetaverse.Simulator.SetSeedCaps(System.Uri,System.Boolean)":
|
||||
"self.native_set_seed_caps(seedcaps, changed_sim)",
|
||||
"M:LibreMetaverse.Simulator.ToString":
|
||||
"self.native_to_string()",
|
||||
"M:LibreMetaverse.Simulator.UseCircuitCode(System.Boolean)":
|
||||
"self.native_use_circuit_code(wait_for_ack)",
|
||||
"M:LibreMetaverse.Simulator.UseCircuitCodeAsync(System.Boolean)":
|
||||
"self.native_use_circuit_code_async(wait_for_ack).await",
|
||||
"M:LibreMetaverse.Simulator.op_Equality(LibreMetaverse.Simulator,LibreMetaverse.Simulator)":
|
||||
"lhs == rhs",
|
||||
"M:LibreMetaverse.Simulator.op_Inequality(LibreMetaverse.Simulator,LibreMetaverse.Simulator)":
|
||||
"lhs != rhs",
|
||||
"P:LibreMetaverse.Simulator.Connected":
|
||||
"self.native_is_connected()",
|
||||
"P:LibreMetaverse.Simulator.HandshakeComplete":
|
||||
"self.native_handshake_complete()",
|
||||
"P:LibreMetaverse.Simulator.IPEndPoint":
|
||||
"self.native_ip_end_point()",
|
||||
"P:LibreMetaverse.GridClient.Settings":
|
||||
"&mut self.settings",
|
||||
"P:LibreMetaverse.GridClient.TimeProvider":
|
||||
@@ -337,6 +468,11 @@ CLIENT_CORE_NATIVE_OWNERS = (
|
||||
"WorldSettings",
|
||||
)
|
||||
|
||||
NETWORK_NATIVE_OWNERS = (
|
||||
"NetworkManager",
|
||||
"Simulator",
|
||||
)
|
||||
|
||||
NATIVE_OWNER_BOUNDS = {
|
||||
"T:LibreMetaverse.CacheDictionary`2": {
|
||||
"TKey": "TKey: Clone + PartialEq",
|
||||
@@ -477,6 +613,7 @@ NATIVE_MESSAGE_CODEC_TYPES = {
|
||||
OPEN_ENUM_IDS = {"T:LibreMetaverse.BakeType", "T:LibreMetaverse.HoleType"}
|
||||
TRAIT_SUPERTRAITS = {
|
||||
"T:LibreMetaverse.IBakingTextureProvider": "std::any::Any",
|
||||
"T:LibreMetaverse.Interfaces.IMessage": "std::any::Any",
|
||||
"T:LibreMetaverse.Appearance.ICurrentOutfitPolicy": "Send + Sync",
|
||||
}
|
||||
CORE_NAMESPACES = (
|
||||
@@ -1053,11 +1190,12 @@ def render_body(signature: str, member_id: str, error_model: str, asyncness: str
|
||||
if trait:
|
||||
signature = signature.removeprefix("pub ")
|
||||
if body := native_member_body(member_id):
|
||||
marker = (
|
||||
" /* native client-core implementation */"
|
||||
if any(f"LibreMetaverse.{owner}." in member_id for owner in CLIENT_CORE_NATIVE_OWNERS)
|
||||
else ""
|
||||
)
|
||||
if any(f"LibreMetaverse.{owner}." in member_id for owner in CLIENT_CORE_NATIVE_OWNERS):
|
||||
marker = " /* native client-core implementation */"
|
||||
elif any(f"LibreMetaverse.{owner}." in member_id for owner in NETWORK_NATIVE_OWNERS):
|
||||
marker = " /* native network implementation */"
|
||||
else:
|
||||
marker = ""
|
||||
return f" {signature} {{{marker} {body} }}"
|
||||
failure = (
|
||||
f"libremetaverse_types::not_implemented({json.dumps(member_id)})"
|
||||
|
||||
@@ -971,7 +971,10 @@ def validate_generated_shims() -> None:
|
||||
if default_types - {"UUID"}:
|
||||
raise ValueError(f"generated shim derives a plausible Default: {path.relative_to(ROOT)}")
|
||||
for body in function_bodies(text):
|
||||
if "native client-core implementation" in body:
|
||||
if (
|
||||
"native client-core implementation" in body
|
||||
or "native network implementation" in body
|
||||
):
|
||||
continue
|
||||
if FAKE_BODY.search(body):
|
||||
raise ValueError(f"generated shim returns a plausible fallback: {path.relative_to(ROOT)}")
|
||||
|
||||
Reference in New Issue
Block a user