示例#1
0
	T* Get(uint32_t objectIndex)
	{
		auto objectHeader = GetObjects().Get(objectIndex);
		if (objectHeader)
			return static_cast<T*>(objectHeader->Data);
		return nullptr;
	}
BOOL CEmbeddedObject::IsAllocatedInObjects(void)
{
	CObjects*	pcObjects;

	pcObjects = GetObjects();
	return pcObjects != NULL;
}
示例#3
0
void CGroupObject::SaveStream(IWriter& F)
{
	CCustomObject::SaveStream(F);

	F.open_chunk	(GROUPOBJ_CHUNK_VERSION);
	F.w_u16			(GROUPOBJ_CURRENT_VERSION);
	F.close_chunk	();

    {
    	ObjectList		grp_lst;
    	GetObjects		(grp_lst);
        ObjectList::iterator it;
        for (it=grp_lst.begin(); it!=grp_lst.end(); ++it)
            (*it)->m_CO_Flags.set(CCustomObject::flObjectInGroup, FALSE);

	    Scene->SaveObjectsStream(grp_lst,GROUPOBJ_CHUNK_OBJECT_LIST,F);

        for (it=grp_lst.begin(); it!=grp_lst.end(); ++it)
            (*it)->m_CO_Flags.set(CCustomObject::flObjectInGroup, TRUE);
    }

    F.open_chunk	(GROUPOBJ_CHUNK_REFERENCE);
    F.w_stringZ		(m_ReferenceName_);
	F.close_chunk	();
}
// Save/load
void CPhysicsMotionController::WriteToTemplate( vphysics_save_motioncontroller_t &controllerTemplate )
{
	controllerTemplate.m_nPriority = m_priority;

	int nObjectCount = CountObjects();
	controllerTemplate.m_objectList.AddMultipleToTail( nObjectCount );
	GetObjects( controllerTemplate.m_objectList.Base() );
}
示例#5
0
void TestManager::TestMailProcess_Disinfect (const string& data_folder)
{
	LOG_CALL3("Test folder ",data_folder,"\n");

	GetObjects(h_Proto, h_TaskManager, h_TrafficMonitor);
	tERROR error = h_TrafficMonitor->sysRegisterMsgHandler(pmc_TASK_STATE_CHANGED, rmhLISTENER,
		h_TrafficMonitor, IID_ANY, PID_ANY, IID_ANY, PID_ANY );
	SetEvent (hProtoStateChangeExpected);
	h_Proto->SetState (TASK_REQUEST_RUN);
	WaitForSingleObject (hProtoStateChanged, INFINITE);
	_ASSERTE (m_ProtoState = TASK_STATE_RUNNING);


	SessionData* p_SD = SessionData::StartSession (this);

	auto_ptr<vector<string> > packets = aux::get_raw_packets (data_folder.c_str());
	auto_ptr<vector<aux::output_packet> > out_packets = aux::get_output_packets ((hOBJECT)g_root, data_folder.c_str());
	auto_ptr<vector<hIO> > control_files = aux::get_control_files ((hOBJECT)g_root, data_folder.c_str());

	CONFIGURE(10000,100)	

	vector<string> packets_in1;
	vector<aux::output_packet> packets_out1;

	//до FETCH включительно
	packets_in1.assign (packets->begin(), packets->begin() + 8);
	packets_out1.assign (out_packets->begin(), out_packets->begin() + 8);
	p_SD->SendBytesToProcess (&packets_in1, &packets_out1);

	//ответ на FETCH (подменим файл aka пролечили)
	bTraceMailProcess = true;

	SetEvent (hMailProcessExpected);
	mc_ToProto_flags = mcv_MESSAGE_AV_DISINFECTED;
	mc_ToProto_virname = "Mega.Virus";
	io_ToProto = aux::create_io_from_disk (std::string(data_folder).append("\\object.09.chk.mod"));

	//само сообщение
	packets_in1.assign (packets->begin()+8, packets->begin() + 9);
	packets_out1.assign (out_packets->begin()+8, out_packets->begin() + 9);
	p_SD->SendBytesToProcess (&packets_in1, &packets_out1);

	WaitForSingleObject (hMailProcessReceived, INFINITE);

	//и остальное
	bTraceMailProcess = false;
	packets_in1.assign (packets->begin()+9, packets->end() );
	packets_out1.assign (out_packets->begin()+9, out_packets->end() );
	p_SD->SendBytesToProcess (&packets_in1, &packets_out1);

	p_SD->VerifyCheckedObjects (control_files.get());
	p_SD->VerifyConnStream (out_packets.get());

	p_SD->StopSession ();
	DeleteSession (p_SD->_sessionCtx.pdwSessionCtx[TEST_PROTO]);

	//_ASSERTE(!"Halt");
}
示例#6
0
void ezWorld::Clear()
{
  CheckForWriteAccess();

  for (auto it = GetObjects(); it.IsValid(); ++it)
  {
    DeleteObjectNow(it->GetHandle());
  }
}
示例#7
0
static int 
ProcessEntry(void *clientp,
             Connection *conn)
{
    int ccode;
    int envelopeLength;
    char qID[16];
    ItipAgentClient *client = clientp;
    BongoSList *users;
    BongoCalObject *cal;
    char *invitation;

    client->conn = conn;

    ccode = BongoQueueAgentHandshake(client->conn, 
                                    client->line, 
                                    qID, 
                                    &envelopeLength,
                                    NULL);

    if (ccode == -1) {
        return -1;
    }

    client->envelope = BongoQueueAgentReadEnvelope(client->conn, 
                                                  client->line, 
                                                  envelopeLength,
                                                  NULL);

    if (client->envelope == NULL) {
        return -1;
    }

    if (!CheckEnvelope(client, client->envelope)) {
        /* No reason to check for calendar attachment */
        return 0;
    }

    if (!GetObjects(client, qID, &cal, &invitation)) {
        /* No relevant attachments */
        return 0;
    }

    ReadEnvelope(client, client->envelope, &users);

    ApplyObjects(client, users, cal, invitation);

    BongoSListFreeDeep(users);
    
    /* The client struct, connection, and QDONE will be cleaned up by
     * the caller */
    return 0;
}
示例#8
0
void UNDO_TRANSFORM::SetObjects(DISPLAY *display)
{
	TRANS_DATA data;

	if(!(display->editmode & EDIT_MESH))
	{
		InvOrient(&display->orient_x, &display->orient_y, &display->orient_z,
			&display->orient_x, &display->orient_y, &display->orient_z);
	}

	data.display = display;
	data.root = objects;
	GetObjects(SetObject, &data, GETOBJECT_BRUSHES | GETOBJECT_TEXTURES);
}
示例#9
0
文件: appgame.cpp 项目: newobj/taz
	void Update()
	{
		super::Update();

		static IAggregatePresence* pPresence = NULL;
		static IAggregateMotion* pMotion = NULL;
		static IAggregateAppearance* pAppearance = NULL;

		if ( !pPresence )
		{
			CGuid Guid;

//			m_pAvatar = GetObjects()->Create("avatar", eObjectIdInvalid, eRoleControl, Guid);
//			m_pAvatar->QueryInterface(IID_IAggregatePresence, (void**)&pPresence);
//			m_pAvatar->QueryInterface(IID_IAggregateMotion, (void**)&pMotion);
//			m_pAvatar->QueryInterface(IID_IAggregateAppearance, (void**)&pAppearance);
//			m_pGold = GetObjects()->Create("gold", eObjectIdInvalid, eRoleControl, Guid);
			m_pBox = GetObjects()->Create("box", eObjectIdInvalid, eRoleControl, Guid);
			m_pZombie = GetObjects()->Create("zombie", eObjectIdInvalid, eRoleControl, Guid);
			pPresence = (IAggregatePresence*)1;
/*			
			IAggregateInventoryUser* pAggregateInventoryUser = NULL;
			IAggregateInventoryItem* pAggregateInventoryItem = NULL;
			IAggregateInventoryContainer* pAggregateInventoryContainer = NULL;
			if ( m_pAvatar->QueryInterface(IID_IAggregateInventoryUser, (void**)&pAggregateInventoryUser) &&
				 m_pGold->QueryInterface(IID_IAggregateInventoryItem, (void**)&pAggregateInventoryItem) &&
				 m_pBox->QueryInterface(IID_IAggregateInventoryContainer, (void**)&pAggregateInventoryContainer) )
			{
				pAggregateInventoryItem->PlaceInContainer(pAggregateInventoryUser, pAggregateInventoryContainer);
			}
*/
		}

//		float fSpeed = Clamp<float>(g_vCursor3d.Dist(pPresence->GetPosition()), 0, 25);
//		pMotion->MoveTo(g_vCursor3d, fSpeed);
	}
