protected void ProcessMessage (TdsPacketSubType subType) { GetSubPacketLength (); int number = comm.GetTdsInt (); byte state = comm.GetByte (); byte theClass = comm.GetByte (); string message; string server; string procedure; byte lineNumber; string source; bool isError = false; if (subType == TdsPacketSubType.EED) { isError = (theClass > 10); comm.Skip (comm.GetByte ()); // SQL State comm.Skip (1); // Status comm.Skip (2); // TranState } else isError = (subType == TdsPacketSubType.Error); message = comm.GetString (comm.GetTdsShort ()); server = comm.GetString (comm.GetByte ()); procedure = comm.GetString (comm.GetByte ()); lineNumber = comm.GetByte (); comm.Skip (1); source = String.Empty; // FIXME if (isError) OnTdsErrorMessage (CreateTdsErrorMessageEvent (theClass, lineNumber, message, number, procedure, server, source, state)); else messages.Add (new TdsInternalError (theClass, lineNumber, message, number, procedure, server, source, state)); }
protected void ProcessEndToken (TdsPacketSubType type) { byte status = Comm.GetByte (); Comm.Skip (1); byte op = comm.GetByte (); Comm.Skip (1); int rowCount = comm.GetTdsInt (); bool validRowCount = IsValidRowCount (status,op); moreResults = ((status & 0x01) != 0); bool cancelled = ((status & 0x20) != 0); switch (type) { case TdsPacketSubType.DoneProc: doneProc = true; goto case TdsPacketSubType.Done; case TdsPacketSubType.Done: case TdsPacketSubType.DoneInProc: if (validRowCount) { if (recordsAffected == -1) recordsAffected = rowCount; else recordsAffected += rowCount; } break; } if (moreResults) queryInProgress = false; if (cancelled) cancelsProcessed += 1; if (messages.Count > 0 && !moreResults) OnTdsInfoMessage (CreateTdsInfoMessageEvent (messages)); }