|
Siena (v.1.5.5) API documentation | |||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectsiena.ThinClient
public class ThinClient
thin interface to the Siena event notification service.
ThinClient
does not provide an event notification
service by itself, but rather functions as a connection to an
external Siena server. Therefore, a ThinClient
object must be configured (constructed) with the handler of its
external Siena server.
In the simplest case, a ThinClient
can be used only to
publish notifications. For example:
ThinClient siena;
siena = new ThinClient("ka:siena.dot.org:2345");
Notification n = new Notification();
n.putAttribute("name", "Antonio");
siena.publish(n);
ThinClient
implements the Siena
interface, so
it can also be used to subscribe and unsubscribe.
ThinClient
uses a PacketReceiver
to receive
notifications from the server.
HierarchicalDispatcher
,
Siena
,
PacketReceiver
Field Summary | |
---|---|
int |
ReceiverThreads
number of threads handling external packets. |
Constructor Summary | |
---|---|
ThinClient(java.lang.String server)
creates a thin client connected to a Siena server. |
|
ThinClient(java.lang.String server,
java.lang.String id)
creates a thin client connected to a given Siena server, with the given Siena identity. |
Method Summary | |
---|---|
void |
advertise(Filter f,
java.lang.String id)
advertises a set of notifications. |
java.lang.String |
getIdentity()
returns the identity of this client. |
java.lang.String |
getServer()
returns the handler of the Siena server associated with this Siena interface. |
void |
publish(Notification n)
publish a notification. |
void |
resume(Notifiable n)
resumes the delivery of notifications for a subscriber. |
void |
run()
|
static void |
setDefaultPacketSenderFactory(PacketSenderFactory f)
default packet-sender factory for ThinClient interfaces every new ThinClient uses this factory to create its connection to its master server |
void |
setReceiver(PacketReceiver r)
sets the packet receiver for this server. |
void |
setReceiver(PacketReceiver r,
int threads)
sets the packet receiver for this server. |
void |
shutdown()
closes this dispatcher. |
void |
subscribe(Filter f,
Notifiable n)
subscribes for events matching Filter f. |
void |
subscribe(Pattern p,
Notifiable n)
subscribes for sequences of events matching pattern p. |
void |
suspend(Notifiable n)
suspends the delivery of notifications for a subscriber. |
void |
unadvertise(Filter f,
java.lang.String id)
cancel previous advertisements. |
void |
unadvertise(java.lang.String id)
cancel all previous advertisements for object id. |
void |
unsubscribe(Filter f,
Notifiable n)
cancels the subscriptions, posted by n, whose filter f' is covered by filter f. |
void |
unsubscribe(Notifiable n)
cancels all the subscriptions posted by n. |
void |
unsubscribe(Pattern p,
Notifiable n)
cancels the subscriptions, posted by n, whose pattern p' is covered by pattern p. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public int ReceiverThreads
ReceiverThreads
is 4. This
value is used as the default number of receiver threads.
setReceiver(PacketReceiver)
Constructor Detail |
---|
public ThinClient(java.lang.String server) throws InvalidSenderException
server
- the uri of the server to connect to (e.g.,
"ka:host.domain.net:7654")
InvalidSenderException
public ThinClient(java.lang.String server, java.lang.String id) throws InvalidSenderException
HierarchicalDispatcher.HierarchicalDispatcher(String)
for
more information
server
- the uri of the server to connect to (e.g.,
"ka:host.domain.net:7654")id
- the identity of this client. Note that it is
necessary that Siena identities be unique within a Siena
network. Here the client is responsible to make sure that the
given identity does not conflicts with others.
InvalidSenderException
Method Detail |
---|
public static void setDefaultPacketSenderFactory(PacketSenderFactory f)
public java.lang.String getIdentity()
public void setReceiver(PacketReceiver r)
setReceiver
will shut down any
previously activated receiver for this dispatcher. This
method does not guarantee a transactional switch to a new
receiver. This means that some requests might get lost while
the server has closed the old port and before it reopens the
new port.
This method simply calls setReceiver(PacketReceiver,
int)
using ReceiverThreads
as a default value.
r
- is the receivershutdown()
,
setReceiver(PacketReceiver, int)
public void setReceiver(PacketReceiver r, int threads)
setReceiver
will shut down any
previously activated receiver for this dispatcher. This
method does not guarantee a transactional switch to a new
receiver. This means that some requests might get lost while
the server has closed the old port and before it reopens the
new port.
r
- is the receiverthreads
- is the number of threads associated with the
receiver, and therefore to the whole server.shutdown()
public void run()
run
in interface java.lang.Runnable
public void suspend(Notifiable n) throws SienaException
resume(Notifiable)
).
suspend
in interface Siena
n
- subscriber to be suspended
SienaException
resume(Notifiable)
public void resume(Notifiable n) throws SienaException
resume
in interface Siena
n
- subscriber to be resumed
SienaException
suspend(Notifiable)
public java.lang.String getServer()
ThinClient(String)
public void publish(Notification n) throws SienaException
Siena
publish
in interface Siena
n
- The notification to publish.
SienaException
Notification
public void subscribe(Filter f, Notifiable n) throws SienaException
Siena
Notice that given the distributed nature of some implementations of Siena, there exist race conditions that might affect the semantics of subscriptions. Specifically, a subscriber might miss some notifications published before (or while) the subscription is processed by Siena.
subscribe
in interface Siena
f
- is the subscriptionn
- is the subscriber
SienaException
Siena.unsubscribe(siena.Filter, siena.Notifiable)
public void subscribe(Pattern p, Notifiable n) throws SienaException
Siena
Notice that given the distributed nature of some implementations of Siena interface, there exist race conditions that might affect the semantics of subscriptions. A subscriber might miss some notifications published before or while the subscription is processed by Siena.
Also, keep in mind that the current implementation of Siena does not enforce any temporal order for the delivery of notifications. This limitation might affect the recognition of patterns. For example, two notifications x and y, generated at time tx and ty respectively, with tx < ty, in that order matching a pattern P=(fx fy), might in fact reach the subscriber at times Tx and Ty, with Tx > Ty, in which case pattern P would not be matched.
subscribe
in interface Siena
p
- is the subscription patternn
- is the subscriber
SienaException
Siena.unsubscribe(siena.Filter, siena.Notifiable)
public void unsubscribe(Filter f, Notifiable n) throws SienaException
Siena
Unsubscriptions might incurr in the same kind of race conditions as subscriptions. Siena will stop sending notifications to the subscriber only after it has completed the processing of the unsubscriptions. Due to the distributed nature of some implementations of Siena, this might result in some additional ``unsolicited'' notifications.
unsubscribe
in interface Siena
n
- is the subscriber
SienaException
Siena.subscribe(siena.Filter, siena.Notifiable)
public void unsubscribe(Pattern p, Notifiable n) throws SienaException
Siena
Unsubscriptions might incurr in the same kind of race conditions as subscriptions. Siena will stop sending notifications to the subscriber only after it has completed the processing of the unsubscription. Due to the distributed nature of some implementations of Siena, this might result in some additional ``unsolicited'' notifications.
unsubscribe
in interface Siena
n
- is the subscriber
SienaException
Siena.subscribe(siena.Filter, siena.Notifiable)
public void shutdown()
shutdown
in interface Siena
setReceiver(PacketReceiver)
public void advertise(Filter f, java.lang.String id) throws SienaException
Siena
advertise
in interface Siena
f
- advertisement filter. Notice that this filter is
interpreted differently than a subscription filter.
For more information, consult the Siena
documentation.id
- identifier of the publisher
SienaException
Siena.unadvertise(siena.Filter, java.lang.String)
public void unadvertise(Filter f, java.lang.String id) throws SienaException
Siena
unadvertise
in interface Siena
f
- advertisement filter. Notice that this filter is
interpreted differently than a subscription filter.
For more information, consult the Siena documentation.id
- identifier of the publisher
SienaException
Siena.unadvertise(siena.Filter, java.lang.String)
public void unadvertise(java.lang.String id) throws SienaException
Siena
unadvertise
in interface Siena
id
- identifier of the publisher
SienaException
Siena.unadvertise(siena.Filter, java.lang.String)
public void unsubscribe(Notifiable n) throws SienaException
Siena
unsubscribe
in interface Siena
n
- is the subscriber
SienaException
Siena.subscribe(siena.Filter, siena.Notifiable)
|
Siena (v.1.5.5) API documentation | |||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |