The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

POEx::WorkerPool::Role::WorkerPool - A role that provides common semantics for WorkerPools

VERSION

version 1.101610

PUBLIC_ATTRIBUTES

job_classes

 is: ro, isa: ArrayRef[ClassName], required: 1

In order for the serializer on the other side of the process boundary to rebless jobs on the other side, it needs to make sure that the classes are loaded.

This attribute is used to indicate which classes need to be loaded.

options

 is: ro, isa: HashRef

options is the same options that would be passed to Sessions. Setting trace to 1 will allow tracing for the Workers.

    POEx::WorkerPool->new(options => { trace => 1 });

queue_type

 is: ro, isa: enum([qw|round_robin fill_up|]), default: round_robin

This attribute specifies the queue type for the WorkerPool and changes how workers are pulled from the pool

max_workers

 is: ro, isa: Int, default: 5

This determines how many workers the Pool will spin up

current_worker_index

 is: rw, isa: ScalarRef

This stores the current index into workers. Dereference to manipulate the Int value.

workers

 is: ro, isa: ArrayRef[Worker]

This attribute holds all of the workers in the pool

max_jobs_per_worker

 is: ro, isa: Int, default: 5

This attribute let's the workers know how many jobs their queue can hold

PUBLIC_METHODS

incr_worker_index

 returns Int

This is a convenience method for incrementing the index and wrapping around when it exceeds max_workers

get_next_worker

 returns (DoesWorker)

This returns the next worker in the pool as determined by the queue_type attribute.

For round_robin, it will return the next immediate worker if isn't active. fill_up will continue to return the same worker until its job queue is full.

If it is unable to return a suitable worker (all of the workers are currently active or all of their job queues are full, etc), it will throw a POEx::WorkerPool::Error::NoAvailableWorkers exception.

enqueue_job

 (DoesJob $job) returns (SessionAlias)

This method grabs the next available worker, enqueues the job, starts the worker's queue processing and returns the worker's pubsub alias that can be used to subscribe to various events that the worker fires.

halt

This method will halt any active workers in the worker pool and force them to release resouces and clean up.

AUTHOR

  Nicholas R. Perez <nperez@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2010 by Infinity Interactive.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.