|
| 1 | +<pre class="brush:c">#include <stdio.h> |
| 2 | +#include "msgType.h" |
| 3 | + |
| 4 | +/* |
| 5 | + * 포인터로 들어온 message의 messageType부터 확인을 한다. |
| 6 | + * |
| 7 | + * 메시지 타입이 REQUEST이면 message 속의 union 데이터 중 requestType 형의 |
| 8 | + * 스트럭처에 데이터를 세팅한 후 포인터를 리턴한다. |
| 9 | + * |
| 10 | + * 마찬가지로 RESPONSE 타입인 경우에는 responseType형의 스트럭처를 이용한다. |
| 11 | + * |
| 12 | + * 만일 둘중 아무 타입도 아니면 0을 리턴한다. |
| 13 | + * */ |
| 14 | +MessageType* setMsg(MessageType *message) |
| 15 | +{ |
| 16 | + if(message->messageType = REQUEST) |
| 17 | + { |
| 18 | + message->uType.request.reqType = 1; |
| 19 | + strcpy(message->uType.request.reqData, "Request.\0"); |
| 20 | + return message; |
| 21 | + } |
| 22 | + else if(message->messageType == RESPONSE) |
| 23 | + { |
| 24 | + message->uType.response.isDone = 1; |
| 25 | + strcpy(message->uType.response.resData, "Result |
| 26 | + 1.Data:3, 2.Number:10...\0"); |
| 27 | + return message; |
| 28 | + } |
| 29 | + return 0; |
| 30 | +} |
| 31 | + |
| 32 | +/* |
| 33 | + * showMsg()는 message 포인터를 인수로 받은 후, |
| 34 | + * 내부의 데이터를 화면에 출력한다. 이때도 messageType을 확인한 후 |
| 35 | + * union 속의 어떤 스트럭처를 활용할지 결정한다. |
| 36 | + * |
| 37 | + * 확인이 끝나면 해당 스트럭처 속의 데이터를 화면에 출력한다. |
| 38 | + * */ |
| 39 | +void showMsg(MessageType *message) |
| 40 | +{ |
| 41 | + if(message->messageType == REQUEST) |
| 42 | + { |
| 43 | + printf("Request Type: %d\n", message->uType.request.reqType); |
| 44 | + printf("Request Data: %s\n", message->uType.request.reqData); |
| 45 | + } |
| 46 | + else if(message->messageType == RESPONSE) |
| 47 | + { |
| 48 | + printf("Response is done: %d\n", message->uType.response.isDone); |
| 49 | + printf("Response Data: %s\n", message->uType.response.resData); |
| 50 | + } |
| 51 | +} |
| 52 | +</pre> |
0 commit comments