void Client::SetMaster(int master_, int nodeID)
{
	Log_Trace("known master: %d, set master: %d, nodeID: %d", master, master_, nodeID);

	Command**	it;
	Command*	cmd;
	
	if (master_ == nodeID)
	{
		if (master != master_)
		{
			// node became the master
			Log_Message("Node %d is the master", nodeID);
			master = master_;
			connectivityStatus = KEYSPACE_SUCCESS;
			SendCommand(conns[master], safeCommands);
		}
		// else node is still the master
		
		EventLoop::Reset(&masterTimeout);
	}
	else if (master_ < 0 && master == nodeID)
	{
		// node lost its mastership
		Log_Message("Node %d lost its mastership", nodeID);
		master = -1;
		connectivityStatus = KEYSPACE_NOMASTER;
		
		if (!IsSafe())
			return;
		
		for (it = result->commands.Head(); it != NULL; it = result->commands.Next(it))
		{
			cmd = *it;
			cmd->cmdID = NextCommandID();
			Log_Trace("new command ID: %" PRIu64 "", cmd->cmdID);
			if (cmd->status == KEYSPACE_NOSERVICE && cmd->nodeID == nodeID)
			{
				Log_Trace("appending to safecommands");
				cmd->nodeID = -1;
				cmd->ClearResponse();
				if (!cmd->IsDirty())
					safeCommands.Append(cmd);
			}
			else
			{
				Log_Trace("NOT appending to safecommands: %d %d",
				cmd->status, cmd->nodeID);	
			}
		}

		// set master timeout
	}
}
bool Client::IsSafe()
{
	Command**	it;
	Command*	cmd;

	it = result->commands.Head();
	if (!it)
		return false;
	cmd = *it;
	if (cmd->IsDirty())
		return false; 

	return true;
}