com.caucho.bam.actor
Class AbstractActorSender

java.lang.Object
  extended by com.caucho.bam.actor.AbstractActorSender
All Implemented Interfaces:
ActorSender, QuerySender
Direct Known Subclasses:
HmuxClient

public abstract class AbstractActorSender
extends java.lang.Object
implements ActorSender

ActorSender is a convenience API for sending messages to other Actors, which always using the actor's address as the "from" parameter and manages query ids.


Constructor Summary
AbstractActorSender()
           
 
Method Summary
 void close()
          Closes the sender.
abstract  Broker getBroker()
          The underlying broker.
 QueryManager getQueryManager()
           
 long getTimeout()
           
 boolean isClosed()
          Returns true if the sender is closed
 void message(java.lang.String to, java.io.Serializable payload)
          Sends a unidirectional message to an ActorHolder, addressed by the Actor's address.
 long nextQueryId()
          Returns the next query identifier.
 java.io.Serializable query(java.lang.String to, java.io.Serializable payload)
          Sends a query information call (get) to an actor, blocking until the actor responds with a result or an error.
 java.io.Serializable query(java.lang.String to, java.io.Serializable payload, long timeout)
          Sends a query information call to an actor, blocking until the actor responds with a result or an error.
 void query(java.lang.String to, java.io.Serializable payload, QueryCallback callback)
          Sends a query information call (get) to an actor, providing a callback to receive the result or error.
 QueryFuture queryFuture(java.lang.String to, java.io.Serializable payload, long timeout)
          Sends a query information call to an actor, blocking until the actor responds with a result or an error.
 void setTimeout(long timeout)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface com.caucho.bam.query.QuerySender
getAddress
 

Constructor Detail

AbstractActorSender

public AbstractActorSender()
Method Detail

isClosed

public boolean isClosed()
Returns true if the sender is closed

Specified by:
isClosed in interface ActorSender

close

public void close()
Closes the sender.

Specified by:
close in interface ActorSender

getBroker

public abstract Broker getBroker()
The underlying broker.

Specified by:
getBroker in interface ActorSender
Specified by:
getBroker in interface QuerySender

getQueryManager

public QueryManager getQueryManager()
Specified by:
getQueryManager in interface QuerySender

getTimeout

public long getTimeout()

setTimeout

public void setTimeout(long timeout)

message

public void message(java.lang.String to,
                    java.io.Serializable payload)
Sends a unidirectional message to an ActorHolder, addressed by the Actor's address.

Specified by:
message in interface ActorSender
Specified by:
message in interface QuerySender
Parameters:
to - the target actor's address
payload - the message payload

nextQueryId

public long nextQueryId()
Returns the next query identifier.

Specified by:
nextQueryId in interface ActorSender

query

public java.io.Serializable query(java.lang.String to,
                                  java.io.Serializable payload)
Sends a query information call (get) to an actor, blocking until the actor responds with a result or an error. The target actor of a queryGet acts as a service and the caller acts as a client. Because BAM Actors are symmetrical, all Actors can act as services and clients for different RPC calls. The target actor MUST send a queryResult or queryError to the client using the same id, because RPC clients rely on a response.

Specified by:
query in interface ActorSender
Specified by:
query in interface QuerySender
Parameters:
to - the target actor's address
payload - the query payload

query

public java.io.Serializable query(java.lang.String to,
                                  java.io.Serializable payload,
                                  long timeout)
Sends a query information call to an actor, blocking until the actor responds with a result or an error. The target actor of a query acts as a service and the caller acts as a client. Because BAM Actors are symmetrical, all Actors can act as services and clients for different RPC calls. The target actor MUST send a queryResult or queryError to the client using the same id, because RPC clients rely on a response.

Specified by:
query in interface ActorSender
Specified by:
query in interface QuerySender
Parameters:
to - the target actor's address
payload - the query payload
timeout - time spent waiting for the query to return

queryFuture

public QueryFuture queryFuture(java.lang.String to,
                               java.io.Serializable payload,
                               long timeout)
Sends a query information call to an actor, blocking until the actor responds with a result or an error. The target actor of a query acts as a service and the caller acts as a client. Because BAM Actors are symmetrical, all Actors can act as services and clients for different RPC calls. The target actor MUST send a queryResult or queryError to the client using the same id, because RPC clients rely on a response.

Parameters:
to - the target actor's address
payload - the query payload
timeout - time spent waiting for the query to return

query

public void query(java.lang.String to,
                  java.io.Serializable payload,
                  QueryCallback callback)
Sends a query information call (get) to an actor, providing a callback to receive the result or error. The target actor of a queryGet acts as a service and the caller acts as a client. Because BAM Actors are symmetrical, all Actors can act as services and clients for different RPC calls. The target actor MUST send a queryResult or queryError to the client using the same id, because RPC clients rely on a response.

Specified by:
query in interface ActorSender
Specified by:
query in interface QuerySender
Parameters:
to - the target actor's address
payload - the query payload
callback - the application's callback for the result