private ProcessSNIError ( System.Data.SqlClient.TdsParserStateObject stateObj ) : SqlError | ||
stateObj | System.Data.SqlClient.TdsParserStateObject | |
리턴 | SqlError |
internal TdsParserStateObject(TdsParser parser, SNIHandle physicalConnection, bool async) { // Construct a MARS session Debug.Assert(null != parser, "no parser?"); _parser = parser; SniContext = SniContext.Snix_GetMarsSession; Debug.Assert(null != _parser._physicalStateObj, "no physical session?"); Debug.Assert(null != _parser._physicalStateObj._inBuff, "no in buffer?"); Debug.Assert(null != _parser._physicalStateObj._outBuff, "no out buffer?"); Debug.Assert(_parser._physicalStateObj._outBuff.Length == _parser._physicalStateObj._inBuff.Length, "Unexpected unequal buffers."); // Determine packet size based on physical connection buffer lengths. SetPacketSize(_parser._physicalStateObj._outBuff.Length); SNINativeMethodWrapper.ConsumerInfo myInfo = CreateConsumerInfo(async); _sessionHandle = new SNIHandle(myInfo, physicalConnection); if (_sessionHandle.Status != TdsEnums.SNI_SUCCESS) { AddError(parser.ProcessSNIError(this)); ThrowExceptionAndWarning(); } // we post a callback that represents the call to dispose; once the // object is disposed, the next callback will cause the GC Handle to // be released. IncrementPendingCallbacks(); _lastSuccessfulIOTimer = parser._physicalStateObj._lastSuccessfulIOTimer; }
internal TdsParserStateObject(TdsParser parser, SNIHandle physicalConnection, bool async) { this._objectID = Interlocked.Increment(ref _objectTypeCount); this._owner = new WeakReference(null); this._inputHeaderLen = 8; this._outputHeaderLen = 8; this._outBytesUsed = 8; this._outputPacketNumber = 1; this._bTmp = new byte[12]; this._parser = parser; this.SniContext = System.Data.SqlClient.SniContext.Snix_GetMarsSession; this.SetPacketSize(this._parser._physicalStateObj._outBuff.Length); SNINativeMethodWrapper.ConsumerInfo myInfo = this.CreateConsumerInfo(async); this._sessionHandle = new SNIHandle(myInfo, "session:", physicalConnection); if (this._sessionHandle.Status != 0) { parser.Errors.Add(parser.ProcessSNIError(this)); parser.ThrowExceptionAndWarning(); } this.IncrementPendingCallbacks(); }