Clients may not be online all the time, thus
we can not guarantee hat a client with a specific continuous
query will be available at the time that matching resources are
added to the network and relevant notifications are generated.
We cannot ignore such situations and allow the loss of relevant
notifications.
Assume that a client A is off-line when a notification
n matching its continuous query is generated and arrives
to its access point AP. AP checks if A is
on the active client list. If this is true, n is
forwarded to A or else n is stored in the
stored notifications directory of AP. Notification
n is delivered to A by AP next time A
connects to the network.
Additionally, when a client A requests a resource r,
but the resource owner client B is not on-line. As
described above, client A requests the address of B
from AP2 (the access point of B). In such a case,
client A may request a rendezvous with resource
r from AP2 with an arrange-rendezvous message
that contains the identifier of A, the identifier of B,
the address of AP and the path of r. When client
B reconnects, AP2 sends B a
rendezvous-request message that contains the path of r
the address of AP and the identifier of A. Then,
B sends a rendezvous-resource message to AP
that contains r and the identifier of A.
AP checks if client A is on-line and if it is AP
forwards the message to A or else resource r
stored in the rendezvous directory of AP and when
A reconnects, it receives a rendezvous notification from
AP.
The features of stored notifications and rendezvous take place
even if clients migrate to different access points. For example,
let us assume that client A has migrated to AP3.
The client program understands that it is connected to a
different access point AP3, so it requests from AP
any rendezvous or notifications with a request-stored-data
message and informs AP that it is connected to a
different access point. A receives the rendezvous
notifications and notifications and updates the variable
previous access point with the address of AP3. AP
deletes A form its client list, removes all resource
metadata of A from the local resource metadata database
and removes the continuous queries of A from the
hierarchy. Finally, A sends to AP3 its resource
metadata and profiles. A complete example is shown in Figure
below
.
|