if (itsNatDoc.hasClientDocumentAttachedClient())
{
ClientDocumentAttachedClientImpl[] clientAttachList = itsNatDoc.getClientDocumentAttachedClientArray();
for(int j = 0; j < clientAttachList.length; j++)
{
ClientDocumentAttachedClientImpl clientDocAttached = clientAttachList[j];
ItsNatSessionImpl attachedSession = clientDocAttached.getItsNatSessionImpl();
if (attachedSession == this) continue; // No merece la pena, se procesar� despu�s
cleanExpiredClientDocumentAttachedClient(clientDocAttached,currentTime); // currentTime vale pero el maxInactiveInterval depende de la sesi�n
}
}
// Ya que estamos aprovechamos para limpiar los attached client excedentes
// As� eliminamos los clientes attached excedentes de los documentos
// guardados en esta sesi�n est�n expirados o no (cada sesi�n har� lo suyo aunque sean clientes en diferentes sesiones)
// obviamente eliminaremos primero los que no han sido tocados durante m�s tiempo
cleanExcessClientDocumentAttachedClients(itsNatDoc);
}
}
}
}
// Eliminamos los ClientDocument observadores que pueden estar zombies
// porque el navegador no ha notificado que se cerr� la ventana.
// Esta limpieza es redundante (pero necesaria) pues
// esta impieza ya la hace el cliente propietario del documento (antes de llegar aqu�).
// De hecho el propietario no hace la limpieza de sus auto-observadores (misma sesi�n) pues
// ahora se hace aqu� (ver "if (attachedSession == this) continue;")
ClientDocumentAttachedClientImpl[] clientAttachedList = getClientDocumentAttachedClientArray();
if (clientAttachedList != null)
{
for(int i = 0; i < clientAttachedList.length; i++)
{
ClientDocumentAttachedClientImpl clientDoc = clientAttachedList[i];
cleanExpiredClientDocumentAttachedClient(clientDoc,currentTime);
}
}
}