CamelCase messages

This commit is contained in:
Patrick Walton 2012-06-14 15:20:41 -07:00
parent c5e2f391b0
commit fb4fab8a07
5 changed files with 71 additions and 61 deletions

View file

@ -3,7 +3,7 @@
tasks.
"]
export msg, ping;
export ControlMsg, PingMsg;
export content;
import result::extensions;
@ -13,35 +13,37 @@ import dom = dom::base;
import layout::layout_task;
import js::rust::methods;
enum msg {
parse(~str),
execute(~str),
exit
enum ControlMsg {
ParseMsg(~str),
ExecuteMsg(~str),
ExitMsg
}
enum ping {
pong
enum PingMsg {
PongMsg
}
// sends a ping to layout and awaits the response.
fn join_layout(scope: dom::node_scope,
to_layout: chan<layout_task::msg>) {
#[doc="Sends a ping to layout and waits for the response."]
fn join_layout(scope: dom::node_scope, to_layout: chan<layout_task::Msg>) {
if scope.is_reader_forked() {
comm::listen { |ch|
to_layout.send(layout_task::ping(ch));
ch.recv();
comm::listen {
|from_layout|
to_layout.send(layout_task::PingMsg(from_layout));
from_layout.recv();
}
scope.reader_joined();
}
}
fn content(to_layout: chan<layout_task::msg>) -> chan<msg> {
task::spawn_listener::<msg> {|from_master|
fn content(to_layout: chan<layout_task::Msg>) -> chan<ControlMsg> {
task::spawn_listener::<ControlMsg> {
|from_master|
let scope = dom::node_scope();
let rt = js::rust::rt();
loop {
alt from_master.recv() {
parse(filename) {
ParseMsg(filename) {
#debug["content: Received filename `%s` to parse", *filename];
// TODO actually parse where the css sheet should be
@ -80,13 +82,14 @@ fn content(to_layout: chan<layout_task::msg>) -> chan<msg> {
join_layout(scope, to_layout);
// Send new document to layout.
to_layout.send(layout_task::build(root, css_rules));
to_layout.send(layout_task::BuildMsg(root, css_rules));
// Indicate that reader was forked so any further
// changes will be isolated.
scope.reader_forked();
}
execute(filename) {
ExecuteMsg(filename) {
#debug["content: Received filename `%s` to execute",
*filename];
@ -98,16 +101,18 @@ fn content(to_layout: chan<layout_task::msg>) -> chan<msg> {
let cx = rt.cx();
cx.set_default_options_and_version();
cx.set_logging_error_reporter();
cx.new_compartment(js::global::global_class).chain { |comp|
comp.define_functions(js::global::debug_fns);
cx.evaluate_script(comp.global_obj, bytes, *filename,
1u)
cx.new_compartment(js::global::global_class).chain {
|compartment|
compartment.define_functions(js::global::debug_fns);
cx.evaluate_script(compartment.global_obj, bytes,
*filename, 1u)
};
}
}
}
exit {
to_layout.send(layout_task::exit);
ExitMsg {
to_layout.send(layout_task::ExitMsg);
break;
}
}

View file

@ -22,19 +22,19 @@ fn engine<S:renderer::sink send copy>(sink: S) -> chan<Msg> {
LoadURLMsg(url) {
let url <- url;
if (*url).ends_with(".js") {
content.send(content::execute(url))
content.send(content::ExecuteMsg(url))
} else {
content.send(content::parse(url))
content.send(content::ParseMsg(url))
}
}
ExitMsg(sender) {
content.send(content::exit);
layout.send(layout::layout_task::exit);
content.send(content::ExitMsg);
layout.send(layout::layout_task::ExitMsg);
listen {
|resp_ch|
renderer.send(renderer::exit(resp_ch));
resp_ch.recv();
|response_channel|
renderer.send(renderer::ExitMsg(response_channel));
response_channel.recv();
}
sender.send(());
break;

View file

@ -114,11 +114,11 @@ fn sanity_check() {
let renderer = renderer::renderer(sink);
let dlist = [];
renderer.send(renderer::render(dlist));
renderer.send(renderer::RenderMsg(dlist));
listen {|resp|
renderer.send(renderer::exit(resp));
renderer.send(renderer::ExitMsg(resp));
resp.recv();
}
sink.send(exit)
}
}
}

View file

@ -7,9 +7,9 @@ import azure::*;
import azure::bindgen::*;
import libc::size_t;
enum msg {
render(dl::display_list),
exit(comm::chan<()>)
enum Msg {
RenderMsg(dl::display_list),
ExitMsg(comm::chan<()>)
}
#[doc = "
@ -21,15 +21,16 @@ iface sink {
fn draw(next_dt: chan<AzDrawTargetRef>, draw_me: AzDrawTargetRef);
}
fn renderer<S: sink send copy>(sink: S) -> chan<msg> {
task::spawn_listener::<msg> {|po|
listen {|draw_target_ch|
fn renderer<S: sink send copy>(sink: S) -> chan<Msg> {
task::spawn_listener::<Msg> {|po|
listen {
|draw_target_ch|
#debug("renderer: beginning rendering loop");
sink.begin_drawing(draw_target_ch);
loop {
alt po.recv() {
render(display_list) {
RenderMsg(display_list) {
#debug("renderer: got render request");
let draw_target = draw_target_ch.recv();
#debug("renderer: rendering");
@ -39,7 +40,7 @@ fn renderer<S: sink send copy>(sink: S) -> chan<msg> {
#debug("renderer: returning surface");
sink.draw(draw_target_ch, draw_target);
}
exit(response_ch) {
ExitMsg(response_ch) {
response_ch.send(());
break;
}

View file

@ -21,33 +21,37 @@ import box_builder::box_builder_methods;
import dl = display_list;
import util::color::methods;
enum msg {
build(node, stylesheet),
ping(chan<content::ping>),
exit
enum Msg {
BuildMsg(node, stylesheet),
PingMsg(chan<content::PingMsg>),
ExitMsg
}
fn layout(to_renderer: chan<renderer::msg>) -> chan<msg> {
spawn_listener::<msg> { |po|
fn layout(to_renderer: chan<renderer::Msg>) -> chan<Msg> {
spawn_listener::<Msg> { |po|
loop {
alt po.recv() {
ping(ch) { ch.send(content::pong); }
exit { break; }
build(node, styles) {
#debug("layout: received layout request for:");
node.dump();
PingMsg(ping_channel) {
ping_channel.send(content::PongMsg);
}
ExitMsg {
break;
}
BuildMsg(node, styles) {
#debug("layout: received layout request for:");
node.dump();
node.recompute_style_for_subtree(styles);
node.recompute_style_for_subtree(styles);
let this_box = node.construct_boxes();
this_box.dump();
let this_box = node.construct_boxes();
this_box.dump();
this_box.apply_style_for_subtree();
this_box.reflow(px_to_au(800));
this_box.apply_style_for_subtree();
this_box.reflow(px_to_au(800));
let dlist = build_display_list(this_box);
to_renderer.send(renderer::render(dlist));
}
let dlist = build_display_list(this_box);
to_renderer.send(renderer::RenderMsg(dlist));
}
}
}
}