Beispiel #1
0
int main (void)
{
	evs_handle_t handle;
	evs_error_t result;
	int i = 0;
	pthread_t dispatch_thread;
	pthread_attr_t dispatch_thread_attribute;

	result = evs_initialize (&handle, &callbacks);
	if (result != EVS_OK) {
		printf ("Couldn't initialize EVS service %d\n", result);
		exit (0);
	}

        pthread_attr_init (&dispatch_thread_attribute);
        pthread_attr_setschedpolicy (&dispatch_thread_attribute, SCHED_FIFO);
        pthread_attr_setschedparam (&dispatch_thread_attribute, &sched_param);

        pthread_create (&dispatch_thread, NULL, th_dispatch, &handle);

	printf ("Init result %d\n", result);
	result = evs_join (handle, groups, 3);
	printf ("Join result %d\n", result);
	result = evs_leave (handle, &groups[0], 1);
	printf ("Leave result %d\n", result);
	delivery_string = "evs_mcast_joined";

	/*
	 * Demonstrate evs_mcast_joined
	 */
	for (i = 0; i < CALLBACKS/2; i++) {
		sprintf (buffer, "evs_mcast_joined: This is message %d", i);
try_again_one:
		result = evs_mcast_joined (handle, EVS_TYPE_AGREED, &iov, 1);
		if (result == EVS_ERR_TRY_AGAIN) {
			goto try_again_one;
		} else
		if (result != EVS_OK) {
			printf ("Got error result, exiting %d\n", result);
			exit (1);
		}
	}

	/*
	 * Demonstrate evs_mcast_joined
	 */
	delivery_string = "evs_mcast_groups";
	for (i = 0; i < CALLBACKS/2; i++) {
		sprintf (buffer, "evs_mcast_groups: This is message %d", i);
try_again_two:
		result = evs_mcast_groups (handle, EVS_TYPE_AGREED,
			 &groups[1], 1, &iov, 1);
		if (result == EVS_ERR_TRY_AGAIN) {
			goto try_again_two;
		}
	}

	/*
	 * Wait until all callbacks have been executed by dispatch thread
	 */
	for (;;) {
		if (callback_count == CALLBACKS) {
		printf ("Test completed successfully\n");
			exit (0);
		}
	}
	return (0);
}
int main (void)
{
	evs_handle_t handle;
	evs_error_t result;
	int i = 0;
	int fd;
	unsigned int member_list[32];
	unsigned int local_nodeid;
	unsigned int member_list_entries = 32;

	result = evs_initialize (&handle, &callbacks);
	if (result != EVS_OK) {
		printf ("Couldn't initialize EVS service %d\n", result);
		exit (0);
	}
	
	result = evs_membership_get (handle, &local_nodeid,
		member_list, &member_list_entries);
	printf ("Current membership from evs_membership_get entries %d\n",
		member_list_entries);
	for (i = 0; i < member_list_entries; i++) {
		printf ("member [%d] is %x\n", i, member_list[i]);
	}
	printf ("local processor from evs_membership_get %x\n", local_nodeid);

	printf ("Init result %d\n", result);
	result = evs_join (handle, groups, 3);
	printf ("Join result %d\n", result);
	result = evs_leave (handle, &groups[0], 1);
	printf ("Leave result %d\n", result);
	delivery_string = "evs_mcast_joined";

	/*
	 * Demonstrate evs_mcast_joined
	 */
	for (i = 0; i < 500; i++) {
		sprintf (buffer, "evs_mcast_joined: This is message %d", i);
#ifdef COMPILE_OUT
		sprintf (buffer,
		"%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d",
			i, i,  i,  i,  i,  i,  i,  i,  i,  i,  i,  i,  i,  i,  i,  i,  i,  i,  i,  i,  i,  i,  i,  i,  i,
			i, i,  i,  i,  i,  i,  i,  i,  i,  i,  i,  i,  i,  i,  i,  i,  i,  i,  i,  i,  i,  i,  i,  i,  i);
#endif
try_again_one:
		result = evs_mcast_joined (handle, EVS_TYPE_AGREED,
			&iov, 1);
		if (result == EVS_ERR_TRY_AGAIN) {
//printf ("try again\n");
			goto try_again_one;
		}
		result = evs_dispatch (handle, EVS_DISPATCH_ALL);
	}

	do {
		result = evs_dispatch (handle, EVS_DISPATCH_ALL);
	} while (deliveries < 20);
	/*
	 * Demonstrate evs_mcast_joined
	 */
	delivery_string = "evs_mcast_groups";
	for (i = 0; i < 500; i++) {
		sprintf (buffer, "evs_mcast_groups: This is message %d", i);
try_again_two:
		result = evs_mcast_groups (handle, EVS_TYPE_AGREED,
			 &groups[1], 1, &iov, 1);
		if (result == EVS_ERR_TRY_AGAIN) {
			goto try_again_two;
		}
	
		result = evs_dispatch (handle, EVS_DISPATCH_ALL);
	}
	/*
	 * Flush any pending callbacks
	 */
	do {
		result = evs_dispatch (handle, EVS_DISPATCH_ALL);
	} while (deliveries < 900);

	evs_fd_get (handle, &fd);
	
	evs_finalize (handle);

	return (0);
}