示例#10
0
文件: appbase.cpp 项目: newobj/taz
void CAppBase::Update()
{
	GetTime()->Update();
	GetInput()->Update();
	GetResources()->Update();
//	GetNetwork()->Update();
	GetObjects()->Update();
	GetUi()->Update();
	GetRender()->Update();

//			if ( !s_pAcre )
//			{
//				s_pAcre = IAcre::Create("terrain/0_0.acre");
//			}
}
示例#11
0
OBJPTR FMEDITAPI Create( OBJ_ID id, OBJPTR parent, RECT *rect, OBJPTR handle )
/****************************************************************************/
{
    /*  Create an object of the desired type at the passed location.  If
     *  there is a parent, remember it
     */
    CREATE_TABLE    appobjs;

    if( id < FIRST_USER_OBJ_ID ) {
        return( InternalCreate[id]( parent, rect, handle ) );
    } else {
        appobjs = GetObjects();
        return( appobjs[id - FIRST_USER_OBJ_ID]( parent, rect, handle ) );
    }
}
int CGXDLMSAssociationLogicalName::GetValue(int index, unsigned char* parameters, int length, CGXDLMSVariant& value)
{
	if (index == 1)
	{
		GXHelpers::AddRange(value.byteArr, m_LN, 6);
		value.vt = DLMS_DATA_TYPE_OCTET_STRING;
		return ERROR_CODES_OK;
	}
    if (index == 2)
    {			
		vector<unsigned char> Packets;
		int ret = GetObjects(Packets);
		value = Packets;
		return ret;            
    }
    if (index == 3)
    {         
        value = GetAssociatedPartnersId();
		return ERROR_CODES_OK;
    }
    if (index == 4)
    {         
        value = GetApplicationContextName();
		return ERROR_CODES_OK;
    }
    if (index == 5)
    {            
        value = GetXDLMSContextInfo();
		return ERROR_CODES_OK;
    }
    if (index == 6)
    {         
        value = GetAuthenticationMechanismMame();
		return ERROR_CODES_OK;
    }
    if (index == 7)
    {         
        value = GetSecret();
		return ERROR_CODES_OK;
    }        
	if (index == 8)
	{		
		value = (unsigned char)m_AssociationStatus;
		return ERROR_CODES_OK;
	}
	return ERROR_CODES_INVALID_PARAMETER;
}
示例#13
0
void CGroupObject::SaveLTX(CInifile& ini, LPCSTR sect_name)
{
	CCustomObject::SaveLTX(ini, sect_name);

	ini.w_u32			(sect_name, "version", GROUPOBJ_CURRENT_VERSION);

    ObjectList		grp_lst;
    GetObjects		(grp_lst);
    ObjectList::iterator it;
    for(it=grp_lst.begin(); it!=grp_lst.end(); ++it)
        (*it)->m_CO_Flags.set(CCustomObject::flObjectInGroup, FALSE);
        
    Scene->SaveObjectsLTX(grp_lst, sect_name, "ingroup", ini);

    for(it=grp_lst.begin(); it!=grp_lst.end(); ++it)
        (*it)->m_CO_Flags.set(CCustomObject::flObjectInGroup, TRUE);

    ini.w_string		(sect_name, "ref_name", m_ReferenceName_.c_str());
}
void CEmbeddedObject::RemoveHeapFrom(CBaseObject* pcFromObject, BOOL bValidate)
{
	CBaseObject*	pcContainer;

	//Removing a 'from' kicks off memory reclamation.  This is the entry point for memory management.
	PrivateRemoveHeapFrom(pcFromObject);

	pcContainer = GetEmbeddingContainer();
	pcContainer->TryKill(TRUE, TRUE);

#ifdef DEBUG
	if (bValidate)
	{
		if (IsAllocatedInObjects())
		{
			GetObjects()->ValidateObjectsConsistency();
		}
	}
#endif
}
示例#15
0
/*************
 * DESCRIPTION:	do initialisations
 * INPUT:			-
 * OUTPUT:			-
 *************/
