Пример #1
0
PFakeSlave TFakeModbusContext::GetSlave(int slave_addr)
{
    auto it = Slaves.find(slave_addr);
    if (it == Slaves.end()) {
        ADD_FAILURE() << "GetSlave(): slave not found, auto-creating: " << slave_addr;
        return AddSlave(slave_addr, PFakeSlave(new TFakeSlave));
    }
    return it->second;
}
Пример #2
0
PFakeSlave TFakeModbusConnector::AddSlave(const std::string& device,
        int slave_addr,
        const TRegisterRange& coil_range,
        const TRegisterRange& discrete_range,
        const TRegisterRange& holding_range,
        const TRegisterRange& input_range)
{
    return AddSlave(device, slave_addr,
                    PFakeSlave(new TFakeSlave(coil_range, discrete_range,
                               holding_range, input_range)));
}
CMistyFog::CMistyFog(int index, CWorldEffect *owner, bool buddy) :
	CWorldEffect(owner),
		
	mSize(0.05f*2.0f),
	mMinSize(0.05f*3.0f),
	mMaxSize(0.15f*2.0f),
	mAlpha(1.0f),
	mAlphaFade(false),
	mBuddy(buddy)
{
	char			name[1024];
	unsigned char	*pos;
	int				x, y;

	if (mBuddy)
	{
		mRendering = false;

//		mImage = ((CMistyFog *)owner)->GetImage();
		mData = ((CMistyFog *)owner)->GetData();
		mWidth = ((CMistyFog *)owner)->GetWidth();
		mHeight = ((CMistyFog *)owner)->GetHeight();
	}
	else
	{
		sprintf(name, "gfx/world/fog%d.tga", index);

		R_LoadImage( name, &mData, &mWidth, &mHeight );
		if (!mData)
		{
			ri.Error (ERR_DROP, "Could not load %s", name);
		}

		pos = mData;
		for(y=0;y<mHeight;y++)
		{
			for(x=0;x<mWidth;x++)
			{
				pos[3] = pos[0];
				pos += 4;
			}
		}

//		mImage = R_CreateImage(name, mData, mWidth, mHeight, false, true, false, GL_REPEAT);

		mRendering = true;
		AddSlave(new CMistyFog(index, this, true));
	}

	mSpeed = 90.0 + FloatRand() * 20.0;

	CreateTextureCoords();
}
CMistyFog2::CMistyFog2(void) :
	CWorldEffect(),
	mAlpha(0.3f),

	mFadeAlpha(0.0f)
{
	int			x, y;
	float		xStep, yStep;

	AddSlave(new CMistyFog(2));
	AddSlave(new CMistyFog(2));

	xStep = 20.0f / (MISTYFOG_WIDTH-1);
	yStep = 20.0f / (MISTYFOG_HEIGHT-1);

	for(y=0;y<MISTYFOG_HEIGHT;y++)
	{
		for(x=0;x<MISTYFOG_WIDTH;x++)
		{
			mVerts[y][x][0] = -10 + (x * xStep) + ri.flrand(-xStep / 16.0, xStep / 16.0);
			mVerts[y][x][1] = 10 - (y * yStep) + ri.flrand(-xStep / 16.0, xStep / 16.0);
			mVerts[y][x][2] = -10;

			mColors[y][x][0] = 1.0;
			mColors[y][x][1] = 1.0;
			mColors[y][x][2] = 1.0;

			if (y < MISTYFOG_HEIGHT-1 && x < MISTYFOG_WIDTH-1)
			{
				mIndexes[y][x][0] = (y*MISTYFOG_WIDTH) + x;
				mIndexes[y][x][1] = (y*MISTYFOG_WIDTH) + x+1;
				mIndexes[y][x][2] = ((y+1)*MISTYFOG_WIDTH) + x+1;
				mIndexes[y][x][3] = ((y+1)*MISTYFOG_WIDTH) + x;
			}
		}
	}
}
Пример #5
0
 void Master::AddSlave(Channel* slave, RedisCommandFrame& cmd)
 {
     INFO_LOG("[Master]Recv sync command:%s", cmd.ToString().c_str());
     slave->Flush();
     SlaveConn& conn = GetSlaveConn(slave);
     if (!strcasecmp(cmd.GetCommand().c_str(), "sync"))
     {
         //Redis 2.6/2.4 send 'sync'
         conn.isRedisSlave = true;
         conn.sync_offset = -1;
     }
     else
     {
         conn.server_key = cmd.GetArguments()[0];
         const std::string& offset_str = cmd.GetArguments()[1];
         if (!string_toint64(offset_str, conn.sync_offset))
         {
             ERROR_LOG("Invalid offset argument:%s", offset_str.c_str());
             slave->Close();
             return;
         }
         conn.isRedisSlave = true;
         for (uint32 i = 2; i < cmd.GetArguments().size(); i += 2)
         {
             if (cmd.GetArguments()[i] == "cksm")
             {
                 conn.isRedisSlave = false;
                 if (!string_touint64(cmd.GetArguments()[i + 1], conn.sync_cksm))
                 {
                     ERROR_LOG("Invalid checksum argument:%s", cmd.GetArguments()[i + 1].c_str());
                     slave->Close();
                     return;
                 }
             }
         }
     }
     slave->GetService().DetachChannel(slave, true);
     if (g_repl->GetIOServ().IsInLoopThread())
     {
         AddSlave(&conn);
     }
     else
     {
         g_repl->GetIOServ().AsyncIO(0, OnAddSlave, &conn);
     }
 }