From 00d1465d13980fc3acf650f182ee0723fbda0e06 Mon Sep 17 00:00:00 2001 From: Michael Bebenita Date: Mon, 19 Jul 2010 14:05:18 -0700 Subject: Added a message passing system based on lock free queues for inter-thread communication. Channels now buffer on the sending side, and no longer require blocking when sending. Lots of other refactoring and bug fixes. --- src/rt/rust_proxy.h | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/rt/rust_proxy.h (limited to 'src/rt/rust_proxy.h') diff --git a/src/rt/rust_proxy.h b/src/rt/rust_proxy.h new file mode 100644 index 00000000..8059dd89 --- /dev/null +++ b/src/rt/rust_proxy.h @@ -0,0 +1,31 @@ +/** + * A proxy object is a wrapper around other Rust objects. One use of the proxy + * object is to mitigate access between tasks in different thread domains. + */ + +#ifndef RUST_PROXY_H +#define RUST_PROXY_H + +template struct +rust_proxy_delegate : public rc_base { +protected: + T *_delegate; +public: + rust_proxy_delegate(T * delegate) : _delegate(delegate) { + } + T *delegate() { return _delegate; } +}; + +template struct +rust_proxy : public rust_proxy_delegate, + public dom_owned > { +public: + rust_dom *dom; + rust_proxy(rust_dom *dom, T *delegate) : + rust_proxy_delegate (delegate), + dom(dom) { + delegate->ref(); + } +}; + +#endif /* RUST_PROXY_H */ -- cgit v1.2.3