summaryrefslogtreecommitdiff
path: root/lib/Thread/Task/Role/Conduit.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Thread/Task/Role/Conduit.pm')
-rw-r--r--lib/Thread/Task/Role/Conduit.pm30
1 files changed, 30 insertions, 0 deletions
diff --git a/lib/Thread/Task/Role/Conduit.pm b/lib/Thread/Task/Role/Conduit.pm
new file mode 100644
index 0000000..1ffbd04
--- /dev/null
+++ b/lib/Thread/Task/Role/Conduit.pm
@@ -0,0 +1,30 @@
+use 5.008003;
+use MooseX::Declare;
+
+role Thread::Task::Role::Conduit {
+ use MooseX::Types::Moose qw(ClassName);
+ use Thread::Task::Types qw(Manager_T);
+ use Carp;
+
+ requires 'signal';
+
+ has manager => (
+ isa => Manager_T,
+ is => 'ro',
+ required => 0,
+ writer => '_set_manager',
+ predicate => '_has_manager',
+ );
+
+ method conduit_init(Manager_T $manager) {
+ $self->_set_manager($manager);
+ }
+
+ before signal {
+ if (!$self->_has_manager) {
+ croak "Can't signal without a manager";
+ }
+ }
+}
+
+1;