• Advertisement
Sign in to follow this  

how to create 1-n relation using boost::multi_index?

This topic is 3492 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

hi all i try to create something like a 1-n relation between 2 structs like this
// some infos for a host
typedef struct SomeHost{
   uint32_t ip;
   uint16_t port;
   std::string hostname;
// operator< ... // here we have some compare functions for our std::set
};

// many hosts form a group
typedef struct ServerGroup{
   std::string groupid;
   std::string readbuffer;
   std::string writebuffer;
   std::set<SomeHost> groupmembers;
};

struct ServerGropuID{};

// create an index for the group
typedef boost::multi_index::multi_index_container<
    ServerGroup,
    boost::multi_index::indexed_by<
        boost::multi_index::ordered_unique<
            boost::multi_index::tag<ServerGroupID>,
            boost::multi_index::member<ServerGroup,std::string,&ServerGroup::groupid>
// and some indices ....
// how to create an index for groupmembers? e.g. to query: to which group belongs Host X?
        >
    >
> ServerList;

ServerList groups;

its just an example illustration, but as you can see i try to create a group of servers. using this group i want to query the structures using an index for example, i need to get the group structure for a specific server using its ip (or hostname) since im using multi_index for really simple indices i was asking myself if, and how, its possible to create a relation between 2 structures using boost (multi_index)? so, it would be great if anyone, has a hint on how to create such a relation between a [group of servers] and [the server details] without using another std::map for the mapping between those structures? (which would mean i have to maintain another structure/map, which gets confusing sooner or later) or maybe anyone has an alternative idea? thx@ll

Share this post


Link to post
Share on other sites
Advertisement
Sign in to follow this  

  • Advertisement