]> git.mxchange.org Git - flightgear.git/blob - src/Server/buftest.cxx
f7bbe0547c7b93f7cd0c39077f438c3b9a6ca420
[flightgear.git] / src / Server / buftest.cxx
1 #include "message.hxx"\r
2 \r
3 main(int argc, char **argv)\r
4 {\r
5         FGMPSMessageBuf buf1, buf2;\r
6 \r
7         buf1.clr();\r
8         buf1.put(fgmps_som8, true);\r
9         buf1.put(1);\r
10         for (int i=0; i<256; i++) {\r
11                 buf1.put(fgmps_uchar, true);\r
12                 buf1.put(i);\r
13         }\r
14         buf1.put(fgmps_eom, true);\r
15 \r
16         buf2.set(buf1.str());\r
17 \r
18         bool done=false;\r
19         while (!done) {\r
20                 unsigned char           mid8, uval8;\r
21                 unsigned int            mid16, uval16;\r
22                 unsigned long           uval32;\r
23                 unsigned long long      uval64;\r
24                 char                    val8;\r
25                 int                     val16;\r
26                 long                    val32;\r
27                 long long               val64;\r
28                 float                   valf;\r
29                 double                  vald;\r
30                 string                  vals;\r
31                 printf("dump: ");\r
32                 for (int i=0; i<16; i++) printf("%02x ", buf2.peek(i));\r
33                 printf("\n");\r
34                 try {\r
35                         int tag = buf2.get(true);\r
36                         switch (tag) {\r
37                         case fgmps_som8:\r
38                                 mid8 = *(unsigned char *)buf2.read1();\r
39                                 printf("Start Message ID = %02x\n", mid8);\r
40                                 break;\r
41                         case fgmps_som16:\r
42                                 mid16 = *(unsigned int *)buf2.read2();\r
43                                 printf("Start Message ID = %04x\n", mid16);\r
44                                 break;\r
45                         case fgmps_eom:\r
46                                 printf("End Of Message\n", tag);\r
47                                 done = true;\r
48                                 break;\r
49                         case fgmps_uchar:\r
50                                 uval8 = *(unsigned char *)buf2.read1();\r
51                                 printf("uchar = %02x\n", uval8);\r
52                                 break;\r
53                         case fgmps_uint:\r
54                                 uval16 = *(unsigned int *)buf2.read2();\r
55                                 printf("uint = %04x\n", uval16);\r
56                                 break;\r
57                         case fgmps_ulong:\r
58                                 uval32 = *(unsigned long *)buf2.read4();\r
59                                 printf("ulong = %08lx\n", uval32);\r
60                                 break;\r
61                         case fgmps_ulonglong:\r
62                                 uval64 = *(unsigned long long *)buf2.read8();\r
63                                 printf("ulonglong = %16llx\n", uval64);\r
64                                 break;\r
65                         default:\r
66                                 printf("Unknown prefix = %02x\n", tag);\r
67                                 done = true;\r
68                                 break;\r
69                         }\r
70                 } catch (FGMPSDataException e) {\r
71                         done = true;\r
72                 }\r
73         }\r
74 }\r