23 #ifndef __SSRC_SPREAD_SCATTER_MESSAGE_H
24 #define __SSRC_SPREAD_SCATTER_MESSAGE_H
64 typedef std::pair<Message *, int> value_type;
66 Spread::scatter _scatter;
67 std::vector<value_type> _messages;
70 const Spread::scatter *scatter()
const {
74 Spread::scatter *scatter() {
82 Message * message(
const unsigned int index) {
83 return _messages[index].first;
86 void resize_message(
const unsigned int message_index,
87 const unsigned int size)
89 value_type & v = _messages[message_index];
95 _scatter.elements[v.second].buf = &((*m)[0]);
96 _scatter.elements[v.second].len = m->
size();
101 #ifdef LIBSSRCSPREAD_ENABLE_MEMBERSHIP_INFO
103 virtual int sp_get_membership_info(Spread::membership_info *info)
const {
104 return Spread::SP_scat_get_memb_info(&_scatter,
service(), info);
107 virtual int sp_get_vs_set_members(
const Spread::vs_set_info *vs_set,
109 unsigned int member_names_count)
113 Spread::SP_scat_get_vs_set_members(&_scatter, vs_set, member_names,
117 virtual int sp_get_vs_sets_info(Spread::vs_set_info *vs_sets,
118 unsigned int num_vs_sets,
123 Spread::SP_scat_get_vs_sets_info(&_scatter, vs_sets, num_vs_sets, index);
138 _scatter.num_elements = 0;
146 virtual unsigned int size()
const {
155 _scatter.num_elements = 0;
165 return _scatter.num_elements;
177 return _messages.size();
180 bool add(
const void *data,
const unsigned int size);
202 if(
add(&message[0], message.
size())) {
204 _messages.push_back(value_type(const_cast<Message*>(&message),
205 _scatter.num_elements - 1));