aboutsummaryrefslogtreecommitdiff
path: root/src/rt/rust_chan.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/rt/rust_chan.h')
-rw-r--r--src/rt/rust_chan.h19
1 files changed, 9 insertions, 10 deletions
diff --git a/src/rt/rust_chan.h b/src/rt/rust_chan.h
index 1d24ee78..055e359a 100644
--- a/src/rt/rust_chan.h
+++ b/src/rt/rust_chan.h
@@ -1,24 +1,23 @@
-
#ifndef RUST_CHAN_H
#define RUST_CHAN_H
-class rust_chan : public rc_base<rust_chan>, public task_owned<rust_chan> {
+class rust_chan : public rc_base<rust_chan>,
+ public task_owned<rust_chan>,
+ public rust_cond {
public:
- rust_chan(rust_task *task, rust_port *port);
+ rust_chan(rust_task *task, maybe_proxy<rust_port> *port);
~rust_chan();
rust_task *task;
- rust_port *port;
+ maybe_proxy<rust_port> *port;
+ size_t idx;
circular_buffer buffer;
- size_t idx; // Index into port->chans.
-
- // Token belonging to this chan, it will be placed into a port's
- // writers vector if we have something to send to the port.
- rust_token token;
+ void associate(maybe_proxy<rust_port> *port);
void disassociate();
+ bool is_associated();
- int transmit();
+ void transmit();
};
//