| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- //
- // OciServerHandle.cs
- //
- // Part of managed C#/.NET library System.Data.OracleClient.dll
- //
- // Part of the Mono class libraries at
- // mcs/class/System.Data.OracleClient/System.Data.OracleClient.Oci
- //
- // Assembly: System.Data.OracleClient.dll
- // Namespace: System.Data.OracleClient.Oci
- //
- // Author:
- // Tim Coleman <[email protected]>
- //
- // Copyright (C) Tim Coleman, 2003
- //
- using System;
- using System.Runtime.InteropServices;
- namespace System.Data.OracleClient.Oci {
- internal sealed class OciServerHandle : OciHandle, IDisposable
- {
- #region Fields
- bool disposed = false;
- bool attached = false;
- OciErrorHandle errorHandle;
- #endregion // Fields
- #region Constructors
- public OciServerHandle (OciHandle parent, IntPtr newHandle)
- : base (OciHandleType.Server, parent, newHandle)
- {
- }
- #endregion // Constructors
- #region Methods
- public bool Attach (string tnsname, OciErrorHandle error)
- {
- errorHandle = error;
- int status = OciCalls.OCIServerAttach (this, error, tnsname, tnsname.Length, 0);
- if (status != 0) {
- OciErrorInfo info = errorHandle.HandleError ();
- throw new OracleException (info.ErrorCode, info.ErrorMessage);
- }
- attached = true;
- return attached;
- }
- public void Detach (OciErrorHandle error)
- {
- if (!attached)
- return;
- int status = OciCalls.OCIServerDetach (this, error, 0);
- if (status != 0) {
- OciErrorInfo info = errorHandle.HandleError ();
- throw new OracleException (info.ErrorCode, info.ErrorMessage);
- }
- attached = false;
- }
- protected override void Dispose (bool disposing)
- {
- if (!disposed) {
- try {
- Detach (errorHandle);
- disposed = true;
- } finally {
- base.Dispose (disposing);
- }
- }
- }
- #endregion // Methods
- }
- }
|