Skip to content

Commit 2c9d09f

Browse files
committed
Update stream demo for TIPC 2.0
Make minor changes to update the stream demo for TIPC 2.0, including: - adding support for endianness in topology server messages - standardizing comments and formatting to match other TIPC applications Signed-off-by: Allan Stephens <allan.stephens@windriver.com>
1 parent 32ffb01 commit 2c9d09f

File tree

2 files changed

+36
-28
lines changed

2 files changed

+36
-28
lines changed

demos/stream_demo/client_tipc.c

Lines changed: 34 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
*
77
* ------------------------------------------------------------------------
88
*
9-
* Copyright (c) 2005, Wind River Systems
9+
* Copyright (c) 2005,2010 Wind River Systems
1010
* Copyright (c) 2003, Ericsson Research Canada
1111
* All rights reserved.
1212
* Redistribution and use in source and binary forms, with or without
@@ -52,70 +52,79 @@
5252
#define BUF_SIZE 2000
5353
#define MSG_SIZE 80
5454

55-
void wait_for_server(struct tipc_name* name,int wait)
55+
void wait_for_server(__u32 name_type, __u32 name_instance, int wait)
5656
{
5757
struct sockaddr_tipc topsrv;
58-
struct tipc_subscr subscr = {{name->type,name->instance,name->instance},
59-
wait,TIPC_SUB_SERVICE,{}};
58+
struct tipc_subscr subscr;
6059
struct tipc_event event;
6160

62-
int sd = socket (AF_TIPC, SOCK_SEQPACKET,0);
61+
int sd = socket(AF_TIPC, SOCK_SEQPACKET, 0);
6362

64-
memset(&topsrv,0,sizeof(topsrv));
63+
memset(&topsrv, 0, sizeof(topsrv));
6564
topsrv.family = AF_TIPC;
6665
topsrv.addrtype = TIPC_ADDR_NAME;
6766
topsrv.addr.name.name.type = TIPC_TOP_SRV;
6867
topsrv.addr.name.name.instance = TIPC_TOP_SRV;
6968

70-
/* Connect to topology server: */
69+
/* Connect to topology server */
7170

72-
if (0 > connect(sd,(struct sockaddr*)&topsrv,sizeof(topsrv))) {
73-
perror("failed to connect to topology server");
71+
if (0 > connect(sd, (struct sockaddr *)&topsrv, sizeof(topsrv))) {
72+
perror("Client: failed to connect to topology server");
7473
exit(1);
7574
}
76-
if (send(sd,&subscr,sizeof(subscr),0) != sizeof(subscr)) {
77-
perror("failed to send subscription");
75+
76+
subscr.seq.type = htonl(name_type);
77+
subscr.seq.lower = htonl(name_instance);
78+
subscr.seq.upper = htonl(name_instance);
79+
subscr.timeout = htonl(wait);
80+
subscr.filter = htonl(TIPC_SUB_SERVICE);
81+
82+
if (send(sd, &subscr, sizeof(subscr), 0) != sizeof(subscr)) {
83+
perror("Client: failed to send subscription");
7884
exit(1);
7985
}
80-
/* Now wait for the subscription to fire: */
81-
if (recv(sd,&event,sizeof(event),0) != sizeof(event)) {
82-
perror("Failed to receive event");
86+
/* Now wait for the subscription to fire */
87+
88+
if (recv(sd, &event, sizeof(event), 0) != sizeof(event)) {
89+
perror("Client: failed to receive event");
8390
exit(1);
8491
}
85-
if (event.event != TIPC_PUBLISHED) {
86-
printf("Server %u,%u not published within %u [s]\n",
87-
name->type,name->instance,wait/1000);
92+
if (event.event != htonl(TIPC_PUBLISHED)) {
93+
printf("Client: server {%u,%u} not published within %u [s]\n",
94+
name_type, name_instance, wait/1000);
8895
exit(1);
8996
}
97+
9098
close(sd);
9199
}
92100

93101

94-
int main(int argc, char* argv[], char* dummy[])
102+
int main(int argc, char *argv[], char *dummy[])
95103
{
96-
struct sockaddr_tipc server_addr;
97104
int sd;
105+
struct sockaddr_tipc server_addr;
98106
char buf[BUF_SIZE];
99107
int rec_num;
100108
int rec_size;
101109
int tot_size;
102110
int sent_size;
103111
int msg_size;
104112

113+
printf("****** TIPC stream demo client started ******\n\n");
114+
115+
wait_for_server(SERVER_TYPE, SERVER_INST, 10000);
116+
117+
sd = socket(AF_TIPC, SOCK_STREAM, 0);
118+
105119
server_addr.family = AF_TIPC;
106120
server_addr.addrtype = TIPC_ADDR_NAME;
107121
server_addr.addr.name.name.type = SERVER_TYPE;
108122
server_addr.addr.name.name.instance = SERVER_INST;
109123
server_addr.addr.name.domain = 0;
110124

111-
printf("****** TIPC stream demo client started ******\n\n");
112-
113-
wait_for_server(&server_addr.addr.name.name,10000);
114-
115-
sd = socket (AF_TIPC, SOCK_STREAM, 0);
116125
if (connect(sd, (struct sockaddr *)&server_addr,
117126
sizeof(server_addr)) != 0) {
118-
perror("Connect failed");
127+
perror("Client: connect failed");
119128
exit(1);
120129
}
121130

demos/stream_demo/server_tipc.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
*
77
* ------------------------------------------------------------------------
88
*
9-
* Copyright (c) 2005, Wind River Systems
9+
* Copyright (c) 2005,2010 Wind River Systems
1010
* All rights reserved.
1111
* Redistribution and use in source and binary forms, with or without
1212
* modification, are permitted provided that the following conditions are met:
@@ -61,13 +61,12 @@ int main(int argc, char *argv[], char *dummy[])
6161

6262
printf("****** TIPC stream demo server started ******\n\n");
6363

64-
listener_sd = socket (AF_TIPC, SOCK_STREAM, 0);
64+
listener_sd = socket(AF_TIPC, SOCK_STREAM, 0);
6565
if (listener_sd < 0) {
6666
perror("Server: unable to create socket\n");
6767
exit(1);
6868
}
6969

70-
7170
server_addr.family = AF_TIPC;
7271
server_addr.addrtype = TIPC_ADDR_NAMESEQ;
7372
server_addr.addr.nameseq.type = SERVER_TYPE;

0 commit comments

Comments
 (0)