| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- //
- // OciSessionHandle.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 OciSessionHandle : OciHandle, IOciHandle, IDisposable
- {
- #region Fields
- OciErrorHandle errorHandle;
- OciServiceHandle serviceHandle;
- bool begun;
- string username;
- string password;
- #endregion // Fields
- #region Constructors
- public OciSessionHandle (OciEnvironmentHandle environment, IntPtr handle)
- : base (OciHandleType.Session, environment, handle)
- {
- begun = false;
- }
- #endregion // Constructors
- #region Properties
- public OciErrorHandle ErrorHandle {
- get { return errorHandle; }
- set { errorHandle = value; }
- }
- public OciServiceHandle Service {
- get { return serviceHandle; }
- set { serviceHandle = value; }
- }
- public string Username {
- get { return username; }
- set { username = value; }
- }
- public string Password {
- get { return password; }
- set { password = value; }
- }
- #endregion // Properties
- #region Methods
- [DllImport ("oci")]
- public static extern int OCISessionBegin (IntPtr svchp,
- IntPtr errhp,
- IntPtr usrhp,
- [MarshalAs (UnmanagedType.U4)] OciCredentialType credt,
- [MarshalAs (UnmanagedType.U4)] OciSessionMode mode);
- [DllImport ("oci")]
- public static extern int OCISessionEnd (IntPtr svchp,
- IntPtr errhp,
- IntPtr usrhp,
- uint mode);
- public bool Begin (OciCredentialType credentialType, OciSessionMode mode)
- {
- int status = 0;
- status = OciGlue.OCIAttrSetString (Handle,
- OciHandleType.Session,
- username,
- (uint) username.Length,
- OciAttributeType.Username,
- errorHandle.Handle);
- if (status != 0)
- return false;
- status = OciGlue.OCIAttrSetString (Handle,
- OciHandleType.Session,
- password,
- (uint) password.Length,
- OciAttributeType.Password,
- errorHandle.Handle);
- if (status != 0)
- return false;
- status = OCISessionBegin (Service.Handle,
- errorHandle.Handle,
- Handle,
- credentialType,
- mode);
- if (status != 0)
- return false;
- begun = true;
-
- return true;
- }
- public void Dispose ()
- {
- if (begun) {
- OCISessionEnd (Service.Handle,
- errorHandle.Handle,
- Handle,
- 0);
- }
- Environment.FreeHandle (this);
- }
- #endregion // Methods
- }
- }
|