Exemplo n.º 1
0
Arquivo: crdt.hpp Projeto: axiak/axedb
 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));
     }
   }
 }
Exemplo n.º 2
0
/**
 * @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);
}