BOOL CObjSelect::OnInitDialog()
{
	CDialog::OnInitDialog();

	CenterWindow();

	pListBox = ((CListBox*)GetDlgItem(IDC_OBJSEL_LIST));
	GetObjects(AddSelObjFunction, NULL, 0);

	switch (nMode)
	{
		case BROWSER_SELECTEDSURFACE:
			SetWindowText("Surface selector");
			break;
		case BROWSER_CAMERAS:
			SetWindowText("Camera selector");
			break;
	}

	return TRUE;
}
int CGXDLMSAssociationShortName::GetValue(int index, unsigned char* parameters, int length, CGXDLMSVariant& value)
{
	if (index == 1)
	{
		GXHelpers::AddRange(value.byteArr, m_LN, 6);
		value.vt = DLMS_DATA_TYPE_OCTET_STRING;
		return ERROR_CODES_OK;
	}
	if (index == 2)
	{
		vector<unsigned char> Packets;
		int ret = GetObjects(Packets);
		value = Packets;
		return ret;
	}
	if (index == 3)
	{
		bool lnExists = m_ObjectList.FindBySN(GetShortName()) != NULL;
        //Add count        
        int cnt = m_ObjectList.size();
        if (!lnExists)
        {
            ++cnt;
        }            
        vector<unsigned char> data;
        data.push_back(DLMS_DATA_TYPE_ARRAY);
        CGXOBISTemplate::SetObjectCount(cnt, data);
		for(vector<CGXDLMSObject*>::iterator it = m_ObjectList.begin(); it != m_ObjectList.end(); ++it)
        {
            GetAccessRights(*it, data);
        }
        if (!lnExists)
        {
            GetAccessRights(this, data);
        }
        value = data;
	}
	return ERROR_CODES_INVALID_PARAMETER;
}
示例#17
0
文件: appbase.cpp 项目: newobj/taz
void CAppBase::Acquire()
{
	if ( 1 != ++m_cRef ) return;

	GetGlue()->Acquire();

	GetGlue()->AddGlued(this);
	GetResources()->Acquire();
	GetVideo()->Acquire();
	GetVideo()->SetWidth(800);
	GetVideo()->SetHeight(600);
	GetVideo()->ApplySettings();
	GetRender()->Acquire();
	GetUi()->Acquire();
	GetClasses()->Acquire();
	GetInput()->Acquire();

	// OLD STUFF
	
	CGuid Guid;
	Guid.Create();

	NETWORKINITSTRUCT nis;
	nis.Guid = Guid;
//	if ( !GetNetwork()->Init(nis) )
//	{
//		return -1;
//	}
	
	OBJECTSINITSTRUCT ois;
	ois.bServer = true;
	if ( !GetObjects()->Init(ois) )
	{
		return;
	}
}
void CEmbeddedObject::AddHeapFrom(CBaseObject* pcFromObject, BOOL bValidate)
{
	CBaseObject*	pcEmbedding;

	if (pcFromObject != NULL)
	{
		mapHeapFroms.Add(&pcFromObject);
		if (pcFromObject->miDistToRoot >= ROOT_DIST_TO_ROOT)
		{
			pcEmbedding = GetEmbeddingContainer();
			pcEmbedding->SetExpectedDistToRoot(pcFromObject->miDistToRoot+1);
		}

#ifdef DEBUG
		if (bValidate)
		{
			if (IsAllocatedInObjects())
			{
				GetObjects()->ValidateObjectsConsistency();
			}
		}
#endif
	}
}
示例#19
0
void TestManager::TestDD_Runner ()
{
	GetObjects(h_Proto, h_TaskManager, h_TrafficMonitor);

	tERROR error = h_TrafficMonitor->sysRegisterMsgHandler(pmc_TASK_STATE_CHANGED, rmhLISTENER,
		h_TrafficMonitor, IID_ANY, PID_ANY, IID_ANY, PID_ANY );

	SetEvent (hProtoStateChangeExpected);
	h_Proto->SetState (TASK_REQUEST_RUN);
	
	WaitForSingleObject (hProtoStateChanged, INFINITE);
	_ASSERTE (m_ProtoState = TASK_STATE_RUNNING);

//RFC
	//TestDD ("..\\DataManager\\test1"); // FETCH N RFC822	
	//TestDD ("..\\DataManager\\test2"); // FETCH N RFC822.text	 - не проверяется, ошибка- исправлено
	TestDD ("..\\DataManager\\test3"); // FETCH N RFC822.PEEK
	//TestDD ("..\\DataManager\\test4"); // FETCH N RFC822.HEADER
	TestDD ("..\\DataManager\\test5"); // FETCH N FLAGS
	//TestDD ("..\\DataManager\\test6"); // FETCH N:M RFC822
	//TestDD ("..\\DataManager\\test7"); // FETCH N ENVELOPE RFC822
	//TestDD ("..\\DataManager\\test8"); // FETCH N RFC822 ENVELOPE
	TestDD ("..\\DataManager\\test9"); // FETCH N INTERNALDATE RFC822 ENVELOPE
	//TestDD ("..\\DataManager\\test10"); // FETCH N INTERNALDATE RFC822 - исправлено
	//TestDD ("..\\DataManager\\test11"); // FETCH N FLAGS RFC822
	//TestDD ("..\\DataManager\\test12"); // FETCH N BODYSTRUCTURE RFC822
	//TestDD ("..\\DataManager\\test13"); // FETCH N BODY RFC822
	//TestDD ("..\\DataManager\\test14"); // FETCH N RFC822.SIZE RFC822
	//TestDD ("..\\DataManager\\test15"); // FETCH N RFC822.HEADER RFC822 
	//TestDD ("..\\DataManager\\test16"); // FETCH N UID RFC822

	TestDD ("..\\DataManager\\test17"); // FETCH N:M (ENVELOPE RFC822)

//BODY
	//TestDD ("..\\DataManager\\test30"); // FETCH N BODY[]
	//TestDD ("..\\DataManager\\test31"); // FETCH N BODY[M]
	//TestDD ("..\\DataManager\\test32"); // FETCH N (BODY[M] BODY[K])
	//TestDD ("..\\DataManager\\test33"); // FETCH N (ENVELOPE BODY[M])
	//TestDD ("..\\DataManager\\test34"); // FETCH N INTERNALDATE RFC822 - не проверяется, это все internaldate - исправлено
	//TestDD ("..\\DataManager\\test35"); // FETCH N (BODY[M] ENVELOPE BODY[K])
	//TestDD ("..\\DataManager\\test36"); // FETCH N BODY.PEEK[M]

	//TestDD ("..\\DataManager\\test37"); // FETCH N BODY[TEXT] - не проверяется - исправлено
	//TestDD ("..\\DataManager\\test38"); // FETCH N BODY[M].text - не проверяется - исправлено

//PARTIAL
	//TestDD ("..\\DataManager\\test40"); // FETCH N BODY[M]<<partial>> - не проверяется - исправлено
	//TestDD ("..\\DataManager\\test41"); // FETCH N BODY[]<<partial>> - не проверяется - исправлено

//UID
	//TestDD ("..\\DataManager\\test50"); // UID FETCH N RFC822	

//Pipelining
	//TestDD ("..\\DataManager\\test60"); // pipelining 

//Errors in dialogue
	//TestDD ("..\\DataManager\\test62");

//Protocol Detection (commands sequence)
	//TestDD ("..\\DataManager\\test70");
	//TestDD ("..\\DataManager\\test71");
	//TestDD ("..\\DataManager\\test72");
	//TestDD ("..\\DataManager\\test73");
	//TestDD ("..\\DataManager\\test74");
	//TestDD ("..\\DataManager\\test75");

	//finishing actions

	SetEvent (hProtoStateChangeExpected);
	h_Proto->SetState (TASK_REQUEST_STOP);
	
	WaitForSingleObject (hProtoStateChanged, INFINITE);
	_ASSERTE (m_ProtoState = TASK_STATE_STOPPED);

}
	void Tracker::Update(TrackerEvent event)
	{
		auto announce = HTTP::ParseURL(m_AnnounceURL);
		LOG_F("Querying \"%\"", announce.authority);

		announce.arguments["info_hash"] = url_encode((unsigned char*)m_InfoHash.c_str());
		announce.arguments["peer_id"] = m_PeerID;
		announce.arguments["port"] = "6881";

		switch (event)
		{
		case TrackerEvent::Started:
			announce.arguments["event"] = "started";
			break;
		case TrackerEvent::Stopped:
			announce.arguments["event"] = "stopped";
			break;
		case TrackerEvent::Completed:
			announce.arguments["event"] = "completed";
			break;
		}

		auto response = HTTP::DoHTTPRequest(announce);

		if (response.statusCode != 200)
		{
			LOG_F("Tracker request failed (HTTP error): %", response.statusCode);
			return;
		}

		auto parsed = std::make_unique<Bencode::Dictionary>(Bencode::Tokenizer::Tokenize(response.content));

		if (parsed->GetKey("failure reason") != nullptr)
		{
			auto reason = parsed->GetKey<Bencode::ByteString>("failure reason");
			auto bytes = reason->GetBytes();
			std::string reasonString(bytes.begin(), bytes.end());
			LOG_F("Tracker request failed (tracker error): %", reasonString);
			return;
		}

		auto peersCount = 0u;

		auto peersList = (Bencode::List*)(parsed->GetKey("peers").get());
		for (auto& peerObject : peersList->GetObjects())
		{
			auto peerDict = (Bencode::Dictionary*)peerObject.get();

			auto ipBytes = ((Bencode::ByteString*)peerDict->GetKey("ip").get())->GetBytes();
			auto port = ((Bencode::Integer*)peerDict->GetKey("port").get())->GetValue();
			auto idBytes = ((Bencode::ByteString*)peerDict->GetKey("peer id").get())->GetBytes();

			std::string ip(ipBytes.data(), ipBytes.size());

			std::ostringstream oss;
			oss << std::setfill('0');
			std::for_each(ipBytes.begin(), ipBytes.end(), bin2hex_str(oss));
			auto id = oss.str();

			if (m_Known.find(ip) == m_Known.end())
			{
				peersCount++;
				m_Peers.push_back(std::make_unique<Peer>(ip, (int)port, id, m_Client->GetPiecesCount(), m_Client->GetPieceLength(), m_InfoHash, m_PeerID));
				m_Known.insert(ip);
			}
		}

		LOG_F("Request successful, got % peers", peersCount);
	}
void CBaseObject::ValidateAllocation(void)
{
	BOOL	bDistToStackZero;
	BOOL	bAllocateCalled;
	BOOL	bInObjects;
	BOOL	bAllSame;
	CChars	sz;

	bDistToStackZero = GetDistToStack() == 0;
	bAllocateCalled = miFlags & OBJECT_FLAGS_CALLED_ALLOCATE;
	bAllocateCalled = FixBool(bAllocateCalled);
	bInObjects = IsAllocatedInObjects();
	bAllSame = !bDistToStackZero == bAllocateCalled == bInObjects;

	if (!bAllSame)
	{
		sz.Init();
		PrintObject(&sz, IsEmbedded());
		gcLogger.Error2(__METHOD__, " Object {", sz.Text(), "} should not have a dist to stack of [", IntToString(GetDistToStack()), "] and flag OBJECT_FLAGS_CALLED_ALLOCATE [", IntToString(bAllocateCalled), "] and be allocated in Objects [0x", PointerToString(GetObjects()), "].", NULL);
		sz.Kill();
	}
}
示例#22
0
void FormLayout::Clear()
{
	XMLConfig::Clear();
	GetObjects().Clear();
}