org.codehaus.gpars

groovyx.gpars.actor.impl
[Java] Class SequentialProcessingActor

java.lang.Object
  groovyx.gpars.serial.WithSerialId
      groovyx.gpars.actor.impl.MessageStream
          groovyx.gpars.actor.Actor
              groovyx.gpars.actor.impl.ReplyingMessageStream
                  groovyx.gpars.actor.impl.SequentialProcessingActor
All Implemented Interfaces:
java.lang.Runnable

@java.lang.SuppressWarnings*/
public abstract class SequentialProcessingActor
extends ReplyingMessageStream

Authors:
Alex Tkachman, Vaclav Pech


Nested Class Summary
private static class SequentialProcessingActor.Node

 
Field Summary
private static java.lang.String SHOULD_NOT_REACH_HERE

protected static int S_ACTIVE_MASK

Indicates whether the actor should terminate

protected static int S_FINISHED_MASK

protected static int S_FINISHING_MASK

protected static int S_NOT_STARTED

protected static int S_RUNNING

protected static int S_STOPPED

protected static int S_STOPPING

protected static int S_STOP_TERMINATE_MASK

protected static int S_TERMINATED

protected static int S_TERMINATING

private SequentialProcessingActor.Node inputQueue

private static java.util.concurrent.atomic.AtomicReferenceFieldUpdater inputQueueUpdater

private java.util.concurrent.atomic.AtomicBoolean ongoingThreadTermination

private SequentialProcessingActor.Node outputQueue

private static long serialVersionUID

protected int stopFlag

protected static java.util.concurrent.atomic.AtomicIntegerFieldUpdater stopFlagUpdater

private java.lang.Thread waitingThread

 
Fields inherited from class ReplyingMessageStream
sender, serialVersionUID
 
Fields inherited from class Actor
ACTOR_HAS_ALREADY_BEEN_STARTED, AFTER_START, CANNOT_SEND_REPLIES_NO_SENDER_HAS_BEEN_REGISTERED, EMPTY_ARGUMENTS, ON_DELIVERY_ERROR, RESPONDS_TO, START_MESSAGE, STOP_MESSAGE, TERMINATE_MESSAGE, TIMEOUT, TIMEOUT_MESSAGE, currentActorPerThread, currentThread, joinLatch, onStop, parallelGroup, serialVersionUID, timer
 
Fields inherited from class MessageStream
serialVersionUID
 
Fields inherited from class WithSerialId
serialHandle, serialVersionUID
 
Constructor Summary
protected SequentialProcessingActor()

Sets the actor's group.

 
Method Summary
protected void act()

private ActorMessage awaitNextMessage(long endTime)

protected void checkStopTerminate()

protected void handleTermination()

protected boolean hasBeenStopped()

boolean isActive()

protected ActorMessage pollMessage()

protected java.lang.Object receive()

protected java.lang.Object receive(long timeout, java.util.concurrent.TimeUnit units)

protected java.lang.Object receive(groovy.time.BaseDuration duration)

Removes the head of the message queue

protected java.lang.Object receiveImpl()

Retrieves a message from the message queue, waiting, if necessary, for a message to arrive.

protected java.lang.Object receiveImpl(long timeout, java.util.concurrent.TimeUnit units)

private ActorMessage retrieveNextMessage()

Transfers messages from the input queue into the output queue, reverting the order of the elements.

void run()

MessageStream send(java.lang.Object message)

void setParallelGroup(PGroup group)

Actor silentStart()

Starts the Actor.

SequentialProcessingActor start()

Send message to stop to the actor.

Actor stop()

Terminate the Actor.

protected ActorMessage sweepNextMessage()

protected ActorMessage takeMessage()

protected ActorMessage takeMessage(long timeout, java.util.concurrent.TimeUnit timeUnit)

Actor terminate()

private void throwIfNeeded(ActorMessage toProcess)

private void transferQueues()

Creates a new instance, sets the default actor group.

private static java.lang.Object unwrapMessage(java.lang.Object msg)

 
Methods inherited from class ReplyingMessageStream
getSender, reply, replyIfExists, setSender
 
Methods inherited from class Actor
callDynamic, createActorMessage, createRemoteHandle, deregisterCurrentActorWithThread, getJoinLatch, getParallelGroup, handleException, handleInterrupt, handleStart, handleTermination, handleTimeout, hasBeenStopped, isActive, isActorThread, join, join, join, join, onStop, registerCurrentActorWithThread, sendAndContinue, sendAndPromise, setParallelGroup, silentStart, start, stop, sweepNextMessage, sweepQueue, terminate, threadBoundActor
 
Methods inherited from class MessageStream
call, getRemoteClass, leftShift, reInterrupt, send, send, send, sendAndWait, sendAndWait, sendAndWait
 
Methods inherited from class WithSerialId
createRemoteHandle, getOrCreateSerialHandle, getRemoteClass, writeReplace
 

Field Detail

