JD2022-TU1/main/extern/dtest/dtcore/inc/dtusertoagentmapping.h

42 lines
1.7 KiB
C++

#pragma once
#include "dtcore/inc/dtstream.h"
namespace dt
{
// This class hold the user to agent relation that is defined in the
// test definition
class UserToAgentMapping : public Serializable
{
public:
DT_CORE_DLL_ENTRY UserToAgentMapping();
DT_CORE_DLL_ENTRY UserToAgentMapping(const UserToAgentMapping& rhs);
DT_CORE_DLL_ENTRY UserToAgentMapping& operator=(const UserToAgentMapping& rhs);
// Add a new user to agent relation
DT_CORE_DLL_ENTRY bool Add(AgentIndex agentIndex, UserId userId, String* error);
// Returns true if the agent is associated to the user specified
DT_CORE_DLL_ENTRY bool IsAssociated(AgentIndex agentIndex, UserId userId) const;
// Returns true if at least one of the users is associated to the agent
DT_CORE_DLL_ENTRY bool IsAnyAssociated(AgentIndex agentIndex, const Vector<UserId>& userIds) const;
// Returns the list of users associated to the agent.
// Returns true if the output list contains only valid userIds
DT_CORE_DLL_ENTRY bool GetUserIds(AgentIndex agentIndex, Vector<UserId>* out) const;
// Return the agent associated to the specified user
DT_CORE_DLL_ENTRY bool GetAgentIndex(UserId userId, AgentIndex* out) const;
// Return all agents associated to the specified users
DT_CORE_DLL_ENTRY bool GetAgentIndices(const Vector<UserId>& userIds, Vector<AgentIndex>* out) const;
// Returns all users
DT_CORE_DLL_ENTRY void GetAllUserIds(Vector<UserId>* out, int agentCount) const;
// serialize method
DT_CORE_DLL_ENTRY virtual void Serialize(U8 version, Stream& stream) override;
private:
Map<UserId, AgentIndex> m_UserIdToAgentIndex;
};
}