当前位置: 首页>>代码示例>>C++>>正文


C++ Context::ClearTransc方法代码示例

本文整理汇总了C++中Context::ClearTransc方法的典型用法代码示例。如果您正苦于以下问题:C++ Context::ClearTransc方法的具体用法?C++ Context::ClearTransc怎么用?C++ Context::ClearTransc使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Context的用法示例。


在下文中一共展示了Context::ClearTransc方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: Discard

 int Ardb::Discard(Context& ctx, RedisCommandFrame& cmd)
 {
     if (!ctx.InTransc())
     {
         fill_error_reply(ctx.reply, "DISCARD without MULTI");
         return 0;
     }
     ctx.ClearTransc();
     fill_status_reply(ctx.reply, "OK");
     return 0;
 }
开发者ID:Abioy,项目名称:ardb,代码行数:11,代码来源:transaction.cpp

示例2: Exec

 int Ardb::Exec(Context& ctx, RedisCommandFrame& cmd)
 {
     if (!ctx.InTransc())
     {
         fill_error_reply(ctx.reply, "EXEC without MULTI");
         return 0;
     }
     if (ctx.GetTransc().abort)
     {
         ctx.reply.type = REDIS_REPLY_NIL;
         ctx.ClearTransc();
         return 0;
     }
     LockGuard<ThreadMutex> guard(g_transc_mutex); //only one transc allowed exec at the same time in multi threads
     RedisCommandFrameArray::iterator it = ctx.GetTransc().cached_cmds.begin();
     Context transc_ctx;
     transc_ctx.currentDB = ctx.currentDB;
     while (it != ctx.GetTransc().cached_cmds.end())
     {
         RedisReply& r = ctx.reply.AddMember();
         RedisCommandHandlerSetting* setting = FindRedisCommandHandlerSetting(*it);
         if(NULL != setting)
         {
             transc_ctx.reply.Clear();
             DoCall(transc_ctx, *setting, *it);
             r.Clone(transc_ctx.reply);
         }
         else
         {
             fill_error_reply(r, "unknown command '%s'", it->GetCommand().c_str());
         }
         it++;
     }
     ctx.currentDB = transc_ctx.currentDB;
     ctx.ClearTransc();
     UnwatchKeys(ctx);
     return 0;
 }
开发者ID:Abioy,项目名称:ardb,代码行数:38,代码来源:transaction.cpp

示例3: UnwatchKeys

 int Ardb::UnwatchKeys(Context& ctx)
 {
     if(NULL != m_watched_ctx && ctx.transc != NULL)
     {
         WriteLockGuard<SpinRWLock> guard(m_watched_keys_lock);
         WatchKeySet::iterator it = ctx.GetTransc().watched_keys.begin();
         while(it != ctx.GetTransc().watched_keys.end())
         {
             (*m_watched_ctx)[*it].erase(&ctx);
             if((*m_watched_ctx)[*it].size() == 0)
             {
                 m_watched_ctx->erase(*it);
             }
             it++;
         }
         ctx.ClearTransc();
         if(m_watched_ctx->empty())
         {
             DELETE(m_watched_ctx);
         }
     }
     return 0;
 }
开发者ID:Abioy,项目名称:ardb,代码行数:23,代码来源:transaction.cpp


注:本文中的Context::ClearTransc方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。