]> git.mxchange.org Git - flightgear.git/commitdiff
Multiplayer client/server system -- MessageBuf class and test harness complete
authorcvsguest <cvsguest>
Sat, 8 Nov 2003 04:15:31 +0000 (04:15 +0000)
committercvsguest <cvsguest>
Sat, 8 Nov 2003 04:15:31 +0000 (04:15 +0000)
src/Server/buftest.cxx
src/Server/messagebuf.cxx

index f7bbe0547c7b93f7cd0c39077f438c3b9a6ca420..46bddf47e97ad15b333b0cc39f4cd8c310d04729 100644 (file)
@@ -1,19 +1,11 @@
 #include "message.hxx"\r
 \r
-main(int argc, char **argv)\r
+void dumpmessage(string msg)\r
 {\r
-       FGMPSMessageBuf buf1, buf2;\r
-\r
-       buf1.clr();\r
-       buf1.put(fgmps_som8, true);\r
-       buf1.put(1);\r
-       for (int i=0; i<256; i++) {\r
-               buf1.put(fgmps_uchar, true);\r
-               buf1.put(i);\r
-       }\r
-       buf1.put(fgmps_eom, true);\r
+       FGMPSMessageBuf buf;\r
 \r
-       buf2.set(buf1.str());\r
+       buf.set(msg);\r
+       buf.ofs(0);\r
 \r
        bool done=false;\r
        while (!done) {\r
@@ -29,17 +21,17 @@ main(int argc, char **argv)
                double                  vald;\r
                string                  vals;\r
                printf("dump: ");\r
-               for (int i=0; i<16; i++) printf("%02x ", buf2.peek(i));\r
+               for (int i=0; i<16; i++) printf("%02x ", buf.peek(i));\r
                printf("\n");\r
                try {\r
-                       int tag = buf2.get(true);\r
+                       int tag = buf.get(true);\r
                        switch (tag) {\r
                        case fgmps_som8:\r
-                               mid8 = *(unsigned char *)buf2.read1();\r
+                               mid8 = *(unsigned char *)buf.read1();\r
                                printf("Start Message ID = %02x\n", mid8);\r
                                break;\r
                        case fgmps_som16:\r
-                               mid16 = *(unsigned int *)buf2.read2();\r
+                               mid16 = *(unsigned int *)buf.read2();\r
                                printf("Start Message ID = %04x\n", mid16);\r
                                break;\r
                        case fgmps_eom:\r
@@ -47,28 +39,102 @@ main(int argc, char **argv)
                                done = true;\r
                                break;\r
                        case fgmps_uchar:\r
-                               uval8 = *(unsigned char *)buf2.read1();\r
+                               uval8 = *(unsigned char *)buf.read1();\r
                                printf("uchar = %02x\n", uval8);\r
                                break;\r
                        case fgmps_uint:\r
-                               uval16 = *(unsigned int *)buf2.read2();\r
+                               uval16 = *(unsigned int *)buf.read2();\r
                                printf("uint = %04x\n", uval16);\r
                                break;\r
                        case fgmps_ulong:\r
-                               uval32 = *(unsigned long *)buf2.read4();\r
+                               uval32 = *(unsigned long *)buf.read4();\r
                                printf("ulong = %08lx\n", uval32);\r
                                break;\r
                        case fgmps_ulonglong:\r
-                               uval64 = *(unsigned long long *)buf2.read8();\r
+                               uval64 = *(unsigned long long *)buf.read8();\r
                                printf("ulonglong = %16llx\n", uval64);\r
                                break;\r
+                       case fgmps_char:\r
+                               val8 = *(char *)buf.read1();\r
+                               printf("char = %02x\n", val8);\r
+                               break;\r
+                       case fgmps_int:\r
+                               val16 = *(int *)buf.read2();\r
+                               printf("int = %04x\n", val16);\r
+                               break;\r
+                       case fgmps_long:\r
+                               val32 = *(long *)buf.read4();\r
+                               printf("long = %08lx\n", val32);\r
+                               break;\r
+                       case fgmps_longlong:\r
+                               val64 = *(long long *)buf.read8();\r
+                               printf("longlong = %16llx\n", val64);\r
+                               break;\r
+                       case fgmps_float:\r
+                               valf = buf.readf();\r
+                               printf("float = %f\n", valf);\r
+                               break;\r
+                       case fgmps_double:\r
+                               vald = buf.readd();\r
+                               printf("double = %g\n", vald);\r
+                               break;\r
+                       case fgmps_string:\r
+                               uval8 = buf.get();\r
+                               vals = buf.reads(uval8);\r
+                               printf("string = %s\n", vals.c_str());\r
+                               break;\r
                        default:\r
                                printf("Unknown prefix = %02x\n", tag);\r
                                done = true;\r
                                break;\r
                        }\r
                } catch (FGMPSDataException e) {\r
+                       printf("Data Exception\n");\r
                        done = true;\r
                }\r
        }\r
 }\r
+\r
+main(int argc, char **argv)\r
+{\r
+       FGMPSMessageBuf buf;\r
+\r
+       unsigned char           uval8;\r
+       unsigned int            uval16;\r
+       unsigned long           uval32;\r
+       unsigned long long      uval64;\r
+       char                    val8;\r
+       int                     val16;\r
+       long                    val32;\r
+       long long               val64;\r
+       float                   valf;\r
+       double                  vald;\r
+       string                  vals;\r
+\r
+       buf.clr();\r
+       buf.put(fgmps_som8, true);\r
+       buf.put(1);\r
+       for (int i=0; i<256; i++) {\r
+               buf.put(fgmps_uchar, true);\r
+               buf.put(i);\r
+       }\r
+       buf.put(fgmps_eom, true);\r
+       dumpmessage(buf.str());\r
+\r
+       buf.clr();\r
+       buf.put(fgmps_som8, true);      buf.put(1);\r
+\r
+       uval8  = 251;           buf.put(fgmps_uchar, true);     buf.write1(&uval8);\r
+       uval16 = 34567;         buf.put(fgmps_uint, true);      buf.write2(&uval16);\r
+       uval32 = 1345678901;    buf.put(fgmps_ulong, true);     buf.write4(&uval32);\r
+       //uval64 = 9999999999;  buf.put(fgmps_ulonglong, true); buf.write8(&uval64);\r
+       val8   = -120;          buf.put(fgmps_char, true);      buf.write1(&val8);\r
+       val16  = -17890;        buf.put(fgmps_int, true);       buf.write2(&val16);\r
+       val32  = -1345678901;   buf.put(fgmps_long, true);      buf.write4(&val32);\r
+       //val64  = -9999999999; buf.put(fgmps_longlong, true);  buf.write8(&val64);\r
+       valf   = 2 * 3.14;      buf.put(fgmps_float, true);     buf.writef(valf);\r
+       vald   = 3 * 3.1415927; buf.put(fgmps_double, true);    buf.writed(vald);\r
+       vals   = "hi there";    buf.put(fgmps_string, true);    buf.writes(vals);\r
+       buf.put(fgmps_eom, true);\r
+       dumpmessage(buf.str());\r
+}\r
index f5ff9f21892940820118c7dc906f2789b18decc6..b63509e25f4b6b1a734192336184f18097729cb4 100644 (file)
@@ -72,6 +72,7 @@ void FGMPSMessageBuf::writed(double data)
 \r
 void FGMPSMessageBuf::writes(string data)\r
 {\r
+       put(data.length());\r
        for (int i=0; i<data.length(); i++) put(data[i]);\r
 }\r
 \r