1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
//
// 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 <tim@timcoleman.com>
//
// 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
}
}
|