MCPcopy Create free account
hub / github.com/RedisGears/RedisGears / registerCreateKeysArgs

Function registerCreateKeysArgs

plugins/python/redisgears_python.c:1662–1771  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1660}
1661
1662static void* registerCreateKeysArgs(PyObject *kargs, const char* prefix, ExecutionMode mode){
1663 Arr(char*) eventTypes = NULL;
1664 Arr(int) keyTypes = NULL;
1665 Arr(char*) hookCommands = NULL;
1666
1667 // getting even types white list (no list == all event types)
1668 PyObject* pyEventTypes = GearsPyDict_GetItemString(kargs, "eventTypes");
1669 if(pyEventTypes && pyEventTypes != Py_None){
1670 PyObject* eventTypesIterator = PyObject_GetIter(pyEventTypes);
1671 if(!eventTypesIterator){
1672 PyErr_SetString(GearsError, "given eventTypes is not iterable");
1673 return NULL;
1674 }
1675 eventTypes = array_new(char*, 10);
1676 PyObject* event = NULL;
1677 while((event = PyIter_Next(eventTypesIterator))){
1678 if(!PyUnicode_Check(event)){
1679 GearsPyDecRef(eventTypesIterator);
1680 array_free_ex(eventTypes, RG_FREE(*(Arr(char*))ptr));
1681 PyErr_SetString(GearsError, "given event type is not string");
1682 return NULL;
1683 }
1684 const char* eventTypeStr = PyUnicode_AsUTF8AndSize(event, NULL);
1685 char* eventTypeStr1 = RG_STRDUP(eventTypeStr);
1686 eventTypes = array_append(eventTypes, eventTypeStr1);
1687 }
1688 GearsPyDecRef(eventTypesIterator);
1689 }
1690
1691 // getting key types white list (no list == all key types)
1692 PyObject* pyKeyTypes = GearsPyDict_GetItemString(kargs, "keyTypes");
1693 if(pyKeyTypes && pyKeyTypes != Py_None){
1694 PyObject* keyTypesIterator = PyObject_GetIter(pyKeyTypes);
1695 if(!keyTypesIterator){
1696 PyErr_SetString(GearsError, "given keyTypes is not iterable");
1697 return NULL;
1698 }
1699 keyTypes = array_new(char*, 10);
1700 PyObject* keyType = NULL;
1701 while((keyType = PyIter_Next(keyTypesIterator))){
1702 if(!PyUnicode_Check(keyType)){
1703 GearsPyDecRef(keyTypesIterator);
1704 array_free_ex(eventTypes, RG_FREE(*(Arr(char*))ptr));
1705 array_free(keyTypes);
1706 PyErr_SetString(GearsError, "given key type is not string");
1707 return NULL;
1708 }
1709 const char* keyTypeStr = PyUnicode_AsUTF8AndSize(keyType, NULL);
1710 int keyTypeInt = registerStrKeyTypeToInt(keyTypeStr);
1711 if(keyTypeInt == -1){
1712 GearsPyDecRef(keyTypesIterator);
1713 array_free_ex(eventTypes, RG_FREE(*(Arr(char*))ptr));
1714 array_free(keyTypes);
1715 PyErr_SetString(GearsError, "unknown key type");
1716 return NULL;
1717 }
1718 keyTypes = array_append(keyTypes, keyTypeInt);
1719 }

Callers 1

registerCreateArgsFunction · 0.85

Calls 5

GearsPyDecRefFunction · 0.85
array_freeFunction · 0.85
registerStrKeyTypeToIntFunction · 0.85
array_lenFunction · 0.85

Tested by

no test coverage detected