mirror of https://github.com/redis/redis.git
				
				
				
			Modules: block on keys: export APIs.
This commit is contained in:
		
							parent
							
								
									3649568ff2
								
							
						
					
					
						commit
						fb6110ac20
					
				
							
								
								
									
										11
									
								
								src/module.c
								
								
								
								
							
							
						
						
									
										11
									
								
								src/module.c
								
								
								
								
							| 
						 | 
					@ -4128,6 +4128,15 @@ RedisModuleBlockedClient *RM_BlockClientOnKeys(RedisModuleCtx *ctx, RedisModuleC
 | 
				
			||||||
    return moduleBlockClient(ctx,reply_callback,timeout_callback,free_privdata,timeout_ms, keys,numkeys,is_key_ready,privdata);
 | 
					    return moduleBlockClient(ctx,reply_callback,timeout_callback,free_privdata,timeout_ms, keys,numkeys,is_key_ready,privdata);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* This function is used in order to potentially unblock a client blocked
 | 
				
			||||||
 | 
					 * on keys with RedisModule_BlockClientOnKeys(). When this function is called,
 | 
				
			||||||
 | 
					 * all the clients blocked for this key will get their is_key_ready callback,
 | 
				
			||||||
 | 
					 * and if the callback returns non-zero the client will be unblocked and the
 | 
				
			||||||
 | 
					 * reply callback will be called in order to reply to the client. */
 | 
				
			||||||
 | 
					void RM_SignalKeyAsReady(RedisModuleCtx *ctx, RedisModuleString *key) {
 | 
				
			||||||
 | 
					    signalKeyAsReady(ctx->client->db, key);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Unblock a client blocked by `RedisModule_BlockedClient`. This will trigger
 | 
					/* Unblock a client blocked by `RedisModule_BlockedClient`. This will trigger
 | 
				
			||||||
 * the reply callbacks to be called in order to reply to the client.
 | 
					 * the reply callbacks to be called in order to reply to the client.
 | 
				
			||||||
 * The 'privdata' argument will be accessible by the reply callback, so
 | 
					 * The 'privdata' argument will be accessible by the reply callback, so
 | 
				
			||||||
| 
						 | 
					@ -6634,4 +6643,6 @@ void moduleRegisterCoreAPI(void) {
 | 
				
			||||||
    REGISTER_API(InfoAddFieldULongLong);
 | 
					    REGISTER_API(InfoAddFieldULongLong);
 | 
				
			||||||
    REGISTER_API(GetClientInfoById);
 | 
					    REGISTER_API(GetClientInfoById);
 | 
				
			||||||
    REGISTER_API(SubscribeToServerEvent);
 | 
					    REGISTER_API(SubscribeToServerEvent);
 | 
				
			||||||
 | 
					    REGISTER_API(BlockClientOnKeys);
 | 
				
			||||||
 | 
					    REGISTER_API(SignalKeyAsReady);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -492,6 +492,8 @@ int REDISMODULE_API_FUNC(RedisModule_InfoAddFieldDouble)(RedisModuleInfoCtx *ctx
 | 
				
			||||||
int REDISMODULE_API_FUNC(RedisModule_InfoAddFieldLongLong)(RedisModuleInfoCtx *ctx, char *field, long long value);
 | 
					int REDISMODULE_API_FUNC(RedisModule_InfoAddFieldLongLong)(RedisModuleInfoCtx *ctx, char *field, long long value);
 | 
				
			||||||
int REDISMODULE_API_FUNC(RedisModule_InfoAddFieldULongLong)(RedisModuleInfoCtx *ctx, char *field, unsigned long long value);
 | 
					int REDISMODULE_API_FUNC(RedisModule_InfoAddFieldULongLong)(RedisModuleInfoCtx *ctx, char *field, unsigned long long value);
 | 
				
			||||||
int REDISMODULE_API_FUNC(RedisModule_SubscribeToServerEvent)(RedisModuleCtx *ctx, RedisModuleEvent event, RedisModuleEventCallback callback);
 | 
					int REDISMODULE_API_FUNC(RedisModule_SubscribeToServerEvent)(RedisModuleCtx *ctx, RedisModuleEvent event, RedisModuleEventCallback callback);
 | 
				
			||||||
 | 
					RedisModuleBlockedClient *REDISMODULE_API_FUNC(RedisModule_BlockClientOnKeys)(RedisModuleCtx *ctx, RedisModuleCmdFunc reply_callback, RedisModuleCmdFunc timeout_callback, void (*free_privdata)(RedisModuleCtx*,void*), long long timeout_ms, RedisModuleString **keys, int numkeys, int (*is_key_ready)(RedisModuleCtx*, RedisModuleString *keyname, void *privdata), void *privdata);
 | 
				
			||||||
 | 
					void REDISMODULE_API_FUNC(RedisModule_SignalKeyAsReady)(RedisModuleCtx *ctx, RedisModuleString *key);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Experimental APIs */
 | 
					/* Experimental APIs */
 | 
				
			||||||
#ifdef REDISMODULE_EXPERIMENTAL_API
 | 
					#ifdef REDISMODULE_EXPERIMENTAL_API
 | 
				
			||||||
| 
						 | 
					@ -688,6 +690,8 @@ static int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int
 | 
				
			||||||
    REDISMODULE_GET_API(InfoAddFieldULongLong);
 | 
					    REDISMODULE_GET_API(InfoAddFieldULongLong);
 | 
				
			||||||
    REDISMODULE_GET_API(GetClientInfoById);
 | 
					    REDISMODULE_GET_API(GetClientInfoById);
 | 
				
			||||||
    REDISMODULE_GET_API(SubscribeToServerEvent);
 | 
					    REDISMODULE_GET_API(SubscribeToServerEvent);
 | 
				
			||||||
 | 
					    REDISMODULE_GET_API(BlockClientOnKeys);
 | 
				
			||||||
 | 
					    REDISMODULE_GET_API(SignalKeyAsReady);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef REDISMODULE_EXPERIMENTAL_API
 | 
					#ifdef REDISMODULE_EXPERIMENTAL_API
 | 
				
			||||||
    REDISMODULE_GET_API(GetThreadSafeContext);
 | 
					    REDISMODULE_GET_API(GetThreadSafeContext);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue