Figure 6: The PickObject method is invoked by the interceptor in response to a locate request for an IProxy interface
CORBA::Object_ptr AWSLoadBalancing::pickObject( ) { VISMutex_var lock(m_loadBalancingMtx); CORBA::Object_var objVar = NULL; /* * Continue until an available object is found. */ while (objVar == NULL) { /* * Call the (virtual) method to select the * next object. Throws no exceptions * but returns a null on any error. */ objVar = selectObject( ); if (objVar == NULL) return NULL; /* * If the object does not exist, * remove it and select again. */ if (objVar->_non_existent()) { m_serverList.removeObject( objVar ); objVar = NULL; } } return CORBA::Object::_duplicate( objVar ); }