public void clearCache(Reference rf) { Debug.Assert(rf.isIndirect()); if(!rf.isWellKnown()) { EndpointI[] endpoints = _table.removeAdapterEndpoints(rf.getAdapterId()); if(endpoints != null && rf.getInstance().traceLevels().location >= 2) { trace("removed endpoints from locator table\n", rf, endpoints); } } else { Reference r = _table.removeObjectReference(rf.getIdentity()); if(r != null) { if(!r.isIndirect()) { if(rf.getInstance().traceLevels().location >= 2) { trace("removed endpoints from locator table", rf, r.getEndpoints()); } } else if(!r.isWellKnown()) { clearCache(r); } } } }
public CollocatedRequestHandler(Reference @ref, Ice.ObjectAdapter adapter) { _reference = @ref; _dispatcher = _reference.getInstance().initializationData().dispatcher != null; _response = _reference.getMode() == Reference.Mode.ModeTwoway; _adapter = (Ice.ObjectAdapterI)adapter; _logger = _reference.getInstance().initializationData().logger; // Cached for better performance. _traceLevels = _reference.getInstance().traceLevels(); // Cached for better performance. _requestId = 0; }
public ConnectRequestHandler(Reference @ref, Ice.ObjectPrx proxy, Ice.ObjectDelM_ del) { _reference = @ref; _response = _reference.getMode() == Reference.Mode.ModeTwoway; _proxy = (Ice.ObjectPrxHelperBase)proxy; _delegate = del; _batchAutoFlush = @ref.getInstance().initializationData().properties.getPropertyAsIntWithDefault( "Ice.BatchAutoFlush", 1) > 0 ? true : false; _initialized = false; _flushing = false; _batchRequestInProgress = false; _batchRequestsSize = Protocol.requestBatchHdr.Length; _batchStream = new BasicStream(@ref.getInstance(), _batchAutoFlush); _updateRequestHandler = false; }
CollocatedRequestHandler(Reference @ref, Ice.ObjectAdapter adapter) { _reference = @ref; _dispatcher = _reference.getInstance().initializationData().dispatcher != null; _response = _reference.getMode() == Reference.Mode.ModeTwoway; _adapter = (Ice.ObjectAdapterI)adapter; _logger = _reference.getInstance().initializationData().logger; // Cached for better performance. _traceLevels = _reference.getInstance().traceLevels(); // Cached for better performance. _batchAutoFlushSize = @ref.getInstance().batchAutoFlushSize(); _requestId = 0; _batchStreamInUse = false; _batchRequestNum = 0; _batchStream = new BasicStream(@ref.getInstance(), Ice.Util.currentProtocolEncoding); }
getObjectRequest(Reference @ref) { if(@ref.getInstance().traceLevels().location >= 1) { Instance instance = @ref.getInstance(); System.Text.StringBuilder s = new System.Text.StringBuilder(); s.Append("searching for object by id\nobject = "); s.Append(instance.identityToString(@ref.getIdentity())); instance.initializationData().logger.trace(instance.traceLevels().locationCat, s.ToString()); } lock(this) { Request request; if(_objectRequests.TryGetValue(@ref.getIdentity(), out request)) { return request; } request = new ObjectRequest(this, @ref); _objectRequests.Add(@ref.getIdentity(), request); return request; } }
getAdapterRequest(Reference @ref) { if(@ref.getInstance().traceLevels().location >= 1) { Instance instance = @ref.getInstance(); System.Text.StringBuilder s = new System.Text.StringBuilder(); s.Append("searching for adapter by id\nadapter = "); s.Append(@ref.getAdapterId()); instance.initializationData().logger.trace(instance.traceLevels().locationCat, s.ToString()); } lock(this) { Request request; if(_adapterRequests.TryGetValue(@ref.getAdapterId(), out request)) { return request; } request = new AdapterRequest(this, @ref); _adapterRequests.Add(@ref.getAdapterId(), request); return request; } }
private void getEndpointsTrace(Reference @ref, EndpointI[] endpoints, bool cached) { if(endpoints != null && endpoints.Length > 0) { if(cached) { trace("found endpoints in locator table", @ref, endpoints); } else { trace("retrieved endpoints from locator, adding to locator table", @ref, endpoints); } } else { Instance instance = @ref.getInstance(); System.Text.StringBuilder s = new System.Text.StringBuilder(); s.Append("no endpoints configured for "); if(@ref.getAdapterId().Length > 0) { s.Append("adapter\n"); s.Append("adapter = " + @ref.getAdapterId()); } else { s.Append("object\n"); s.Append("object = " + instance.identityToString(@ref.getIdentity())); } instance.initializationData().logger.trace(instance.traceLevels().locationCat, s.ToString()); } }
private void getEndpointsException(Reference @ref, System.Exception exc) { try { throw exc; } catch(Ice.AdapterNotFoundException ex) { Instance instance = @ref.getInstance(); if(instance.traceLevels().location >= 1) { System.Text.StringBuilder s = new System.Text.StringBuilder(); s.Append("adapter not found\n"); s.Append("adapter = " + @ref.getAdapterId()); instance.initializationData().logger.trace(instance.traceLevels().locationCat, s.ToString()); } Ice.NotRegisteredException e = new Ice.NotRegisteredException(ex); e.kindOfObject = "object adapter"; e.id = @ref.getAdapterId(); throw e; } catch(Ice.ObjectNotFoundException ex) { Instance instance = @ref.getInstance(); if(instance.traceLevels().location >= 1) { System.Text.StringBuilder s = new System.Text.StringBuilder(); s.Append("object not found\n"); s.Append("object = " + instance.identityToString(@ref.getIdentity())); instance.initializationData().logger.trace(instance.traceLevels().locationCat, s.ToString()); } Ice.NotRegisteredException e = new Ice.NotRegisteredException(ex); e.kindOfObject = "object"; e.id = instance.identityToString(@ref.getIdentity()); throw e; } catch(Ice.NotRegisteredException) { throw; } catch(Ice.LocalException ex) { Instance instance = @ref.getInstance(); if(instance.traceLevels().location >= 1) { System.Text.StringBuilder s = new System.Text.StringBuilder(); s.Append("couldn't contact the locator to retrieve adapter endpoints\n"); if(@ref.getAdapterId().Length > 0) { s.Append("adapter = " + @ref.getAdapterId() + "\n"); } else { s.Append("object = " + instance.identityToString(@ref.getIdentity()) + "\n"); } s.Append("reason = " + ex); instance.initializationData().logger.trace(instance.traceLevels().locationCat, s.ToString()); } throw; } catch(System.Exception) { Debug.Assert(false); } }
private void trace(string msg, Reference r, EndpointI[] endpoints) { System.Text.StringBuilder s = new System.Text.StringBuilder(); s.Append(msg + "\n"); if(r.getAdapterId().Length > 0) { s.Append("adapter = " + r.getAdapterId() + "\n"); } else { s.Append("object = " + r.getInstance().identityToString(r.getIdentity()) + "\n"); } s.Append("endpoints = "); int sz = endpoints.Length; for (int i = 0; i < sz; i++) { s.Append(endpoints[i].ToString()); if(i + 1 < sz) { s.Append(":"); } } r.getInstance().initializationData().logger.trace(r.getInstance().traceLevels().locationCat, s.ToString()); }
getEndpoints(Reference @ref, Reference wellKnownRef, int ttl, GetEndpointsCallback callback) { Debug.Assert(@ref.isIndirect()); EndpointI[] endpoints = null; bool cached = false; if([email protected]()) { endpoints = _table.getAdapterEndpoints(@ref.getAdapterId(), ttl, out cached); if(!cached) { if(_background && endpoints != null) { getAdapterRequest(@ref).addCallback(@ref, wellKnownRef, ttl, null); } else { getAdapterRequest(@ref).addCallback(@ref, wellKnownRef, ttl, callback); return; } } } else { Reference r = _table.getObjectReference(@ref.getIdentity(), ttl, out cached); if(!cached) { if(_background && r != null) { getObjectRequest(@ref).addCallback(@ref, null, ttl, null); } else { getObjectRequest(@ref).addCallback(@ref, null, ttl, callback); return; } } if(!r.isIndirect()) { endpoints = r.getEndpoints(); } else if(!r.isWellKnown()) { getEndpoints(r, @ref, ttl, callback); return; } } Debug.Assert(endpoints != null); if(@ref.getInstance().traceLevels().location >= 1) { getEndpointsTrace(@ref, endpoints, true); } if(callback != null) { callback.setEndpoints(endpoints, true); } }
public ConnectRequestHandler(Reference @ref, Ice.ObjectPrx proxy) { _reference = @ref; _connect = true; _response = _reference.getMode() == Reference.Mode.ModeTwoway; _proxy = (Ice.ObjectPrxHelperBase)proxy; _initialized = false; _flushing = false; _batchRequestInProgress = false; _batchStream = new BasicStream(@ref.getInstance(), Ice.Util.currentProtocolEncoding); }