• Home
Name Date Size #Lines LOC

..--

Android.bpD03-May-20241,017 3633

README.mdD03-May-20241.3 KiB5850

msg_queue.ccD03-May-20243 KiB9755

msg_queue.hD03-May-20241.1 KiB3515

README.md

1# msg_queue
2
3This is the Cuttlefish message queue wrapper library, as one of the IPC options available.  Below are the example usages running in two separate processes.
4
5```
6#define MAX_MSG_SIZE 200
7#define NUM_MESSAGES 100
8
9typedef struct msg_buffer {
10	long mesg_type;
11	char mesg_text[MAX_MSG_SIZE];
12} msg_buffer;
13
14int example_send()
15{
16    // create message queue with the key 'a'
17	int queue_id = msg_queue_create('a');
18	struct msg_buffer msg;
19	for (int i=1; i <= NUM_MESSAGES; i++) {
20        // create message types 1-3
21		msg.mesg_type = (i % 3) + 1;
22		sprintf(msg.mesg_text, "test %d", i);
23		int rc = msg_queue_send(queue_id, &msg, strlen(msg.mesg_text)+1, false);
24		if (rc == -1) {
25			perror("main: msgsnd");
26			exit(1);
27		}
28	}
29	printf("generated %d messages, exiting.\n", NUM_MESSAGES);
30	return 0;
31}
32```
33
34```
35#define MAX_MSG_SIZE 200
36
37typedef struct msg_buffer {
38	long mesg_type;
39	char mesg_text[MAX_MSG_SIZE];
40} msg_buffer;
41
42int example_receive()
43{
44    // create message queue with the key 'a'
45	int queue_id = msg_queue_create('a');
46	struct msg_buffer msg;
47	while (1) {
48		int rc = msg_queue_receive(queue_id, &msg, MAX_MSG_SIZE, 1, false);
49		if (rc == -1) {
50			perror("main: msgrcv");
51			exit(1);
52		}
53		printf("Reader '%d' read message: '%s'\n", 1, msg.mesg_text);
54	}
55	return 0;
56}
57```
58