資源簡介
使用Qt Creator作為Linux IDE,實現Redis源碼編譯和斷點調試
代碼片段和文件信息
/*
?*?Copyright?(c)?2009-2011?Salvatore?Sanfilippo?
?*?Copyright?(c)?2010-2011?Pieter?Noordhuis?
?*
?*?All?rights?reserved.
?*
?*?Redistribution?and?use?in?source?and?binary?forms?with?or?without
?*?modification?are?permitted?provided?that?the?following?conditions?are?met:
?*
?*???*?Redistributions?of?source?code?must?retain?the?above?copyright?notice
?*?????this?list?of?conditions?and?the?following?disclaimer.
?*???*?Redistributions?in?binary?form?must?reproduce?the?above?copyright
?*?????notice?this?list?of?conditions?and?the?following?disclaimer?in?the
?*?????documentation?and/or?other?materials?provided?with?the?distribution.
?*???*?Neither?the?name?of?Redis?nor?the?names?of?its?contributors?may?be?used
?*?????to?endorse?or?promote?products?derived?from?this?software?without
?*?????specific?prior?written?permission.
?*
?*?THIS?SOFTWARE?IS?PROVIDED?BY?THE?COPYRIGHT?HOLDERS?AND?CONTRIBUTORS?“AS?IS“
?*?AND?ANY?EXPRESS?OR?IMPLIED?WARRANTIES?INCLUDING?BUT?NOT?LIMITED?TO?THE
?*?IMPLIED?WARRANTIES?OF?MERCHANTABILITY?AND?FITNESS?FOR?A?PARTICULAR?PURPOSE
?*?ARE?DISCLAIMED.?IN?NO?EVENT?SHALL?THE?COPYRIGHT?OWNER?OR?CONTRIBUTORS?BE
?*?LIABLE?FOR?ANY?DIRECT?INDIRECT?INCIDENTAL?SPECIAL?EXEMPLARY?OR
?*?CONSEQUENTIAL?DAMAGES?(INCLUDING?BUT?NOT?LIMITED?TO?PROCUREMENT?OF
?*?SUBSTITUTE?GOODS?OR?SERVICES;?LOSS?OF?USE?DATA?OR?PROFITS;?OR?BUSINESS
?*?INTERRUPTION)?HOWEVER?CAUSED?AND?ON?ANY?THEORY?OF?LIABILITY?WHETHER?IN
?*?CONTRACT?STRICT?LIABILITY?OR?TORT?(INCLUDING?NEGLIGENCE?OR?OTHERWISE)
?*?ARISING?IN?ANY?WAY?OUT?OF?THE?USE?OF?THIS?SOFTWARE?EVEN?IF?ADVISED?OF?THE
?*?POSSIBILITY?OF?SUCH?DAMAGE.
?*/
#include?“fmacros.h“
#include?
#include?
#include?
#include?
#include?
#include?
#include?“async.h“
#include?“net.h“
#include?“dict.c“
#include?“sds.h“
#define?_EL_ADD_READ(ctx)?do?{?\
????????if?((ctx)->ev.addRead)?(ctx)->ev.addRead((ctx)->ev.data);?\
????}?while(0)
#define?_EL_DEL_READ(ctx)?do?{?\
????????if?((ctx)->ev.delRead)?(ctx)->ev.delRead((ctx)->ev.data);?\
????}?while(0)
#define?_EL_ADD_WRITE(ctx)?do?{?\
????????if?((ctx)->ev.addWrite)?(ctx)->ev.addWrite((ctx)->ev.data);?\
????}?while(0)
#define?_EL_DEL_WRITE(ctx)?do?{?\
????????if?((ctx)->ev.delWrite)?(ctx)->ev.delWrite((ctx)->ev.data);?\
????}?while(0)
#define?_EL_CLEANUP(ctx)?do?{?\
????????if?((ctx)->ev.cleanup)?(ctx)->ev.cleanup((ctx)->ev.data);?\
????}?while(0);
/*?Forward?declaration?of?function?in?hiredis.c?*/
void?__redisAppendCommand(redisContext?*c?char?*cmd?size_t?len);
/*?Functions?managing?dictionary?of?callbacks?for?pub/sub.?*/
static?unsigned?int?callbackHash(const?void?*key)?{
????return?dictGenHashFunction((unsigned?char*)keysdslen((char*)key));
}
static?void?*callbackValDup(void?*privdata?const?void?*src)?{
????((void)?privdata);
????redisCallback?*dup?=?malloc(sizeof(*dup));
????memcpy(dupsrcsizeof(*dup));
????return?dup;
}
static?int?callba
評論
共有 條評論