1/*-
2 * See the file LICENSE for redistribution information.
3 *
4 * Copyright (c) 2009 Oracle.  All rights reserved.
5 *
6 */
7using System;
8using System.Collections.Generic;
9using System.Text;
10using BerkeleyDB.Internal;
11
12namespace BerkeleyDB {
13    internal class LockOperation {
14        internal static LockOperation DUMP = new LockOperation(db_lockop_t.DB_LOCK_DUMP);
15        internal static LockOperation GET = new LockOperation(db_lockop_t.DB_LOCK_GET);
16        internal static LockOperation GET_TIMEOUT = new LockOperation(db_lockop_t.DB_LOCK_GET_TIMEOUT);
17        internal static LockOperation INHERIT = new LockOperation(db_lockop_t.DB_LOCK_INHERIT);
18        internal static LockOperation PUT = new LockOperation(db_lockop_t.DB_LOCK_PUT);
19        internal static LockOperation PUT_ALL = new LockOperation(db_lockop_t.DB_LOCK_PUT_ALL);
20        internal static LockOperation PUT_OBJ = new LockOperation(db_lockop_t.DB_LOCK_PUT_OBJ);
21        internal static LockOperation PUT_READ = new LockOperation(db_lockop_t.DB_LOCK_PUT_READ);
22        internal static LockOperation TIMEOUT = new LockOperation(db_lockop_t.DB_LOCK_TIMEOUT);
23        internal static LockOperation TRADE = new LockOperation(db_lockop_t.DB_LOCK_TRADE);
24        internal static LockOperation UPGRADE_WRITE = new LockOperation(db_lockop_t.DB_LOCK_UPGRADE_WRITE);
25
26        private db_lockop_t op;
27        private LockOperation(db_lockop_t o) {
28            op = o;
29        }
30        static internal db_lockop_t GetOperation(LockOperation lo) {
31            return lo.op;
32        }
33
34        static internal LockOperation GetLockOperation(db_lockop_t o) {
35            switch (o) {
36                case db_lockop_t.DB_LOCK_DUMP:
37                    return DUMP;
38                case db_lockop_t.DB_LOCK_GET:
39                    return GET;
40                case db_lockop_t.DB_LOCK_GET_TIMEOUT:
41                    return GET_TIMEOUT;
42                case db_lockop_t.DB_LOCK_INHERIT:
43                    return INHERIT;
44                case db_lockop_t.DB_LOCK_PUT:
45                    return PUT;
46                case db_lockop_t.DB_LOCK_PUT_ALL:
47                    return PUT_ALL;
48                case db_lockop_t.DB_LOCK_PUT_OBJ:
49                    return PUT_OBJ;
50                case db_lockop_t.DB_LOCK_PUT_READ:
51                    return PUT_READ;
52                case db_lockop_t.DB_LOCK_TIMEOUT:
53                    return TIMEOUT;
54                case db_lockop_t.DB_LOCK_TRADE:
55                    return TRADE;
56                case db_lockop_t.DB_LOCK_UPGRADE_WRITE:
57                    return UPGRADE_WRITE;
58            }
59            throw new ArgumentException("Unknown db_lockop_t value.");
60        }
61    }
62}
63