OdbcReferenceCollection.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. //------------------------------------------------------------------------------
  2. // <copyright file="OdbcReferenceCollection.cs" company="Microsoft">
  3. // Copyright (c) Microsoft Corporation. All rights reserved.
  4. // </copyright>
  5. // <owner current="true" primary="true">[....]</owner>
  6. // <owner current="true" primary="false">[....]</owner>
  7. //------------------------------------------------------------------------------
  8. using System;
  9. using System.Data;
  10. using System.Data.Common;
  11. using System.Data.ProviderBase;
  12. using System.Diagnostics;
  13. namespace System.Data.Odbc {
  14. sealed internal class OdbcReferenceCollection : DbReferenceCollection {
  15. internal const int Closing = 0;
  16. internal const int Recover = 1;
  17. internal const int CommandTag = 1;
  18. override public void Add(object value, int tag) {
  19. base.AddItem(value, tag);
  20. }
  21. override protected void NotifyItem(int message, int tag, object value) {
  22. switch (message) {
  23. case Recover:
  24. if (CommandTag == tag) {
  25. ((OdbcCommand) value).RecoverFromConnection();
  26. }
  27. else {
  28. Debug.Assert(false, "shouldn't be here");
  29. }
  30. break;
  31. case Closing:
  32. if (CommandTag == tag) {
  33. ((OdbcCommand) value).CloseFromConnection();
  34. }
  35. else {
  36. Debug.Assert(false, "shouldn't be here");
  37. }
  38. break;
  39. default:
  40. Debug.Assert(false, "shouldn't be here");
  41. break;
  42. }
  43. }
  44. override public void Remove(object value) {
  45. base.RemoveItem(value);
  46. }
  47. }
  48. }