Exemple #1
0
  //--------------------------------------------------------------------------------
  void BspProxyStubPool::bspGetRequest(const int & taskPid, const BspGetRequest & request){

    int initialStackSize = lua_gettop(clientSideState);

    lua_getglobal(clientSideState, getTaskId(taskPid).c_str());
    lua_pushstring(clientSideState, "bspGetRequest");
    lua_gettable(clientSideState, -2);
    lua_getglobal(clientSideState, getTaskId(taskPid).c_str());
    lua_newtable(clientSideState);
    LuaUtils::setFieldOnTable(clientSideState, "pid", request.pid(), -1);
    LuaUtils::setFieldOnTable(clientSideState, "logicSrc", request.logicSrc(), -1);
    LuaUtils::setFieldOnTable(clientSideState, "offset", request.offset(), -1);
    LuaUtils::setFieldOnTable(clientSideState, "nBytes", request.nBytes(), -1);
    LuaUtils::setFieldOnTable(clientSideState, "superstep", request.superstep(), -1);
    LuaUtils::setFieldOnTable(clientSideState, "dst", (unsigned long)request.dst(), -1); 
    //FIXME: check if cast is ok

    if (lua_pcall(clientSideState, 2, 0, 0) != 0){
      cerr << "[ERROR] BspProxyStubPool::bspGetRequest->Lua error: "
           << lua_tostring(clientSideState, -1) << endl;
      lua_pop(clientSideState, 1);
    }

    lua_pop(clientSideState, 1);//removes proxy from stack
    assert(initialStackSize == lua_gettop(clientSideState));

  }