FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
lmdbjava/src/main/java/org/lmdbjava/UnsafeAccess.java at gh-267 · lmdbjava/lmdbjava · GitHub
Uh oh!
There was an error while loading.
Please reload this page
.
lmdbjava
/
lmdbjava
Public
Notifications
You must be signed in to change notification settings
Fork
126
Star
873
Code
Issues
8
Pull requests
6
Actions
Projects
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Issues
Pull requests
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
lmdbjava
/
src
/
main
/
java
/
org
/
lmdbjava
/
UnsafeAccess.java
Copy path
More file actions
More file actions
Latest commit
History
History
History
59 lines (50 loc) · 2 KB
Breadcrumbs
lmdbjava
/
src
/
main
/
java
/
org
/
lmdbjava
/
UnsafeAccess.java
Copy path
File metadata and controls
59 lines (50 loc) · 2 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
/*
* Copyright © 2016-2025 The LmdbJava Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org
.
lmdbjava
;
import
static
java
.
lang
.
Boolean
.
getBoolean
;
import
java
.
lang
.
reflect
.
Field
;
import
sun
.
misc
.
Unsafe
;
/** Provides access to Unsafe. */
final
class
UnsafeAccess
{
/** Java system property name that can be set to disable unsafe. */
public
static
final
String
DISABLE_UNSAFE_PROP
=
"lmdbjava.disable.unsafe"
;
/** Indicates whether unsafe use is allowed. */
public
static
final
boolean
ALLOW_UNSAFE
= !
getBoolean
(
DISABLE_UNSAFE_PROP
);
/**
* The actual unsafe. Guaranteed to be non-null if this class can access unsafe and {@link
* #ALLOW_UNSAFE} is true. In other words, this entire class will fail to initialize if unsafe is
* unavailable. This avoids callers from needing to deal with null checks.
*/
static
final
Unsafe
UNSAFE
;
/** Unsafe field name (used to reflectively obtain the unsafe instance). */
private
static
final
String
FIELD_NAME_THE_UNSAFE
=
"theUnsafe"
;
static
{
if
(!
ALLOW_UNSAFE
) {
throw
new
LmdbException
(
"Unsafe disabled by user"
);
}
try
{
final
Field
field
=
Unsafe
.
class
.
getDeclaredField
(
FIELD_NAME_THE_UNSAFE
);
field
.
setAccessible
(
true
);
UNSAFE
= (
Unsafe
)
field
.
get
(
null
);
}
catch
(
final
NoSuchFieldException
|
SecurityException
|
IllegalArgumentException
|
IllegalAccessException
e
) {
throw
new
LmdbException
(
"Unsafe unavailable"
,
e
);
}
}
private
UnsafeAccess
() {}
}
Back
|
FazBrowse Home
|
New Git URL