virtual void Increment(int server_id, V value) { auto found_item = std::find_if( pn_counter_.mutable_server_items()->begin(), pn_counter_.mutable_server_items()->end(), [&server_id] (const CRDT_PNCounter_ServerItem & server_item) { return server_item.server_id() == server_id; }); if (found_item == pn_counter_.server_items().end()) { CRDT_PNCounter_ServerItem * server_item = pn_counter_.add_server_items(); server_item->set_server_id(server_id); if (value > 0) { server_item->set_positive(&value, sizeof(V)); } else { server_item->set_negative(&value, sizeof(V)); } } else { if (value > 0) { found_item->set_positive(&value, sizeof(V)); } else { found_item->set_negative(&value, sizeof(V)); } } }
/** * @brief * Parses all options given to the programm and call the appropritates * functions. * @param argc The number of arguments. * @param argv The array of arguments. * @return 0 on success, 1 on error. */ int main(int argc, char** argv) { int cheeky_device; int option_index = 0; int c = 0; if (argc < 2) { usage(); return (0); } cheeky_device = open("/dev/cheeky0", O_RDWR); if (cheeky_device == -1) { printf("cheeky_device: Unable to open the file /dev/cheeky0. Is your user a member of the cheeky group ?\n"); return (-1); } while (1) { c = getopt_long(argc, argv, "b:f:m:n:s:t:v:h", long_options, &option_index); if (c == -1) break; switch (c) { case 'b': if (set_brighness(optarg, cheeky_device) == -1) return (-1); break; case 'f': if (set_flashing(optarg, cheeky_device) == -1) return (-1); break; case 'm': if (set_hmove(optarg, cheeky_device) == -1) return (-1); break; case 'n': if (set_negative(optarg, cheeky_device) == -1) return (-1); break; case 's': if (set_speed(optarg, cheeky_device) == -1) return (-1); break; case 't': if (set_text(optarg, cheeky_device) == -1) return (-1); break; case 'v': if (set_vmove(optarg, cheeky_device) == -1) return (-1); break; case 'h': usage(); return (0); break; default: usage(); return (-1); break; } } close(cheeky_device); return (0); }