mirror of
https://github.com/logos-messaging/sds-go-bindings.git
synced 2026-01-02 06:03:12 +00:00
adding reset function
This commit is contained in:
parent
74cffc39dd
commit
f31ac1a8f7
40
sds/sds.go
40
sds/sds.go
@ -81,6 +81,10 @@ package sds
|
||||
static void cGoCleanupReliabilityManager(void* rmCtx, void* resp) {
|
||||
CleanupReliabilityManager(rmCtx, (SdsCallBack) GoCallback, resp);
|
||||
}
|
||||
|
||||
static void cGoResetReliabilityManager(void* rmCtx, void* resp) {
|
||||
ResetReliabilityManager(rmCtx, (SdsCallBack) GoCallback, resp);
|
||||
}
|
||||
*/
|
||||
import "C"
|
||||
import (
|
||||
@ -210,11 +214,11 @@ func (rm *ReliabilityManager) OnEvent(eventStr string) {
|
||||
func (rm *ReliabilityManager) Cleanup() error {
|
||||
if rm == nil {
|
||||
err := errors.New("reliability manager is nil")
|
||||
Error("Failed to destroy %v", err)
|
||||
Error("Failed to cleanup %v", err)
|
||||
return err
|
||||
}
|
||||
|
||||
Debug("Destroying %v", rm.name)
|
||||
Debug("Cleaning up %v", rm.name)
|
||||
|
||||
wg := sync.WaitGroup{}
|
||||
var resp = C.allocResp(unsafe.Pointer(&wg))
|
||||
@ -226,12 +230,40 @@ func (rm *ReliabilityManager) Cleanup() error {
|
||||
|
||||
if C.getRet(resp) == C.RET_OK {
|
||||
unregisterReliabilityManager(rm)
|
||||
Debug("Successfully destroyed %s", rm.name)
|
||||
Debug("Successfully cleaned up %s", rm.name)
|
||||
return nil
|
||||
}
|
||||
|
||||
errMsg := "error CleanupReliabilityManager: " + C.GoStringN(C.getMyCharPtr(resp), C.int(C.getMyCharLen(resp)))
|
||||
Error("Failed to destroy %v: %v", rm.name, errMsg)
|
||||
Error("Failed to cleanup %v: %v", rm.name, errMsg)
|
||||
|
||||
return errors.New(errMsg)
|
||||
}
|
||||
|
||||
func (rm *ReliabilityManager) Reset() error {
|
||||
if rm == nil {
|
||||
err := errors.New("reliability manager is nil")
|
||||
Error("Failed to reset %v", err)
|
||||
return err
|
||||
}
|
||||
|
||||
Debug("Resetting %v", rm.name)
|
||||
|
||||
wg := sync.WaitGroup{}
|
||||
var resp = C.allocResp(unsafe.Pointer(&wg))
|
||||
defer C.freeResp(resp)
|
||||
|
||||
wg.Add(1)
|
||||
C.cGoResetReliabilityManager(rm.rmCtx, resp)
|
||||
wg.Wait()
|
||||
|
||||
if C.getRet(resp) == C.RET_OK {
|
||||
Debug("Successfully resetted %s", rm.name)
|
||||
return nil
|
||||
}
|
||||
|
||||
errMsg := "error ResetReliabilityManager: " + C.GoStringN(C.getMyCharPtr(resp), C.int(C.getMyCharLen(resp)))
|
||||
Error("Failed to reset %v: %v", rm.name, errMsg)
|
||||
|
||||
return errors.New(errMsg)
|
||||
}
|
||||
|
||||
@ -8,7 +8,7 @@ import (
|
||||
|
||||
func TestCreateAndCleanup(t *testing.T) {
|
||||
|
||||
rm1, err := NewReliabilityManager("my-channel-id", "rm1")
|
||||
rm1, err := NewReliabilityManager("my-channel-id-1", "rm1")
|
||||
require.NoError(t, err)
|
||||
|
||||
rm2, err := NewReliabilityManager("my-channel-id-2", "rm2")
|
||||
@ -20,3 +20,16 @@ func TestCreateAndCleanup(t *testing.T) {
|
||||
err = rm2.Cleanup()
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
func TestReset(t *testing.T) {
|
||||
|
||||
rm, err := NewReliabilityManager("my-channel-id", "rm")
|
||||
require.NoError(t, err)
|
||||
|
||||
err = rm.Reset()
|
||||
require.NoError(t, err)
|
||||
|
||||
err = rm.Cleanup()
|
||||
require.NoError(t, err)
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user