|
|
@@ -0,0 +1,35 @@
|
|
|
+package extension
|
|
|
+
|
|
|
+import (
|
|
|
+ "context"
|
|
|
+ "github.com/v2fly/v2ray-core/v4/features"
|
|
|
+)
|
|
|
+
|
|
|
+type PersistentStorageEngine interface {
|
|
|
+ features.Feature
|
|
|
+
|
|
|
+ PersistentStorageEngine()
|
|
|
+ Put(ctx context.Context, key []byte, value []byte) error
|
|
|
+ Get(ctx context.Context, key []byte) ([]byte, error)
|
|
|
+ List(ctx context.Context, keyPrefix []byte) ([][]byte, error)
|
|
|
+}
|
|
|
+
|
|
|
+type ScopedPersistentStorage interface {
|
|
|
+ ScopedPersistentStorageEngine()
|
|
|
+
|
|
|
+ Put(ctx context.Context, key []byte, value []byte) error
|
|
|
+ Get(ctx context.Context, key []byte) ([]byte, error)
|
|
|
+ List(ctx context.Context, keyPrefix []byte) ([][]byte, error)
|
|
|
+
|
|
|
+ ClearIfCharacteristicMismatch(ctx context.Context, characteristic []byte) error
|
|
|
+ NarrowScope(ctx context.Context, key []byte) (ScopedPersistentStorage, error)
|
|
|
+}
|
|
|
+
|
|
|
+type ScopedTransientStorage interface {
|
|
|
+ ScopedTransientStorage()
|
|
|
+ Put(ctx context.Context, key []byte, value interface{}) error
|
|
|
+ Get(ctx context.Context, key []byte) (interface{}, error)
|
|
|
+ List(ctx context.Context, keyPrefix []byte) ([][]byte, error)
|
|
|
+ Clear(ctx context.Context)
|
|
|
+ NarrowScope(ctx context.Context, key []byte) (ScopedPersistentStorage, error)
|
|
|
+}
|