mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-20 00:35:44 +00:00
610a77ac31
`Box::new(x)` seems to compile to exactly the same assembly as `box x` in release mode: https://play.rust-lang.org/?gist=55ec5dd02c22fa799375d6e2e1a6e970&version=nightly Source-Repo: https://github.com/servo/servo Source-Revision: fc4de5adf5bff7fabe9f32b960c405f249b5d035 --HG-- extra : subtree_source : https%3A//hg.mozilla.org/projects/converted-servo-linear extra : subtree_revision : 029931b3a8d9c2e073038623375ebbc38eba348a
45 lines
1.3 KiB
Rust
45 lines
1.3 KiB
Rust
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
use actor::{Actor, ActorMessageStatus, ActorRegistry};
|
|
use serde_json::{Map, Value};
|
|
use std::net::TcpStream;
|
|
|
|
pub struct ObjectActor {
|
|
pub name: String,
|
|
pub uuid: String,
|
|
}
|
|
|
|
impl Actor for ObjectActor {
|
|
fn name(&self) -> String {
|
|
self.name.clone()
|
|
}
|
|
fn handle_message(&self,
|
|
_: &ActorRegistry,
|
|
_: &str,
|
|
_: &Map<String, Value>,
|
|
_: &mut TcpStream) -> Result<ActorMessageStatus, ()> {
|
|
Ok(ActorMessageStatus::Ignored)
|
|
}
|
|
}
|
|
|
|
impl ObjectActor {
|
|
pub fn new(registry: &ActorRegistry, uuid: String) -> String {
|
|
if !registry.script_actor_registered(uuid.clone()) {
|
|
let name = registry.new_name("object");
|
|
let actor = ObjectActor {
|
|
name: name.clone(),
|
|
uuid: uuid.clone(),
|
|
};
|
|
|
|
registry.register_script_actor(uuid, name.clone());
|
|
registry.register_later(Box::new(actor));
|
|
|
|
name
|
|
} else {
|
|
registry.script_to_actor(uuid)
|
|
}
|
|
}
|
|
}
|