93 Commits

Author SHA1 Message Date
Yossi Gottlieb
1f1955766d Fix typo in RedisModuleTypeMethods declaration. 2016-11-30 22:05:59 +02:00
antirez
4d71791b17 Modules: change type registration API to use a struct of methods. 2016-11-30 11:14:01 +01:00
antirez
68269e1a6a Modules: AbortBlock() API implemented. 2016-10-13 16:57:40 +02:00
antirez
7bc2b181c8 Modules: RM_Milliseconds() API added. 2016-10-07 16:34:19 +02:00
antirez
59949257af Modules: blocking commands WIP: API exported, a first example. 2016-10-07 13:48:14 +02:00
antirez
4eec3f7d02 Modules: introduce warning suppression macro for unused args. 2016-10-07 13:10:31 +02:00
antirez
3398c93043 Fix typos in GetContextFromIO API declaration. 2016-10-06 18:26:04 +02:00
antirez
56f2406e09 Module: Ability to get context from IO context.
It was noted by @dvirsky that it is not possible to use string functions
when writing the AOF file. This sometimes is critical since the command
rewriting may need to be built in the context of the AOF callback, and
without access to the context, and the limited types that the AOF
production functions will accept, this can be an issue.

Moreover there are other needs that we can't anticipate regarding the
ability to use Redis Modules APIs using the context in order to build
representations to emit AOF / RDB.

Because of this a new API was added that allows the user to get a
temporary context from the IO context. The context is auto released
if obtained when the RDB / AOF callback returns.

Calling multiple time the function to get the context, always returns
the same one, since it is invalid to have more than a single context.
2016-10-06 17:09:26 +02:00
antirez
adcafbd283 Modules: API to save/load single precision floating point numbers.
When double precision is not needed, to take 2x space in the
serialization is not good.
2016-10-03 00:08:35 +02:00
antirez
8c561f8430 Modules: API to log from module I/O callbacks. 2016-10-02 16:51:37 +02:00
Dvir Volk
b8a375fe59 added RM_CreateStringPrintf 2016-09-21 12:30:38 +03:00
antirez
e3cb70f2e4 Modules: initial draft for a testing module. 2016-08-03 10:23:03 +02:00
antirez
f7a8b65f3d Modules: StringAppendBuffer() and ability to retain strings.
RedisModule_StringRetain() allows, when automatic memory management is
on, to keep string objects living after the callback returns. Can also
be used in order to use Redis reference counting of objects inside
modules.

The reason why this is useful is that sometimes when implementing new
data types we want to reference RedisModuleString objects inside the
module private data structures, so those string objects must be valid
after the callback returns even if not referenced inside the Redis key
space.
2016-08-02 15:29:04 +02:00
Yossi Gottlieb
126de75d90 Fix RedisModule_Calloc() definition typo. 2016-06-23 22:30:32 +03:00
Salvatore Sanfilippo
8e767386b7 Merge pull request #3335 from dvirsky/rm_calloc
added RM_Calloc implementation
2016-06-23 16:19:14 +02:00
Salvatore Sanfilippo
cea51549b8 Merge pull request #3336 from yossigo/create_string_from_string
Add RedisModule_CreateStringFromString().
2016-06-23 16:16:28 +02:00
Salvatore Sanfilippo
408b1cbd7e Merge pull request #3330 from yossigo/fix_const
Use const in Redis Module API where possible.
2016-06-23 12:29:52 +02:00
antirez
d2ace2c15a Modules: changes to logging function.
This commit changes what provided by PR #3315 (merged) in order to
let the user specify the log level as a string.

The define could be also used, but when this happens, they must be
decoupled from the defines in the Redis core, like in the other part of
the Redis modules implementations, so that a switch statement (or a
function) remaps between the two, otherwise we are no longer free to
change the internal Redis defines.
2016-06-23 12:11:30 +02:00
Yossi Gottlieb
ee0ea33013 Add RedisModule_Log() logging API function. 2016-06-23 12:01:44 +02:00
Yossi Gottlieb
c7ec9f280f Add RedisModule_CreateStringFromString(). 2016-06-22 21:02:40 +03:00
Dvir Volk
fe5d678f2a added RM_Calloc implementation 2016-06-22 17:32:41 +03:00
Yossi Gottlieb
83a4257f72 Use const in Redis Module API where possible. 2016-06-20 23:08:06 +03:00
Yossi Gottlieb
9e81f0850f Remove gcc warning when redismodule.h is included by a multi-file
module.
2016-06-07 13:31:33 +03:00
antirez
9deb98167b Modules: support for modules native data types. 2016-06-03 18:14:04 +02:00
antirez
cae2bd9aca Modules: initial pool allocator and a LEFTPAD usage example. 2016-05-14 19:42:31 +02:00
antirez
bcdb40f18d Modules: RM_GetClientId() implemented. 2016-05-10 06:40:11 +02:00
antirez
8ff424c77f Modules: command <-> core interface modified to get flags & keys. 2016-05-10 06:40:09 +02:00
antirez
e147db3f80 Modules: Hash API defines made more uniform. 2016-05-10 06:40:09 +02:00
antirez
efddfedc5d Modules: Hash type API WIP #2. 2016-05-10 06:40:09 +02:00
antirez
b1778b855d Modules: Hash type API WIP #1. 2016-05-10 06:40:09 +02:00
antirez
6c6be5136c Modules: postponed array lengths. 2016-05-10 06:40:09 +02:00
antirez
46ea6fd58b Modules: zset lex iterator #3. 2016-05-10 06:40:09 +02:00
antirez
5b8a856d14 Modules: zset iterator redesign #1. 2016-05-10 06:40:08 +02:00
antirez
073e9a3213 Modules: sorted set iterators WIP #3. 2016-05-10 06:40:08 +02:00
antirez
d43b5498f4 Modules: sorted set iterators WIP. 2016-05-10 06:40:08 +02:00
antirez
cfd4c3df7a Modules: ZSET API WIP #4. 2016-05-10 06:40:07 +02:00
antirez
b3c26b672a Modules: ZSET API WIP #3. 2016-05-10 06:40:07 +02:00
antirez
29ae2a13c7 Modules: ZSET API WIP #2. 2016-05-10 06:40:07 +02:00
antirez
2154600f4d Modules: expire API and documentation. 2016-05-10 06:40:07 +02:00
antirez
2deb684011 Modules: RedisModule_ReplyWithCallReply(). 2016-05-10 06:40:07 +02:00
antirez
73c12d9faa Modules: RedisModule_ReplyWithNull() implemented. 2016-05-10 06:40:06 +02:00
antirez
b72253dd51 Modules: avoid conflict between modules func pointers and dynamic symbols.
In modules we fill a set of function pointers defined in redismodule.h,
populating a set of APIs that are callable from the module. We use this
manual process instead of resorting to dynamic linking so that we have
exact control on how we pass the API to the module, and we can even pass
different functions for the same name, depending on the API version
declared by the module.

However if the function pointers in redismodule.h and the functions
defined in module.c have the same name, they conflict since the core
exports the symbols to the module.

There is probably some compiler flags trick to avoid this, but in order
to be safer in the future and be more easily compatible with different
builidng systems, this commit changes the internal function prefix from
RedisModule_ to RM_, so for example:

    RM_StringSet() will be exported as RedisModule_StringSet()
2016-05-10 06:40:05 +02:00
antirez
83fe739fb6 Modules: first preview 31 March 2016. 2016-05-10 06:40:05 +02:00