SHOULD_NOT_REACH_HERE

private static final java.lang.String SHOULD_NOT_REACH_HERE


S_ACTIVE_MASK

protected static final int S_ACTIVE_MASK
Indicates whether the actor should terminate


S_FINISHED_MASK

protected static final int S_FINISHED_MASK


S_FINISHING_MASK

protected static final int S_FINISHING_MASK


S_NOT_STARTED

protected static final int S_NOT_STARTED


S_RUNNING

protected static final int S_RUNNING


S_STOPPED

protected static final int S_STOPPED


S_STOPPING

protected static final int S_STOPPING


S_STOP_TERMINATE_MASK

protected static final int S_STOP_TERMINATE_MASK


S_TERMINATED

protected static final int S_TERMINATED


S_TERMINATING

protected static final int S_TERMINATING


inputQueue

@java.lang.SuppressWarningsprotected static final int S_ACTIVE_MASK = 1;
    protected static final int S_FINISHING_MASK = 2;
private SequentialProcessingActor.Node inputQueue


inputQueueUpdater

private static final java.util.concurrent.atomic.AtomicReferenceFieldUpdater inputQueueUpdater


ongoingThreadTermination

private final java.util.concurrent.atomic.AtomicBoolean ongoingThreadTermination


outputQueue

private SequentialProcessingActor.Node outputQueue


serialVersionUID

private static final long serialVersionUID


stopFlag

protected int stopFlag


stopFlagUpdater

protected static final java.util.concurrent.atomic.AtomicIntegerFieldUpdater stopFlagUpdater


waitingThread

private java.lang.Thread waitingThread


 
Constructor Detail

SequentialProcessingActor

protected SequentialProcessingActor()
Sets the actor's group. It can only be invoked before the actor is started.
Parameters:
group - new group


 
Method Detail

act

protected void act()


awaitNextMessage

private ActorMessage awaitNextMessage(long endTime)


checkStopTerminate

protected final void checkStopTerminate()


handleTermination

@java.lang.Override
protected void handleTermination()


hasBeenStopped

@java.lang.Overridesuper.handleTermination();
protected final boolean hasBeenStopped()


isActive

@java.lang.Overrideif (toProcess == TERMINATE_MESSAGE) {
public final boolean isActive()


pollMessage

protected final ActorMessage pollMessage()


receive

protected final java.lang.Object receive()


receive

protected final java.lang.Object receive(long timeout, java.util.concurrent.TimeUnit units)


receive

protected final java.lang.Object receive(groovy.time.BaseDuration duration)
Removes the head of the message queue
Returns:
The head message, or null, if the message queue is empty


receiveImpl

protected java.lang.Object receiveImpl()
Retrieves a message from the message queue, waiting, if necessary, for a message to arrive.
throws:
InterruptedException If the thread is interrupted during the wait. Should propagate up to stop the thread.
Returns:
The message retrieved from the queue, or null, if the timeout expires.


receiveImpl

protected java.lang.Object receiveImpl(long timeout, java.util.concurrent.TimeUnit units)


retrieveNextMessage

private ActorMessage retrieveNextMessage()
Transfers messages from the input queue into the output queue, reverting the order of the elements.


run

@java.lang.OverridestopFlag = S_STOPPING;
@java.lang.SuppressWarningsthrow STOP;
public void run()


send

@java.lang.Override}
public final MessageStream send(java.lang.Object message)


setParallelGroup

@java.lang.OverridetoAdd.next = prev;
public final void setParallelGroup(PGroup group)


silentStart

@java.lang.Overridereturn this;
public Actor silentStart()
Starts the Actor. No messages can be send or received before an Actor is started.
Returns:
this (the actor itself) to allow method chaining


start

@java.lang.Override
public final SequentialProcessingActor start()
Send message to stop to the actor. All messages in queue will be processed before stopped but no new messages will be accepted after that point
Returns:
this (the actor itself) to allow method chaining


stop

@java.lang.Overridewhile (true) {
public final Actor stop()
Terminate the Actor. The background thread will be interrupted, unprocessed messages will be passed to the afterStop method, if exists. Has no effect if the Actor is not started.
Returns:
this (the actor itself) to allow method chaining


sweepNextMessage

@java.lang.Override* normally by return or due to actor being stopped through the stop() method, which cancels the current
protected final ActorMessage sweepNextMessage()


takeMessage

protected final ActorMessage takeMessage()


takeMessage

protected ActorMessage takeMessage(long timeout, java.util.concurrent.TimeUnit timeUnit)


terminate

@java.lang.Override} else {
public final Actor terminate()


throwIfNeeded

private void throwIfNeeded(ActorMessage toProcess)


transferQueues

private void transferQueues()
Creates a new instance, sets the default actor group.


unwrapMessage

private static java.lang.Object unwrapMessage(java.lang.Object msg)


 

Copyright © 2008–2013 Václav Pech. All Rights Reserved.