-
Notifications
You must be signed in to change notification settings - Fork 67
/
Copy pathCHANGELOG
937 lines (933 loc) · 65.7 KB
/
CHANGELOG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
# llbc library update log file.
# Longwei Lai<[email protected]>
######################################################################################
# Version: 1.1.1
# 2023/4/4 -
# 1. 重构 LLBC_Stream, 重构后: 实现读写分离 + 更强大&适配性更好的类型检测支持
# 2. 标准化 LLBC_Service phase, 完整简化代码
# 3. 简化 LLBC_Service Send()/Multicast()/Broadcast() 接口及实现
# 4. 优化 LLBC_Service 组件操作方法
# 5. 简化 LLBC_Packet 默认 packet header
# 6. 优化 Num to Str 实现
# 7. LLBC_LogAndXXX() 宏支持附带格式化字符串及参数
# 8. premake 构建支持自定义 toolset
# 9. Time 相关 接口/变量 命名简化
# 10. 对象池代码简化/性能提升/诊断能力加强
# 11. MD5接口标准化(参考python)
# 12. 随机支持更新: mtrand实现替换为stl自带实现, 支持权值随机
# 13. LLBC_Variant更新: 适配性加强/性能提升/序列化空间占用优化/mod操作支持
# 14. Random支持shuffle
# 15. Logger完善:
# - 废除logLevel配置项, 只保留明确的consoleLogLevel/fileLogLevel配置来明确配置appender log level
# - 支持条件判断宏日志打印支持(极其方便), 如: LLBC_WarnAndReturnIf/LLBC_ErrorAndBreakIf/...
# - 支持环境变量pattern打印: %E{EnvName}
# - Debug/Trace日志级别对调, 调整后, Trace级别将是最低级别
# - 进一步优化整个日志代码及性能, 特别在log pattern格式化时的性能, 性能提升较大
# 16. 完整优化LLBC_Time/LLBC_TimeSpan, 性能及接口全面优化、简化, 特别在time/time span string解析上
# 17. LLBC_Component方法收敛(感谢reckful),收敛后Component非流程化事件处理通过OnEvent()完成, 业务层也可以使用Component Event机制来进行Component事件dispatch
# 18. LLBC_BinaryHeap调整为使用stl::priority_queue实现(感谢reckful)
# 19. 废除框架中旧式对象池实现, 提供全设计及实现的对象池, 代码得到极大的简化, 同时性能得到足够的提升
# 20. 构建流程、脚本完善:
# * 支持 cmake 构建
# * premake 调整为使用gmake2
# * lua/cpython submodule构建及发布流程整理及完善, llbc版本号提取到cfg.py中
# * 完整支持从架构:x86/ARM, 当前已适配mac平台的x86/ARM架构
# 22. LLBC_BinaryHeap优化, 调整为使用std::priority_queue实现
# 23. 优化整个框架os api/c lib/c++ lib头文件包含, 尽量降低包含依赖并提升编译速度
# 24. Properties配置读写类重构, 重构后读取的结果为LLBC_Variant,更易于使用
# 25. App->Service->Component配置管理简化、优化, 优化后, 所有配置都统一为LLBC_Variant
# 26. 标准化app reload概念及实现, 标准化后, Component原有的冗长的OnAppConfigReloaded()将变成OnReload()
# 27. 重写的virtual方法统一使用override限定
# 28. 提供标准化LLBC_Stopwatch实现, 以代替原有旧式的LLBC_CPUTime实现, 同时tsc读取已调整为读取稳态tsc
# 29. LLBC_EventMgr完整优化, 同时对Firing过程的add/remove listener及嵌套firing操作支持将更友好, 特别地: 增加了死循环fire的检测
# 30. LLBC_App调度线程完整支持LLBC_Timer的调度, 即: 主线程也可以使用LLBC_Timer
# 31. LLBC_File相关接口改进、优化
# 32. 其它杂项优化及改进
#
# Version: 1.1.0
# 2022/8 - 23/4/4
# ThreadMgr测试用例增加Thread Start/Stop Hook测试代码
# 优化非LogRunnable start线程stop时的等待逻辑
# LogRunnable兼容非Start()调用者线程进行Stop()的情况, 以确保在Crash-Hook中的LoggerMgr->Finalize()调用可正常结束
# 删除空ThreadEntry函数, 去除测试代码
# 修复LLBC_Task/LLBC_ThreadMgr改造后的相关Bugs, 优化部分逻辑:
# - Service下管理的Poller Tasks start/stop 线程不配对导致wait失败,引发可能的crash问题;
# - 所有Task子类进行Stop()方法优化, 去除不再需要的标记位, 同时进行代码简化;
# ThreadMgr提供Thread Start/Stop hook支持(于线程上下文)
# Service-Level SesionInfo添加时间从Service线程处理SessionCreate时机前置到Poller线程AddSession()时机,确保业务自定义协议栈中调用Service::Send类接口有效
# PollerMgr代码优化
# LLBC_Task增加ThreadMgr/ThreadGroup Handle获取接口
# Disable assignment宏优化
# Fix __LLBC_FilePrint函数内部一处malloc/free mismatch问题
# Json Log增加timestamp自动输出支持(通过addTimestampInJsonLog选项控制, 默认关闭)
# 简化核心库头文件包含
# 去除不必要的子模块目录头文件
# ThreadMgr/Task相关代码完善
# App事件事件方法命名简化: OnAppConfigXXXX() -> OnAppXXX()
# App命名简化: Application -> App
# LLBC_XXXManager -> LLBC_XXXMgr
# App命名简化: Application -> App
# LLBC_XXXManager -> LLBC_XXXMgr
# 提升__LLBC_FilePrint()性能
# 修复LLBC_BasicString一处operator*()实现bug
# LLBC_EventManager -> LLBC_EventMgr
# 修复App一处startPhase定义问题
# 修复Service初始化组件失败时引发组件重复delete的问题
# 修复GC池Array有处陈年老bug
# 修复Logger初始化失败时引发的crash问题
# ThreadMgr/Task整体重构、简化;LLBC_PrintLine/LLBC_FilePrintLine命名简化;Log Uninit output信息强化
# 修复一处 non-win32 路径长度宏定义问题
# 日志pattern支持: 进程主执行映像名输出:%e; 日志文件名的主执行映像名从%m调整成%e(对%m还保持兼容), 以确保跟日志pattern定义一致
# Fix LLBC_STLHelper::RecycleContainer()对std::unordered_map/std::array的匹配问题
# style: 去除文件末尾的多余空行 for testsuite & wrap
# revert: Python-ast.h 改动回退
# style: 去除文件末尾的多余空行 for testsuite & wrap
# 优化头文件包含, 采用 #pragma once 机制
# 修正 EventFirer 风格
# 优化LLBC_Array一次迭代器合法性判断代码
# 空格行删除
# 修正 EventFirer 风格
# 规整EventFirer相关代码
# Service event 支持链式发送
# Service event 支持链式发送: 修正头文件引用
# Service event 支持链式发送: 代码风格修正
# Service event 支持链式发送: 添加 service event firer 的对象池函数支持
# Service event 支持链式发送: 修正 ReferencablePoolObj 使用 & 代码风格
# 修正App Stop Signals一处手抖问题(SIGFPE被包含)
# Service event 支持链式发送
# Service event 支持链式发送
# TLS对象池访问兼容非llbc thread(将产生内存泄露)
# 旧式sprintf()函数调用去除
# 旧式sprintf()函数调用去除
# 增强LLBC_Variant::operator[] const在类型为Seq时的兼容性
# Fix bug of Stopping ExternalDrive Service
# 修复高版本GCC编译器编译错误
# 丢弃t/master特定代码
# 修复高版本编译器编译错误
# 优化Non-Win32平台crash信号处理: 先调整成DFL, 再进行处理, 如过程中无法处理, 重新raise signal
# 调整logger log_level设置逻辑
# Log console appender多彩输出时不强制设置bg color
# 修复Log库优化时不兼容非llbc thread日志输出的问题; LLBC_BaseTask类名简化为LLBC_Task
# 补回t/master专用代码
# Fix编译错误
# LLBC_BasicString支持LLBC_BasicCString参数构造
# 删除t/master合并过来的非通用代码
# 去除LLBC_BasicCString::str()方法, 以减少同功能方法数量(c_str()); LLBC_BasicString增加跟LLBC_BasicCString互操作支持, 包括:比较, 逻辑运算
# Component方法反射调用TestCase增加getchar()调用
# 修复linux平台编译错误
# 整体进行llbc核心库代码规整
# 优化Comp异步等待初始化/销毁流程: 过程中不止对已初始化Comps进行必要的Update调用, 同时确保Service基础资源可被心跳及访问, 包括:会话/Timer调度器/事件管理器/Post-Tasks/...
# 针对NonWin32 platform, 在crash handler处理异常时不进行exit(xxx), 而是进行signal reraise
# ServiceMgr stop service逻辑修改:去除InTls约束
# c# wrapped/lua wrapped层适配Log rolling mode支持
# 更新LLBC_LogLevel接口定义
# Log file rolling支持扩充: NoRolling/HourlyRolling/DailyRolling
# 更新WinPreBuild.bat
# 优化LLBC_ServiceMgr&LLBC_Application中的GetService()/StopService()接口性能
# 扩大LLBC_Component::AddMethod()方法支持, 原只支持当前组件方法(也是一个约束),当前由业务角度出发增加Delegate方法支持,以确保业务可以直接将lambda方法作为component通用方法进行注册,减轻业务编码量
# Update windows-build.yml
# 调整Service Add To ServiceMgr时机为InitComps()&StartComps()前, 以确保业务可完整反射获取Service并进行Method的方法反射调用
# TestSuite注册同步更新
# 删除旧comp测试文件
# 修正一处ptr value获取warning
# 恢复pyllbc编译库设定文件
# 修正LLBC_BasicCString::opeartor+/-(difference_type)内部assert bug
# 优化Component 动态反射方法调用 接口methName参数
# lua wrap中的Directory模块增加Exists支持,以开放给onemt使用
# 修正LLBC_Stream一处重构导致的bug
# Log console appender DIRECT_LOG_TO_CONSOLE 配置关闭; 修正关闭时切换stdout/stderr输出时, stdout未刷新导致的output交叉问题
# 更新premake5.lua
# 修正一处日志优化时产生的log runnable线程占用100%的bug
# 更新pyllbc log测试代码中的测试配置文件名
# LLBC_Variant增加[const ]char *operator() const隐式转换支持(从Ptr类型特化实现), 增加支持后: [const ]char *的construct/assignment/implicit cast支持都标准化, 不再会解析成ptr类型从而引发不必要的crash, crash示例代码:
# LLBC_Variant str("hello world")
# std::cout <<(str ? str : "hey judy") <<std::endl;
# 以上代码将引发core, 转为三目运算符中的?后面的表达式默认转换为pointer非str, 最终core
# LogData对象池 每条带对象数量定义 调整到Config.h
# 优化LLBC_Directory中ModuleFile dir/name/path 命名
# LogData内存条带容量调整为512
# Component配置更新做最大限度的配置保留: 清理非当前配置类型配置; 配置加载失败时, 保留旧有配置
# 恢复logData队列(性能提升不明显情况下,优先保证设计清晰及代码简洁)
# 优化日志性能: 日志数据push优化; LogData类型对象池条带优化
# CString注释完善
# 会对t公司进行的临时支持
# 删除多余空行
# 完全去除CString的constexpr约束
# 兼容c++11严格constexpr标准
# 修正ptrdiff_t未定义问题
# 优化LLBC_Component::GetComponent()方法, 增加const版本支持
# Service增加GetComponent()const方法支持; 完善LLBC_BasicCString操作方法
# 更新lua log testcase代码
# LLBC_BasicCString调整为stl string命名风格,以降低使用时的学习成本跟增加业务代码一致性
# 回退临时测试代码
# 修复LLBC_BasicCString operator==/operator<优化时未添加const约束的问题
# 修正non-win32平台编译错误
# LLBC_CString优化; 日志优化
# LLBC_CString支持hash, 优化实现
# 修正格式化检查参数位置错误bug
# 兼容框架未初始化时对LOG_XXX()宏的调用
# 调整日志文件默认缓冲大小(40K)
# 修正LLBC_CPUDebug实现,以规避不必要的误差
# 调整LOG宏定义:L[J/S]OG_XXX2()参数1由tag调整为loggerName, L[J/S]OG_XXX3()参数1由loggerName调整为tag; 去除废弃代码
# 完善BasicCString
# 优化LogRunnable空闲睡眠时间
# 修正Logger的consoleLogLevel/fileLogLevel读取逻辑, 旧:有配置则读取, 无则使用root or default; 新:有配置则读取, 无则确认是否有配置logLevel有则使用, 最后再使用root or default
# 适当调整LogData.msg的初始分配最小大小(256->(128+64)), 部分cast/unlikely规整
# LogData回收时, 增加如msg缓冲过大(超过格式化缓存7/8时)进行释放的逻辑
# 删除废弃宏
# 修复LogData优化后可能的logger finalize卡死问题
# 修改日志测试配置文件
# 优化BasicCString及日志
# 日志优化,减少LogData内部间接内存分配
# 规避可能的日志宏变量与业务参数冲突问题
# 优化LogFileAppender日志性能; 代码整理
# 规避格式化参数命名冲突
# 日志FileAppender优化
# 优化LogFileAppender一处时间判断; test logger file output增加tag打印
# 优化LogLineToken常量表实现, Finx linux&mac平台 编译错误
# 优化Log Appender性能
# 调整JsonLog测试次数
# 修复Log时间精度调整到micro-seconds后的Bug
# 调整App启动失败时的LLBC_Cleanup()调用时机(析构中调用), 以确保业务可最终拿到错误码, 以进行处理
# 修复一处comp 初始化/启动 失败时的状态码判断问题
# 修复LLBC_Startup重复调用时, win32 symbol未cleanup导致的startup失败问题
# 修正core服务托管后llbc dump无法产生的问题
# LLBC_Stream::Skip()恢复bool返回
# non-win32平台crash处理中, 增加"无法获取core pattern dir时的默认处理"
# 修复Log格式化一处bug
# llbc core lib链接时增加dl库链接
# 删除旧编译系统支持文件
# 修正gcc 9.4.0版本编译报错
# 修正premake一处filter bug
# 调整Prevent config load时机到LoadConfig()内部函数; 修正一处初始化问题;
# testsuite中所有测试相关配置文件在构建时自动copy到output目录; 标准化testsuite中测试配置文件名;
# 增加.idea目录忽略
# Service/Comp标准化配置读取支持测试代码支持
# 标准化Service/Comp配置支持; App增加"阻挡配置加载"接口支持;
# 修正LLBC_Variant在序列化Str/Dict时可能的Core
# 修复LLBC_Property在复制构造时parent未设置的Bug; 去除工作的This定义及前缀使用;
# testsuite项目添加.ini/.xml/.cfg文件加入工程, 以方便在vs中直接编辑; 设置调试目录为输出目录;
# LLBC_Stream性能优化、代码简化,TestCase完善
# LLBC_Swap在Stream中的运用去除
# 去除template function多余inline
# 完整简化LLBC_Stream读写接口(只保留Read()/Write()两个接口), 统一Read/Write实现
# Fix合并分枝旧风格代码产生的编译错误
# 调整inline实现文件名风格:XXXImpl.h->XXXInl.h; IService去除,统一成Service
# LLBC_IService类名调整为LLBC_Service,以更简化使用
# 移除协议栈中的Connect()接口
# pyllbc native Stream对象部分方法调整为inline
# 完整优化LLBC_Service::GetComponent()方法性能
# Stream XXXSize()接口调整成XXXCap()
# 删除多余空行
# 移除frametimeout 相关代码
# 移除多余的LLBC_Free/LLBC_Delete/LLBC_Deletes/LLBC_New/LLBC_News宏
# refactor: 更新 README Build Status
# 支持 linux/windows/macos 平台 ci
# refactor: GBK 字符编码测试
# chore: 支持 linux/windows/macos 平台 ci
# refactor: 优化测试代码, 去除没有使用的类和方法
# Update c-cpp.yml
# Update c-cpp.yml
# Github action 支持 windows 编译平台
# 移除 appveyor
# Github action 添加 windows 平台支持
# 替换 Github action 编译平台为 centos, 移除其余 ci 平台
# 移除 Travis ci
# 更新 github action 库依赖
# Github action 编译平台设为 centos
# Github action 接入
# Create c-cpp.yml
# 允许Timer在Cancel中Reschedule
# Application Start()/Stop() 方法支持重写
# Log time精度调整到微秒
# 修正tinyxml2.cpp中llbc namespace定义中包含c++库头文件引发的编译报错
# 代码风格统一
# Fix GetComponent<>() bug
# 优化 Service GetComponent 性能
# Application及Component事件方法名调整:Will->Early, After->Late
# Component增加IsInited()/IsStarted()接口
# 修复Comp中的OnStartFinish/OnWillStop事件方法调用顺序错误问题
# App start phase枚举定义优化
# Component支持Application阶段事件处理;Component增加OnStartFinish/OnWillStop事件阶段实现
# 删除AppCfgTest代码中多余cout
# App支持启动阶段获取
# 支持 mac 平台编译
# 调整LLBC_Application::Start()参数: name支持默认不填写, 为空时将使用进程可执行文件名(去除后缀后的名字)
# LLBC_Time时间戳相关接口整理, 整理后: static接口:NowTimestampInXXX(), non-static接口:GetTimestampInXXX()
# pyllbc testsuite代码整体重新运行, 兼容性问题修正
# pyllbc导出方法更新
# 修复pyllbc Service.adddecoder内部错误(使用了旧的native export method)
# 修正GetComponent注释错误
# 修复pyllbc packet receive时, 如无decoder, stream数据不会attack到packet.data的bug
# pyllbc中的Stream简化&优化&Bug Fix:简化str pack/unpack, 去除S$支持;优化str/unocode pack/unpack性能;修复str/unicode的pack unpack bug
# 优化Application一处return
# LLBC_Component增加GetComponent方法, 以简化Component获取; 部分非强制事件方法调整成inline实现
# LLBC_Stream::GetBuf()、LLBC_Stream::GetBufStartWithPos()调整为template方法, 以更方便使用
# 修复pyllbc中Service相关代码问题
# 优化非win32平台cpu frequency获取耗时
# 修正部分测试用例在框架迭代中未同步更新导致运行不正常的问题
# 优化Service Frame Tasks处理代码性能
# 1. 整体去除llbc Service中SvcType定义;废除pyllbc Service中的CODEC设计;Component::OnIdle()参数从int调整为无歧义的LLBC_TimeSpan;其他细节优化;
# Task内部等待时间统一调整为1ms
# 增加LLBC_Foreach宏支持
# 将RawProtocolFactory及NormalProtocolFactory导出
# 增加LLBC_ContinueIf/LLBC_LogAndContinueIf支持
# 修正windows平台无SIGQUIT导致的编译错误
# feat: 前置 application stop 标志时机
# 去除Application::Run方法, Start内部直接进入app loop, 同时将app tick事件方法调整为OnUpdate
# App stop信号增加SIGQUIT
# 完善LLBC_xxxIf便利宏支持
# 优化LLBC_Service::GetComponent方法
# 调整Service线程启动时等待_started标记时间
# 删除service中旧风格typedef
# 移除Util_Text.h中Trim相关函数(LLBC_BasicString已经提供支持, 无需重复定义函数)
# 去除多余全局命名空间前缀;删除string相关包装函数(Util_Text.h)
# 修复windows平台信号相关编译错误
# 修复windows平台编译错误
# Service::GetComponent()接口优化;Application支持Run
# wrap层同步core lib中Service相关接口名字调整
# 调整Service相关接口风格及命名
# 临时支持接口类查找(新旧代码调整遗留问题临时修正)
# 支持Starting/Stopping comps时对已经started的comp进行OnUpdate调用
# 规整component events
# 删除空cpp文件
# 去除多余LLBC_SetLastError()方法
# Coder相关类名/文件名去除I前缀
# 修正LLBC_GetLastError()函数编译问题
# 去除Component Factory接口类I前缀
# 错误码相关整理:支持自定义错误码描述(只在Library及Custom类型的Error上有效);去除LLBC_Errno/LLBC_SubErrorNo宏
# 修正一处LLBC_Application::OnWillStart()启动失败后的errno设置bug
# 更新Component类及文件命名, 去除I前缀;修复windows编译错误
# App支持WillStart/WillStop
# LLBC_File支持Write(const char *)
# 增加App StartFinish/SopFinish事件方法
# 调整非Win32平台crash handler方法名
# 修复windows编译warnings
# App stop流程调整:优先stop all services, 以确保栈序
# App/Service-Comp阶段事件方法等待重试间隔调整为100ms
# Component的Init/Destroy/Start/Stop事件方法支持等待机制(类App)
# 修复递归锁问题
# 修正StopService()错误未设置错误码的问题
# ServiceMgr改进;buf fix
# 同步修改pyllbc层的appliation对象OnStop接口定义
# 修复lua testsuite.lua中reguire旧文件名导致的require报错
# 修复csllbc LibConfig几处signed/unsigned compare warnings
# 修复linux一处编译错误
# 修复LogRunnable一处可能的core
# App OnStart/OnStop 尝试间隔调整为10ms
# 规整Application OnStop()事件接口, 将是否可以stop调整为由出参带出, 返回值为void, 以确保定义跟行为跟OnStart()一致;Service接入application reload事件
# linux平台链接选项-rdynamic, 以确保持进程内调用backtrace()相关接口时可返回symbol name
# pyllbc适配核心库修改
# Windows crash hook功能完善,测试代码完善
# 设置启动项目
# 标准化crash hook支持
# T/master
# 更新csllbc生成文件
# 修复windows msvc编译器long类型转换问题
# 修正一处pyllbc native method注册错误
# pyllbc同步corelib中的Property接口修改
# 修正csllbc_testsuite项目路径问题; premake5.lua添加到llbc项目files中, 以方便直接在vs中编辑
# 增加variant支持;Application改进;其他细节优化
# Application命名调整
# Fix一处编译warning
# 添加pyllbc生成文件ignore
# 更新.gitignore
# 删除自动生成文件
# 修正一处文件命名问题
# Update appveyor.yml
# 删除tencent无关开发者通知
#
# Version: 1.0.9
# 2020/9~2022/8
# 1)【llbc core】Facade->Component命名变更
# 2)【llbc core】优化LLBC_Directory::Join(),使用变长模板参数简化原有实现(感谢caochunxi)
# 3)【llbc core】标准化Variant排序实现, 确保行为跟python一致
# 4)【llbc core】标准化Variant operator bool()/AsBool()操作,参考python,对于number: 0为false,对于string/seq/dict: 代为false
# 5)【testsuite】testsuite运行时支持argc/argv输入(为之前testsuite改造时导致的机制缺失, 现已补上)
# 6)【pyllbc】优化python层packet构造性能, 提供reuse机制以确保packet创建的高效(PYLLBC_CFG_PACKET_REUSE选项), 针对packet创建参数同样进行优化, 优化后的收包性能提升100%
# 7)【pyllbc】针对python层的packet对象的不常访问的属性:local_ip/local_port/peer_ip/peer_port/extdata1/extdata2/extdata3, 进行惰式访问优化, 以最大限度提升性能
# 8)【llbc core】提供新式Delegate实现, 在兼容std::funtion的同时, 对c function/c++ method提供更好的性能, 同时废除旧式Delegate实现, 所有代码配套调整
# 9)【llbc core】标准化LLBC_TimeSpan构建接口: FromSS/FromMMSS/FromHHMMSS/...
# 10)【llbc core】Timer接口简化, 只保留LLBC_TimeSpan参数接口, 超时数据类型从uint64调整到sint64, 以跟time api保持一致
# 11)【pyllbc】python Service.fire_event接口设计优化, 去除复杂的addiHandler/customHandler, 统一清晰化成enqueueHandler/dequeueHandler, 以正确处理python event object的ref inc/dec
# 12)【llbc all】去除NULL使用, 调整成nullptr
# 13)【llbc core】LLBC_BasicString::format/append_format性能改进
# 14)【llbc core】日志记录器时间访问优化(原10w+/s优化成1000/s)
# 15)【llbc all】其它细节优化, bug fix
# 16)【llbc core】修正epoll中数据访问问题
# 17)【premake】对wrap实行清晰分组
# 18)【llbc core】为了更好的其他库结合, 针对win32平台特有的字符串数据类型在非win32平台的定义, llbc提供可选项让使用者项目中有其他项目有定义的情况下取消定义, 宏: LLBC_CFG_CORE_UTILS_DEF_WIN32_STYLED_STR_DATATYPES
# 19)【llbc core】优化Log输出性能, 做到Log输出时的0 malloc/free以及只有一次的log message format操作, 对接口及设计进行优化
# 20)【llbc core】事件系统支持链式事件调用, 以做到使用最简洁,同时事件对象对象池化, 做到最高效性能
# 21)【llbc core】对象池反射识别优化, 使用更简洁方式反射对象池方法列表,同时对象池对象基类命名简化:LLBC_PoolObjectReflectionBase->LLBC_PoolObject
# 22)【llbc core】对象池可重用方法识别增加reuse()/Reuse()支持
# 23)【llbc core】LLBC_BasicCString增加std::ostream &operator <<(std::ostream &operator <<, const LLBC_BasicCString &)方法支持
# 24)【llbc core】相关多余LLBC_EXTERN宏使用去除
# 25)【llbc core】对象池反射方法简化, 去除IsPoolObject()/GiveBackToPool()方法要求, 以让对象池使用者以更轻的负担编写反射支持的类实现
# 26)【llbc core】简化Hash包装, 提供LLBC_Hash<algo>(bytes, size) 及 LLBC_Hash()方法支持
# 27)【llbc core】对象池结合推进中项目进行优化:
# - 便利性接口提供
# - 泛化GC对象、非GC对象的接口访问及使用, 标准化LLBC_ObjectGuard, 能统一管理GC/非GC对象, 支持copy construct/copy assignment
# - 对象池反射改进及简化: 简化反射支持接口约束, 增加c++11的泛型反射支持, LLBC_Recycle优化、完善
# - 对象重用代码优化
# 28)【llbc core】Event模块整体代码简化及命名优化
# 29)【llbc core】RDTSC/LLBC_CPUTime完整重构, 标准化cpu时间获取支持
# 30)【llbc core】框架代码中的static const number变量定义调整成constexpr
# 31)【pyllbc】修复一处dist操作内存泄漏
# 32)【llbc all】完整简化Makefile, 同时修复部分projs有并发编译时的依赖报错问题
# 33)【llbc all】部分旧风格代码的整理(2015年前)
# 34)【llbc core】完整优化LLBC_Stream内部的resize实现, 确保在内存分配时有一个可控的分配策略
# 35)【llbc core】修正部分宏在未引入namespace时的报错问题(集中行log module)
# 36)【llbc core】完整简化llbc对不是大部分模块都有使用的OS API/C lib/C++ lib头文件引用, 以降低编译耗时及减少不必要的耦合, 同时也增强可移植性
# 37)【llbc core】Timer timeout handler/cancel handler及Service相关Subscribe方法简化, 支持(Obj *, void (Obj *)(xxx))接口
# 38)【llbc core】LLBC_Time/LLBC_TimeSpan接口规整及简化
# 39)【llcb core】LLBC_Timer的TimerScheduler获取隋式延迟到Schedule调用处, 以确保跨线程创建的Timer可被实际执行线程Schedule
# 40)【llbc core】优化LLBC_Packet payload相关接口访问
# 41)【llbc all】处理新g++编译器编译问题
# 42)【llbc core】LLBC_Delegate性能优化, 增加operator == nullptr/operator != nullptr支持
# 43)【llbc core】LLBC_TimerData内存占用优化
# 44)【llbc core】LLBC_Variant性能优化,泛型变参支持
# 45)【llbc core】对象池代码规整,性能优化,部分常用类型在llbc框架内直接特化(感谢@bravepan)
# 46)【llbc all】兼容macos arm平台编译(感谢@reckzhang)
# 47)【llbc all】更新premake, 增加vs2022支持
# 48)【llbc core】LLBC_MessageQueue完整优化
# 49)【llbc core】LLBC_Service队列消息创建、处理完整优化
# 50)【llbc core】提升日志库性能(提升100%), 日志相关代码规整
# 50)【lullbc】提升日志库性能(提升100%), 日志相关代码规整(为龙腾《苏丹的复仇》项目进行)
# 51)【pyllbc】去除vs20xx后的HAS_ROUND宏报错
# 52)【llbc all】去除BeforeIncl.h/AfterIncl.h文件(统一通过premake完成)
# 53)【llbc core】去除LLBC_MemCpy/LLBC_MemSet多余宏, 使用c库memcpy/memmove/memset代替
# 54)【llbc core】规整LLBC_Stream中的Read/Write接口(去除ReadBuffer/WriteBuffer)
# 55)【llbc core】Service默认帧率调整到200, 暂时禁止service frame time特性
# 56)【llbc core】标准化RDTSC支持宏及相关代码, 包括LLBC_CPUTime
# 57)【lullbc】lua库升级到5.4.0_patch
# 58)【lullbc】标准化lullbc库,提供Chrono/Directory/CPUTime/Threading模块支持, 旧有支持执行命名及模块标准化
# 59)【lullbc】lulib_setting.lua简化, 去除use_setting标记
# 60)【pyllbc】pylib_setting.lua简化, 去除use_setting标记
# 61)【llbc all】其他诸多细节完善, 优化
# BugFix:
# - 【llbc core】修复若干string split bugs(感谢ericyonng)
# - 【llbc core】修复Time format一处格式化bug
# - 【llbc core】修复logger finalize一处死锁问题(by caochunxi)
# - 【llbc core】修复一处variant构造bug
# - 【llbc core】修复Random中RandInt()接口返回可能不在指定区间的Bug
# - 【llbc core】修复LLBC_MessageBlock一处memory overlapped检查bug(黏连属于合法但旧代码认为非法)
# - 【llbc core】修复LLBC_LogData中funcbeg/funclen未初始化导致的coredump问题
# - 【llbc core】LLBC_File设置BufMode的泄漏问题修复
# Version: 1.0.7-1.0.8
# 2019/06~2020/9
# 1)【llbc core】增加Protocol Stack控制支持,以安全异步的完成Service层跟ProtocolStack层的通信.
# 2)【llbc all】 规整所有for中的++/--使用,所有++/--统一调整为前置.
# 3)【llbc core】增加Protocol Stack Control机制,以满足业务层安全的对协议栈实施控制.
# 4)【llbc core】在非全栈模式下, Codec Protocol Stack支持每session一个.
# 5)【llbc core】优化ObjectPool代码, 包括Guard部分及核心部分, 使得ObjectPool更易使用.
# 6)【llbc core】Protocol Stack Control增加ctrl data delete delegate支持, 以让框架以自定义的方式销毁ctrlData.
# 7)【llbc core】调整objbase模块到core中, 去除编译控制.
# 8)【llbc core】objectpool增加ReferencablePoolObj支持, 以从对象池取得可引用对象(Retain/Release/AutoRelease).
# 9)【llbc core】优化LLBC_Dicrionary代码(主要为Iter相关).
# 10)【llbc core】优化object pool代码,去除不必要的运算, 性能再提升10%.
# 11)【llbc core】修复BasicString::split() bug, 并增加是否strip empty的支持.
# 12)【lullbc】Log中的file信息的前导符号去除(&,=), 以让其它交互工具更容易识别路径并进行交互操作.
# 13)【llbc core】Application中的ThisIApp()接口调整为ThisApp(), 统一命名.
# 14)【llbc core】修复Ini文件写入行结束符多出一个0x0d的问题.
# 15)【llbc core】objectpool增加memory align支持.
# 16)【llbc core】增加process识别, 当前支持x86/x86_64/arm/thumb/arm_64(详见PFConfig.h).
# 17)【llbc core】Service Full-Stack 选项从Config中去除,变成Service属性,即不同Service中的Full-Stack选项可不同,在Create时指定.
# 18)【llbc core】优化EventManager代码, LLBC_ListenerStub类型由String调整为uint64.
# 19)【llbc core】objectpool增加对象MarkPoolObject():void方法识别, 以在生成对象时标记此对象为池子内部对象, 以供业务及框架未来拓展用.
# 20)【llbc core】完善配置加载支持,IApplication/IFacade增加配置加载事件方法定义(ServiceMgr部分方法暂时线程不安全, 因项目需要先行提交).
# 21)【llbc core】更新mtrandom库.
# 22)【llbc core】增加LLBC_GetCurrentThreadId()支持, 对应LLBC_ThreadId数据类型增加.
# 23)【llbc core】优化Log ThreadId/ProcessId Token打印信息.
# 24)【llbc core】ObjectPool删除ObjectPoolInsts时, 增加删除顺序依赖支持(Ordered Delete).
# 25)【llbc core】Packet增加GetMutablePayload支持, 以在实际情境中更灵活进行发送数据的操纵.
# 26)【llbc core】ObjectPool增加自省(反射支持), 具体参见LLBC_PoolObjectReflection.
# 26)【llbc core】LLBC_Packet/LLBC_MessageBlock增加完整对象池对象自省方法实现.
# 27)【llbc core】LLBC_ObjectGuard增加DetachObj支持, 以使业务更灵活定制逻辑及做优化.
# 28)【llbc core】LLBC_ICoder增加对象池反射方法支持(在多重继承时要求重写).
# 29)【llbc core】LLBC_Packet中的Payload/Encoder/Decoder增加对象池对象识别.
# 30)【llbc core】增加LLBC_BasicCString支持, 以支持对const char *的逻辑支持(如对象池).
# 31)【llbc core】LLBC_IObjectPoolInst增加GetIObjPool()方法, 以便支持访问所属LLBC_IObjectPool需求.
# 32)【llbc core】增加LLBC_IObjectPoolInstFactory工厂类设计, 以支持在类型未知的情况下(LLBC_IObjectPool::GetIObjPoolInst())也能够动态创建对应类型的对象池实例, 最终结果依赖于使用者是否事先将未知类型对应的池工厂类有注入.
# 33)【llbc core】Service/Session/Socket/Protocol/Protocol Stack/Packet/MessageBlock完成支持对象池, 协议收发完成对象池化.
# 34)【llbc core】ObjectPoolInst去除<PoolInstLockType>模板参数, 调整为构造传入Lock, 以更易使用; 对象池对象反射方法要求增加一个LLBC_IObjectPoolInst *GetPoolInst()要求.
# 35)【llbc core】LLBC_ILock及其所有实现类增加bool IsDummyLock() const支持.
# 36)【llbc core】对象池设计优化, 去除不需要的模板参数, 增加运行时动态创建能力, 增加依赖删除网状关系图自动(运行自动拓扑生成).
# 37)【llbc core】增加对象池信息统计支持.
# 38)【llbc core】完整优化网络相关代码, 提供更多选项给应用层自定义, 同时性能提升10倍+(整体).
# 39)【llbc core】优化日志配置,提供root->其余logger配置继承及重写支持, 同时完善配置细节及代码优化.
# 40)【pyllbc】优化python layer协议包构建代码,优化后协议包处理性能提供100%.
# 41)【llbc core/pyllbc】提供Facade三方dll接入及注册支持, 特别对于python, 三方的c++facade只需要简单修改即可被python无缝接入使用.
# BugFix:
# -【llbc all】 解决在Service启动的后调用Listen/Connect/AsyncConn且指定的custom protocol时, custom protocol可能不被使用的bug.
# -【llbc core】修复对象池销毁时内存泄露问题.
# -【llbc core】修复Task::Wait/Cancel/...方法在Task所有线程并未完全创建就快速调用时,时引发的ThreadManager无法完全等待的bug.
# -【llbc core】修复LLBC_BasicString::split()在对空串进行split且strip_empty为True时还会返回包含空串的bug.
# -【llbc core】修复LLBC_Random构造函数在seed为0时未自动应用当前时间戳做seed的bug.
# -【llbc core】修复ini解析类未特化long/ulong的value获取导致的bug.
#
# Version: 1.0.6
# 1)【llbc core】增加ci支持(windows/linux/mac osx).
# 2)【llbc core】重构Variant,以优化性能、内存占用及支持Ptr.
# 3)【llbc core】Time/TimeSpan接口重整,内部移除double实现,以规范化使用时间相关对象.
# 4)【llbc core】增加dump file支持,增加实际获取stack backtrace支持.
# 5)【llbc core】日志支持json log,内部移除旧json库,使用Tencent的rapidjson.
# 6)【llbc core】增加object pool支持,以数量级提高性能及减少内存碎片.
# 7)【llbc core】其它各对象接口/细节完善.
#
# Version: 1.0.5
# 2018/03~2018/06
# 1)【llbc core】LLBC_BasicString增加startswith/endswith支持.
# 2)【llbc core】Random增加booljudge支持.
# 3)【llbc core】移除c++0x依赖及编译选项.
# 4)【llbc core】优化个别文件include.
#
# Version: 1.0.4
# 2018/03~2018/03
# 1)【llbc core】Facade增加Factory机制,所有Facade方法都在Service逻辑线程中调用.
# 2)【llbc core】Application增加Ini&Property&Json配置读取方案实现,以在实际应用中更便捷取得Application配置.
# 3)【llbc core】允许Facade::OnInitialize方法中调用Service的Subscribe/SubscribeEvent/SubscribeStatus/...相关注册订阅方法.
# 4)【llbc core】Packet增加GiveupEncoder/GiveupDecoder支持,以直接从Packet中取得Coder而不是copy.
# 5)【llbc core】Service移除所有模板Send方法支持.
# 6)【llbc core】Event机制扩展,Event增加参数支持,支持string参数/int参数.
# 7)【llbc core】增加LLBC_StartArgs支持,用于便利解析argc/argv启动参数, 同时Application增加GetStartArgs()支持, 直接可访问当前App启动参数.
# 8)【llbc core】LLBC_Ini增加reload支持.
# 9)【llbc core】Net<->Host bytes转换增加sint64/uint64转换支持.
# 10)【llbc core】整体优化网络及Log相关性能.
# 11) BugFix:
# -【llbc core】修复PacketProtocol空包接收错误.
# -【llbc core】修复Service中部分Multicast方法未返回的错误.
# -【llbc core】修复ServiceExternalDriveSvc test case编译错误.
#
# Version: 1.0.3
# 2018/02
# 1)【llbc core】修复Log中UnInitOutput()中level错误bug.
# 2)【llbc core】修复FULL_STACK选项编译错误.
# 3)【llbc core】Application接口规整、简化,更易于项目使用.
#
# Version: 1.0.2
# 2018/02/10
# 功能新增/改进/优化:
# 1)【llbc all】所有文件头增加MIT LICENSE.
# 2)【llbc core】引入RTTI支援, 同时对Service.RegisterXXX接口增加泛型支持,增加Service.GetFacade/GetFacades支持.
#
# 2018/02/08
# 功能新增/改进/优化:
1)【llbc core】归整所有Guard实现,统一抽取到Guard.h/Guard.cpp中.
2)【llbc core】增加自定义协议栈支持,允许开发者根据会话自定义自己的网络传输协议栈,最大限度提供灵活性,并保留Raw/Normal两种库内部默认实现.
3)【llbc core】去除原有的Packet Header Designer框架,原有的框架相对灵活,但也有局限,统一使用自定议协议栈方式替换旧机制.
4)【llbc core】重构Packet类,去除在操作headers时直接操作bytes实现.
5)【llbc core】增加sender service id/receiver service id的概念,为后面的集群支持作准备,当前已经支持service转发.
6)【llbc core】Packet Protocol协议层的创建优化,去除创建时的coders copy,直接reference,以让session create操作变得更快.
7)【llbc core】从易用性及优雅性考虑,优化Service Send/Multicast/Broadcast接口.
8)【llbc core】Service各订阅接口统一支持function delegate,为开发者提供另外一种选择.
9)【llbc core】增加FPS为LLBC_INFINTE时的支持,即不限制帧率.
9)【pyllbc】修复Service.send相关BUG.
10)【csllbc】修复Log相关BUG.
# 2018/01/31
# 功能新增/改进/优化:
# 1)【llbc core】对Delegate, Func增加Rtn typename, 以支持hold任意的class methods及functions, 同时对void Rtn进行偏特化,最终LLBC_Delegate机制可以完整hold任意class methods及functions.
# 2)【llbc core】对LLBC_Delegate增加destroyObjectWhenDestruct参数,以指示delegate在destruct的时候,是否要destroy cached的object.
# 3)【llbc core】针对CPURelax,增加windows x64支持(之前版本的支持是直接粗暴使用Sleep完成).
# 4)【llbc core】增加ALWAYS_INLINE macro,以更好的指示编译器进行内联.
# Bug Fix:
# 1)【llbc core】fix LLBC_FormatArg在vs2015及以后的版本中的编译报错, 为va_start要求fmt不能有()引起.
# 2)【llbc core】修复LLBC_Service在start后, 立刻删除, 有可能引起dead lock的BUG.
#
# 2017/12/10
# 1)【llbc core】增加LLBC_FuncDelegate实现, 以实现对function, class static function的保存, 做到使用LLBC_IDelegate hold住所有的callable的目的.
# eg: std::vector<LLBC_IDelegate1<int> *> delegs;
# delegs.push_back(new LLBC_Delegate1<Obj, int>(obj, &Obj::Foo)); // hold住Obj类的Foo函数
# delegs.push_back(new LLBC_FuncDelegate1<int>(FuncFoo)); // hold住FuncFoo函数
# for (size_t i = 0; i <delegs.size(); i++)
# delegs[i]->Invoke((int)i);
# 2017/11/30
# 1) 【llbc core】调整LLBC_Timer::OnTimeout/LLBC_Timer::OnCancel实现,不需要子类化LLBC_Timer,只需要在new LLBC_Timer的时候给定Timeout handler或者Timeout delegate即可.
# 对于上层的wraps库,同步进行兼容(wraps库没有影响).
#
# 2017/11/23
# 新增功能:
# 1) 【lullbc】增加Timer、TimerScheduler实现, 使用core lib中的LLBC_BaseTimer/LLBC_TimerScheduler实现.
# 2) 【lullbc】增加相应的utils支持,包括topointer, hash, printf, FuncTool的支持.
# 3) 【lullbc】object oriented增加isinstance()实现,完整实现类似python中的instance()功能.
# 4) 【lullbc】重构monkey patch打补丁机制,全部llbc功能方法/类都将统一ptach到vm中.
# 5) 【lullbc】重新调整lullbc中的lua代码及文件命名
# a. class/table: 大驼峰.
# b. function/public methods: linux命名, 如果method是private的, 前面增加_前缀.
# c. data member/local variable: linux命名, 如果是private的, 前面增加_前缀.
# d. 文件名统一使用小写并以_分隔方式组成.
#
# 2017/10/05
# 新增功能:
# 1) 【lullbc】完善lullbc中的ObjectOriented实现,增加getclass(className)接口,以支持按类名索引类.
# 2) 【lullbc】llbc.newclass(className, super)接口增加创建相同类名检测,当创建相同类名时,直接error().
# 3) 【llbc all】llbc Log组件整体增加linux&mac平台的console colourful output支持.
#
# 2017/07/22
# 1) Log增加每次Init时,尽量backup log file的操作,以确保每次启动应用时日志输出到一个全新的文件中.
#
# 2017/07/18
# 新增功能:
# 1) Log增加takeOver配置, 以支持在向未配置的logger输出message时, root logger可以接管, 并确保消息落地.
# 2) Log增加consoleLogLevel, fileLogLevel配置, 以支持对指定appender独立控制日志级别.
# 3) 新增lua语言wrap支持, 命名为lullbc, 当前对外提供了Log组件支持.
# 4) 完整更新premake脚本, 支持debug32, debug64, release32, release64本个configuration支持.
# 5) 更新pyllbc编译流程, 允许使用者通过pylib_setting.lua配置使用自己的python库进行link.
# BUG修复:
# 1) 修复LLBC_Cleanup未对Log组件进行Finalize, 导致在库销毁后出现消息未落地或者segment fault的BUG.
# 2) 小BUG, 细节调整.
#
# 2017/03/06
# 1) 对python层面的Stream.__init__增加endian keyword参数,默认为Endian.MachineEndian.
#
# 2017/02/22
# 新增功能:
# 1) c++核心层Service增加name的概念, Service的Id变成自动化设置,去除SetId接口.
# BUG修复:
# 1) 修复LLBC_ServiceMgr中相关方法实现有可能导致死锁的BUG.
#
# 2016/09/05
# 新增功能:
# 1) 增加ini文件解析引擎, 完整支持ini解析, 并支持在错误发生的时候精确定位原因及完整的错误描述, 同时支持分段定义高级功能.
# 2) 完善LLBC_String.strip()相关功能,以完整支持所有不可显字符的strip.
# BUG修复:
# 1) 修复LLBC_File对象在以TextRead打开文本时候内部open_mode转化BUG.
#
# 2016/07/03
# 1) 增加utils中增加LLBC_HashString方法, 用于计算一个字符串的hash code(不保证完全唯一).
#
# 2016/07/02
# 1) 修复TimerScheduler在关闭Strict模式的时候调度异常BUG.
# 2) 修复linux平台相关编译WARN.
#
# 2016/06/11
# 新增功能:
# 1) 调整LLBC_ICoder::Encode/LLBC_ICoder::Decode定义, 统一返回bool值指示是否encode/decode成功.
# 在失败的情况下,允许通过Packet.SetCodecError()设置错误描述,Service会将此调整统一以IFacade::OnProtoReport形式报告给Facade层面.
# 2) 调整IFacade相关接口定义, 原有OnInitialize/OnDestroy不再作为Service Start/Stop过程中的回调, 只作为Facade第一次调用OnStart前的回调及delete Service前的回调.
# OnInitialize: 在Facade添加到Service, 并且Service的随后Start调用中会被调用一次, 整个Service生命周期只会调用一次.
# OnDestroy: 在Facade添加到Service并且已经调用过OnInitialize, 如果Service被Delete, 将会触发此函数调用.
# OnStart: Service的每次Start都会触发此调用(如果对应的Facade为第一次调用, 将会先触发OnInitialize调用).
# OnStop: Service的每次Stop都会触发此调用.
# 3) 完善所有Session断开, 连接相关的错误描述, 以让应用层在收到SessionDestroy/Connect相关回调的时候, 知道是因何原因导致的断开或者连接错误.
# 对于断开支持:
# > 修改Service.RemoveSession接口, 增加一个reason参数, 用于指示因何关闭此session, 在随后的所有Facade.OnSessionDestroy中, 都将可收到此错误描述.
# > 对于网络事件导致的断开, 也将有统一的描述报告到上层.
# 对于Connect相关支持:
# > 一个连接如果失败, 也将会有相关的完整描述信息报告到上层.
# 4) Service添加GetDriveMode()方法, 以让使用者任何时候都知道Service当前运行(或已设置到)在外部驱动模式还是自驱动模式.
# 5) Service添加IsSessionValidate()方法, 以让使用者任何时候都可以较验会话是否有效.
# 6) Service添加SuppressCoderNotFoundWarning()方法, 用于抑制在包解码的时候, Coder不能找到的报错.
# 7) 调整Packet PreHandler, UnifyPreHandler定义, 在返回false的情况下, 将不断开session, 而仅仅是不继续调用后续的Handler接口.
# 8) 增加一个库配置宏(Config.h): LLBC_CFG_CORE_TIMER_STRICT_SCHEDULE, 允许编译的时候是否开启严格调度选项, 默认关闭.
# 如果开启严格调度, 则如果在timeout被检测到, 并且已经过了N个timeout周期, 框架将会被调这错过的几次timeout周期, 大部分情况下不需要如此严格, 所以将其关闭.
# 9) 其它细节代码调整, 优化.
# BUG修复:
# 1) 修复Timer在Cancel过程中可能导致的coredump的BUG.
# 2) 修复Service在SelfDrive模式下, 重复Start/Stop会因为timerScheduler无效导致coredump的BUG.
# 3) 修复core/os/console中SetConsoleColor()方法未lock的BUG.
# 4) 修复MessageBlock在Write的时候, 不能写入len为0且buf == NULL的BUG.
# 5) 修复Service在ExternalDrive模式下Stop后, 无法cancel所有timer的BUG.
# 6) 修复Service的EnableTimerScheduler()及DisableTimerScheduler()有可能导致coredump的BUG.
#
# 2016/04/20
# BUG修复:
# 1) 修复在LLBC_Session::OnClose过程中存在的OVERLAPPED结构泄露的BUG(win32特有);
# 2) 修复在LLBC_Socket::Send过程中, 可能出现的core dump的BUG;
# 3) 修复在LLBC_Socket::OnRecv在对端关闭情况下,获取不到的error相关数据的BUG;
# 4) 修复Select Poller在处理connecting会话过程中,有可能出现的fail reason无效的问题;
# 5) 修复在Iocp Poller中当LLBC_GetQueuedCompletionStatus失败后, 取得的error不准确的BUG;
# 6) 修复testsuite的Makefile BUG: make debug的时候, 不会自动link带_debug后缀的llbc库;
# 新增功能:
# 1) 更新IFacade::OnSessionDestroy(int sessionId)定义为: IFacade::OnSessionDestroy(const LLBC_SessionDestroyInfo &destroyInfo)
# 可以让使用者完整了解被关闭的session的所有信息(包括:socket描述符, 本机/对端 ip及端口信息, 关闭原因(是否由Service层面主动关闭还是其它原因), 错误码相关信息);
# 2) Service::RemoveSession方法增加一个reason参数, 以让调用者可以给一个简要的字符串描述remove session的原因;
#
# 2016/03/25
# 1) logger添加对%p支持,以打印进程Id;
# 2) logFileName添加模式支持,当前支持模式:
# %p: 当前进程Id
# %m: 当前可执行程序模块文件名(不包含路径)
#
# 2016/02/25
# 1) 重写LLBC_File,LLBC_Directory类,提供更易用,更完整,更精简的File & Directory相关操作实现;
# 2) 删除core/os/OS_File及core/os/OS_Directory实现,统一整合到LLBC_File,LLBC_Directory中;
# 3) Log模块中的logFile配置支持目录配置,log启动过程中会自动检测并创建log文件目录;
# 4) LLBC_BasicString加入findreplace实现,以支持"查找->替换"合并操作需求,优化&合并相关已有接口实现;
# 5) 调整windows平台中vsproj整体配置,增加vs2012编译支持;
# 6) 整合编译脚本,加入tools目录,将自身的python.exe依赖直接打包到tool目录,从而解除对编译机器的python要求;
# 7) wrap中初步加入c#支持csllbc(未完成);
# 8) GetVersionInfo()接口加入compiler版本相关输出;
#
# 2016/01/02
# 1) 调整windows平台的sln文件及vcproj文件路径及名字,并调整所有projects的中间文件生成路径及目标文件路径:
# a. sln文件名从llbc.sln调整成llbc_vs2008.sln,以方便后期加入其它版本vs的支持;
# b. 所有项目的vcproj文件统一放入到vcprojs/vs2008/目录中,所有中间文件的生成目录也统一配置到了vcprojs/vs2008/Debug(或者Release)目录中;
# c. 所有项目生成文件放到顶层的Debug(或者Release)目录中;
#
# 2016/01/01
# 1) 重新实现OS_Time模块,删除老的自有实现LLBC_MkTime,LLBC_GMTime,LLBC_LocalTime,改用系统自带线程安全实现,调整LLBC_GetMilliSeconds实现,
# 不使用ftime实现,使用gettimeofday(Non-WIN32),GetSystemTimeAsFileTime(WIN32)实现,并加入LLBC_GetMicroSeconds实现,同时加入了闰年判定
# 函数LLBC_IsLeapYear()及取得指定年月的此月的最大天数.
# 2) 重写LLBC_Time类,所有API重构,精度提升到MicroSecond,所有API参考C#的.Net DateTime实现;
# 3) 重写LLBC_TimeSpan类,同样参考.Net TimeSpan类,精度提升到MicroSecond;
#
# 2015/12/23
# 1) Log测试代码加入deltest代码;
# 2) OS_Time中LLBC_GetMilliSeconds实现调整为LINUX平台使用gettimeofday(),Windows平台使用GetSystemTimeAsFileTime()完成,
# 并将函数定义修改为inline;
#
# 2015/12/20
# 1) 修复Log模块中的dailyRolling在跨天的时候有可能不分文件的BUG;
# 2) 修复Log模块中的时间打印错误的BUG;
# 3) 整体重构FileLogAppender,以优化文件日志写入性能;
# 4) 日志模块加入新的配置项: flushInterval: 所有Logger刷新间隔,单位:ms,默认为200ms,最大1000ms,此配置项建议不使用
# fileBufferSize: 文件缓冲大小,单位:Byte,默认为1M,此配置项建议不使用;
#
# 2015/11/10
# 1) 修复BasicString在LINUX编译WARN;
# 2) 修复Logger在配置读取时level配置项读取错误的BUG;
# 3) Makefile中加入install commands;
#
# 2015/10/18
# 1) 整体重构框架编译makefile代码,以去除旧的相对落后的编译识别方式及优化编译识别速度,主要更新:
# a. 新的编译流程将依赖分析细化到所有.cpp/.h文件,任何.h文件改动都将触发相关依赖于此文件的.cpp文件重新编译;
# b. 重构整个文件搜索算法,支持无限层次扩展,同时优化整个搜索速度,不管项目目录层次有多深及代码有多少,编译分析过程都将变得非常快速;
# c. 去除之前%.o: %.c/.cpp隐式依赖编译实现,直接对所有文件执行显式编译,以去除make的任何不必要的文件推导过程;
# d. 重构过程直接修复旧的make编译相关实现中的debug/release交叉使用的时候出现的.o文件共用的BUG(由模式变量DEBUG引起);
# e. 删除了所有不必要的XXXX.linux, XXXX.mac编译支持文件(包括rules.mk及Makefile),只保留一个rules.mk及一个Makefile;
# f. 整个项目顶层Makefile也执行重构,以执行更精细化的编译.当前不支持直接make编译,需要输入具体的编译goal, 如需编译项目,请运行make或者make help查看;
#
# 2015/10/03
# 1) 修复Property中的value部分解析时未unescape的BUG;
# 2) 整理Macro.h/MacroInl.h文件;
# 3) 修复LLBC_Packet中有关header part get/set接口的BUG及整体重写此部分代码(使用不方便及类型不兼容时产生的BUG);
# 主要修复在get/set的类型长度跟part定义中的长度不符时候的处理BUG问题,如part为4,但在使用时想取得short数据,老代码将出现严重BUG;
# 统一区分non-float type及float-type的get/set接口,在part的传输过程中可能涉及字节序列的转换以及模板匹配,需要对float/double单独实现get/set;
# 去除有关之前自定义包头的相关代码实现中的冗余代码;
# 优化LLBC_Packet中有关header part的操作接口便利性,在part为4字节长度的时候,你可以get/set 1/2/8字节长度的数据,在内部将完成part中的4字节定义的转换;
# 4) 重写LLBC_PacketHeaderDesc类中的数据组织方式代码,以取得更高的效率(此类的相关接口使用频繁);
# 5) 增加LLBC_PacketHeaderParts实现,以完整实现包头自定义功能,对于单播,组播及广播,都将在最后附带此数据,指示Packet还需要设置哪些包头数据;
# 使用者在自定义包头后,在发送时,应该将所有自己额外的包头数据设置在此类对象中,再将由框架统一完成LLBC_Packet的包头设置;
# 6) 调整LLBC_IService接口,加入Send2/Multicast2/Broadcast2方法,以区分有LLBC_PacketHeaderParts *参数及无LLBC_PacketHeaderParts *参数时的方法定义;
# 7) 细化在BeforeIncl.h/AfterIncl.h中的相关宏限制;
#
# 2015/09/14
# 1) 修复LLBC_BasicString中的escape/unescape错误.
# 2) 去除LLBC_Property的DISABLE_ASSIGNMENT的限制,加入copy constructor及operator =()实现.
#
# 2015/09/14
# 1) 重写.cfg文件读写类LLBC_Properties,更名为LLBC_Property,废除初始只为实现功能而编码的旧类,新类直接支持所有特性,包括路径访问及智能路径扩充.
# 2) 考虑很多使用场景都需要字符串数组,加入LLBC_StringsA/LLBC_StringsW定义.
# 3) LLBC_BasicString<>加入replace的const方法,返回replaced后的字符串.
# 4) 修复LLBC_BasicString<>.rstrip()的BUG.
# 5) LLBC_BasicString<>加入escape/unescape支持,直接转义/反转义字符串.
# 6) 删除所有旧式的SAFE_FREE,SAFE_DELETE,SAFE_DELETES,统一使用LLBC_XFree,LLBC_XDelete,LLBC_XDeletes代替.
# 7) OS_Directory部分加入LLBC_JoinDirectory封装,并将原来LLBC_Directory中的目录相关函数调整到此.
# 8) log模块配置定义修改,不需要前缀:llbc.log,cfg配置文件中的property name第一个就是logger的名字.
#
# 2015/09/14
# 1) 整体框架调整(3月到8月间的修改部分未作记录,未作记录,只描述2015/09月份的修改)
# a. 加入包头自定义支持,允许使用者直接自定义适合自己项目情况的包头结构.
# b. 修复LLBC_BasicString, LLBC_Stream的从多内部细节错误,基本都为致命错误.
# c. 在WIN32平台中,去除MFC依赖(afx.h),以加快编译速度及整体简洁度.
# d. 整体显式实例化LLBC_BasicString<char>, LLBC_BasicString<wchar>,执行统一的模块错误修复.
#
# 2015/03/16
# 1) Service加入延迟执行delegate支持.
#
# 2015/02/07
# 1) 统一所有llbc内部用到的参数格式化相关的代码,使用LLBC_FormatArg直接完成参数的格式化.
# 2) 修复Logger中在参数在2048临界状态的时候导致的coredump的BUG.
# 3) 修复SelectPoller在service频繁发包的时候,响应迟钝的BUG.
#
# 2015/01/10
# 1) 去除FilterProtocol层的设计, 加入ProtocolFilter设计,所有ProtocolLayer都可以设置ProtocolFilter.
#
# 2014/12/29
# 1)Service加入UnifyPreSubscribe支持,允许统一对packet设置pre-handler(适用于RAW及NORMAL类型的Service).
#
# 2014/12/27
# 1)Service加入SubscribeStatus支持,允许订阅指定opcode的指定status的包,以便对此包作特殊处理,如果订阅,将不会再调默认包处理函数(由Subscribe注册)(需要将LLBC_CFG_COMM_ENABLE_STATUS_HANDLER宏开启).
# 2)Service加入RegisterStatusDesc支持,允许在Service中注册指定status code的字符串描述信息,如果注册,在Packet中,将可以通过GetStatusDesc()得到此描述(需要将LLBC_CFG_COMM_ENABLE_STATUS_DESC宏开启).
#
# 2014/12/20
# 1)去除testsuite中的旧代码风格(13年以前的测试代码).
#
# 2014/12/19
# 1)core/utils模块加入Util_Network相关代码,用于支持IPv4地址判断.
# 2)ExportHeader.h导出限定头文件统一改名为Export.h.
#
# 2014/12/17
# 1)Facade中加入OnUnhandledPacket()事件调用接口,如果一个包未在service中订阅,将会使用此方法进行处理.
#
# 2014/12/9
# 1)Stream默认的endian设置依据Config.h中的配置来确认,不使用机器字节序.
# 2)service的Listen/Connect/AsyncConn接口将允许在service未开启的时候调用,操作操作将会延迟到service的Start函数中完成.
#
# 2014/12/02
# 完成communication库的整体重构,测试,简化架构,性能及接口.
#
# 2014/11/09
# 更新Dispatcher相关代码细节,修复在极端情况下的内存泄露BUG.
# !!!!!!!! 此版本将到此为止, 后面将统一重构网络部分代码实现,以更好的支持并发及后期的重连实现.
#
# 2014/11/07
# 加入LLBC_InvokeGuard, 以支持在复杂的函数逻辑中多返回点的资源自动释放.
#
# 2014/10/14
# 更新LLBC_String,增加split接口,类似python中的str.split.
#
# 2014/10/07
# 1)更新BasicString,在DeSerialize的过程中,如果Stream可读字节数为0,返回false.
# 2)更新Stream的DeSerialize std::string的特化,如果Stream可读字节数为0,返回false.
# 3)更新STLHelper,以支持std::stack,std::queue的操作.
# 4)在Macro.h中,加入LLBC_Deletes/LLBC_XDeletes的实现.
#
# 2014/09/06
# 1)调整LibTls中的TimerScheduler实现,不由service创建,每个由task创建的线程,都将带有TimerScheduler.
# 2)将BaseTimer::GetTimer()由private属性调整到public属性,以方便上层打印timer属性.
# 3)修复BinaryHeap在只有一个堆元素的时候,重复删除BUG.
#
# 2014/08/15
# 1)增加LLBC_Free, LLBC_XFree, LLBC_Delete, LLBC_XDelete, LLBC_New等相关内存分配及释放相关宏,以简化并统一管理内存,也用于以后废除SAFE_XXX()这一套宏.
# 2)优化Log模块性能,减少malloc调用频繁度.
# 3)为适应相关上层脚本封装,对原来的filename存储策略从const char *更改为char *,不对此字段作任何是字符串常量的假设,直接从堆中分配内存进行存储.
#
# 2014/08/14
# 1)更新LLBC_Properties接口及实现,加入Delete方法,以支持对指定key的property进行移除,所有方法中的原始const char *类型统一更新为const LLBC_String &类型.
# 2)更新WIN平台中的OS API 及 WSA 两类错误描述的输出,不使用SYSTEM_DEFAULT的语言,统一使用英文输出,以让所有的错误输出兼容任意的多字节字符集.
#
# 2014/08/11
# 1)加入允许自定义错误id及描述支持,错误ID范围:[0,65535], 需要使用LLBC_BuildCustomErrno()生成真正的错误ID.
# llbc自带了一些脚本语言的封装,如python的封装:pyllbc, 在此类封装中,会使用自定义的id部分,详细需要看各自封装实现中的说明,但基本都是从高往低占用,
# 建议使用者选择[0, 60000]范围的id用于自己的代码中.
#
# 2014/07/26
# 1)去除LLBC_Int2Str,LLBC_UInt2Str, ...这类number -> string的转换函数,统一使用模板函数LLBC_Num2Str<>代替.
#
# 2014/07/24
# 1)重写EventManager,对每次的AddListener返回一个存根,以可以只针对存根取消此listener.
# 2)优化communication模块,整体上优化IocpDispatcher及EpollDispatcher性能,使得收发速度达到最高.
# 3)修复error消息格式化模块中在找不到error code找不到定义时,有可能出现的崩溃的错误(WIN32平台.
# 4)调整整体代码风格,去除成员变量m_xxx命名方式,使用_xxx的命名,对于if(,while(,for(更新成if (,while (,for (,此次更新不包括testsuite模块.
# 5)条件限制原因,只此次更新只在linux/win32平台编译,测试通过.
#
# 2014/05/05
# 1)增加objbase支援,支援全套的对象引用/释放机制(类似obj-c),同时提供完整的Object Array,Object Dictionary支援及完整的对象迭代器支援.
# 2)修改core/config中的LLBC_Config类实现,在解析json出错的时候,GetError()同时返回出错文件及行号(前面的版本中,只返回行号,文件未知).
# 3)修复communication中的同个socket/session的MessageBlock处理有可能被乱序处理的致命BUG.
# 4)调整Dispatcher/Service全套接口,完善细节代码.
# 5)Variant加入dictionary支援,完整实现variant所有接口,加入JVHelper,直接完成json到variant的转换.
#
# 2014/01/12
# 1)调整Communication整体实现,允许不启动NetEventHandler线程,而使用Dispatcher线程来直接完成网络事件的处理,以减少线程间交互的开销.
# 2)Service::Start()方法中的handlerCount参数默认值,客户端类型由1调整为0.
# 3)考虑LLBC_File::WriteString()的使用实际情况,往往都不需要写入字符串结束符'\0',加入一个参数,以标记是否写入字符串结束符,为了兼容库中已经有的调用及测试代码,默认值为true.
#
# 2014/01/11
# 1)修复LLBC_BasicString模板类的format/append_format/vformat/append_vformat四个函数在非win32可能崩溃的bug.
# 2)完善库内部本身使用的LibTls结构,以让库中不同模块能够结合的更紧密.
# 3)BaseTimer去除 SetScheduler() 接口,不需要使用者调用,将会默认从TLS中取得当前线程对应的Scheduler来Schedule.
#
# 2013/12/20
# 1)Stream增加GetBufStartWithPos()接口.
# 2)调整sampler实现,加入sampler group,以整体管理samplers,并为service加入完成的运行时Dump功能实现及测试代码.
#
# 2013/12/14
# 1)将Core/utils/Util_Coder相关实现调整到common中,使得字节序支持能够在common的LLBC_Stream中使用.
# 2)LLBC_Stream接口调整,修改,简化LLBC_Stream之前的Attach及Assign,增加SetEndianType接口,以提供对不同字节序的byte buffer的支持.
#
# 2013/12/12
# 1)优化 non-WIN32 平台编译选项,以减少不必要的符号导出,减小最终库文件大小.
#
# 2013/12/09
# 1)允许LLBC_Stream进行直接copy.
#
# 2013/12/06
# 1)优化TimerScheduler中Timer的调度策略,使得Timer调度速度快一倍.
# 2)修复Directory相关代码在WIN32中编译Unicode版本库的时候,不能编译的BUG.
# 3)开始为vcproj中加入Release的项目设置,框架已相对稳定,所以将默认编译方式调整成Release方式(WIN32).
#
# 2013/12/04
# 1)加入Timer测试代码.
# 2)调整Facade::OnInitialize()调用实现,原来调用实现是由调用Service::Start的线程调用,现在统一修改为由Service内部线程完成调用,以去除多线程问题.
# 对于Service的RunningMode为External_Drive方式的,保留由调用Service::Start的线程调用Facade::OnInitialize()的实现方式.
#
# 2013/12/01
# 1)重新设计Timer, 使得Timer在使用的时候,更简单,方便,并且更好的支持实际应用的中模块化编码(未测试).
# 2)重新设计Sampler, 对于之前设计实现的采样器,在使用中存在的问题进行修复(未测试).
#
# 2013/11/25
# 1)加入采样器实现,支持计数开型,间隔型(允许得出速率),及上下限型采样器,并运用于Service中,在支持Service自己dump自己的运行状态.
# 对Service采样会降低效率,但该功能默认为开启,如果不需要采样Service,需要在common/Config.h中找到LLBC_CFG_COMM_ENABLE_SAMPLER_SUPPORT,设置为0即可.
#
# 2013/11/17
# 1)修复PacketProtocol中收包可能存在丢包的BUG.
# 2)增加LogProtocol,用于临时调试,如果要使用此Protocol,请使用LLBC_CustomClient/LLBC_CustomServer来自定义自己的协议链.
# 3)修复所有库内自带singleton类未export或者hidden,从而导致多个singleton类实例存在的BUG.
# 4)调整logger实现,支持面向流的log模型,以防止打印非原始类型的时候,导致的core dump问题,同时保留原来的format方式实现,增加一个config宏进行切换,
# 功能宏定义在llbc/common/Config.h中,LLBC_CFG_LOG_USING_WITH_STREAM,默认为1,即以流的方式使用logger.如果需要使用format方式,请配置成0
# 并重新编译库.
#
# 2013/11/13
# 1)调整communication中的protocol设计,整合协议层,加入customclient/customserver两种service以及protocols analyzer,以支持自定义协议.
# 2)调整core/eventmanager,支持事件内的事件增加、删除及递归触发.
# 3)调整service,将event整合到service中,以支持跨线程,异步事件.
#
# 2013/10/30
# 1)为LLBC_String加入utf8操作支持(长度计算,字符串切割及打散).
#
# 2013/10/29
# 1)考虑到std::string使用的普遍性(有时不使用LLBC_String),在LLBC_Stream中加入std::string的serialize/deserialize偏特化.
# 2)为LLBC_Stream增加序列化所有STL容器的默认支持(WIN32: vec, list, deque, Non-WIN32: vec, list, deque, set, map).
#
# 2013/10/27
# 1)修复WIN32下如果使用IOCP dispatcher model,LLBC_IService::AsyncConnect()ip为非127.0.0.1的时候,返回失败的BUG.
# 2)修改core/thread/MessageBlock.h 中的MessageBlock实现,优化代码结构,非WIN32平台使用condition varibale实现.WIN32下保留semaphore实现.
# 3)移动llbc.h中LLBC_Startup, LLBC_Cleanup函数实现,放入llbcImpl.h头文件中,以使llbc.h最简洁.
# 4)communication模块增加SessionEvBuilder,将Session中的event构造逻辑单独出来.
#
# 2013/10/14
# 1)重新实现LLBC_ConditionVariable,参考pthread win32的实现,以消除旧版本中存在的多次Notify的BUG.
# 2)提供LLBC_Bundle在非Iphone平台的伪实现.
# 3)更新LLBC_File,LLBC_Directory, 在core/os中加入跟 目录/文件 操作相关的平台无关函数实现.
# 4)增加LLBC_ReverseGuard反向守护.
#
# 2013/10/10
# 1)在mac,iphone编译,测试通过.
#
# 2013/10/6
# 1)加入Iocp实现(WIN32平台有效),完善Communication中Asynchronous connect实现.
# 2)修复Communication中的NetEventHandler线程代码中存在的内存泄露.
# 3)加入RawServer/RawClient支持,并加入测试代码.这两个Service允许开发者接收无格式的网络流数据.
# 4)修复LLBC_GetCurrentDirectory()函数在WIN32平台内存泄露问题.
# 5)对库本身的Error报告机制进行完善,对WIN32中WinSock错误记录及报告进行完善.
#
# 2013/10/01
# 1)加入Library封装,支援跨平台库符号访问.
#
# 2013/09/25
# 1)加入TransCoder,以支援字符集转换.
# 2)抽象communication中的Dispatcher实现,在特定平台,可以在common/Config.h中选择事件模型(Select,Iocp, Epoll)来进行库的编译.
# 3)修复Select模式下库CPU占用过高的BUG.
#
# 2013/09/16
# 1)为Service增加FPS概念,使得整个Service的服务周期变得可更改.
# 2)为Service增加OnIdle(当前帧还有空闲时间的时候回调), OnDestroy(Service销毁的时候调用)通知机制,完善面向服务框架.
# 3)增加Asynchronous-Connect异步connect机制,使得connect操作异步化.
# 4)重写core/helper/STLHelper, 统一所有container操作接口.
# 5)修复在WIN32平台下如果出现NETAPI错误的时候,取得的SubErrorNo为0的问题.
#
# 2013/08/26
# 1)初步完成完整版本,跨跃WIN32/LINUX/MAC/Iphone四个平台.
# 2)提供平台无关基础库,方法封装.
# 3)库本身提供完整的Error报告机制.
# 4)提供MD5, Time, Serialize, Json, Properties, Timer ...相关基础功能.
# 5)提供多线程支持,使用Task简化线程使用.支持完整的平台无关线程操作支持.
# 6)提供完的log特性支持,类似log4cxx,支持多个日志记录器,支持同/异步设置,支持按天分日志,按大小切割日志.
# 7)提供network支援,封装socket,使用session概念,简化通信.使用服务模型.包使用包链方式完成自动路由.
# 8)提供Bundle支持(特定行移动平台操作系统Iphone).
#
# long long ago
# 1)设计框架,设计common, core基础核心部分代码.