public virtual void endReadEncaps() { Debug.Assert(_readEncapsStack != null); if(_buf.b.position() != _readEncapsStack.start + _readEncapsStack.sz) { if(_buf.b.position() + 1 != _readEncapsStack.start + _readEncapsStack.sz) { throw new Ice.EncapsulationException(); } // // Ice version < 3.3 had a bug where user exceptions with // class members could be encoded with a trailing byte // when dispatched with AMD. So we tolerate an extra byte // in the encapsulation. // try { _buf.b.get(); } catch(InvalidOperationException ex) { throw new Ice.UnmarshalOutOfBoundsException(ex); } } ReadEncaps curr = _readEncapsStack; _readEncapsStack = curr.next; curr.next = _readEncapsCache; _readEncapsCache = curr; _readEncapsCache.reset(); }
public virtual void clear() { if(_readEncapsStack != null) { Debug.Assert(_readEncapsStack.next == null); _readEncapsStack.next = _readEncapsCache; _readEncapsCache = _readEncapsStack; _readEncapsStack = null; _readEncapsCache.reset(); } if(_writeEncapsStack != null) { Debug.Assert(_writeEncapsStack.next == null); _writeEncapsStack.next = _writeEncapsCache; _writeEncapsCache = _writeEncapsStack; _writeEncapsStack = null; _writeEncapsCache.reset(); } _startSeq = -1; if(_objectList != null) { _objectList.Clear(); } _sliceObjects = true; }