diff options
| author | jwijenbergh <jeroenwijenbergh@protonmail.com> | 2024-02-06 14:23:26 +0100 |
|---|---|---|
| committer | Jeroen Wijenbergh <46386452+jwijenbergh@users.noreply.github.com> | 2024-02-19 14:15:07 +0100 |
| commit | 900b5acf1445eab22fc2833828abd5649eb9f12a (patch) | |
| tree | 1d85e8b7b45a0d41d7d588de3e9c2fd47d7a5ce6 /exports/exports.go | |
| parent | d3e1494a5bb9a71d30b4f0d0d48683343a26f330 (diff) | |
Exports + Python: New API for Token Getter and Setter
First argument is the server id and type instead of a single argument
with JSON
Diffstat (limited to 'exports/exports.go')
| -rw-r--r-- | exports/exports.go | 36 |
1 files changed, 13 insertions, 23 deletions
diff --git a/exports/exports.go b/exports/exports.go index 919b9c8..58b12b4 100644 --- a/exports/exports.go +++ b/exports/exports.go @@ -21,8 +21,8 @@ typedef long long int (*ReadRxBytes)(); typedef int (*StateCB)(int oldstate, int newstate, void* data); -typedef void (*TokenGetter)(const char* server, char* out, size_t len); -typedef void (*TokenSetter)(const char* server, const char* tokens); +typedef void (*TokenGetter)(const char* server_id, int server_type, char* out, size_t len); +typedef void (*TokenSetter)(const char* server_id, int server_type, const char* tokens); static long long int get_read_rx_bytes(ReadRxBytes read) { @@ -32,13 +32,13 @@ static int call_callback(StateCB callback, int oldstate, int newstate, void* dat { return callback(oldstate, newstate, data); } -static void call_token_getter(TokenGetter getter, const char* server, char* out, size_t len) +static void call_token_getter(TokenGetter getter, const char* server_id, int server_type, char* out, size_t len) { - getter(server, out, len); + getter(server_id, server_type, out, len); } -static void call_token_setter(TokenSetter setter, const char* server, const char* tokens) +static void call_token_setter(TokenSetter setter, const char* server_id, int server_type, const char* tokens) { - setter(server, tokens); + setter(server_id, server_type, tokens); } */ import "C" @@ -983,36 +983,26 @@ func SetTokenHandler(getter C.TokenGetter, setter C.TokenSetter) *C.char { if stateErr != nil { return getCError(stateErr) } - state.TokenSetter = func(c srvtypes.Current, t srvtypes.Tokens) { - cJSON, err := getReturnData(c) - if err != nil { - log.Logger.Warningf("failed to get current server for setting tokens in exports: %v", err) - return - } + state.TokenSetter = func(sid string, stype srvtypes.Type, t srvtypes.Tokens) { tJSON, err := getReturnData(t) if err != nil { log.Logger.Warningf("failed to get tokens for setting tokens in exports: %v", err) return } - c1 := C.CString(cJSON) + c1 := C.CString(sid) c2 := C.CString(tJSON) - C.call_token_setter(setter, c1, c2) + C.call_token_setter(setter, c1, C.int(stype), c2) FreeString(c1) FreeString(c2) } - state.TokenGetter = func(c srvtypes.Current) *srvtypes.Tokens { - cJSON, err := getReturnData(c) - if err != nil { - log.Logger.Warningf("failed to get current server for getting tokens in exports: %v", err) - return nil - } - c1 := C.CString(cJSON) + state.TokenGetter = func(sid string, stype srvtypes.Type) *srvtypes.Tokens { // create an output buffer with size 2048 // In my testing tokens seem to be ~1033 bytes marshalled as JSON d := make([]byte, 2048) - C.call_token_getter(getter, c1, (*C.char)(unsafe.Pointer(&d[0])), C.size_t(len(d))) + c1 := C.CString(sid) + C.call_token_getter(getter, c1, C.int(stype), (*C.char)(unsafe.Pointer(&d[0])), C.size_t(len(d))) FreeString(c1) // get null pointer index as unmarshalling wants it without @@ -1029,7 +1019,7 @@ func SetTokenHandler(getter C.TokenGetter, setter C.TokenSetter) *C.char { } var gotT srvtypes.Tokens - err = json.Unmarshal(d[:null], &gotT) + err := json.Unmarshal(d[:null], &gotT) if err != nil { log.Logger.Warningf("failed to get JSON data for getting tokens in exports: %v", err) return nil |
