Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
X
xxdk-wasm
Manage
Activity
Members
Labels
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Terraform modules
Analyze
Contributor analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
elixxir
xxdk-wasm
Merge requests
!115
added states table for large client storage
Code
Review changes
Check out branch
Download
Patches
Plain diff
Merged
added states table for large client storage
XX-4683/ClientStateDb
into
project/HavenBeta
Overview
1
Commits
14
Pipelines
0
Changes
16
1 unresolved thread
Hide all comments
Merged
Jake Taylor
requested to merge
XX-4683/ClientStateDb
into
project/HavenBeta
1 year ago
Overview
1
Commits
14
Pipelines
0
Changes
3
1 unresolved thread
Hide all comments
Expand
0
0
Merge request reports
Compare
version 3
version 13
0fc664d5
1 year ago
version 12
a0f25407
1 year ago
version 11
65e36832
1 year ago
version 10
508daad1
1 year ago
version 9
f7b8ea49
1 year ago
version 8
9c280c16
1 year ago
version 7
3cd9f1f7
1 year ago
version 6
b7319a2d
1 year ago
version 5
ff303dd9
1 year ago
version 4
ff303dd9
1 year ago
version 3
23d50606
1 year ago
version 2
23d50606
1 year ago
version 1
a7e1d817
1 year ago
project/HavenBeta (base)
and
version 4
latest version
a6b7b837
14 commits,
1 year ago
version 13
0fc664d5
12 commits,
1 year ago
version 12
a0f25407
11 commits,
1 year ago
version 11
65e36832
10 commits,
1 year ago
version 10
508daad1
9 commits,
1 year ago
version 9
f7b8ea49
8 commits,
1 year ago
version 8
9c280c16
7 commits,
1 year ago
version 7
3cd9f1f7
6 commits,
1 year ago
version 6
b7319a2d
5 commits,
1 year ago
version 5
ff303dd9
4 commits,
1 year ago
version 4
ff303dd9
11 commits,
1 year ago
version 3
23d50606
10 commits,
1 year ago
version 2
23d50606
5 commits,
1 year ago
version 1
a7e1d817
1 commit,
1 year ago
Show latest version
3 files
+
176
−
0
Inline
Compare changes
Side-by-side
Inline
Show whitespace changes
Show one file at a time
Files
3
Search (e.g. *.vue) (Ctrl+P)
indexedDb/impl/state/callbacks.go
0 → 100644
+
76
−
0
Options
////////////////////////////////////////////////////////////////////////////////
// Copyright © 2022 xx foundation //
// //
// Use of this source code is governed by a license that can be found in the //
// LICENSE file. //
////////////////////////////////////////////////////////////////////////////////
//go:build js && wasm
package
main
import
(
"encoding/json"
"github.com/pkg/errors"
"gitlab.com/elixxir/client/v4/storage/utility"
wDm
"gitlab.com/elixxir/xxdk-wasm/indexedDb/worker/dm"
stateWorker
"gitlab.com/elixxir/xxdk-wasm/indexedDb/worker/state"
"gitlab.com/elixxir/xxdk-wasm/worker"
)
// manager handles the message callbacks, which is used to
// send information between the model and the main thread.
type
manager
struct
{
wtm
*
worker
.
ThreadManager
model
utility
.
WebState
}
// registerCallbacks registers all the reception callbacks to manage messages
// from the main thread.
func
(
m
*
manager
)
registerCallbacks
()
{
m
.
wtm
.
RegisterCallback
(
stateWorker
.
NewStateTag
,
m
.
newStateCB
)
m
.
wtm
.
RegisterCallback
(
stateWorker
.
SetTag
,
m
.
setCB
)
m
.
wtm
.
RegisterCallback
(
stateWorker
.
GetTag
,
m
.
getCB
)
}
// newStateCB is the callback for NewState. Returns an empty
// slice on success or an error message on failure.
func
(
m
*
manager
)
newStateCB
(
data
[]
byte
)
([]
byte
,
error
)
{
var
msg
wDm
.
NewWASMEventModelMessage
err
:=
json
.
Unmarshal
(
data
,
&
msg
)
if
err
!=
nil
{
return
[]
byte
{},
errors
.
Errorf
(
"failed to JSON unmarshal %T from main thread: %+v"
,
msg
,
err
)
}
m
.
model
,
err
=
NewState
(
msg
.
DatabaseName
)
if
err
!=
nil
{
return
[]
byte
(
err
.
Error
()),
nil
}
return
[]
byte
{},
nil
}
// setCB is the callback for stateModel.Set.
// Returns nil on error or the resulting byte data on success.
func
(
m
*
manager
)
setCB
(
data
[]
byte
)
([]
byte
,
error
)
{
var
msg
stateWorker
.
TransferMessage
err
:=
json
.
Unmarshal
(
data
,
&
msg
)
if
err
!=
nil
{
return
nil
,
errors
.
Errorf
(
"failed to JSON unmarshal %T from main thread: %+v"
,
msg
,
err
)
}
return
nil
,
m
.
model
.
Set
(
msg
.
Key
,
msg
.
Value
)
}
// getCB is the callback for stateModel.Get.
// Returns nil on error or the resulting byte data on success.
func
(
m
*
manager
)
getCB
(
data
[]
byte
)
([]
byte
,
error
)
{
result
,
err
:=
m
.
model
.
Get
(
string
(
data
))
if
err
!=
nil
{
return
nil
,
err
}
return
json
.
Marshal
(
result
)
}
Loading