예제 #1
0
        public static BDbcMethods GetMethods(BerkeleyDbType dbType)
        {
            BDbcMethods methods = GetMethodsInternal(dbType);

            if (methods == null)
            {
                throw new InvalidOperationException("must call DbcMethods.Create");
            }
            return(methods);
        }
예제 #2
0
        private static BDbcMethods CreateMethods(BerkeleyDbType dbType, IntPtr pdbc, BDbOffsetOf offsetOf)
        {
            BDbcMethods dbcMethods = GetMethodsInternal(dbType);

            if (dbcMethods == null)
            {
                lock (typeof(BDbcMethods))
                {
                    dbcMethods = GetMethodsInternal(dbType);
                    if (dbcMethods == null)
                    {
                        dbcMethods = new BDbcMethods(pdbc, offsetOf, dbType);
                        switch (dbType)
                        {
                        case BerkeleyDbType.DB_BTREE:
                            _btree = dbcMethods;
                            break;

                        case BerkeleyDbType.DB_HASH:
                            _hash = dbcMethods;
                            break;

                        case BerkeleyDbType.DB_RECNO:
                            _recno = dbcMethods;
                            break;

                        case BerkeleyDbType.DB_QUEUE:
                            _queue = dbcMethods;
                            break;

                        case BerkeleyDbType.DB_UNKNOWN:
                            _unknown = dbcMethods;
                            break;

                        case BerkeleyDbType.DB_HEAP:
                            _heap = dbcMethods;
                            break;
                        }
                    }
                }
            }
            return(dbcMethods);
        }
예제 #3
0
 private static BDbcMethods CreateMethods(BerkeleyDbType dbType, IntPtr pdbc, BDbOffsetOf offsetOf)
 {
     BDbcMethods dbcMethods = GetMethodsInternal(dbType);
     if (dbcMethods == null)
     {
         lock (typeof(BDbcMethods))
         {
             dbcMethods = GetMethodsInternal(dbType);
             if (dbcMethods == null)
             {
                 dbcMethods = new BDbcMethods(pdbc, offsetOf, dbType);
                 switch (dbType)
                 {
                     case BerkeleyDbType.DB_BTREE:
                         _btree = dbcMethods;
                         break;
                     case BerkeleyDbType.DB_HASH:
                         _hash = dbcMethods;
                         break;
                     case BerkeleyDbType.DB_RECNO:
                         _recno = dbcMethods;
                         break;
                     case BerkeleyDbType.DB_QUEUE:
                         _queue = dbcMethods;
                         break;
                     case BerkeleyDbType.DB_UNKNOWN:
                         _unknown = dbcMethods;
                         break;
                     case BerkeleyDbType.DB_HEAP:
                         _heap = dbcMethods;
                         break;
                 }
             }
         }
     }
     return dbcMethods;
 }
예제 #4
0
 public DbcHandle(IntPtr pdbc, BDbcMethods methods)
 {
     Handle = pdbc;
     Methods = methods;
 }