|
6 | 6 | *
|
7 | 7 | * ------------------------------------------------------------------------
|
8 | 8 | *
|
9 |
| - * Copyright (c) 2005, Wind River Systems |
| 9 | + * Copyright (c) 2005,2010 Wind River Systems |
10 | 10 | * Copyright (c) 2003, Ericsson Research Canada
|
11 | 11 | * All rights reserved.
|
12 | 12 | * Redistribution and use in source and binary forms, with or without
|
|
52 | 52 | #define BUF_SIZE 2000
|
53 | 53 | #define MSG_SIZE 80
|
54 | 54 |
|
55 |
| -void wait_for_server(struct tipc_name* name,int wait) |
| 55 | +void wait_for_server(__u32 name_type, __u32 name_instance, int wait) |
56 | 56 | {
|
57 | 57 | 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; |
60 | 59 | struct tipc_event event;
|
61 | 60 |
|
62 |
| - int sd = socket (AF_TIPC, SOCK_SEQPACKET,0); |
| 61 | + int sd = socket(AF_TIPC, SOCK_SEQPACKET, 0); |
63 | 62 |
|
64 |
| - memset(&topsrv,0,sizeof(topsrv)); |
| 63 | + memset(&topsrv, 0, sizeof(topsrv)); |
65 | 64 | topsrv.family = AF_TIPC;
|
66 | 65 | topsrv.addrtype = TIPC_ADDR_NAME;
|
67 | 66 | topsrv.addr.name.name.type = TIPC_TOP_SRV;
|
68 | 67 | topsrv.addr.name.name.instance = TIPC_TOP_SRV;
|
69 | 68 |
|
70 |
| - /* Connect to topology server: */ |
| 69 | + /* Connect to topology server */ |
71 | 70 |
|
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"); |
74 | 73 | exit(1);
|
75 | 74 | }
|
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"); |
78 | 84 | exit(1);
|
79 | 85 | }
|
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"); |
83 | 90 | exit(1);
|
84 | 91 | }
|
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); |
88 | 95 | exit(1);
|
89 | 96 | }
|
| 97 | + |
90 | 98 | close(sd);
|
91 | 99 | }
|
92 | 100 |
|
93 | 101 |
|
94 |
| -int main(int argc, char* argv[], char* dummy[]) |
| 102 | +int main(int argc, char *argv[], char *dummy[]) |
95 | 103 | {
|
96 |
| - struct sockaddr_tipc server_addr; |
97 | 104 | int sd;
|
| 105 | + struct sockaddr_tipc server_addr; |
98 | 106 | char buf[BUF_SIZE];
|
99 | 107 | int rec_num;
|
100 | 108 | int rec_size;
|
101 | 109 | int tot_size;
|
102 | 110 | int sent_size;
|
103 | 111 | int msg_size;
|
104 | 112 |
|
| 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 | + |
105 | 119 | server_addr.family = AF_TIPC;
|
106 | 120 | server_addr.addrtype = TIPC_ADDR_NAME;
|
107 | 121 | server_addr.addr.name.name.type = SERVER_TYPE;
|
108 | 122 | server_addr.addr.name.name.instance = SERVER_INST;
|
109 | 123 | server_addr.addr.name.domain = 0;
|
110 | 124 |
|
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); |
116 | 125 | if (connect(sd, (struct sockaddr *)&server_addr,
|
117 | 126 | sizeof(server_addr)) != 0) {
|
118 |
| - perror("Connect failed"); |
| 127 | + perror("Client: connect failed"); |
119 | 128 | exit(1);
|
120 | 129 | }
|
121 | 130 |
|
|
0 commit comments