Skip to content
Snippets Groups Projects
Commit 32f2d7ae authored by Jono Wenger's avatar Jono Wenger
Browse files

Fix handler returns on error

parent 3da19905
No related branches found
No related tags found
2 merge requests!67fix for latest client release,!52XX-4382 / Move indexedDb databases to web workers
...@@ -27,6 +27,8 @@ import ( ...@@ -27,6 +27,8 @@ import (
"time" "time"
) )
var zeroUUID = []byte{0, 0, 0, 0, 0, 0, 0, 0}
// manager handles the event model and the message handler, which is used to // manager handles the event model and the message handler, which is used to
// send information between the event model and the main thread. // send information between the event model and the main thread.
type manager struct { type manager struct {
...@@ -49,13 +51,13 @@ func (m *manager) RegisterHandlers() { ...@@ -49,13 +51,13 @@ func (m *manager) RegisterHandlers() {
m.mh.RegisterHandler(worker.DeleteMessageTag, m.deleteMessageHandler) m.mh.RegisterHandler(worker.DeleteMessageTag, m.deleteMessageHandler)
} }
// newWASMEventModelHandler is the handler for NewWASMEventModel. Returns nil on // newWASMEventModelHandler is the handler for NewWASMEventModel. Returns an
// success or an error message on failure. // empty slice on success or an error message on failure.
func (m *manager) newWASMEventModelHandler(data []byte) ([]byte, error) { func (m *manager) newWASMEventModelHandler(data []byte) ([]byte, error) {
var msg mChannels.NewWASMEventModelMessage var msg mChannels.NewWASMEventModelMessage
err := json.Unmarshal(data, &msg) err := json.Unmarshal(data, &msg)
if err != nil { if err != nil {
return nil, errors.Errorf( return []byte{}, errors.Errorf(
"failed to JSON unmarshal %T from main thread: %+v", msg, err) "failed to JSON unmarshal %T from main thread: %+v", msg, err)
} }
...@@ -64,7 +66,7 @@ func (m *manager) newWASMEventModelHandler(data []byte) ([]byte, error) { ...@@ -64,7 +66,7 @@ func (m *manager) newWASMEventModelHandler(data []byte) ([]byte, error) {
encryption, err := cryptoChannel.NewCipherFromJSON( encryption, err := cryptoChannel.NewCipherFromJSON(
[]byte(msg.EncryptionJSON), rng.GetStream()) []byte(msg.EncryptionJSON), rng.GetStream())
if err != nil { if err != nil {
return nil, errors.Errorf( return []byte{}, errors.Errorf(
"failed to JSON unmarshal Cipher from main thread: %+v", err) "failed to JSON unmarshal Cipher from main thread: %+v", err)
} }
...@@ -73,7 +75,7 @@ func (m *manager) newWASMEventModelHandler(data []byte) ([]byte, error) { ...@@ -73,7 +75,7 @@ func (m *manager) newWASMEventModelHandler(data []byte) ([]byte, error) {
if err != nil { if err != nil {
return []byte(err.Error()), nil return []byte(err.Error()), nil
} }
return nil, nil return []byte{}, nil
} }
// messageReceivedCallback sends calls to the MessageReceivedCallback in the // messageReceivedCallback sends calls to the MessageReceivedCallback in the
...@@ -178,13 +180,13 @@ func (m *manager) leaveChannelHandler(data []byte) ([]byte, error) { ...@@ -178,13 +180,13 @@ func (m *manager) leaveChannelHandler(data []byte) ([]byte, error) {
return nil, nil return nil, nil
} }
// receiveMessageHandler is the handler for wasmModel.ReceiveMessage. Returns // receiveMessageHandler is the handler for wasmModel.ReceiveMessage. Returns a
// nil on error or the JSON marshalled UUID (uint64) on success. // UUID of 0 on error or the JSON marshalled UUID (uint64) on success.
func (m *manager) receiveMessageHandler(data []byte) ([]byte, error) { func (m *manager) receiveMessageHandler(data []byte) ([]byte, error) {
var msg channels.ModelMessage var msg channels.ModelMessage
err := json.Unmarshal(data, &msg) err := json.Unmarshal(data, &msg)
if err != nil { if err != nil {
return nil, errors.Errorf( return zeroUUID, errors.Errorf(
"failed to JSON unmarshal %T from main thread: %+v", msg, err) "failed to JSON unmarshal %T from main thread: %+v", msg, err)
} }
...@@ -195,18 +197,18 @@ func (m *manager) receiveMessageHandler(data []byte) ([]byte, error) { ...@@ -195,18 +197,18 @@ func (m *manager) receiveMessageHandler(data []byte) ([]byte, error) {
uuidData, err := json.Marshal(uuid) uuidData, err := json.Marshal(uuid)
if err != nil { if err != nil {
return nil, errors.Errorf("failed to JSON marshal UUID : %+v", err) return zeroUUID, errors.Errorf("failed to JSON marshal UUID : %+v", err)
} }
return uuidData, nil return uuidData, nil
} }
// receiveReplyHandler is the handler for wasmModel.ReceiveReply. Returns // receiveReplyHandler is the handler for wasmModel.ReceiveReply. Returns a UUID
// nil on error or the JSON marshalled UUID (uint64) on success. // of 0 on error or the JSON marshalled UUID (uint64) on success.
func (m *manager) receiveReplyHandler(data []byte) ([]byte, error) { func (m *manager) receiveReplyHandler(data []byte) ([]byte, error) {
var msg mChannels.ReceiveReplyMessage var msg mChannels.ReceiveReplyMessage
err := json.Unmarshal(data, &msg) err := json.Unmarshal(data, &msg)
if err != nil { if err != nil {
return nil, errors.Errorf( return zeroUUID, errors.Errorf(
"failed to JSON unmarshal %T from main thread: %+v", msg, err) "failed to JSON unmarshal %T from main thread: %+v", msg, err)
} }
...@@ -217,18 +219,18 @@ func (m *manager) receiveReplyHandler(data []byte) ([]byte, error) { ...@@ -217,18 +219,18 @@ func (m *manager) receiveReplyHandler(data []byte) ([]byte, error) {
uuidData, err := json.Marshal(uuid) uuidData, err := json.Marshal(uuid)
if err != nil { if err != nil {
return nil, errors.Errorf("failed to JSON marshal UUID : %+v", err) return zeroUUID, errors.Errorf("failed to JSON marshal UUID : %+v", err)
} }
return uuidData, nil return uuidData, nil
} }
// receiveReactionHandler is the handler for wasmModel.ReceiveReaction. Returns // receiveReactionHandler is the handler for wasmModel.ReceiveReaction. Returns
// nil on error or the JSON marshalled UUID (uint64) on success. // a UUID of 0 on error or the JSON marshalled UUID (uint64) on success.
func (m *manager) receiveReactionHandler(data []byte) ([]byte, error) { func (m *manager) receiveReactionHandler(data []byte) ([]byte, error) {
var msg mChannels.ReceiveReplyMessage var msg mChannels.ReceiveReplyMessage
err := json.Unmarshal(data, &msg) err := json.Unmarshal(data, &msg)
if err != nil { if err != nil {
return nil, errors.Errorf( return zeroUUID, errors.Errorf(
"failed to JSON unmarshal %T from main thread: %+v", msg, err) "failed to JSON unmarshal %T from main thread: %+v", msg, err)
} }
...@@ -239,7 +241,7 @@ func (m *manager) receiveReactionHandler(data []byte) ([]byte, error) { ...@@ -239,7 +241,7 @@ func (m *manager) receiveReactionHandler(data []byte) ([]byte, error) {
uuidData, err := json.Marshal(uuid) uuidData, err := json.Marshal(uuid)
if err != nil { if err != nil {
return nil, errors.Errorf("failed to JSON marshal UUID : %+v", err) return zeroUUID, errors.Errorf("failed to JSON marshal UUID : %+v", err)
} }
return uuidData, nil return uuidData, nil
} }
......
...@@ -61,8 +61,7 @@ func newWASMModel(databaseName string, encryption cryptoChannel.Cipher, ...@@ -61,8 +61,7 @@ func newWASMModel(databaseName string, encryption cryptoChannel.Cipher,
openRequest, err := idb.Global().Open(ctx, databaseName, currentVersion, openRequest, err := idb.Global().Open(ctx, databaseName, currentVersion,
func(db *idb.Database, oldVersion, newVersion uint) error { func(db *idb.Database, oldVersion, newVersion uint) error {
if oldVersion == newVersion { if oldVersion == newVersion {
jww.INFO.Printf("IndexDb version is current: v%d", jww.INFO.Printf("IndexDb version is current: v%d", newVersion)
newVersion)
return nil return nil
} }
...@@ -208,7 +207,7 @@ func RegisterDatabaseNameStore(m *manager) { ...@@ -208,7 +207,7 @@ func RegisterDatabaseNameStore(m *manager) {
return errors.New(string(response)) return errors.New(string(response))
} }
case <-time.After(indexedDbWorker.ResponseTimeout): case <-time.After(indexedDbWorker.ResponseTimeout):
return errors.Errorf("timed out after %s waiting for "+ return errors.Errorf("[WW] Timed out after %s waiting for "+
"response about storing the database name in local "+ "response about storing the database name in local "+
"storage in the main thread", indexedDbWorker.ResponseTimeout) "storage in the main thread", indexedDbWorker.ResponseTimeout)
} }
......
...@@ -11,15 +11,19 @@ package main ...@@ -11,15 +11,19 @@ package main
import ( import (
"fmt" "fmt"
jww "github.com/spf13/jwalterweatherman"
"gitlab.com/elixxir/xxdk-wasm/indexedDb" "gitlab.com/elixxir/xxdk-wasm/indexedDb"
) )
func main() { func main() {
fmt.Println("Starting xxDK WebAssembly Channels Database Worker.") fmt.Println("[WW] Starting xxDK WebAssembly Channels Database Worker.")
jww.SetStdoutThreshold(jww.LevelDebug)
jww.INFO.Print("[WW] Starting xxDK WebAssembly Channels Database Worker.")
m := &manager{mh: indexedDb.NewMessageHandler("ChannelsIndexedDbWorker")} m := &manager{mh: indexedDb.NewMessageHandler("ChannelsIndexedDbWorker")}
RegisterDatabaseNameStore(m) RegisterDatabaseNameStore(m)
m.RegisterHandlers() m.RegisterHandlers()
m.mh.SignalReady() m.mh.SignalReady()
<-make(chan bool) <-make(chan bool)
fmt.Println("[WW] Closing xxDK WebAssembly Channels Database Worker.")
} }
...@@ -25,6 +25,8 @@ import ( ...@@ -25,6 +25,8 @@ import (
"time" "time"
) )
var zeroUUID = []byte{0, 0, 0, 0, 0, 0, 0, 0}
// manager handles the event model and the message handler, which is used to // manager handles the event model and the message handler, which is used to
// send information between the event model and the main thread. // send information between the event model and the main thread.
type manager struct { type manager struct {
...@@ -43,13 +45,13 @@ func (m *manager) RegisterHandlers() { ...@@ -43,13 +45,13 @@ func (m *manager) RegisterHandlers() {
m.mh.RegisterHandler(worker.UpdateSentStatusTag, m.updateSentStatusHandler) m.mh.RegisterHandler(worker.UpdateSentStatusTag, m.updateSentStatusHandler)
} }
// newWASMEventModelHandler is the handler for NewWASMEventModel. Returns nil on // newWASMEventModelHandler is the handler for NewWASMEventModel. Returns an
// success or an error message on failure. // empty slice on success or an error message on failure.
func (m *manager) newWASMEventModelHandler(data []byte) ([]byte, error) { func (m *manager) newWASMEventModelHandler(data []byte) ([]byte, error) {
var msg mChannels.NewWASMEventModelMessage var msg mChannels.NewWASMEventModelMessage
err := json.Unmarshal(data, &msg) err := json.Unmarshal(data, &msg)
if err != nil { if err != nil {
return nil, errors.Errorf( return []byte{}, errors.Errorf(
"failed to JSON unmarshal %T from main thread: %+v", msg, err) "failed to JSON unmarshal %T from main thread: %+v", msg, err)
} }
...@@ -58,8 +60,8 @@ func (m *manager) newWASMEventModelHandler(data []byte) ([]byte, error) { ...@@ -58,8 +60,8 @@ func (m *manager) newWASMEventModelHandler(data []byte) ([]byte, error) {
encryption, err := cryptoChannel.NewCipherFromJSON( encryption, err := cryptoChannel.NewCipherFromJSON(
[]byte(msg.EncryptionJSON), rng.GetStream()) []byte(msg.EncryptionJSON), rng.GetStream())
if err != nil { if err != nil {
return nil, errors.Errorf("failed to JSON unmarshal channel cipher "+ return []byte{}, errors.Errorf("failed to JSON unmarshal channel "+
"from main thread: %+v", err) "cipher from main thread: %+v", err)
} }
m.model, err = NewWASMEventModel(msg.Path, encryption, m.model, err = NewWASMEventModel(msg.Path, encryption,
...@@ -67,7 +69,7 @@ func (m *manager) newWASMEventModelHandler(data []byte) ([]byte, error) { ...@@ -67,7 +69,7 @@ func (m *manager) newWASMEventModelHandler(data []byte) ([]byte, error) {
if err != nil { if err != nil {
return []byte(err.Error()), nil return []byte(err.Error()), nil
} }
return nil, nil return []byte{}, nil
} }
// messageReceivedCallback sends calls to the MessageReceivedCallback in the // messageReceivedCallback sends calls to the MessageReceivedCallback in the
...@@ -145,13 +147,13 @@ func (m *manager) storeEncryptionStatus( ...@@ -145,13 +147,13 @@ func (m *manager) storeEncryptionStatus(
return response.EncryptionStatus, nil return response.EncryptionStatus, nil
} }
// receiveHandler is the handler for wasmModel.Receive. Returns nil on error or // receiveHandler is the handler for wasmModel.Receive. Returns a UUID of 0 on
// the JSON marshalled UUID (uint64) on success. // error or the JSON marshalled UUID (uint64) on success.
func (m *manager) receiveHandler(data []byte) ([]byte, error) { func (m *manager) receiveHandler(data []byte) ([]byte, error) {
var msg mDm.TransferMessage var msg mDm.TransferMessage
err := json.Unmarshal(data, &msg) err := json.Unmarshal(data, &msg)
if err != nil { if err != nil {
return nil, errors.Errorf( return zeroUUID, errors.Errorf(
"failed to JSON unmarshal %T from main thread: %+v", msg, err) "failed to JSON unmarshal %T from main thread: %+v", msg, err)
} }
...@@ -161,18 +163,18 @@ func (m *manager) receiveHandler(data []byte) ([]byte, error) { ...@@ -161,18 +163,18 @@ func (m *manager) receiveHandler(data []byte) ([]byte, error) {
uuidData, err := json.Marshal(uuid) uuidData, err := json.Marshal(uuid)
if err != nil { if err != nil {
return nil, errors.Errorf("failed to JSON marshal UUID : %+v", err) return zeroUUID, errors.Errorf("failed to JSON marshal UUID : %+v", err)
} }
return uuidData, nil return uuidData, nil
} }
// receiveTextHandler is the handler for wasmModel.ReceiveText. Returns nil on // receiveTextHandler is the handler for wasmModel.ReceiveText. Returns a UUID
// error or the JSON marshalled UUID (uint64) on success. // of 0 on error or the JSON marshalled UUID (uint64) on success.
func (m *manager) receiveTextHandler(data []byte) ([]byte, error) { func (m *manager) receiveTextHandler(data []byte) ([]byte, error) {
var msg mDm.TransferMessage var msg mDm.TransferMessage
err := json.Unmarshal(data, &msg) err := json.Unmarshal(data, &msg)
if err != nil { if err != nil {
return nil, errors.Errorf( return []byte{}, errors.Errorf(
"failed to JSON unmarshal %T from main thread: %+v", msg, err) "failed to JSON unmarshal %T from main thread: %+v", msg, err)
} }
...@@ -182,19 +184,19 @@ func (m *manager) receiveTextHandler(data []byte) ([]byte, error) { ...@@ -182,19 +184,19 @@ func (m *manager) receiveTextHandler(data []byte) ([]byte, error) {
uuidData, err := json.Marshal(uuid) uuidData, err := json.Marshal(uuid)
if err != nil { if err != nil {
return nil, errors.Errorf("failed to JSON marshal UUID : %+v", err) return []byte{}, errors.Errorf("failed to JSON marshal UUID : %+v", err)
} }
return uuidData, nil return uuidData, nil
} }
// receiveReplyHandler is the handler for wasmModel.ReceiveReply. Returns nil on // receiveReplyHandler is the handler for wasmModel.ReceiveReply. Returns a UUID
// error or the JSON marshalled UUID (uint64) on success. // of 0 on error or the JSON marshalled UUID (uint64) on success.
func (m *manager) receiveReplyHandler(data []byte) ([]byte, error) { func (m *manager) receiveReplyHandler(data []byte) ([]byte, error) {
var msg mDm.TransferMessage var msg mDm.TransferMessage
err := json.Unmarshal(data, &msg) err := json.Unmarshal(data, &msg)
if err != nil { if err != nil {
return nil, errors.Errorf( return zeroUUID, errors.Errorf(
"failed to JSON unmarshal %T from main thread: %+v", msg, err) "failed to JSON unmarshal %T from main thread: %+v", msg, err)
} }
...@@ -204,19 +206,19 @@ func (m *manager) receiveReplyHandler(data []byte) ([]byte, error) { ...@@ -204,19 +206,19 @@ func (m *manager) receiveReplyHandler(data []byte) ([]byte, error) {
uuidData, err := json.Marshal(uuid) uuidData, err := json.Marshal(uuid)
if err != nil { if err != nil {
return nil, errors.Errorf("failed to JSON marshal UUID : %+v", err) return zeroUUID, errors.Errorf("failed to JSON marshal UUID : %+v", err)
} }
return uuidData, nil return uuidData, nil
} }
// receiveReactionHandler is the handler for wasmModel.ReceiveReaction. Returns // receiveReactionHandler is the handler for wasmModel.ReceiveReaction. Returns
// nil on error or the JSON marshalled UUID (uint64) on success. // a UUID of 0 on error or the JSON marshalled UUID (uint64) on success.
func (m *manager) receiveReactionHandler(data []byte) ([]byte, error) { func (m *manager) receiveReactionHandler(data []byte) ([]byte, error) {
var msg mDm.TransferMessage var msg mDm.TransferMessage
err := json.Unmarshal(data, &msg) err := json.Unmarshal(data, &msg)
if err != nil { if err != nil {
return nil, errors.Errorf( return zeroUUID, errors.Errorf(
"failed to JSON unmarshal %T from main thread: %+v", msg, err) "failed to JSON unmarshal %T from main thread: %+v", msg, err)
} }
...@@ -226,7 +228,7 @@ func (m *manager) receiveReactionHandler(data []byte) ([]byte, error) { ...@@ -226,7 +228,7 @@ func (m *manager) receiveReactionHandler(data []byte) ([]byte, error) {
uuidData, err := json.Marshal(uuid) uuidData, err := json.Marshal(uuid)
if err != nil { if err != nil {
return nil, errors.Errorf("failed to JSON marshal UUID : %+v", err) return zeroUUID, errors.Errorf("failed to JSON marshal UUID : %+v", err)
} }
return uuidData, nil return uuidData, nil
......
...@@ -11,15 +11,19 @@ package main ...@@ -11,15 +11,19 @@ package main
import ( import (
"fmt" "fmt"
jww "github.com/spf13/jwalterweatherman"
"gitlab.com/elixxir/xxdk-wasm/indexedDb" "gitlab.com/elixxir/xxdk-wasm/indexedDb"
) )
func main() { func main() {
fmt.Println("Starting xxDK WebAssembly DM Database Worker.") fmt.Println("[WW] Starting xxDK WebAssembly DM Database Worker.")
jww.SetStdoutThreshold(jww.LevelDebug)
jww.INFO.Print("[WW] Starting xxDK WebAssembly DM Database Worker.")
m := &manager{mh: indexedDb.NewMessageHandler("DmIndexedDbWorker")} m := &manager{mh: indexedDb.NewMessageHandler("DmIndexedDbWorker")}
m.RegisterHandlers() m.RegisterHandlers()
RegisterDatabaseNameStore(m) RegisterDatabaseNameStore(m)
m.mh.SignalReady() m.mh.SignalReady()
<-make(chan bool) <-make(chan bool)
fmt.Println("[WW] Closing xxDK WebAssembly Channels Database Worker.")
} }
...@@ -13,7 +13,7 @@ import ( ...@@ -13,7 +13,7 @@ import (
"encoding/json" "encoding/json"
"github.com/pkg/errors" "github.com/pkg/errors"
jww "github.com/spf13/jwalterweatherman" jww "github.com/spf13/jwalterweatherman"
"gitlab.com/elixxir/xxdk-wasm/indexedDbWorker" worker "gitlab.com/elixxir/xxdk-wasm/indexedDbWorker"
"gitlab.com/elixxir/xxdk-wasm/utils" "gitlab.com/elixxir/xxdk-wasm/utils"
"sync" "sync"
"syscall/js" "syscall/js"
...@@ -30,7 +30,7 @@ type MessageHandler struct { ...@@ -30,7 +30,7 @@ type MessageHandler struct {
// handlers is a list of functions to handle messages that come from the // handlers is a list of functions to handle messages that come from the
// main thread keyed on the handler tag. // main thread keyed on the handler tag.
handlers map[indexedDbWorker.Tag]HandlerFn handlers map[worker.Tag]HandlerFn
// name describes the worker. It is used for debugging and logging purposes. // name describes the worker. It is used for debugging and logging purposes.
name string name string
...@@ -42,7 +42,7 @@ type MessageHandler struct { ...@@ -42,7 +42,7 @@ type MessageHandler struct {
func NewMessageHandler(name string) *MessageHandler { func NewMessageHandler(name string) *MessageHandler {
mh := &MessageHandler{ mh := &MessageHandler{
messages: make(chan js.Value, 100), messages: make(chan js.Value, 100),
handlers: make(map[indexedDbWorker.Tag]HandlerFn), handlers: make(map[worker.Tag]HandlerFn),
name: name, name: name,
} }
...@@ -55,13 +55,13 @@ func NewMessageHandler(name string) *MessageHandler { ...@@ -55,13 +55,13 @@ func NewMessageHandler(name string) *MessageHandler {
// ready. Once the main thread receives this, it will initiate communication. // ready. Once the main thread receives this, it will initiate communication.
// Therefore, this should only be run once all listeners are ready. // Therefore, this should only be run once all listeners are ready.
func (mh *MessageHandler) SignalReady() { func (mh *MessageHandler) SignalReady() {
mh.SendResponse(indexedDbWorker.ReadyTag, indexedDbWorker.InitID, nil) mh.SendResponse(worker.ReadyTag, worker.InitID, nil)
} }
// SendResponse sends a reply to the main thread with the given tag and ID, // SendResponse sends a reply to the main thread with the given tag and ID,
func (mh *MessageHandler) SendResponse( func (mh *MessageHandler) SendResponse(
tag indexedDbWorker.Tag, id uint64, data []byte) { tag worker.Tag, id uint64, data []byte) {
msg := indexedDbWorker.WorkerMessage{ msg := worker.WorkerMessage{
Tag: tag, Tag: tag,
ID: id, ID: id,
Data: data, Data: data,
...@@ -82,7 +82,7 @@ func (mh *MessageHandler) SendResponse( ...@@ -82,7 +82,7 @@ func (mh *MessageHandler) SendResponse(
// everytime a message from the main thread is received. If the registered // everytime a message from the main thread is received. If the registered
// handler returns a response, it is sent to the main thread. // handler returns a response, it is sent to the main thread.
func (mh *MessageHandler) receiveMessage(data []byte) error { func (mh *MessageHandler) receiveMessage(data []byte) error {
var msg indexedDbWorker.WorkerMessage var msg worker.WorkerMessage
err := json.Unmarshal(data, &msg) err := json.Unmarshal(data, &msg)
if err != nil { if err != nil {
return err return err
...@@ -101,7 +101,7 @@ func (mh *MessageHandler) receiveMessage(data []byte) error { ...@@ -101,7 +101,7 @@ func (mh *MessageHandler) receiveMessage(data []byte) error {
go func() { go func() {
response, err2 := handler(msg.Data) response, err2 := handler(msg.Data)
if err2 != nil { if err2 != nil {
jww.FATAL.Panicf("[WW] [%s] Handler for for %q and ID %d returned "+ jww.ERROR.Printf("[WW] [%s] Handler for for %q and ID %d returned "+
"an error: %+v", mh.name, msg.Tag, msg.ID, err) "an error: %+v", mh.name, msg.Tag, msg.ID, err)
} }
if response != nil { if response != nil {
...@@ -116,7 +116,7 @@ func (mh *MessageHandler) receiveMessage(data []byte) error { ...@@ -116,7 +116,7 @@ func (mh *MessageHandler) receiveMessage(data []byte) error {
// previous registered handler with the same tag. This function is thread safe. // previous registered handler with the same tag. This function is thread safe.
// //
// If the handler returns anything but nil, it will be returned as a response. // If the handler returns anything but nil, it will be returned as a response.
func (mh *MessageHandler) RegisterHandler(tag indexedDbWorker.Tag, handler HandlerFn) { func (mh *MessageHandler) RegisterHandler(tag worker.Tag, handler HandlerFn) {
jww.DEBUG.Printf( jww.DEBUG.Printf(
"[WW] [%s] Worker registering handler for tag %q", mh.name, tag) "[WW] [%s] Worker registering handler for tag %q", mh.name, tag)
mh.mux.Lock() mh.mux.Lock()
......
...@@ -99,8 +99,9 @@ func NewWorkerHandler(aURL, name string) (*WorkerHandler, error) { ...@@ -99,8 +99,9 @@ func NewWorkerHandler(aURL, name string) (*WorkerHandler, error) {
select { select {
case <-ready: case <-ready:
case <-time.After(workerInitialConnectionTimeout): case <-time.After(workerInitialConnectionTimeout):
return nil, errors.Errorf("timed out after %s waiting for initial "+ return nil, errors.Errorf("[WW] [%s] timed out after %s waiting for "+
"message from worker", workerInitialConnectionTimeout) "initial message from worker",
wh.name, workerInitialConnectionTimeout)
} }
return wh, nil return wh, nil
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment