SQLiteClientLoggerSample.cpp 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. #include "RakPeerInterface.h"
  2. #include "SQLiteClientLoggerPlugin.h"
  3. #include "BitStream.h"
  4. #include "RakSleep.h"
  5. #include "Kbhit.h"
  6. #include "GetTime.h"
  7. #include "PacketizedTCP.h"
  8. #include "RakNetTypes.h"
  9. #include "rand.h"
  10. #define M_PI 3.14159265358979323846
  11. int main(void)
  12. {
  13. printf("Demonstration of SQLiteClientLoggerPlugin.\n");
  14. RakNet::PacketizedTCP packetizedTCP;
  15. RakNet::SQLiteClientLoggerPlugin loggerPlugin;
  16. packetizedTCP.AttachPlugin(&loggerPlugin);
  17. packetizedTCP.Start(0,0);
  18. printf("Connecting.\n");
  19. RakNet::SystemAddress serverAddress = packetizedTCP.Connect("127.0.0.1", 38123, true);
  20. printf("Connected.\n");
  21. /*
  22. int *heap1=1234, *heap2=2000;
  23. loggerPlugin.SetServerParameters(serverAddress, "memoryReport.sqlite");
  24. rakSqlLog("memoryReport", "Category,Operation,Line,File,Address,Amount", ("Heaps/Heap1", "new", 1234, "Heap.cpp", heap1, 15000));
  25. rakSqlLog("memoryReport", "Category,Operation,Line,File,Address,Amount", ("Heaps/Heap2", "new", 1234, "Heap.cpp", heap2, 10000));
  26. rakSqlLog("memoryReport", "Category,Operation,Line,File,Address,Amount", ("General/Graphics/3D", "new", 1234, "3DRenderer.cpp", heap1, 500));
  27. rakSqlLog("memoryReport", "Category,Operation,Line,File,Address,Amount", ("General/Graphics/3D", "new", 1235, "3DRenderer.cpp", heap1+500, 500));
  28. rakSqlLog("memoryReport", "Category,Operation,Line,File,Address,Amount", ("General/Graphics/2D", "new", 1234, "3DRenderer.cpp", heap1+500*2, 500));
  29. rakSqlLog("memoryReport", "Category,Operation,Line,File,Address,Amount", ("General/Graphics/2D", "new", 666, "2DRenderer.cpp", heap2, 1000));
  30. rakSqlLog("memoryReport", "Category,Operation,Line,File,Address,Amount", ("General/Graphics/3D", "new", 668, "2DRenderer.cpp", heap2+1000, 1000));
  31. rakSqlLog("memoryReport", "Category,Operation,Line,File,Address,Amount", ("Uncategorized", "realloc", 50, "Main.cpp", heap1, -200));
  32. rakSqlLog("memoryReport", "Category,Operation,Line,File,Address,Amount", ("Uncategorized", "free", 50, "Main.cpp", heap2, -1000));
  33. rakSqlLog("memoryReport", "Category,Operation,Line,File,Address,Amount", ("General/Graphics/3D", "free", 800, "3DRenderer.cpp", heap2+1000, -1000));
  34. */
  35. loggerPlugin.SetServerParameters(serverAddress, "functionLog.sqlite");
  36. RakNet::SQLLogResult res;
  37. int x=1;
  38. unsigned short y=2;
  39. float c=3;
  40. double d=4;
  41. char *e="HI";
  42. res = rakFnLog("My func", (x,y,c,d,e,&loggerPlugin));
  43. RakAssert(res==RakNet::SQLLR_OK);
  44. res = rakSqlLog("sqlLog", "handle, mapName, positionX, positionY, positionZ, gameMode, connectedPlayers", ("handle1", "mapname1", 1,2,3,"",4));
  45. RakAssert(res==RakNet::SQLLR_OK);
  46. res = rakSqlLog("sqlLog", "handle, mapName, positionX, positionY, positionZ, gameMode, connectedPlayers", ("handle2", "mapname2", 5,6,7,"gameMode2",8));
  47. RakAssert(res==RakNet::SQLLR_OK);
  48. res = rakSqlLog("sqlLog", "x", (999));
  49. RakAssert(res==RakNet::SQLLR_OK);
  50. res = rakFnLog("My func2", ("cat", "carrot", ""));
  51. RakAssert(res==RakNet::SQLLR_OK);
  52. loggerPlugin.IncrementAutoTickCount();
  53. loggerPlugin.SetServerParameters(serverAddress, "scatterPlot.sqlite");
  54. for (int i=0; i < 1000; i++)
  55. {
  56. res = rakSqlLog("ScatterPlot", "x, y, z, Color, Intensity", (i, (cosf((float)i/30.0)+1.0)*500.0, (sinf((float)i/30.0)+1.0)*500.0, (i%2)==0 ? "red" : "blue", frandomMT()));
  57. RakAssert(res==RakNet::SQLLR_OK);
  58. RakSleep(1);
  59. // Calling Receive() is something you should do anyway, and increments autotick count
  60. loggerPlugin.IncrementAutoTickCount();
  61. }
  62. loggerPlugin.IncrementAutoTickCount();
  63. loggerPlugin.SetServerParameters(serverAddress, "gradient.sqlite");
  64. double s;
  65. unsigned int *bytes = new unsigned int[256*256*256];
  66. for (int i=0; i < 4096; i++)
  67. {
  68. for (int j=0; j < 4096; j++)
  69. {
  70. int r,g,b;
  71. float intensity = 1.0 - (double)i/4096.0;
  72. s = 2.0 * sin(((double)j/4096.0)*(2.0*M_PI));
  73. if (s>0.0)
  74. {
  75. if (s>1.0)
  76. s=1.0;
  77. r=255.0*s;
  78. // r=pow(r/255.0,.5);
  79. }
  80. else
  81. r=0;
  82. s = 2.0 * sin(((double)j/4096.0)*(2.0*M_PI)+2.0*M_PI/3.0);
  83. if (s>0.0)
  84. {
  85. if (s>1.0)
  86. s=1.0;
  87. g=255.0*s;
  88. // g=pow(g/255.0,.5);
  89. }
  90. else
  91. g=0;
  92. s = 2.0 * sin(((double)j/4096.0)*(2.0*M_PI)+4.0*M_PI/3.0);
  93. if (s>0.0)
  94. {
  95. if (s>1.0)
  96. s=1.0;
  97. b=255.0*s;
  98. // b=pow(b/255.0,.5);
  99. }
  100. else
  101. b=0;
  102. if (intensity>.5)
  103. {
  104. r=255.0-((255.0-(double)r)*(255-(2*(intensity-.5))*255.0)) /256.0;
  105. g=255.0-((255.0-(double)g)*(255-(2*(intensity-.5))*255.0)) /256.0;
  106. b=255.0-((255.0-(double)b)*(255-(2*(intensity-.5))*255.0)) /256.0;
  107. }
  108. else
  109. {
  110. r=(intensity*(double)r*2.0);
  111. g=(intensity*(double)g*2.0);
  112. b=(intensity*(double)b*2.0);
  113. }
  114. bytes[i*4096+j]=(r)|(g<<8)|(b<<16);
  115. }
  116. }
  117. rakSqlLog("gradient", "gradientImage", ( &RakNet::RGBImageBlob(bytes,4096,4096,4096*4,4) ));
  118. delete [] bytes;
  119. RakSleep(5000);
  120. return 1;
  121. }
粤ICP备19079148号