Skip to content

Commit 7302e18

Browse files
committed
Allow certain modules APIs only defining REDISMODULE_EXPERIMENTAL_API.
Those calls may be subject to changes in the future, so the user should acknowledge it is using non stable API.
1 parent 05b81d2 commit 7302e18

File tree

2 files changed

+20
-12
lines changed

2 files changed

+20
-12
lines changed

src/modules/helloblock.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
* POSSIBILITY OF SUCH DAMAGE.
3232
*/
3333

34+
#define REDISMODULE_EXPERIMENTAL_API
3435
#include "../redismodule.h"
3536
#include <stdio.h>
3637
#include <stdlib.h>

src/redismodule.h

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -207,20 +207,24 @@ int REDISMODULE_API_FUNC(RedisModule_StringAppendBuffer)(RedisModuleCtx *ctx, Re
207207
void REDISMODULE_API_FUNC(RedisModule_RetainString)(RedisModuleCtx *ctx, RedisModuleString *str);
208208
int REDISMODULE_API_FUNC(RedisModule_StringCompare)(RedisModuleString *a, RedisModuleString *b);
209209
RedisModuleCtx *REDISMODULE_API_FUNC(RedisModule_GetContextFromIO)(RedisModuleIO *io);
210+
long long REDISMODULE_API_FUNC(RedisModule_Milliseconds)(void);
211+
void REDISMODULE_API_FUNC(RedisModule_DigestAddStringBuffer)(RedisModuleDigest *md, unsigned char *ele, size_t len);
212+
void REDISMODULE_API_FUNC(RedisModule_DigestAddLongLong)(RedisModuleDigest *md, long long ele);
213+
void REDISMODULE_API_FUNC(RedisModule_DigestEndSequence)(RedisModuleDigest *md);
214+
215+
/* Experimental APIs */
216+
#ifdef REDISMODULE_EXPERIMENTAL_API
210217
RedisModuleBlockedClient *REDISMODULE_API_FUNC(RedisModule_BlockClient)(RedisModuleCtx *ctx, RedisModuleCmdFunc reply_callback, RedisModuleCmdFunc timeout_callback, void (*free_privdata)(void*), long long timeout_ms);
211218
int REDISMODULE_API_FUNC(RedisModule_UnblockClient)(RedisModuleBlockedClient *bc, void *privdata);
212219
int REDISMODULE_API_FUNC(RedisModule_IsBlockedReplyRequest)(RedisModuleCtx *ctx);
213220
int REDISMODULE_API_FUNC(RedisModule_IsBlockedTimeoutRequest)(RedisModuleCtx *ctx);
214221
void *REDISMODULE_API_FUNC(RedisModule_GetBlockedClientPrivateData)(RedisModuleCtx *ctx);
215222
int REDISMODULE_API_FUNC(RedisModule_AbortBlock)(RedisModuleBlockedClient *bc);
216-
long long REDISMODULE_API_FUNC(RedisModule_Milliseconds)(void);
217223
RedisModuleCtx *REDISMODULE_API_FUNC(RedisModule_GetThreadSafeContext)(RedisModuleBlockedClient *bc);
218224
void REDISMODULE_API_FUNC(RedisModule_FreeThreadSafeContext)(RedisModuleCtx *ctx);
219225
void REDISMODULE_API_FUNC(RedisModule_ThreadSafeContextLock)(RedisModuleCtx *ctx);
220226
void REDISMODULE_API_FUNC(RedisModule_ThreadSafeContextUnlock)(RedisModuleCtx *ctx);
221-
void REDISMODULE_API_FUNC(RedisModule_DigestAddStringBuffer)(RedisModuleDigest *md, unsigned char *ele, size_t len);
222-
void REDISMODULE_API_FUNC(RedisModule_DigestAddLongLong)(RedisModuleDigest *md, long long ele);
223-
void REDISMODULE_API_FUNC(RedisModule_DigestEndSequence)(RedisModuleDigest *md);
227+
#endif
224228

225229
/* This is included inline inside each Redis module. */
226230
static int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int apiver) __attribute__((unused));
@@ -322,20 +326,23 @@ static int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int
322326
REDISMODULE_GET_API(RetainString);
323327
REDISMODULE_GET_API(StringCompare);
324328
REDISMODULE_GET_API(GetContextFromIO);
329+
REDISMODULE_GET_API(Milliseconds);
330+
REDISMODULE_GET_API(DigestAddStringBuffer);
331+
REDISMODULE_GET_API(DigestAddLongLong);
332+
REDISMODULE_GET_API(DigestEndSequence);
333+
334+
#ifdef REDISMODULE_EXPERIMENTAL_API
335+
REDISMODULE_GET_API(GetThreadSafeContext);
336+
REDISMODULE_GET_API(FreeThreadSafeContext);
337+
REDISMODULE_GET_API(ThreadSafeContextLock);
338+
REDISMODULE_GET_API(ThreadSafeContextUnlock);
325339
REDISMODULE_GET_API(BlockClient);
326340
REDISMODULE_GET_API(UnblockClient);
327341
REDISMODULE_GET_API(IsBlockedReplyRequest);
328342
REDISMODULE_GET_API(IsBlockedTimeoutRequest);
329343
REDISMODULE_GET_API(GetBlockedClientPrivateData);
330344
REDISMODULE_GET_API(AbortBlock);
331-
REDISMODULE_GET_API(Milliseconds);
332-
REDISMODULE_GET_API(GetThreadSafeContext);
333-
REDISMODULE_GET_API(FreeThreadSafeContext);
334-
REDISMODULE_GET_API(ThreadSafeContextLock);
335-
REDISMODULE_GET_API(ThreadSafeContextUnlock);
336-
REDISMODULE_GET_API(DigestAddStringBuffer);
337-
REDISMODULE_GET_API(DigestAddLongLong);
338-
REDISMODULE_GET_API(DigestEndSequence);
345+
#endif
339346

340347
RedisModule_SetModuleAttribs(ctx,name,ver,apiver);
341348
return REDISMODULE_OK;

0 commit comments

Comments
 (0)