HPSocket4C.cpp 139 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747
  1. /*
  2. * Copyright: JessMA Open Source (ldcsaa@gmail.com)
  3. *
  4. * Author : Bruce Liang
  5. * Website : https://github.com/ldcsaa
  6. * Project : https://github.com/ldcsaa/HP-Socket
  7. * Blog : http://www.cnblogs.com/ldcsaa
  8. * Wiki : http://www.oschina.net/p/hp-socket
  9. * QQ Group : 44636872, 75375912
  10. *
  11. * Licensed under the Apache License, Version 2.0 (the "License");
  12. * you may not use this file except in compliance with the License.
  13. * You may obtain a copy of the License at
  14. *
  15. * http://www.apache.org/licenses/LICENSE-2.0
  16. *
  17. * Unless required by applicable law or agreed to in writing, software
  18. * distributed under the License is distributed on an "AS IS" BASIS,
  19. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  20. * See the License for the specific language governing permissions and
  21. * limitations under the License.
  22. */
  23. #include "SocketObject4C.h"
  24. #include "TcpServer.h"
  25. #include "TcpClient.h"
  26. #include "TcpAgent.h"
  27. #include "TcpPullServer.h"
  28. #include "TcpPullClient.h"
  29. #include "TcpPullAgent.h"
  30. #include "TcpPackServer.h"
  31. #include "TcpPackClient.h"
  32. #include "TcpPackAgent.h"
  33. #include "HPThreadPool.h"
  34. #ifdef _UDP_SUPPORT
  35. #include "UdpServer.h"
  36. #include "UdpClient.h"
  37. #include "UdpCast.h"
  38. #include "UdpNode.h"
  39. #include "UdpArqServer.h"
  40. #include "UdpArqClient.h"
  41. #endif
  42. #ifdef _HTTP_SUPPORT
  43. #include "HttpServer.h"
  44. #include "HttpAgent.h"
  45. #include "HttpClient.h"
  46. #endif
  47. /*****************************************************************************************************************************************************/
  48. /****************************************************************** TCP/UDP Exports ******************************************************************/
  49. /*****************************************************************************************************************************************************/
  50. typedef C_HP_ObjectT<CTcpServer, ITcpServerListener> C_HP_TcpServer;
  51. typedef C_HP_ObjectT<CTcpPullServer, ITcpServerListener, sizeof(IPullSocket)> C_HP_TcpPullServer;
  52. typedef C_HP_ObjectT<CTcpPackServer, ITcpServerListener, sizeof(IPackSocket)> C_HP_TcpPackServer;
  53. typedef C_HP_ObjectT<CTcpAgent, ITcpAgentListener> C_HP_TcpAgent;
  54. typedef C_HP_ObjectT<CTcpPullAgent, ITcpAgentListener, sizeof(IPullSocket)> C_HP_TcpPullAgent;
  55. typedef C_HP_ObjectT<CTcpPackAgent, ITcpAgentListener, sizeof(IPackSocket)> C_HP_TcpPackAgent;
  56. typedef C_HP_ObjectT<CTcpClient, ITcpClientListener> C_HP_TcpClient;
  57. typedef C_HP_ObjectT<CTcpPullClient, ITcpClientListener, sizeof(IPullClient)> C_HP_TcpPullClient;
  58. typedef C_HP_ObjectT<CTcpPackClient, ITcpClientListener, sizeof(IPackClient)> C_HP_TcpPackClient;
  59. #ifdef _UDP_SUPPORT
  60. typedef C_HP_ObjectT<CUdpServer, IUdpServerListener> C_HP_UdpServer;
  61. typedef C_HP_ObjectT<CUdpClient, IUdpClientListener> C_HP_UdpClient;
  62. typedef C_HP_ObjectT<CUdpCast, IUdpCastListener> C_HP_UdpCast;
  63. typedef C_HP_ObjectT<CUdpNode, IUdpNodeListener> C_HP_UdpNode;
  64. typedef C_HP_ObjectT<CUdpArqServer, IUdpServerListener, sizeof(IArqSocket)> C_HP_UdpArqServer;
  65. typedef C_HP_ObjectT<CUdpArqClient, IUdpClientListener, sizeof(IArqClient)> C_HP_UdpArqClient;
  66. #endif
  67. /****************************************************/
  68. /**************** TCP/UDP 对象创建函数 ***************/
  69. HPSOCKET_API HP_TcpServer __HP_CALL Create_HP_TcpServer(HP_TcpServerListener pListener)
  70. {
  71. return (HP_TcpServer)(new C_HP_TcpServer((ITcpServerListener*)pListener));
  72. }
  73. HPSOCKET_API HP_TcpAgent __HP_CALL Create_HP_TcpAgent(HP_TcpAgentListener pListener)
  74. {
  75. return (HP_TcpAgent)(new C_HP_TcpAgent((ITcpAgentListener*)pListener));
  76. }
  77. HPSOCKET_API HP_TcpClient __HP_CALL Create_HP_TcpClient(HP_TcpClientListener pListener)
  78. {
  79. return (HP_TcpClient)(new C_HP_TcpClient((ITcpClientListener*)pListener));
  80. }
  81. HPSOCKET_API HP_TcpPullServer __HP_CALL Create_HP_TcpPullServer(HP_TcpPullServerListener pListener)
  82. {
  83. return (HP_TcpPullServer)(new C_HP_TcpPullServer((ITcpServerListener*)pListener));
  84. }
  85. HPSOCKET_API HP_TcpPullAgent __HP_CALL Create_HP_TcpPullAgent(HP_TcpPullAgentListener pListener)
  86. {
  87. return (HP_TcpPullAgent)(new C_HP_TcpPullAgent((ITcpAgentListener*)pListener));
  88. }
  89. HPSOCKET_API HP_TcpPullClient __HP_CALL Create_HP_TcpPullClient(HP_TcpPullClientListener pListener)
  90. {
  91. return (HP_TcpPullClient)(new C_HP_TcpPullClient((ITcpClientListener*)pListener));
  92. }
  93. HPSOCKET_API HP_TcpPackServer __HP_CALL Create_HP_TcpPackServer(HP_TcpServerListener pListener)
  94. {
  95. return (HP_TcpPackServer)(new C_HP_TcpPackServer((ITcpServerListener*)pListener));
  96. }
  97. HPSOCKET_API HP_TcpPackAgent __HP_CALL Create_HP_TcpPackAgent(HP_TcpAgentListener pListener)
  98. {
  99. return (HP_TcpPackAgent)(new C_HP_TcpPackAgent((ITcpAgentListener*)pListener));
  100. }
  101. HPSOCKET_API HP_TcpPackClient __HP_CALL Create_HP_TcpPackClient(HP_TcpClientListener pListener)
  102. {
  103. return (HP_TcpPackClient)(new C_HP_TcpPackClient((ITcpClientListener*)pListener));
  104. }
  105. HPSOCKET_API void __HP_CALL Destroy_HP_TcpServer(HP_TcpServer pServer)
  106. {
  107. delete (C_HP_TcpServer*)pServer;
  108. }
  109. HPSOCKET_API void __HP_CALL Destroy_HP_TcpAgent(HP_TcpAgent pAgent)
  110. {
  111. delete (C_HP_TcpAgent*)pAgent;
  112. }
  113. HPSOCKET_API void __HP_CALL Destroy_HP_TcpClient(HP_TcpClient pClient)
  114. {
  115. delete (C_HP_TcpClient*)pClient;
  116. }
  117. HPSOCKET_API void __HP_CALL Destroy_HP_TcpPullServer(HP_TcpPullServer pServer)
  118. {
  119. delete (C_HP_TcpPullServer*)pServer;
  120. }
  121. HPSOCKET_API void __HP_CALL Destroy_HP_TcpPullAgent(HP_TcpPullAgent pAgent)
  122. {
  123. delete (C_HP_TcpPullAgent*)pAgent;
  124. }
  125. HPSOCKET_API void __HP_CALL Destroy_HP_TcpPullClient(HP_TcpPullClient pClient)
  126. {
  127. delete (C_HP_TcpPullClient*)pClient;
  128. }
  129. HPSOCKET_API void __HP_CALL Destroy_HP_TcpPackServer(HP_TcpPackServer pServer)
  130. {
  131. delete (C_HP_TcpPackServer*)pServer;
  132. }
  133. HPSOCKET_API void __HP_CALL Destroy_HP_TcpPackAgent(HP_TcpPackAgent pAgent)
  134. {
  135. delete (C_HP_TcpPackAgent*)pAgent;
  136. }
  137. HPSOCKET_API void __HP_CALL Destroy_HP_TcpPackClient(HP_TcpPackClient pClient)
  138. {
  139. delete (C_HP_TcpPackClient*)pClient;
  140. }
  141. HPSOCKET_API HP_TcpServerListener __HP_CALL Create_HP_TcpServerListener()
  142. {
  143. return (HP_TcpServerListener)(new C_HP_TcpServerListener);
  144. }
  145. HPSOCKET_API HP_TcpAgentListener __HP_CALL Create_HP_TcpAgentListener()
  146. {
  147. return (HP_TcpAgentListener)(new C_HP_TcpAgentListener);
  148. }
  149. HPSOCKET_API HP_TcpClientListener __HP_CALL Create_HP_TcpClientListener()
  150. {
  151. return (HP_TcpClientListener)(new C_HP_TcpClientListener);
  152. }
  153. HPSOCKET_API HP_TcpPullServerListener __HP_CALL Create_HP_TcpPullServerListener()
  154. {
  155. return (HP_TcpPullServerListener)(new C_HP_TcpPullServerListener);
  156. }
  157. HPSOCKET_API HP_TcpPullAgentListener __HP_CALL Create_HP_TcpPullAgentListener()
  158. {
  159. return (HP_TcpPullAgentListener)(new C_HP_TcpPullAgentListener);
  160. }
  161. HPSOCKET_API HP_TcpPullClientListener __HP_CALL Create_HP_TcpPullClientListener()
  162. {
  163. return (HP_TcpPullClientListener)(new C_HP_TcpPullClientListener);
  164. }
  165. HPSOCKET_API HP_TcpPackServerListener __HP_CALL Create_HP_TcpPackServerListener()
  166. {
  167. return (HP_TcpPackServerListener)(new C_HP_TcpPackServerListener);
  168. }
  169. HPSOCKET_API HP_TcpPackAgentListener __HP_CALL Create_HP_TcpPackAgentListener()
  170. {
  171. return (HP_TcpPackAgentListener)(new C_HP_TcpPackAgentListener);
  172. }
  173. HPSOCKET_API HP_TcpPackClientListener __HP_CALL Create_HP_TcpPackClientListener()
  174. {
  175. return (HP_TcpPackClientListener)(new C_HP_TcpPackClientListener);
  176. }
  177. HPSOCKET_API void __HP_CALL Destroy_HP_TcpServerListener(HP_TcpServerListener pListener)
  178. {
  179. delete (C_HP_TcpServerListener*)pListener;
  180. }
  181. HPSOCKET_API void __HP_CALL Destroy_HP_TcpAgentListener(HP_TcpAgentListener pListener)
  182. {
  183. delete (C_HP_TcpAgentListener*)pListener;
  184. }
  185. HPSOCKET_API void __HP_CALL Destroy_HP_TcpClientListener(HP_TcpClientListener pListener)
  186. {
  187. delete (C_HP_TcpClientListener*)pListener;
  188. }
  189. HPSOCKET_API void __HP_CALL Destroy_HP_TcpPullServerListener(HP_TcpPullServerListener pListener)
  190. {
  191. delete (C_HP_TcpPullServerListener*)pListener;
  192. }
  193. HPSOCKET_API void __HP_CALL Destroy_HP_TcpPullAgentListener(HP_TcpPullAgentListener pListener)
  194. {
  195. delete (C_HP_TcpPullAgentListener*)pListener;
  196. }
  197. HPSOCKET_API void __HP_CALL Destroy_HP_TcpPullClientListener(HP_TcpPullClientListener pListener)
  198. {
  199. delete (C_HP_TcpPullClientListener*)pListener;
  200. }
  201. HPSOCKET_API void __HP_CALL Destroy_HP_TcpPackServerListener(HP_TcpPackServerListener pListener)
  202. {
  203. delete (C_HP_TcpPackServerListener*)pListener;
  204. }
  205. HPSOCKET_API void __HP_CALL Destroy_HP_TcpPackAgentListener(HP_TcpPackAgentListener pListener)
  206. {
  207. delete (C_HP_TcpPackAgentListener*)pListener;
  208. }
  209. HPSOCKET_API void __HP_CALL Destroy_HP_TcpPackClientListener(HP_TcpPackClientListener pListener)
  210. {
  211. delete (C_HP_TcpPackClientListener*)pListener;
  212. }
  213. #ifdef _UDP_SUPPORT
  214. HPSOCKET_API HP_UdpServer __HP_CALL Create_HP_UdpServer(HP_UdpServerListener pListener)
  215. {
  216. return (HP_UdpServer)(new C_HP_UdpServer((IUdpServerListener*)pListener));
  217. }
  218. HPSOCKET_API HP_UdpClient __HP_CALL Create_HP_UdpClient(HP_UdpClientListener pListener)
  219. {
  220. return (HP_UdpClient)(new C_HP_UdpClient((IUdpClientListener*)pListener));
  221. }
  222. HPSOCKET_API HP_UdpCast __HP_CALL Create_HP_UdpCast(HP_UdpCastListener pListener)
  223. {
  224. return (HP_UdpCast)(new C_HP_UdpCast((IUdpCastListener*)pListener));
  225. }
  226. HPSOCKET_API HP_UdpNode __HP_CALL Create_HP_UdpNode(HP_UdpNodeListener pListener)
  227. {
  228. return (HP_UdpNode)(new C_HP_UdpNode((IUdpNodeListener*)pListener));
  229. }
  230. HPSOCKET_API HP_UdpArqServer __HP_CALL Create_HP_UdpArqServer(HP_UdpServerListener pListener)
  231. {
  232. return (HP_UdpArqServer)(new C_HP_UdpArqServer((IUdpServerListener*)pListener));
  233. }
  234. HPSOCKET_API HP_UdpArqClient __HP_CALL Create_HP_UdpArqClient(HP_UdpClientListener pListener)
  235. {
  236. return (HP_UdpArqClient)(new C_HP_UdpArqClient((IUdpClientListener*)pListener));
  237. }
  238. HPSOCKET_API void __HP_CALL Destroy_HP_UdpServer(HP_UdpServer pServer)
  239. {
  240. delete (C_HP_UdpServer*)pServer;
  241. }
  242. HPSOCKET_API void __HP_CALL Destroy_HP_UdpClient(HP_UdpClient pClient)
  243. {
  244. delete (C_HP_UdpClient*)pClient;
  245. }
  246. HPSOCKET_API void __HP_CALL Destroy_HP_UdpCast(HP_UdpCast pCast)
  247. {
  248. delete (C_HP_UdpCast*)pCast;
  249. }
  250. HPSOCKET_API void __HP_CALL Destroy_HP_UdpNode(HP_UdpNode pNode)
  251. {
  252. delete (C_HP_UdpNode*)pNode;
  253. }
  254. HPSOCKET_API void __HP_CALL Destroy_HP_UdpArqServer(HP_UdpArqServer pServer)
  255. {
  256. delete (C_HP_UdpArqServer*)pServer;
  257. }
  258. HPSOCKET_API void __HP_CALL Destroy_HP_UdpArqClient(HP_UdpArqClient pClient)
  259. {
  260. delete (C_HP_UdpArqClient*)pClient;
  261. }
  262. HPSOCKET_API HP_UdpServerListener __HP_CALL Create_HP_UdpServerListener()
  263. {
  264. return (HP_UdpServerListener)(new C_HP_UdpServerListener);
  265. }
  266. HPSOCKET_API HP_UdpClientListener __HP_CALL Create_HP_UdpClientListener()
  267. {
  268. return (HP_UdpClientListener)(new C_HP_UdpClientListener);
  269. }
  270. HPSOCKET_API HP_UdpCastListener __HP_CALL Create_HP_UdpCastListener()
  271. {
  272. return (HP_UdpCastListener)(new C_HP_UdpCastListener);
  273. }
  274. HPSOCKET_API HP_UdpNodeListener __HP_CALL Create_HP_UdpNodeListener()
  275. {
  276. return (HP_UdpNodeListener)(new C_HP_UdpNodeListener);
  277. }
  278. HPSOCKET_API HP_UdpArqServerListener __HP_CALL Create_HP_UdpArqServerListener()
  279. {
  280. return (HP_UdpArqServerListener)(new C_HP_UdpArqServerListener);
  281. }
  282. HPSOCKET_API HP_UdpArqClientListener __HP_CALL Create_HP_UdpArqClientListener()
  283. {
  284. return (HP_UdpArqClientListener)(new C_HP_UdpArqClientListener);
  285. }
  286. HPSOCKET_API void __HP_CALL Destroy_HP_UdpServerListener(HP_UdpServerListener pListener)
  287. {
  288. delete (C_HP_UdpServerListener*)pListener;
  289. }
  290. HPSOCKET_API void __HP_CALL Destroy_HP_UdpClientListener(HP_UdpClientListener pListener)
  291. {
  292. delete (C_HP_UdpClientListener*)pListener;
  293. }
  294. HPSOCKET_API void __HP_CALL Destroy_HP_UdpCastListener(HP_UdpCastListener pListener)
  295. {
  296. delete (C_HP_UdpClientListener*)pListener;
  297. }
  298. HPSOCKET_API void __HP_CALL Destroy_HP_UdpNodeListener(HP_UdpNodeListener pListener)
  299. {
  300. delete (C_HP_UdpNodeListener*)pListener;
  301. }
  302. HPSOCKET_API void __HP_CALL Destroy_HP_UdpArqServerListener(HP_UdpArqServerListener pListener)
  303. {
  304. delete (C_HP_UdpArqServerListener*)pListener;
  305. }
  306. HPSOCKET_API void __HP_CALL Destroy_HP_UdpArqClientListener(HP_UdpArqClientListener pListener)
  307. {
  308. delete (C_HP_UdpArqClientListener*)pListener;
  309. }
  310. #endif
  311. /**********************************************************************************/
  312. /***************************** Server 回调函数设置方法 *****************************/
  313. HPSOCKET_API void __HP_CALL HP_Set_FN_Server_OnPrepareListen(HP_ServerListener pListener, HP_FN_Server_OnPrepareListen fn)
  314. {
  315. ((C_HP_TcpServerListener*)pListener)->m_fnOnPrepareListen = fn;
  316. }
  317. HPSOCKET_API void __HP_CALL HP_Set_FN_Server_OnAccept(HP_ServerListener pListener, HP_FN_Server_OnAccept fn)
  318. {
  319. ((C_HP_TcpServerListener*)pListener)->m_fnOnAccept = fn;
  320. }
  321. HPSOCKET_API void __HP_CALL HP_Set_FN_Server_OnHandShake(HP_ServerListener pListener, HP_FN_Server_OnHandShake fn)
  322. {
  323. ((C_HP_TcpServerListener*)pListener)->m_fnOnHandShake = fn;
  324. }
  325. HPSOCKET_API void __HP_CALL HP_Set_FN_Server_OnSend(HP_ServerListener pListener, HP_FN_Server_OnSend fn)
  326. {
  327. ((C_HP_TcpServerListener*)pListener)->m_fnOnSend = fn;
  328. }
  329. HPSOCKET_API void __HP_CALL HP_Set_FN_Server_OnReceive(HP_ServerListener pListener, HP_FN_Server_OnReceive fn)
  330. {
  331. ((C_HP_TcpServerListener*)pListener)->m_fnOnReceive = fn;
  332. }
  333. HPSOCKET_API void __HP_CALL HP_Set_FN_Server_OnPullReceive(HP_ServerListener pListener, HP_FN_Server_OnPullReceive fn)
  334. {
  335. ((C_HP_TcpServerListener*)pListener)->m_fnOnPullReceive = fn;
  336. }
  337. HPSOCKET_API void __HP_CALL HP_Set_FN_Server_OnClose(HP_ServerListener pListener, HP_FN_Server_OnClose fn)
  338. {
  339. ((C_HP_TcpServerListener*)pListener)->m_fnOnClose = fn;
  340. }
  341. HPSOCKET_API void __HP_CALL HP_Set_FN_Server_OnShutdown(HP_ServerListener pListener, HP_FN_Server_OnShutdown fn)
  342. {
  343. ((C_HP_TcpServerListener*)pListener)->m_fnOnShutdown = fn;
  344. }
  345. /**********************************************************************************/
  346. /***************************** Agent 回调函数设置方法 *****************************/
  347. HPSOCKET_API void __HP_CALL HP_Set_FN_Agent_OnPrepareConnect(HP_AgentListener pListener, HP_FN_Agent_OnPrepareConnect fn)
  348. {
  349. ((C_HP_TcpAgentListener*)pListener)->m_fnOnPrepareConnect = fn;
  350. }
  351. HPSOCKET_API void __HP_CALL HP_Set_FN_Agent_OnConnect(HP_AgentListener pListener, HP_FN_Agent_OnConnect fn)
  352. {
  353. ((C_HP_TcpAgentListener*)pListener)->m_fnOnConnect = fn;
  354. }
  355. HPSOCKET_API void __HP_CALL HP_Set_FN_Agent_OnHandShake(HP_AgentListener pListener, HP_FN_Agent_OnHandShake fn)
  356. {
  357. ((C_HP_TcpAgentListener*)pListener)->m_fnOnHandShake = fn;
  358. }
  359. HPSOCKET_API void __HP_CALL HP_Set_FN_Agent_OnSend(HP_AgentListener pListener, HP_FN_Agent_OnSend fn)
  360. {
  361. ((C_HP_TcpAgentListener*)pListener)->m_fnOnSend = fn;
  362. }
  363. HPSOCKET_API void __HP_CALL HP_Set_FN_Agent_OnReceive(HP_AgentListener pListener, HP_FN_Agent_OnReceive fn)
  364. {
  365. ((C_HP_TcpAgentListener*)pListener)->m_fnOnReceive = fn;
  366. }
  367. HPSOCKET_API void __HP_CALL HP_Set_FN_Agent_OnPullReceive(HP_AgentListener pListener, HP_FN_Agent_OnPullReceive fn)
  368. {
  369. ((C_HP_TcpAgentListener*)pListener)->m_fnOnPullReceive = fn;
  370. }
  371. HPSOCKET_API void __HP_CALL HP_Set_FN_Agent_OnClose(HP_AgentListener pListener, HP_FN_Agent_OnClose fn)
  372. {
  373. ((C_HP_TcpAgentListener*)pListener)->m_fnOnClose = fn;
  374. }
  375. HPSOCKET_API void __HP_CALL HP_Set_FN_Agent_OnShutdown(HP_AgentListener pListener, HP_FN_Agent_OnShutdown fn)
  376. {
  377. ((C_HP_TcpAgentListener*)pListener)->m_fnOnShutdown = fn;
  378. }
  379. /**********************************************************************************/
  380. /***************************** Client 回调函数设置方法 *****************************/
  381. HPSOCKET_API void __HP_CALL HP_Set_FN_Client_OnPrepareConnect(HP_ClientListener pListener, HP_FN_Client_OnPrepareConnect fn)
  382. {
  383. ((C_HP_TcpClientListener*)pListener)->m_fnOnPrepareConnect = fn;
  384. }
  385. HPSOCKET_API void __HP_CALL HP_Set_FN_Client_OnConnect(HP_ClientListener pListener, HP_FN_Client_OnConnect fn)
  386. {
  387. ((C_HP_TcpClientListener*)pListener)->m_fnOnConnect = fn;
  388. }
  389. HPSOCKET_API void __HP_CALL HP_Set_FN_Client_OnHandShake(HP_ClientListener pListener, HP_FN_Client_OnHandShake fn)
  390. {
  391. ((C_HP_TcpClientListener*)pListener)->m_fnOnHandShake = fn;
  392. }
  393. HPSOCKET_API void __HP_CALL HP_Set_FN_Client_OnSend(HP_ClientListener pListener, HP_FN_Client_OnSend fn)
  394. {
  395. ((C_HP_TcpClientListener*)pListener)->m_fnOnSend = fn;
  396. }
  397. HPSOCKET_API void __HP_CALL HP_Set_FN_Client_OnReceive(HP_ClientListener pListener, HP_FN_Client_OnReceive fn)
  398. {
  399. ((C_HP_TcpClientListener*)pListener)->m_fnOnReceive = fn;
  400. }
  401. HPSOCKET_API void __HP_CALL HP_Set_FN_Client_OnPullReceive(HP_ClientListener pListener, HP_FN_Client_OnPullReceive fn)
  402. {
  403. ((C_HP_TcpClientListener*)pListener)->m_fnOnPullReceive = fn;
  404. }
  405. HPSOCKET_API void __HP_CALL HP_Set_FN_Client_OnClose(HP_ClientListener pListener, HP_FN_Client_OnClose fn)
  406. {
  407. ((C_HP_TcpClientListener*)pListener)->m_fnOnClose = fn;
  408. }
  409. #ifdef _UDP_SUPPORT
  410. /**********************************************************************************/
  411. /***************************** UdpNode 回调函数设置方法 *****************************/
  412. HPSOCKET_API void __HP_CALL HP_Set_FN_UdpNode_OnPrepareListen(HP_UdpNodeListener pListener, HP_FN_UdpNode_OnPrepareListen fn)
  413. {
  414. ((C_HP_UdpNodeListener*)pListener)->m_fnOnPrepareListen = fn;
  415. }
  416. HPSOCKET_API void __HP_CALL HP_Set_FN_UdpNode_OnSend(HP_UdpNodeListener pListener, HP_FN_UdpNode_OnSend fn)
  417. {
  418. ((C_HP_UdpNodeListener*)pListener)->m_fnOnSend = fn;
  419. }
  420. HPSOCKET_API void __HP_CALL HP_Set_FN_UdpNode_OnReceive(HP_UdpNodeListener pListener, HP_FN_UdpNode_OnReceive fn)
  421. {
  422. ((C_HP_UdpNodeListener*)pListener)->m_fnOnReceive = fn;
  423. }
  424. HPSOCKET_API void __HP_CALL HP_Set_FN_UdpNode_OnError(HP_UdpNodeListener pListener, HP_FN_UdpNode_OnError fn)
  425. {
  426. ((C_HP_UdpNodeListener*)pListener)->m_fnOnError = fn;
  427. }
  428. HPSOCKET_API void __HP_CALL HP_Set_FN_UdpNode_OnShutdown(HP_UdpNodeListener pListener, HP_FN_UdpNode_OnShutdown fn)
  429. {
  430. ((C_HP_UdpNodeListener*)pListener)->m_fnOnShutdown = fn;
  431. }
  432. #endif
  433. /**************************************************************************/
  434. /***************************** Server 操作方法 *****************************/
  435. HPSOCKET_API BOOL __HP_CALL HP_Server_Start(HP_Server pServer, LPCTSTR lpszBindAddress, USHORT usPort)
  436. {
  437. return C_HP_Object::ToSecond<IServer>(pServer)->Start(lpszBindAddress, usPort);
  438. }
  439. HPSOCKET_API BOOL __HP_CALL HP_Server_Stop(HP_Server pServer)
  440. {
  441. return C_HP_Object::ToSecond<IServer>(pServer)->Stop();
  442. }
  443. HPSOCKET_API BOOL __HP_CALL HP_Server_Wait(HP_Server pServer, DWORD dwMilliseconds)
  444. {
  445. return C_HP_Object::ToSecond<IServer>(pServer)->Wait(dwMilliseconds);
  446. }
  447. HPSOCKET_API BOOL __HP_CALL HP_Server_Send(HP_Server pServer, HP_CONNID dwConnID, const BYTE* pBuffer, int iLength)
  448. {
  449. return C_HP_Object::ToSecond<IServer>(pServer)->Send(dwConnID, pBuffer, iLength);
  450. }
  451. HPSOCKET_API BOOL __HP_CALL HP_Server_SendPart(HP_Server pServer, HP_CONNID dwConnID, const BYTE* pBuffer, int iLength, int iOffset)
  452. {
  453. return C_HP_Object::ToSecond<IServer>(pServer)->Send(dwConnID, pBuffer, iLength, iOffset);
  454. }
  455. HPSOCKET_API BOOL __HP_CALL HP_Server_SendPackets(HP_Server pServer, HP_CONNID dwConnID, const WSABUF pBuffers[], int iCount)
  456. {
  457. return C_HP_Object::ToSecond<IServer>(pServer)->SendPackets(dwConnID, pBuffers, iCount);
  458. }
  459. HPSOCKET_API BOOL __HP_CALL HP_Server_PauseReceive(HP_Server pServer, HP_CONNID dwConnID, BOOL bPause)
  460. {
  461. return C_HP_Object::ToSecond<IServer>(pServer)->PauseReceive(dwConnID, bPause);
  462. }
  463. HPSOCKET_API BOOL __HP_CALL HP_Server_Disconnect(HP_Server pServer, HP_CONNID dwConnID, BOOL bForce)
  464. {
  465. return C_HP_Object::ToSecond<IServer>(pServer)->Disconnect(dwConnID, bForce);
  466. }
  467. HPSOCKET_API BOOL __HP_CALL HP_Server_DisconnectLongConnections(HP_Server pServer, DWORD dwPeriod, BOOL bForce)
  468. {
  469. return C_HP_Object::ToSecond<IServer>(pServer)->DisconnectLongConnections(dwPeriod, bForce);
  470. }
  471. HPSOCKET_API BOOL __HP_CALL HP_Server_DisconnectSilenceConnections(HP_Server pServer, DWORD dwPeriod, BOOL bForce)
  472. {
  473. return C_HP_Object::ToSecond<IServer>(pServer)->DisconnectSilenceConnections(dwPeriod, bForce);
  474. }
  475. /******************************************************************************/
  476. /***************************** Server 属性访问方法 *****************************/
  477. HPSOCKET_API BOOL __HP_CALL HP_Server_SetConnectionExtra(HP_Server pServer, HP_CONNID dwConnID, PVOID pExtra)
  478. {
  479. return C_HP_Object::ToSecond<IServer>(pServer)->SetConnectionExtra(dwConnID, pExtra);
  480. }
  481. HPSOCKET_API BOOL __HP_CALL HP_Server_GetConnectionExtra(HP_Server pServer, HP_CONNID dwConnID, PVOID* ppExtra)
  482. {
  483. return C_HP_Object::ToSecond<IServer>(pServer)->GetConnectionExtra(dwConnID, ppExtra);
  484. }
  485. HPSOCKET_API BOOL __HP_CALL HP_Server_IsSecure(HP_Server pServer)
  486. {
  487. return C_HP_Object::ToSecond<IServer>(pServer)->IsSecure();
  488. }
  489. HPSOCKET_API BOOL __HP_CALL HP_Server_HasStarted(HP_Server pServer)
  490. {
  491. return C_HP_Object::ToSecond<IServer>(pServer)->HasStarted();
  492. }
  493. HPSOCKET_API En_HP_ServiceState __HP_CALL HP_Server_GetState(HP_Server pServer)
  494. {
  495. return C_HP_Object::ToSecond<IServer>(pServer)->GetState();
  496. }
  497. HPSOCKET_API En_HP_SocketError __HP_CALL HP_Server_GetLastError(HP_Server pServer)
  498. {
  499. return C_HP_Object::ToSecond<IServer>(pServer)->GetLastError();
  500. }
  501. HPSOCKET_API LPCTSTR __HP_CALL HP_Server_GetLastErrorDesc(HP_Server pServer)
  502. {
  503. return C_HP_Object::ToSecond<IServer>(pServer)->GetLastErrorDesc();
  504. }
  505. HPSOCKET_API BOOL __HP_CALL HP_Server_GetPendingDataLength(HP_Server pServer, HP_CONNID dwConnID, int* piPending)
  506. {
  507. return C_HP_Object::ToSecond<IServer>(pServer)->GetPendingDataLength(dwConnID, *piPending);
  508. }
  509. HPSOCKET_API BOOL __HP_CALL HP_Server_IsPauseReceive(HP_Server pServer, HP_CONNID dwConnID, BOOL* pbPaused)
  510. {
  511. return C_HP_Object::ToSecond<IServer>(pServer)->IsPauseReceive(dwConnID, *pbPaused);
  512. }
  513. HPSOCKET_API BOOL __HP_CALL HP_Server_IsConnected(HP_Server pServer, HP_CONNID dwConnID)
  514. {
  515. return C_HP_Object::ToSecond<IServer>(pServer)->IsConnected(dwConnID);
  516. }
  517. HPSOCKET_API DWORD __HP_CALL HP_Server_GetConnectionCount(HP_Server pServer)
  518. {
  519. return C_HP_Object::ToSecond<IServer>(pServer)->GetConnectionCount();
  520. }
  521. HPSOCKET_API BOOL __HP_CALL HP_Server_GetAllConnectionIDs(HP_Server pServer, HP_CONNID pIDs[], DWORD* pdwCount)
  522. {
  523. return C_HP_Object::ToSecond<IServer>(pServer)->GetAllConnectionIDs(pIDs, *pdwCount);
  524. }
  525. HPSOCKET_API BOOL __HP_CALL HP_Server_GetConnectPeriod(HP_Server pServer, HP_CONNID dwConnID, DWORD* pdwPeriod)
  526. {
  527. return C_HP_Object::ToSecond<IServer>(pServer)->GetConnectPeriod(dwConnID, *pdwPeriod);
  528. }
  529. HPSOCKET_API BOOL __HP_CALL HP_Server_GetSilencePeriod(HP_Server pServer, HP_CONNID dwConnID, DWORD* pdwPeriod)
  530. {
  531. return C_HP_Object::ToSecond<IServer>(pServer)->GetSilencePeriod(dwConnID, *pdwPeriod);
  532. }
  533. HPSOCKET_API BOOL __HP_CALL HP_Server_GetListenAddress(HP_Server pServer, TCHAR lpszAddress[], int* piAddressLen, USHORT* pusPort)
  534. {
  535. return C_HP_Object::ToSecond<IServer>(pServer)->GetListenAddress(lpszAddress, *piAddressLen, *pusPort);
  536. }
  537. HPSOCKET_API BOOL __HP_CALL HP_Server_GetLocalAddress(HP_Server pServer, HP_CONNID dwConnID, TCHAR lpszAddress[], int* piAddressLen, USHORT* pusPort)
  538. {
  539. return C_HP_Object::ToSecond<IServer>(pServer)->GetLocalAddress(dwConnID, lpszAddress, *piAddressLen, *pusPort);
  540. }
  541. HPSOCKET_API BOOL __HP_CALL HP_Server_GetRemoteAddress(HP_Server pServer, HP_CONNID dwConnID, TCHAR lpszAddress[], int* piAddressLen, USHORT* pusPort)
  542. {
  543. return C_HP_Object::ToSecond<IServer>(pServer)->GetRemoteAddress(dwConnID, lpszAddress, *piAddressLen, *pusPort);
  544. }
  545. HPSOCKET_API void __HP_CALL HP_Server_SetReuseAddressPolicy(HP_Server pServer, En_HP_ReuseAddressPolicy enReusePolicy)
  546. {
  547. C_HP_Object::ToSecond<IServer>(pServer)->SetReuseAddressPolicy(enReusePolicy);
  548. }
  549. HPSOCKET_API void __HP_CALL HP_Server_SetSendPolicy(HP_Server pServer, En_HP_SendPolicy enSendPolicy)
  550. {
  551. C_HP_Object::ToSecond<IServer>(pServer)->SetSendPolicy(enSendPolicy);
  552. }
  553. HPSOCKET_API void __HP_CALL HP_Server_SetOnSendSyncPolicy(HP_Server pServer, En_HP_OnSendSyncPolicy enSyncPolicy)
  554. {
  555. C_HP_Object::ToSecond<IServer>(pServer)->SetOnSendSyncPolicy(enSyncPolicy);
  556. }
  557. HPSOCKET_API void __HP_CALL HP_Server_SetFreeSocketObjLockTime(HP_Server pServer, DWORD dwFreeSocketObjLockTime)
  558. {
  559. C_HP_Object::ToSecond<IServer>(pServer)->SetFreeSocketObjLockTime(dwFreeSocketObjLockTime);
  560. }
  561. HPSOCKET_API void __HP_CALL HP_Server_SetFreeSocketObjPool(HP_Server pServer, DWORD dwFreeSocketObjPool)
  562. {
  563. C_HP_Object::ToSecond<IServer>(pServer)->SetFreeSocketObjPool(dwFreeSocketObjPool);
  564. }
  565. HPSOCKET_API void __HP_CALL HP_Server_SetFreeBufferObjPool(HP_Server pServer, DWORD dwFreeBufferObjPool)
  566. {
  567. C_HP_Object::ToSecond<IServer>(pServer)->SetFreeBufferObjPool(dwFreeBufferObjPool);
  568. }
  569. HPSOCKET_API void __HP_CALL HP_Server_SetFreeSocketObjHold(HP_Server pServer, DWORD dwFreeSocketObjHold)
  570. {
  571. C_HP_Object::ToSecond<IServer>(pServer)->SetFreeSocketObjHold(dwFreeSocketObjHold);
  572. }
  573. HPSOCKET_API void __HP_CALL HP_Server_SetFreeBufferObjHold(HP_Server pServer, DWORD dwFreeBufferObjHold)
  574. {
  575. C_HP_Object::ToSecond<IServer>(pServer)->SetFreeBufferObjHold(dwFreeBufferObjHold);
  576. }
  577. HPSOCKET_API void __HP_CALL HP_Server_SetMaxConnectionCount(HP_Server pServer, DWORD dwMaxConnectionCount)
  578. {
  579. C_HP_Object::ToSecond<IServer>(pServer)->SetMaxConnectionCount(dwMaxConnectionCount);
  580. }
  581. HPSOCKET_API void __HP_CALL HP_Server_SetWorkerThreadCount(HP_Server pServer, DWORD dwWorkerThreadCount)
  582. {
  583. C_HP_Object::ToSecond<IServer>(pServer)->SetWorkerThreadCount(dwWorkerThreadCount);
  584. }
  585. HPSOCKET_API void __HP_CALL HP_Server_SetMarkSilence(HP_Server pServer, BOOL bMarkSilence)
  586. {
  587. C_HP_Object::ToSecond<IServer>(pServer)->SetMarkSilence(bMarkSilence);
  588. }
  589. HPSOCKET_API En_HP_ReuseAddressPolicy __HP_CALL HP_Server_GetReuseAddressPolicy(HP_Server pServer)
  590. {
  591. return C_HP_Object::ToSecond<IServer>(pServer)->GetReuseAddressPolicy();
  592. }
  593. HPSOCKET_API En_HP_SendPolicy __HP_CALL HP_Server_GetSendPolicy(HP_Server pServer)
  594. {
  595. return C_HP_Object::ToSecond<IServer>(pServer)->GetSendPolicy();
  596. }
  597. HPSOCKET_API En_HP_OnSendSyncPolicy __HP_CALL HP_Server_GetOnSendSyncPolicy(HP_Server pServer)
  598. {
  599. return C_HP_Object::ToSecond<IServer>(pServer)->GetOnSendSyncPolicy();
  600. }
  601. HPSOCKET_API DWORD __HP_CALL HP_Server_GetFreeSocketObjLockTime(HP_Server pServer)
  602. {
  603. return C_HP_Object::ToSecond<IServer>(pServer)->GetFreeSocketObjLockTime();
  604. }
  605. HPSOCKET_API DWORD __HP_CALL HP_Server_GetFreeSocketObjPool(HP_Server pServer)
  606. {
  607. return C_HP_Object::ToSecond<IServer>(pServer)->GetFreeSocketObjPool();
  608. }
  609. HPSOCKET_API DWORD __HP_CALL HP_Server_GetFreeBufferObjPool(HP_Server pServer)
  610. {
  611. return C_HP_Object::ToSecond<IServer>(pServer)->GetFreeBufferObjPool();
  612. }
  613. HPSOCKET_API DWORD __HP_CALL HP_Server_GetFreeSocketObjHold(HP_Server pServer)
  614. {
  615. return C_HP_Object::ToSecond<IServer>(pServer)->GetFreeSocketObjHold();
  616. }
  617. HPSOCKET_API DWORD __HP_CALL HP_Server_GetFreeBufferObjHold(HP_Server pServer)
  618. {
  619. return C_HP_Object::ToSecond<IServer>(pServer)->GetFreeBufferObjHold();
  620. }
  621. HPSOCKET_API DWORD __HP_CALL HP_Server_GetMaxConnectionCount(HP_Server pServer)
  622. {
  623. return C_HP_Object::ToSecond<IServer>(pServer)->GetMaxConnectionCount();
  624. }
  625. HPSOCKET_API DWORD __HP_CALL HP_Server_GetWorkerThreadCount(HP_Server pServer)
  626. {
  627. return C_HP_Object::ToSecond<IServer>(pServer)->GetWorkerThreadCount();
  628. }
  629. HPSOCKET_API BOOL __HP_CALL HP_Server_IsMarkSilence(HP_Server pServer)
  630. {
  631. return C_HP_Object::ToSecond<IServer>(pServer)->IsMarkSilence();
  632. }
  633. /**********************************************************************************/
  634. /******************************* TCP Server 操作方法 *******************************/
  635. HPSOCKET_API BOOL __HP_CALL HP_TcpServer_SendSmallFile(HP_Server pServer, HP_CONNID dwConnID, LPCTSTR lpszFileName, const LPWSABUF pHead, const LPWSABUF pTail)
  636. {
  637. return C_HP_Object::ToSecond<ITcpServer>(pServer)->SendSmallFile(dwConnID, lpszFileName, pHead, pTail);
  638. }
  639. /**********************************************************************************/
  640. /***************************** TCP Server 属性访问方法 *****************************/
  641. HPSOCKET_API void __HP_CALL HP_TcpServer_SetAcceptSocketCount(HP_TcpServer pServer, DWORD dwAcceptSocketCount)
  642. {
  643. C_HP_Object::ToSecond<ITcpServer>(pServer)->SetAcceptSocketCount(dwAcceptSocketCount);
  644. }
  645. HPSOCKET_API void __HP_CALL HP_TcpServer_SetSocketBufferSize(HP_TcpServer pServer, DWORD dwSocketBufferSize)
  646. {
  647. C_HP_Object::ToSecond<ITcpServer>(pServer)->SetSocketBufferSize(dwSocketBufferSize);
  648. }
  649. HPSOCKET_API void __HP_CALL HP_TcpServer_SetSocketListenQueue(HP_TcpServer pServer, DWORD dwSocketListenQueue)
  650. {
  651. C_HP_Object::ToSecond<ITcpServer>(pServer)->SetSocketListenQueue(dwSocketListenQueue);
  652. }
  653. HPSOCKET_API void __HP_CALL HP_TcpServer_SetKeepAliveTime(HP_TcpServer pServer, DWORD dwKeepAliveTime)
  654. {
  655. C_HP_Object::ToSecond<ITcpServer>(pServer)->SetKeepAliveTime(dwKeepAliveTime);
  656. }
  657. HPSOCKET_API void __HP_CALL HP_TcpServer_SetKeepAliveInterval(HP_TcpServer pServer, DWORD dwKeepAliveInterval)
  658. {
  659. C_HP_Object::ToSecond<ITcpServer>(pServer)->SetKeepAliveInterval(dwKeepAliveInterval);
  660. }
  661. HPSOCKET_API void __HP_CALL HP_TcpServer_SetNoDelay(HP_TcpServer pServer, BOOL bNoDelay)
  662. {
  663. C_HP_Object::ToSecond<ITcpServer>(pServer)->SetNoDelay(bNoDelay);
  664. }
  665. HPSOCKET_API DWORD __HP_CALL HP_TcpServer_GetAcceptSocketCount(HP_TcpServer pServer)
  666. {
  667. return C_HP_Object::ToSecond<ITcpServer>(pServer)->GetAcceptSocketCount();
  668. }
  669. HPSOCKET_API DWORD __HP_CALL HP_TcpServer_GetSocketBufferSize(HP_TcpServer pServer)
  670. {
  671. return C_HP_Object::ToSecond<ITcpServer>(pServer)->GetSocketBufferSize();
  672. }
  673. HPSOCKET_API DWORD __HP_CALL HP_TcpServer_GetSocketListenQueue(HP_TcpServer pServer)
  674. {
  675. return C_HP_Object::ToSecond<ITcpServer>(pServer)->GetSocketListenQueue();
  676. }
  677. HPSOCKET_API DWORD __HP_CALL HP_TcpServer_GetKeepAliveTime(HP_TcpServer pServer)
  678. {
  679. return C_HP_Object::ToSecond<ITcpServer>(pServer)->GetKeepAliveTime();
  680. }
  681. HPSOCKET_API DWORD __HP_CALL HP_TcpServer_GetKeepAliveInterval(HP_TcpServer pServer)
  682. {
  683. return C_HP_Object::ToSecond<ITcpServer>(pServer)->GetKeepAliveInterval();
  684. }
  685. HPSOCKET_API BOOL __HP_CALL HP_TcpServer_IsNoDelay(HP_TcpServer pServer)
  686. {
  687. return C_HP_Object::ToSecond<ITcpServer>(pServer)->IsNoDelay();
  688. }
  689. #ifdef _UDP_SUPPORT
  690. /**********************************************************************************/
  691. /***************************** UDP Server 属性访问方法 *****************************/
  692. HPSOCKET_API void __HP_CALL HP_UdpServer_SetMaxDatagramSize(HP_UdpServer pServer, DWORD dwMaxDatagramSize)
  693. {
  694. C_HP_Object::ToSecond<IUdpServer>(pServer)->SetMaxDatagramSize(dwMaxDatagramSize);
  695. }
  696. HPSOCKET_API DWORD __HP_CALL HP_UdpServer_GetMaxDatagramSize(HP_UdpServer pServer)
  697. {
  698. return C_HP_Object::ToSecond<IUdpServer>(pServer)->GetMaxDatagramSize();
  699. }
  700. HPSOCKET_API void __HP_CALL HP_UdpServer_SetPostReceiveCount(HP_UdpServer pServer, DWORD dwPostReceiveCount)
  701. {
  702. C_HP_Object::ToSecond<IUdpServer>(pServer)->SetPostReceiveCount(dwPostReceiveCount);
  703. }
  704. HPSOCKET_API DWORD __HP_CALL HP_UdpServer_GetPostReceiveCount(HP_UdpServer pServer)
  705. {
  706. return C_HP_Object::ToSecond<IUdpServer>(pServer)->GetPostReceiveCount();
  707. }
  708. HPSOCKET_API void __HP_CALL HP_UdpServer_SetDetectAttempts(HP_UdpServer pServer, DWORD dwDetectAttempts)
  709. {
  710. C_HP_Object::ToSecond<IUdpServer>(pServer)->SetDetectAttempts(dwDetectAttempts);
  711. }
  712. HPSOCKET_API void __HP_CALL HP_UdpServer_SetDetectInterval(HP_UdpServer pServer, DWORD dwDetectInterval)
  713. {
  714. C_HP_Object::ToSecond<IUdpServer>(pServer)->SetDetectInterval(dwDetectInterval);
  715. }
  716. HPSOCKET_API DWORD __HP_CALL HP_UdpServer_GetDetectAttempts(HP_UdpServer pServer)
  717. {
  718. return C_HP_Object::ToSecond<IUdpServer>(pServer)->GetDetectAttempts();
  719. }
  720. HPSOCKET_API DWORD __HP_CALL HP_UdpServer_GetDetectInterval(HP_UdpServer pServer)
  721. {
  722. return C_HP_Object::ToSecond<IUdpServer>(pServer)->GetDetectInterval();
  723. }
  724. /**********************************************************************************/
  725. /*************************** UDP ARQ Server 属性访问方法 ***************************/
  726. HPSOCKET_API void __HP_CALL HP_UdpArqServer_SetNoDelay(HP_UdpArqServer pServer, BOOL bNoDelay)
  727. {
  728. C_HP_Object::ToFirst<IArqSocket>(pServer)->SetNoDelay(bNoDelay);
  729. }
  730. HPSOCKET_API void __HP_CALL HP_UdpArqServer_SetTurnoffCongestCtrl(HP_UdpArqServer pServer, BOOL bTurnOff)
  731. {
  732. C_HP_Object::ToFirst<IArqSocket>(pServer)->SetTurnoffCongestCtrl(bTurnOff);
  733. }
  734. HPSOCKET_API void __HP_CALL HP_UdpArqServer_SetFlushInterval(HP_UdpArqServer pServer, DWORD dwFlushInterval)
  735. {
  736. C_HP_Object::ToFirst<IArqSocket>(pServer)->SetFlushInterval(dwFlushInterval);
  737. }
  738. HPSOCKET_API void __HP_CALL HP_UdpArqServer_SetResendByAcks(HP_UdpArqServer pServer, DWORD dwResendByAcks)
  739. {
  740. C_HP_Object::ToFirst<IArqSocket>(pServer)->SetResendByAcks(dwResendByAcks);
  741. }
  742. HPSOCKET_API void __HP_CALL HP_UdpArqServer_SetSendWndSize(HP_UdpArqServer pServer, DWORD dwSendWndSize)
  743. {
  744. C_HP_Object::ToFirst<IArqSocket>(pServer)->SetSendWndSize(dwSendWndSize);
  745. }
  746. HPSOCKET_API void __HP_CALL HP_UdpArqServer_SetRecvWndSize(HP_UdpArqServer pServer, DWORD dwRecvWndSize)
  747. {
  748. C_HP_Object::ToFirst<IArqSocket>(pServer)->SetRecvWndSize(dwRecvWndSize);
  749. }
  750. HPSOCKET_API void __HP_CALL HP_UdpArqServer_SetMinRto(HP_UdpArqServer pServer, DWORD dwMinRto)
  751. {
  752. C_HP_Object::ToFirst<IArqSocket>(pServer)->SetMinRto(dwMinRto);
  753. }
  754. HPSOCKET_API void __HP_CALL HP_UdpArqServer_SetFastLimit(HP_UdpArqServer pServer, DWORD dwFastLimit)
  755. {
  756. C_HP_Object::ToFirst<IArqSocket>(pServer)->SetFastLimit(dwFastLimit);
  757. }
  758. HPSOCKET_API void __HP_CALL HP_UdpArqServer_SetMaxTransUnit(HP_UdpArqServer pServer, DWORD dwMaxTransUnit)
  759. {
  760. C_HP_Object::ToFirst<IArqSocket>(pServer)->SetMaxTransUnit(dwMaxTransUnit);
  761. }
  762. HPSOCKET_API void __HP_CALL HP_UdpArqServer_SetMaxMessageSize(HP_UdpArqServer pServer, DWORD dwMaxMessageSize)
  763. {
  764. C_HP_Object::ToFirst<IArqSocket>(pServer)->SetMaxMessageSize(dwMaxMessageSize);
  765. }
  766. HPSOCKET_API void __HP_CALL HP_UdpArqServer_SetHandShakeTimeout(HP_UdpArqServer pServer, DWORD dwHandShakeTimeout)
  767. {
  768. C_HP_Object::ToFirst<IArqSocket>(pServer)->SetHandShakeTimeout(dwHandShakeTimeout);
  769. }
  770. HPSOCKET_API BOOL __HP_CALL HP_UdpArqServer_IsNoDelay(HP_UdpArqServer pServer)
  771. {
  772. return C_HP_Object::ToFirst<IArqSocket>(pServer)->IsNoDelay();
  773. }
  774. HPSOCKET_API BOOL __HP_CALL HP_UdpArqServer_IsTurnoffCongestCtrl(HP_UdpArqServer pServer)
  775. {
  776. return C_HP_Object::ToFirst<IArqSocket>(pServer)->IsTurnoffCongestCtrl();
  777. }
  778. HPSOCKET_API DWORD __HP_CALL HP_UdpArqServer_GetFlushInterval(HP_UdpArqServer pServer)
  779. {
  780. return C_HP_Object::ToFirst<IArqSocket>(pServer)->GetFlushInterval();
  781. }
  782. HPSOCKET_API DWORD __HP_CALL HP_UdpArqServer_GetResendByAcks(HP_UdpArqServer pServer)
  783. {
  784. return C_HP_Object::ToFirst<IArqSocket>(pServer)->GetResendByAcks();
  785. }
  786. HPSOCKET_API DWORD __HP_CALL HP_UdpArqServer_GetSendWndSize(HP_UdpArqServer pServer)
  787. {
  788. return C_HP_Object::ToFirst<IArqSocket>(pServer)->GetSendWndSize();
  789. }
  790. HPSOCKET_API DWORD __HP_CALL HP_UdpArqServer_GetRecvWndSize(HP_UdpArqServer pServer)
  791. {
  792. return C_HP_Object::ToFirst<IArqSocket>(pServer)->GetRecvWndSize();
  793. }
  794. HPSOCKET_API DWORD __HP_CALL HP_UdpArqServer_GetMinRto(HP_UdpArqServer pServer)
  795. {
  796. return C_HP_Object::ToFirst<IArqSocket>(pServer)->GetMinRto();
  797. }
  798. HPSOCKET_API DWORD __HP_CALL HP_UdpArqServer_GetFastLimit(HP_UdpArqServer pServer)
  799. {
  800. return C_HP_Object::ToFirst<IArqSocket>(pServer)->GetFastLimit();
  801. }
  802. HPSOCKET_API DWORD __HP_CALL HP_UdpArqServer_GetMaxTransUnit(HP_UdpArqServer pServer)
  803. {
  804. return C_HP_Object::ToFirst<IArqSocket>(pServer)->GetMaxTransUnit();
  805. }
  806. HPSOCKET_API DWORD __HP_CALL HP_UdpArqServer_GetMaxMessageSize(HP_UdpArqServer pServer)
  807. {
  808. return C_HP_Object::ToFirst<IArqSocket>(pServer)->GetMaxMessageSize();
  809. }
  810. HPSOCKET_API DWORD __HP_CALL HP_UdpArqServer_GetHandShakeTimeout(HP_UdpArqServer pServer)
  811. {
  812. return C_HP_Object::ToFirst<IArqSocket>(pServer)->GetHandShakeTimeout();
  813. }
  814. HPSOCKET_API BOOL __HP_CALL HP_UdpArqServer_GetWaitingSendMessageCount(HP_UdpArqServer pServer, HP_CONNID dwConnID, int* piCount)
  815. {
  816. return C_HP_Object::ToFirst<IArqSocket>(pServer)->GetWaitingSendMessageCount(dwConnID, *piCount);
  817. }
  818. #endif
  819. /**************************************************************************/
  820. /***************************** Agent 操作方法 *****************************/
  821. HPSOCKET_API BOOL __HP_CALL HP_Agent_Start(HP_Agent pAgent, LPCTSTR lpszBindAddress, BOOL bAsyncConnect)
  822. {
  823. return C_HP_Object::ToSecond<IAgent>(pAgent)->Start(lpszBindAddress, bAsyncConnect);
  824. }
  825. HPSOCKET_API BOOL __HP_CALL HP_Agent_Stop(HP_Agent pAgent)
  826. {
  827. return C_HP_Object::ToSecond<IAgent>(pAgent)->Stop();
  828. }
  829. HPSOCKET_API BOOL __HP_CALL HP_Agent_Wait(HP_Agent pAgent, DWORD dwMilliseconds)
  830. {
  831. return C_HP_Object::ToSecond<IAgent>(pAgent)->Wait(dwMilliseconds);
  832. }
  833. HPSOCKET_API BOOL __HP_CALL HP_Agent_Connect(HP_Agent pAgent, LPCTSTR lpszRemoteAddress, USHORT usPort, HP_CONNID* pdwConnID)
  834. {
  835. return C_HP_Object::ToSecond<IAgent>(pAgent)->Connect(lpszRemoteAddress, usPort, pdwConnID);
  836. }
  837. HPSOCKET_API BOOL __HP_CALL HP_Agent_ConnectWithExtra(HP_Agent pAgent, LPCTSTR lpszRemoteAddress, USHORT usPort, HP_CONNID* pdwConnID, PVOID pExtra)
  838. {
  839. return C_HP_Object::ToSecond<IAgent>(pAgent)->Connect(lpszRemoteAddress, usPort, pdwConnID, pExtra);
  840. }
  841. HPSOCKET_API BOOL __HP_CALL HP_Agent_ConnectWithLocalPort(HP_Agent pAgent, LPCTSTR lpszRemoteAddress, USHORT usPort, HP_CONNID* pdwConnID, USHORT usLocalPort)
  842. {
  843. return C_HP_Object::ToSecond<IAgent>(pAgent)->Connect(lpszRemoteAddress, usPort, pdwConnID, nullptr, usLocalPort);
  844. }
  845. HPSOCKET_API BOOL __HP_CALL HP_Agent_ConnectWithLocalAddress(HP_Agent pAgent, LPCTSTR lpszRemoteAddress, USHORT usPort, HP_CONNID* pdwConnID, LPCTSTR lpszLocalAddress)
  846. {
  847. return C_HP_Object::ToSecond<IAgent>(pAgent)->Connect(lpszRemoteAddress, usPort, pdwConnID, nullptr, 0, lpszLocalAddress);
  848. }
  849. HPSOCKET_API BOOL __HP_CALL HP_Agent_ConnectWithExtraAndLocalPort(HP_Agent pAgent, LPCTSTR lpszRemoteAddress, USHORT usPort, HP_CONNID* pdwConnID, PVOID pExtra, USHORT usLocalPort)
  850. {
  851. return C_HP_Object::ToSecond<IAgent>(pAgent)->Connect(lpszRemoteAddress, usPort, pdwConnID, pExtra, usLocalPort);
  852. }
  853. HPSOCKET_API BOOL __HP_CALL HP_Agent_ConnectWithExtraAndLocalAddressPort(HP_Agent pAgent, LPCTSTR lpszRemoteAddress, USHORT usPort, HP_CONNID* pdwConnID, PVOID pExtra, USHORT usLocalPort, LPCTSTR lpszLocalAddress)
  854. {
  855. return C_HP_Object::ToSecond<IAgent>(pAgent)->Connect(lpszRemoteAddress, usPort, pdwConnID, pExtra, usLocalPort, lpszLocalAddress);
  856. }
  857. HPSOCKET_API BOOL __HP_CALL HP_Agent_Send(HP_Agent pAgent, HP_CONNID dwConnID, const BYTE* pBuffer, int iLength)
  858. {
  859. return C_HP_Object::ToSecond<IAgent>(pAgent)->Send(dwConnID, pBuffer, iLength);
  860. }
  861. HPSOCKET_API BOOL __HP_CALL HP_Agent_SendPart(HP_Agent pAgent, HP_CONNID dwConnID, const BYTE* pBuffer, int iLength, int iOffset)
  862. {
  863. return C_HP_Object::ToSecond<IAgent>(pAgent)->Send(dwConnID, pBuffer, iLength, iOffset);
  864. }
  865. HPSOCKET_API BOOL __HP_CALL HP_Agent_SendPackets(HP_Agent pAgent, HP_CONNID dwConnID, const WSABUF pBuffers[], int iCount)
  866. {
  867. return C_HP_Object::ToSecond<IAgent>(pAgent)->SendPackets(dwConnID, pBuffers, iCount);
  868. }
  869. HPSOCKET_API BOOL __HP_CALL HP_Agent_PauseReceive(HP_Agent pAgent, HP_CONNID dwConnID, BOOL bPause)
  870. {
  871. return C_HP_Object::ToSecond<IAgent>(pAgent)->PauseReceive(dwConnID, bPause);
  872. }
  873. HPSOCKET_API BOOL __HP_CALL HP_Agent_Disconnect(HP_Agent pAgent, HP_CONNID dwConnID, BOOL bForce)
  874. {
  875. return C_HP_Object::ToSecond<IAgent>(pAgent)->Disconnect(dwConnID, bForce);
  876. }
  877. HPSOCKET_API BOOL __HP_CALL HP_Agent_DisconnectLongConnections(HP_Agent pAgent, DWORD dwPeriod, BOOL bForce)
  878. {
  879. return C_HP_Object::ToSecond<IAgent>(pAgent)->DisconnectLongConnections(dwPeriod, bForce);
  880. }
  881. HPSOCKET_API BOOL __HP_CALL HP_Agent_DisconnectSilenceConnections(HP_Agent pAgent, DWORD dwPeriod, BOOL bForce)
  882. {
  883. return C_HP_Object::ToSecond<IAgent>(pAgent)->DisconnectSilenceConnections(dwPeriod, bForce);
  884. }
  885. /******************************************************************************/
  886. /***************************** Agent 属性访问方法 *****************************/
  887. HPSOCKET_API BOOL __HP_CALL HP_Agent_SetConnectionExtra(HP_Agent pAgent, HP_CONNID dwConnID, PVOID pExtra)
  888. {
  889. return C_HP_Object::ToSecond<IAgent>(pAgent)->SetConnectionExtra(dwConnID, pExtra);
  890. }
  891. HPSOCKET_API BOOL __HP_CALL HP_Agent_GetConnectionExtra(HP_Agent pAgent, HP_CONNID dwConnID, PVOID* ppExtra)
  892. {
  893. return C_HP_Object::ToSecond<IAgent>(pAgent)->GetConnectionExtra(dwConnID, ppExtra);
  894. }
  895. HPSOCKET_API BOOL __HP_CALL HP_Agent_IsSecure(HP_Agent pAgent)
  896. {
  897. return C_HP_Object::ToSecond<IAgent>(pAgent)->IsSecure();
  898. }
  899. HPSOCKET_API BOOL __HP_CALL HP_Agent_HasStarted(HP_Agent pAgent)
  900. {
  901. return C_HP_Object::ToSecond<IAgent>(pAgent)->HasStarted();
  902. }
  903. HPSOCKET_API En_HP_ServiceState __HP_CALL HP_Agent_GetState(HP_Agent pAgent)
  904. {
  905. return C_HP_Object::ToSecond<IAgent>(pAgent)->GetState();
  906. }
  907. HPSOCKET_API En_HP_SocketError __HP_CALL HP_Agent_GetLastError(HP_Agent pAgent)
  908. {
  909. return C_HP_Object::ToSecond<IAgent>(pAgent)->GetLastError();
  910. }
  911. HPSOCKET_API LPCTSTR __HP_CALL HP_Agent_GetLastErrorDesc(HP_Agent pAgent)
  912. {
  913. return C_HP_Object::ToSecond<IAgent>(pAgent)->GetLastErrorDesc();
  914. }
  915. HPSOCKET_API BOOL __HP_CALL HP_Agent_GetPendingDataLength(HP_Agent pAgent, HP_CONNID dwConnID, int* piPending)
  916. {
  917. return C_HP_Object::ToSecond<IAgent>(pAgent)->GetPendingDataLength(dwConnID, *piPending);
  918. }
  919. HPSOCKET_API BOOL __HP_CALL HP_Agent_IsPauseReceive(HP_Agent pAgent, HP_CONNID dwConnID, BOOL* pbPaused)
  920. {
  921. return C_HP_Object::ToSecond<IAgent>(pAgent)->IsPauseReceive(dwConnID, *pbPaused);
  922. }
  923. HPSOCKET_API BOOL __HP_CALL HP_Agent_IsConnected(HP_Agent pAgent, HP_CONNID dwConnID)
  924. {
  925. return C_HP_Object::ToSecond<IAgent>(pAgent)->IsConnected(dwConnID);
  926. }
  927. HPSOCKET_API DWORD __HP_CALL HP_Agent_GetConnectionCount(HP_Agent pAgent)
  928. {
  929. return C_HP_Object::ToSecond<IAgent>(pAgent)->GetConnectionCount();
  930. }
  931. HPSOCKET_API BOOL __HP_CALL HP_Agent_GetAllConnectionIDs(HP_Agent pAgent, HP_CONNID pIDs[], DWORD* pdwCount)
  932. {
  933. return C_HP_Object::ToSecond<IAgent>(pAgent)->GetAllConnectionIDs(pIDs, *pdwCount);
  934. }
  935. HPSOCKET_API BOOL __HP_CALL HP_Agent_GetConnectPeriod(HP_Agent pAgent, HP_CONNID dwConnID, DWORD* pdwPeriod)
  936. {
  937. return C_HP_Object::ToSecond<IAgent>(pAgent)->GetConnectPeriod(dwConnID, *pdwPeriod);
  938. }
  939. HPSOCKET_API BOOL __HP_CALL HP_Agent_GetSilencePeriod(HP_Agent pAgent, HP_CONNID dwConnID, DWORD* pdwPeriod)
  940. {
  941. return C_HP_Object::ToSecond<IAgent>(pAgent)->GetSilencePeriod(dwConnID, *pdwPeriod);
  942. }
  943. HPSOCKET_API BOOL __HP_CALL HP_Agent_GetLocalAddress(HP_Agent pAgent, HP_CONNID dwConnID, TCHAR lpszAddress[], int* piAddressLen, USHORT* pusPort)
  944. {
  945. return C_HP_Object::ToSecond<IAgent>(pAgent)->GetLocalAddress(dwConnID, lpszAddress, *piAddressLen, *pusPort);
  946. }
  947. HPSOCKET_API BOOL __HP_CALL HP_Agent_GetRemoteAddress(HP_Agent pAgent, HP_CONNID dwConnID, TCHAR lpszAddress[], int* piAddressLen, USHORT* pusPort)
  948. {
  949. return C_HP_Object::ToSecond<IAgent>(pAgent)->GetRemoteAddress(dwConnID, lpszAddress, *piAddressLen, *pusPort);
  950. }
  951. HPSOCKET_API BOOL __HP_CALL HP_Agent_GetRemoteHost(HP_Agent pAgent, HP_CONNID dwConnID, TCHAR lpszHost[], int* piHostLen, USHORT* pusPort)
  952. {
  953. return C_HP_Object::ToSecond<IAgent>(pAgent)->GetRemoteHost(dwConnID, lpszHost, *piHostLen, *pusPort);
  954. }
  955. HPSOCKET_API void __HP_CALL HP_Agent_SetReuseAddressPolicy(HP_Agent pAgent, En_HP_ReuseAddressPolicy enReusePolicy)
  956. {
  957. C_HP_Object::ToSecond<IAgent>(pAgent)->SetReuseAddressPolicy(enReusePolicy);
  958. }
  959. HPSOCKET_API void __HP_CALL HP_Agent_SetSendPolicy(HP_Agent pAgent, En_HP_SendPolicy enSendPolicy)
  960. {
  961. C_HP_Object::ToSecond<IAgent>(pAgent)->SetSendPolicy(enSendPolicy);
  962. }
  963. HPSOCKET_API void __HP_CALL HP_Agent_SetOnSendSyncPolicy(HP_Agent pAgent, En_HP_OnSendSyncPolicy enSyncPolicy)
  964. {
  965. C_HP_Object::ToSecond<IAgent>(pAgent)->SetOnSendSyncPolicy(enSyncPolicy);
  966. }
  967. HPSOCKET_API void __HP_CALL HP_Agent_SetFreeSocketObjLockTime(HP_Agent pAgent, DWORD dwFreeSocketObjLockTime)
  968. {
  969. C_HP_Object::ToSecond<IAgent>(pAgent)->SetFreeSocketObjLockTime(dwFreeSocketObjLockTime);
  970. }
  971. HPSOCKET_API void __HP_CALL HP_Agent_SetFreeSocketObjPool(HP_Agent pAgent, DWORD dwFreeSocketObjPool)
  972. {
  973. C_HP_Object::ToSecond<IAgent>(pAgent)->SetFreeSocketObjPool(dwFreeSocketObjPool);
  974. }
  975. HPSOCKET_API void __HP_CALL HP_Agent_SetFreeBufferObjPool(HP_Agent pAgent, DWORD dwFreeBufferObjPool)
  976. {
  977. C_HP_Object::ToSecond<IAgent>(pAgent)->SetFreeBufferObjPool(dwFreeBufferObjPool);
  978. }
  979. HPSOCKET_API void __HP_CALL HP_Agent_SetFreeSocketObjHold(HP_Agent pAgent, DWORD dwFreeSocketObjHold)
  980. {
  981. C_HP_Object::ToSecond<IAgent>(pAgent)->SetFreeSocketObjHold(dwFreeSocketObjHold);
  982. }
  983. HPSOCKET_API void __HP_CALL HP_Agent_SetFreeBufferObjHold(HP_Agent pAgent, DWORD dwFreeBufferObjHold)
  984. {
  985. C_HP_Object::ToSecond<IAgent>(pAgent)->SetFreeBufferObjHold(dwFreeBufferObjHold);
  986. }
  987. HPSOCKET_API void __HP_CALL HP_Agent_SetMaxConnectionCount(HP_Agent pAgent, DWORD dwMaxConnectionCount)
  988. {
  989. C_HP_Object::ToSecond<IAgent>(pAgent)->SetMaxConnectionCount(dwMaxConnectionCount);
  990. }
  991. HPSOCKET_API void __HP_CALL HP_Agent_SetWorkerThreadCount(HP_Agent pAgent, DWORD dwWorkerThreadCount)
  992. {
  993. C_HP_Object::ToSecond<IAgent>(pAgent)->SetWorkerThreadCount(dwWorkerThreadCount);
  994. }
  995. HPSOCKET_API void __HP_CALL HP_Agent_SetMarkSilence(HP_Agent pAgent, BOOL bMarkSilence)
  996. {
  997. C_HP_Object::ToSecond<IAgent>(pAgent)->SetMarkSilence(bMarkSilence);
  998. }
  999. HPSOCKET_API En_HP_ReuseAddressPolicy __HP_CALL HP_Agent_GetReuseAddressPolicy(HP_Agent pAgent)
  1000. {
  1001. return C_HP_Object::ToSecond<IAgent>(pAgent)->GetReuseAddressPolicy();
  1002. }
  1003. HPSOCKET_API En_HP_SendPolicy __HP_CALL HP_Agent_GetSendPolicy(HP_Agent pAgent)
  1004. {
  1005. return C_HP_Object::ToSecond<IAgent>(pAgent)->GetSendPolicy();
  1006. }
  1007. HPSOCKET_API En_HP_OnSendSyncPolicy __HP_CALL HP_Agent_GetOnSendSyncPolicy(HP_Agent pAgent)
  1008. {
  1009. return C_HP_Object::ToSecond<IAgent>(pAgent)->GetOnSendSyncPolicy();
  1010. }
  1011. HPSOCKET_API DWORD __HP_CALL HP_Agent_GetFreeSocketObjLockTime(HP_Agent pAgent)
  1012. {
  1013. return C_HP_Object::ToSecond<IAgent>(pAgent)->GetFreeSocketObjLockTime();
  1014. }
  1015. HPSOCKET_API DWORD __HP_CALL HP_Agent_GetFreeSocketObjPool(HP_Agent pAgent)
  1016. {
  1017. return C_HP_Object::ToSecond<IAgent>(pAgent)->GetFreeSocketObjPool();
  1018. }
  1019. HPSOCKET_API DWORD __HP_CALL HP_Agent_GetFreeBufferObjPool(HP_Agent pAgent)
  1020. {
  1021. return C_HP_Object::ToSecond<IAgent>(pAgent)->GetFreeBufferObjPool();
  1022. }
  1023. HPSOCKET_API DWORD __HP_CALL HP_Agent_GetFreeSocketObjHold(HP_Agent pAgent)
  1024. {
  1025. return C_HP_Object::ToSecond<IAgent>(pAgent)->GetFreeSocketObjHold();
  1026. }
  1027. HPSOCKET_API DWORD __HP_CALL HP_Agent_GetFreeBufferObjHold(HP_Agent pAgent)
  1028. {
  1029. return C_HP_Object::ToSecond<IAgent>(pAgent)->GetFreeBufferObjHold();
  1030. }
  1031. HPSOCKET_API DWORD __HP_CALL HP_Agent_GetMaxConnectionCount(HP_Agent pAgent)
  1032. {
  1033. return C_HP_Object::ToSecond<IAgent>(pAgent)->GetMaxConnectionCount();
  1034. }
  1035. HPSOCKET_API DWORD __HP_CALL HP_Agent_GetWorkerThreadCount(HP_Agent pAgent)
  1036. {
  1037. return C_HP_Object::ToSecond<IAgent>(pAgent)->GetWorkerThreadCount();
  1038. }
  1039. HPSOCKET_API BOOL __HP_CALL HP_Agent_IsMarkSilence(HP_Agent pAgent)
  1040. {
  1041. return C_HP_Object::ToSecond<IAgent>(pAgent)->IsMarkSilence();
  1042. }
  1043. /**********************************************************************************/
  1044. /******************************* TCP Agent 操作方法 *******************************/
  1045. HPSOCKET_API BOOL __HP_CALL HP_TcpAgent_SendSmallFile(HP_Agent pAgent, HP_CONNID dwConnID, LPCTSTR lpszFileName, const LPWSABUF pHead, const LPWSABUF pTail)
  1046. {
  1047. return C_HP_Object::ToSecond<ITcpAgent>(pAgent)->SendSmallFile(dwConnID, lpszFileName, pHead, pTail);
  1048. }
  1049. /**********************************************************************************/
  1050. /***************************** TCP Agent 属性访问方法 *****************************/
  1051. HPSOCKET_API void __HP_CALL HP_TcpAgent_SetSyncConnectTimeout(HP_TcpAgent pAgent, DWORD dwSyncConnectTimeout)
  1052. {
  1053. C_HP_Object::ToSecond<ITcpAgent>(pAgent)->SetSyncConnectTimeout(dwSyncConnectTimeout);
  1054. }
  1055. HPSOCKET_API void __HP_CALL HP_TcpAgent_SetSocketBufferSize(HP_TcpAgent pAgent, DWORD dwSocketBufferSize)
  1056. {
  1057. C_HP_Object::ToSecond<ITcpAgent>(pAgent)->SetSocketBufferSize(dwSocketBufferSize);
  1058. }
  1059. HPSOCKET_API void __HP_CALL HP_TcpAgent_SetKeepAliveTime(HP_TcpAgent pAgent, DWORD dwKeepAliveTime)
  1060. {
  1061. C_HP_Object::ToSecond<ITcpAgent>(pAgent)->SetKeepAliveTime(dwKeepAliveTime);
  1062. }
  1063. HPSOCKET_API void __HP_CALL HP_TcpAgent_SetKeepAliveInterval(HP_TcpAgent pAgent, DWORD dwKeepAliveInterval)
  1064. {
  1065. C_HP_Object::ToSecond<ITcpAgent>(pAgent)->SetKeepAliveInterval(dwKeepAliveInterval);
  1066. }
  1067. HPSOCKET_API void __HP_CALL HP_TcpAgent_SetNoDelay(HP_TcpAgent pAgent, BOOL bNoDelay)
  1068. {
  1069. C_HP_Object::ToSecond<ITcpAgent>(pAgent)->SetNoDelay(bNoDelay);
  1070. }
  1071. HPSOCKET_API DWORD __HP_CALL HP_TcpAgent_GetSyncConnectTimeout(HP_TcpAgent pAgent)
  1072. {
  1073. return C_HP_Object::ToSecond<ITcpAgent>(pAgent)->GetSyncConnectTimeout();
  1074. }
  1075. HPSOCKET_API DWORD __HP_CALL HP_TcpAgent_GetSocketBufferSize(HP_TcpAgent pAgent)
  1076. {
  1077. return C_HP_Object::ToSecond<ITcpAgent>(pAgent)->GetSocketBufferSize();
  1078. }
  1079. HPSOCKET_API DWORD __HP_CALL HP_TcpAgent_GetKeepAliveTime(HP_TcpAgent pAgent)
  1080. {
  1081. return C_HP_Object::ToSecond<ITcpAgent>(pAgent)->GetKeepAliveTime();
  1082. }
  1083. HPSOCKET_API DWORD __HP_CALL HP_TcpAgent_GetKeepAliveInterval(HP_TcpAgent pAgent)
  1084. {
  1085. return C_HP_Object::ToSecond<ITcpAgent>(pAgent)->GetKeepAliveInterval();
  1086. }
  1087. HPSOCKET_API BOOL __HP_CALL HP_TcpAgent_IsNoDelay(HP_TcpAgent pAgent)
  1088. {
  1089. return C_HP_Object::ToSecond<ITcpAgent>(pAgent)->IsNoDelay();
  1090. }
  1091. /******************************************************************************/
  1092. /***************************** Client 组件操作方法 *****************************/
  1093. HPSOCKET_API BOOL __HP_CALL HP_Client_Start(HP_Client pClient, LPCTSTR lpszRemoteAddress, USHORT usPort, BOOL bAsyncConnect)
  1094. {
  1095. return C_HP_Object::ToSecond<IClient>(pClient)->Start(lpszRemoteAddress, usPort, bAsyncConnect);
  1096. }
  1097. HPSOCKET_API BOOL __HP_CALL HP_Client_StartWithBindAddress(HP_Client pClient, LPCTSTR lpszRemoteAddress, USHORT usPort, BOOL bAsyncConnect, LPCTSTR lpszBindAddress)
  1098. {
  1099. return C_HP_Object::ToSecond<IClient>(pClient)->Start(lpszRemoteAddress, usPort, bAsyncConnect, lpszBindAddress);
  1100. }
  1101. HPSOCKET_API BOOL __HP_CALL HP_Client_StartWithBindAddressAndLocalPort(HP_Client pClient, LPCTSTR lpszRemoteAddress, USHORT usPort, BOOL bAsyncConnect, LPCTSTR lpszBindAddress, USHORT usLocalPort)
  1102. {
  1103. return C_HP_Object::ToSecond<IClient>(pClient)->Start(lpszRemoteAddress, usPort, bAsyncConnect, lpszBindAddress, usLocalPort);
  1104. }
  1105. HPSOCKET_API BOOL __HP_CALL HP_Client_Stop(HP_Client pClient)
  1106. {
  1107. return C_HP_Object::ToSecond<IClient>(pClient)->Stop();
  1108. }
  1109. HPSOCKET_API BOOL __HP_CALL HP_Client_Send(HP_Client pClient, const BYTE* pBuffer, int iLength)
  1110. {
  1111. return C_HP_Object::ToSecond<IClient>(pClient)->Send(pBuffer, iLength);
  1112. }
  1113. HPSOCKET_API BOOL __HP_CALL HP_Client_SendPart(HP_Client pClient, const BYTE* pBuffer, int iLength, int iOffset)
  1114. {
  1115. return C_HP_Object::ToSecond<IClient>(pClient)->Send(pBuffer, iLength, iOffset);
  1116. }
  1117. HPSOCKET_API BOOL __HP_CALL HP_Client_SendPackets(HP_Client pClient, const WSABUF pBuffers[], int iCount)
  1118. {
  1119. return C_HP_Object::ToSecond<IClient>(pClient)->SendPackets(pBuffers, iCount);
  1120. }
  1121. HPSOCKET_API BOOL __HP_CALL HP_Client_PauseReceive(HP_Client pClient, BOOL bPause)
  1122. {
  1123. return C_HP_Object::ToSecond<IClient>(pClient)->PauseReceive(bPause);
  1124. }
  1125. HPSOCKET_API BOOL __HP_CALL HP_Client_Wait(HP_Client pClient, DWORD dwMilliseconds)
  1126. {
  1127. return C_HP_Object::ToSecond<IClient>(pClient)->Wait(dwMilliseconds);
  1128. }
  1129. /******************************************************************************/
  1130. /***************************** Client 属性访问方法 *****************************/
  1131. HPSOCKET_API void __HP_CALL HP_Client_SetExtra(HP_Client pClient, PVOID pExtra)
  1132. {
  1133. C_HP_Object::ToSecond<IClient>(pClient)->SetExtra(pExtra);
  1134. }
  1135. HPSOCKET_API PVOID __HP_CALL HP_Client_GetExtra(HP_Client pClient)
  1136. {
  1137. return C_HP_Object::ToSecond<IClient>(pClient)->GetExtra();
  1138. }
  1139. HPSOCKET_API BOOL __HP_CALL HP_Client_IsSecure(HP_Client pClient)
  1140. {
  1141. return C_HP_Object::ToSecond<IClient>(pClient)->IsSecure();
  1142. }
  1143. HPSOCKET_API BOOL __HP_CALL HP_Client_HasStarted(HP_Client pClient)
  1144. {
  1145. return C_HP_Object::ToSecond<IClient>(pClient)->HasStarted();
  1146. }
  1147. HPSOCKET_API En_HP_ServiceState __HP_CALL HP_Client_GetState(HP_Client pClient)
  1148. {
  1149. return C_HP_Object::ToSecond<IClient>(pClient)->GetState();
  1150. }
  1151. HPSOCKET_API En_HP_SocketError __HP_CALL HP_Client_GetLastError(HP_Client pClient)
  1152. {
  1153. return C_HP_Object::ToSecond<IClient>(pClient)->GetLastError();
  1154. }
  1155. HPSOCKET_API LPCTSTR __HP_CALL HP_Client_GetLastErrorDesc(HP_Client pClient)
  1156. {
  1157. return C_HP_Object::ToSecond<IClient>(pClient)->GetLastErrorDesc();
  1158. }
  1159. HPSOCKET_API HP_CONNID __HP_CALL HP_Client_GetConnectionID(HP_Client pClient)
  1160. {
  1161. return C_HP_Object::ToSecond<IClient>(pClient)->GetConnectionID();
  1162. }
  1163. HPSOCKET_API BOOL __HP_CALL HP_Client_GetLocalAddress(HP_Client pClient, TCHAR lpszAddress[], int* piAddressLen, USHORT* pusPort)
  1164. {
  1165. return C_HP_Object::ToSecond<IClient>(pClient)->GetLocalAddress(lpszAddress, *piAddressLen, *pusPort);
  1166. }
  1167. HPSOCKET_API BOOL __HP_CALL HP_Client_GetRemoteHost(HP_Client pClient, TCHAR lpszHost[], int* piHostLen, USHORT* pusPort)
  1168. {
  1169. return C_HP_Object::ToSecond<IClient>(pClient)->GetRemoteHost(lpszHost, *piHostLen, *pusPort);
  1170. }
  1171. HPSOCKET_API BOOL __HP_CALL HP_Client_GetPendingDataLength(HP_Client pClient, int* piPending)
  1172. {
  1173. return C_HP_Object::ToSecond<IClient>(pClient)->GetPendingDataLength(*piPending);
  1174. }
  1175. HPSOCKET_API BOOL __HP_CALL HP_Client_IsPauseReceive(HP_Client pClient, BOOL* pbPaused)
  1176. {
  1177. return C_HP_Object::ToSecond<IClient>(pClient)->IsPauseReceive(*pbPaused);
  1178. }
  1179. HPSOCKET_API BOOL __HP_CALL HP_Client_IsConnected(HP_Client pClient)
  1180. {
  1181. return C_HP_Object::ToSecond<IClient>(pClient)->IsConnected();
  1182. }
  1183. HPSOCKET_API void __HP_CALL HP_Client_SetReuseAddressPolicy(HP_Client pClient, En_HP_ReuseAddressPolicy enReusePolicy)
  1184. {
  1185. C_HP_Object::ToSecond<IClient>(pClient)->SetReuseAddressPolicy(enReusePolicy);
  1186. }
  1187. HPSOCKET_API void __HP_CALL HP_Client_SetFreeBufferPoolSize(HP_Client pClient, DWORD dwFreeBufferPoolSize)
  1188. {
  1189. C_HP_Object::ToSecond<IClient>(pClient)->SetFreeBufferPoolSize(dwFreeBufferPoolSize);
  1190. }
  1191. HPSOCKET_API void __HP_CALL HP_Client_SetFreeBufferPoolHold(HP_Client pClient, DWORD dwFreeBufferPoolHold)
  1192. {
  1193. C_HP_Object::ToSecond<IClient>(pClient)->SetFreeBufferPoolHold(dwFreeBufferPoolHold);
  1194. }
  1195. HPSOCKET_API En_HP_ReuseAddressPolicy __HP_CALL HP_Client_GetReuseAddressPolicy(HP_Client pClient)
  1196. {
  1197. return C_HP_Object::ToSecond<IClient>(pClient)->GetReuseAddressPolicy();
  1198. }
  1199. HPSOCKET_API DWORD __HP_CALL HP_Client_GetFreeBufferPoolSize(HP_Client pClient)
  1200. {
  1201. return C_HP_Object::ToSecond<IClient>(pClient)->GetFreeBufferPoolSize();
  1202. }
  1203. HPSOCKET_API DWORD __HP_CALL HP_Client_GetFreeBufferPoolHold(HP_Client pClient)
  1204. {
  1205. return C_HP_Object::ToSecond<IClient>(pClient)->GetFreeBufferPoolHold();
  1206. }
  1207. /**********************************************************************************/
  1208. /******************************* TCP Client 操作方法 *******************************/
  1209. HPSOCKET_API BOOL __HP_CALL HP_TcpClient_SendSmallFile(HP_Client pClient, LPCTSTR lpszFileName, const LPWSABUF pHead, const LPWSABUF pTail)
  1210. {
  1211. return C_HP_Object::ToSecond<ITcpClient>(pClient)->SendSmallFile(lpszFileName, pHead, pTail);
  1212. }
  1213. /**********************************************************************************/
  1214. /***************************** TCP Client 属性访问方法 *****************************/
  1215. HPSOCKET_API void __HP_CALL HP_TcpClient_SetSyncConnectTimeout(HP_TcpClient pClient, DWORD dwSyncConnectTimeout)
  1216. {
  1217. C_HP_Object::ToSecond<ITcpClient>(pClient)->SetSyncConnectTimeout(dwSyncConnectTimeout);
  1218. }
  1219. HPSOCKET_API void __HP_CALL HP_TcpClient_SetSocketBufferSize(HP_TcpClient pClient, DWORD dwSocketBufferSize)
  1220. {
  1221. C_HP_Object::ToSecond<ITcpClient>(pClient)->SetSocketBufferSize(dwSocketBufferSize);
  1222. }
  1223. HPSOCKET_API void __HP_CALL HP_TcpClient_SetKeepAliveTime(HP_TcpClient pClient, DWORD dwKeepAliveTime)
  1224. {
  1225. C_HP_Object::ToSecond<ITcpClient>(pClient)->SetKeepAliveTime(dwKeepAliveTime);
  1226. }
  1227. HPSOCKET_API void __HP_CALL HP_TcpClient_SetKeepAliveInterval(HP_TcpClient pClient, DWORD dwKeepAliveInterval)
  1228. {
  1229. C_HP_Object::ToSecond<ITcpClient>(pClient)->SetKeepAliveInterval(dwKeepAliveInterval);
  1230. }
  1231. HPSOCKET_API void __HP_CALL HP_TcpClient_SetNoDelay(HP_TcpClient pClient, BOOL bNoDelay)
  1232. {
  1233. C_HP_Object::ToSecond<ITcpClient>(pClient)->SetNoDelay(bNoDelay);
  1234. }
  1235. HPSOCKET_API DWORD __HP_CALL HP_TcpClient_GetSyncConnectTimeout(HP_TcpClient pClient)
  1236. {
  1237. return C_HP_Object::ToSecond<ITcpClient>(pClient)->GetSyncConnectTimeout();
  1238. }
  1239. HPSOCKET_API DWORD __HP_CALL HP_TcpClient_GetSocketBufferSize(HP_TcpClient pClient)
  1240. {
  1241. return C_HP_Object::ToSecond<ITcpClient>(pClient)->GetSocketBufferSize();
  1242. }
  1243. HPSOCKET_API DWORD __HP_CALL HP_TcpClient_GetKeepAliveTime(HP_TcpClient pClient)
  1244. {
  1245. return C_HP_Object::ToSecond<ITcpClient>(pClient)->GetKeepAliveTime();
  1246. }
  1247. HPSOCKET_API DWORD __HP_CALL HP_TcpClient_GetKeepAliveInterval(HP_TcpClient pClient)
  1248. {
  1249. return C_HP_Object::ToSecond<ITcpClient>(pClient)->GetKeepAliveInterval();
  1250. }
  1251. HPSOCKET_API BOOL __HP_CALL HP_TcpClient_IsNoDelay(HP_TcpClient pClient)
  1252. {
  1253. return C_HP_Object::ToSecond<ITcpClient>(pClient)->IsNoDelay();
  1254. }
  1255. #ifdef _UDP_SUPPORT
  1256. /**********************************************************************************/
  1257. /***************************** UDP Client 属性访问方法 *****************************/
  1258. HPSOCKET_API void __HP_CALL HP_UdpClient_SetMaxDatagramSize(HP_UdpClient pClient, DWORD dwMaxDatagramSize)
  1259. {
  1260. C_HP_Object::ToSecond<IUdpClient>(pClient)->SetMaxDatagramSize(dwMaxDatagramSize);
  1261. }
  1262. HPSOCKET_API DWORD __HP_CALL HP_UdpClient_GetMaxDatagramSize(HP_UdpClient pClient)
  1263. {
  1264. return C_HP_Object::ToSecond<IUdpClient>(pClient)->GetMaxDatagramSize();
  1265. }
  1266. HPSOCKET_API void __HP_CALL HP_UdpClient_SetDetectAttempts(HP_UdpClient pClient, DWORD dwDetectAttempts)
  1267. {
  1268. C_HP_Object::ToSecond<IUdpClient>(pClient)->SetDetectAttempts(dwDetectAttempts);
  1269. }
  1270. HPSOCKET_API void __HP_CALL HP_UdpClient_SetDetectInterval(HP_UdpClient pClient, DWORD dwDetectInterval)
  1271. {
  1272. C_HP_Object::ToSecond<IUdpClient>(pClient)->SetDetectInterval(dwDetectInterval);
  1273. }
  1274. HPSOCKET_API DWORD __HP_CALL HP_UdpClient_GetDetectAttempts(HP_UdpClient pClient)
  1275. {
  1276. return C_HP_Object::ToSecond<IUdpClient>(pClient)->GetDetectAttempts();
  1277. }
  1278. HPSOCKET_API DWORD __HP_CALL HP_UdpClient_GetDetectInterval(HP_UdpClient pClient)
  1279. {
  1280. return C_HP_Object::ToSecond<IUdpClient>(pClient)->GetDetectInterval();
  1281. }
  1282. /**********************************************************************************/
  1283. /*************************** UDP ARQ Client 属性访问方法 ***************************/
  1284. HPSOCKET_API void __HP_CALL HP_UdpArqClient_SetNoDelay(HP_UdpArqClient pClient, BOOL bNoDelay)
  1285. {
  1286. C_HP_Object::ToFirst<IArqClient>(pClient)->SetNoDelay(bNoDelay);
  1287. }
  1288. HPSOCKET_API void __HP_CALL HP_UdpArqClient_SetTurnoffCongestCtrl(HP_UdpArqClient pClient, BOOL bTurnOff)
  1289. {
  1290. C_HP_Object::ToFirst<IArqClient>(pClient)->SetTurnoffCongestCtrl(bTurnOff);
  1291. }
  1292. HPSOCKET_API void __HP_CALL HP_UdpArqClient_SetFlushInterval(HP_UdpArqClient pClient, DWORD dwFlushInterval)
  1293. {
  1294. C_HP_Object::ToFirst<IArqClient>(pClient)->SetFlushInterval(dwFlushInterval);
  1295. }
  1296. HPSOCKET_API void __HP_CALL HP_UdpArqClient_SetResendByAcks(HP_UdpArqClient pClient, DWORD dwResendByAcks)
  1297. {
  1298. C_HP_Object::ToFirst<IArqClient>(pClient)->SetResendByAcks(dwResendByAcks);
  1299. }
  1300. HPSOCKET_API void __HP_CALL HP_UdpArqClient_SetSendWndSize(HP_UdpArqClient pClient, DWORD dwSendWndSize)
  1301. {
  1302. C_HP_Object::ToFirst<IArqClient>(pClient)->SetSendWndSize(dwSendWndSize);
  1303. }
  1304. HPSOCKET_API void __HP_CALL HP_UdpArqClient_SetRecvWndSize(HP_UdpArqClient pClient, DWORD dwRecvWndSize)
  1305. {
  1306. C_HP_Object::ToFirst<IArqClient>(pClient)->SetRecvWndSize(dwRecvWndSize);
  1307. }
  1308. HPSOCKET_API void __HP_CALL HP_UdpArqClient_SetMinRto(HP_UdpArqClient pClient, DWORD dwMinRto)
  1309. {
  1310. C_HP_Object::ToFirst<IArqClient>(pClient)->SetMinRto(dwMinRto);
  1311. }
  1312. HPSOCKET_API void __HP_CALL HP_UdpArqClient_SetFastLimit(HP_UdpArqClient pClient, DWORD dwFastLimit)
  1313. {
  1314. C_HP_Object::ToFirst<IArqClient>(pClient)->SetFastLimit(dwFastLimit);
  1315. }
  1316. HPSOCKET_API void __HP_CALL HP_UdpArqClient_SetMaxTransUnit(HP_UdpArqClient pClient, DWORD dwMaxTransUnit)
  1317. {
  1318. C_HP_Object::ToFirst<IArqClient>(pClient)->SetMaxTransUnit(dwMaxTransUnit);
  1319. }
  1320. HPSOCKET_API void __HP_CALL HP_UdpArqClient_SetMaxMessageSize(HP_UdpArqClient pClient, DWORD dwMaxMessageSize)
  1321. {
  1322. C_HP_Object::ToFirst<IArqClient>(pClient)->SetMaxMessageSize(dwMaxMessageSize);
  1323. }
  1324. HPSOCKET_API void __HP_CALL HP_UdpArqClient_SetHandShakeTimeout(HP_UdpArqClient pClient, DWORD dwHandShakeTimeout)
  1325. {
  1326. C_HP_Object::ToFirst<IArqClient>(pClient)->SetHandShakeTimeout(dwHandShakeTimeout);
  1327. }
  1328. HPSOCKET_API BOOL __HP_CALL HP_UdpArqClient_IsNoDelay(HP_UdpArqClient pClient)
  1329. {
  1330. return C_HP_Object::ToFirst<IArqClient>(pClient)->IsNoDelay();
  1331. }
  1332. HPSOCKET_API BOOL __HP_CALL HP_UdpArqClient_IsTurnoffCongestCtrl(HP_UdpArqClient pClient)
  1333. {
  1334. return C_HP_Object::ToFirst<IArqClient>(pClient)->IsTurnoffCongestCtrl();
  1335. }
  1336. HPSOCKET_API DWORD __HP_CALL HP_UdpArqClient_GetFlushInterval(HP_UdpArqClient pClient)
  1337. {
  1338. return C_HP_Object::ToFirst<IArqClient>(pClient)->GetFlushInterval();
  1339. }
  1340. HPSOCKET_API DWORD __HP_CALL HP_UdpArqClient_GetResendByAcks(HP_UdpArqClient pClient)
  1341. {
  1342. return C_HP_Object::ToFirst<IArqClient>(pClient)->GetResendByAcks();
  1343. }
  1344. HPSOCKET_API DWORD __HP_CALL HP_UdpArqClient_GetSendWndSize(HP_UdpArqClient pClient)
  1345. {
  1346. return C_HP_Object::ToFirst<IArqClient>(pClient)->GetSendWndSize();
  1347. }
  1348. HPSOCKET_API DWORD __HP_CALL HP_UdpArqClient_GetRecvWndSize(HP_UdpArqClient pClient)
  1349. {
  1350. return C_HP_Object::ToFirst<IArqClient>(pClient)->GetRecvWndSize();
  1351. }
  1352. HPSOCKET_API DWORD __HP_CALL HP_UdpArqClient_GetMinRto(HP_UdpArqClient pClient)
  1353. {
  1354. return C_HP_Object::ToFirst<IArqClient>(pClient)->GetMinRto();
  1355. }
  1356. HPSOCKET_API DWORD __HP_CALL HP_UdpArqClient_GetFastLimit(HP_UdpArqClient pClient)
  1357. {
  1358. return C_HP_Object::ToFirst<IArqClient>(pClient)->GetFastLimit();
  1359. }
  1360. HPSOCKET_API DWORD __HP_CALL HP_UdpArqClient_GetMaxTransUnit(HP_UdpArqClient pClient)
  1361. {
  1362. return C_HP_Object::ToFirst<IArqClient>(pClient)->GetMaxTransUnit();
  1363. }
  1364. HPSOCKET_API DWORD __HP_CALL HP_UdpArqClient_GetMaxMessageSize(HP_UdpArqClient pClient)
  1365. {
  1366. return C_HP_Object::ToFirst<IArqClient>(pClient)->GetMaxMessageSize();
  1367. }
  1368. HPSOCKET_API DWORD __HP_CALL HP_UdpArqClient_GetHandShakeTimeout(HP_UdpArqClient pClient)
  1369. {
  1370. return C_HP_Object::ToFirst<IArqClient>(pClient)->GetHandShakeTimeout();
  1371. }
  1372. HPSOCKET_API BOOL __HP_CALL HP_UdpArqClient_GetWaitingSendMessageCount(HP_UdpArqClient pClient, int* piCount)
  1373. {
  1374. return C_HP_Object::ToFirst<IArqClient>(pClient)->GetWaitingSendMessageCount(*piCount);
  1375. }
  1376. /**********************************************************************************/
  1377. /****************************** UDP Cast 属性访问方法 ******************************/
  1378. HPSOCKET_API void __HP_CALL HP_UdpCast_SetMaxDatagramSize(HP_UdpCast pCast, DWORD dwMaxDatagramSize)
  1379. {
  1380. C_HP_Object::ToSecond<IUdpCast>(pCast)->SetMaxDatagramSize(dwMaxDatagramSize);
  1381. }
  1382. HPSOCKET_API DWORD __HP_CALL HP_UdpCast_GetMaxDatagramSize(HP_UdpCast pCast)
  1383. {
  1384. return C_HP_Object::ToSecond<IUdpCast>(pCast)->GetMaxDatagramSize();
  1385. }
  1386. HPSOCKET_API BOOL __HP_CALL HP_UdpCast_GetRemoteAddress(HP_UdpCast pCast, TCHAR lpszAddress[], int* piAddressLen, USHORT* pusPort)
  1387. {
  1388. return C_HP_Object::ToSecond<IUdpCast>(pCast)->GetRemoteAddress(lpszAddress, *piAddressLen, *pusPort);
  1389. }
  1390. HPSOCKET_API void __HP_CALL HP_UdpCast_SetCastMode(HP_UdpCast pCast, En_HP_CastMode enCastMode)
  1391. {
  1392. C_HP_Object::ToSecond<IUdpCast>(pCast)->SetCastMode(enCastMode);
  1393. }
  1394. HPSOCKET_API En_HP_CastMode __HP_CALL HP_UdpCast_GetCastMode(HP_UdpCast pCast)
  1395. {
  1396. return C_HP_Object::ToSecond<IUdpCast>(pCast)->GetCastMode();
  1397. }
  1398. HPSOCKET_API void __HP_CALL HP_UdpCast_SetMultiCastTtl(HP_UdpCast pCast, int iMCTtl)
  1399. {
  1400. C_HP_Object::ToSecond<IUdpCast>(pCast)->SetMultiCastTtl(iMCTtl);
  1401. }
  1402. HPSOCKET_API int __HP_CALL HP_UdpCast_GetMultiCastTtl(HP_UdpCast pCast)
  1403. {
  1404. return C_HP_Object::ToSecond<IUdpCast>(pCast)->GetMultiCastTtl();
  1405. }
  1406. HPSOCKET_API void __HP_CALL HP_UdpCast_SetMultiCastLoop(HP_UdpCast pCast, BOOL bMCLoop)
  1407. {
  1408. C_HP_Object::ToSecond<IUdpCast>(pCast)->SetMultiCastLoop(bMCLoop);
  1409. }
  1410. HPSOCKET_API BOOL __HP_CALL HP_UdpCast_IsMultiCastLoop(HP_UdpCast pCast)
  1411. {
  1412. return C_HP_Object::ToSecond<IUdpCast>(pCast)->IsMultiCastLoop();
  1413. }
  1414. /**********************************************************************************/
  1415. /****************************** UDP Node 组件操作方法 ******************************/
  1416. HPSOCKET_API BOOL __HP_CALL HP_UdpNode_Start(HP_UdpNode pNode, LPCTSTR lpszBindAddress, USHORT usPort)
  1417. {
  1418. return C_HP_Object::ToSecond<IUdpNode>(pNode)->Start(lpszBindAddress, usPort);
  1419. }
  1420. HPSOCKET_API BOOL __HP_CALL HP_UdpNode_StartWithCast(HP_UdpNode pNode, LPCTSTR lpszBindAddress, USHORT usPort, En_HP_CastMode enCastMode, LPCTSTR lpszCastAddress)
  1421. {
  1422. return C_HP_Object::ToSecond<IUdpNode>(pNode)->Start(lpszBindAddress, usPort, enCastMode, lpszCastAddress);
  1423. }
  1424. HPSOCKET_API BOOL __HP_CALL HP_UdpNode_Stop(HP_UdpNode pNode)
  1425. {
  1426. return C_HP_Object::ToSecond<IUdpNode>(pNode)->Stop();
  1427. }
  1428. HPSOCKET_API BOOL __HP_CALL HP_UdpNode_Wait(HP_UdpNode pNode, DWORD dwMilliseconds)
  1429. {
  1430. return C_HP_Object::ToSecond<IUdpNode>(pNode)->Wait(dwMilliseconds);
  1431. }
  1432. HPSOCKET_API BOOL __HP_CALL HP_UdpNode_Send(HP_UdpNode pNode, LPCTSTR lpszRemoteAddress, USHORT usRemotePort, const BYTE* pBuffer, int iLength)
  1433. {
  1434. return C_HP_Object::ToSecond<IUdpNode>(pNode)->Send(lpszRemoteAddress, usRemotePort, pBuffer, iLength);
  1435. }
  1436. HPSOCKET_API BOOL __HP_CALL HP_UdpNode_SendPart(HP_UdpNode pNode, LPCTSTR lpszRemoteAddress, USHORT usRemotePort, const BYTE* pBuffer, int iLength, int iOffset)
  1437. {
  1438. return C_HP_Object::ToSecond<IUdpNode>(pNode)->Send(lpszRemoteAddress, usRemotePort, pBuffer, iLength, iOffset);
  1439. }
  1440. HPSOCKET_API BOOL __HP_CALL HP_UdpNode_SendPackets(HP_UdpNode pNode, LPCTSTR lpszRemoteAddress, USHORT usRemotePort, const WSABUF pBuffers[], int iCount)
  1441. {
  1442. return C_HP_Object::ToSecond<IUdpNode>(pNode)->SendPackets(lpszRemoteAddress, usRemotePort, pBuffers, iCount);
  1443. }
  1444. HPSOCKET_API BOOL __HP_CALL HP_UdpNode_SendCast(HP_UdpNode pNode, const BYTE* pBuffer, int iLength)
  1445. {
  1446. return C_HP_Object::ToSecond<IUdpNode>(pNode)->SendCast(pBuffer, iLength);
  1447. }
  1448. HPSOCKET_API BOOL __HP_CALL HP_UdpNode_SendCastPart(HP_UdpNode pNode, const BYTE* pBuffer, int iLength, int iOffset)
  1449. {
  1450. return C_HP_Object::ToSecond<IUdpNode>(pNode)->SendCast(pBuffer, iLength, iOffset);
  1451. }
  1452. HPSOCKET_API BOOL __HP_CALL HP_UdpNode_SendCastPackets(HP_UdpNode pNode, const WSABUF pBuffers[], int iCount)
  1453. {
  1454. return C_HP_Object::ToSecond<IUdpNode>(pNode)->SendCastPackets(pBuffers, iCount);
  1455. }
  1456. /**********************************************************************************/
  1457. /****************************** UDP Node 属性访问方法 ******************************/
  1458. HPSOCKET_API void __HP_CALL HP_UdpNode_SetExtra(HP_UdpNode pNode, PVOID pExtra)
  1459. {
  1460. C_HP_Object::ToSecond<IUdpNode>(pNode)->SetExtra(pExtra);
  1461. }
  1462. HPSOCKET_API PVOID __HP_CALL HP_UdpNode_GetExtra(HP_UdpNode pNode)
  1463. {
  1464. return C_HP_Object::ToSecond<IUdpNode>(pNode)->GetExtra();
  1465. }
  1466. HPSOCKET_API BOOL __HP_CALL HP_UdpNode_HasStarted(HP_UdpNode pNode)
  1467. {
  1468. return C_HP_Object::ToSecond<IUdpNode>(pNode)->HasStarted();
  1469. }
  1470. HPSOCKET_API En_HP_ServiceState __HP_CALL HP_UdpNode_GetState(HP_UdpNode pNode)
  1471. {
  1472. return C_HP_Object::ToSecond<IUdpNode>(pNode)->GetState();
  1473. }
  1474. HPSOCKET_API En_HP_SocketError __HP_CALL HP_UdpNode_GetLastError(HP_UdpNode pNode)
  1475. {
  1476. return C_HP_Object::ToSecond<IUdpNode>(pNode)->GetLastError();
  1477. }
  1478. HPSOCKET_API LPCTSTR __HP_CALL HP_UdpNode_GetLastErrorDesc(HP_UdpNode pNode)
  1479. {
  1480. return C_HP_Object::ToSecond<IUdpNode>(pNode)->GetLastErrorDesc();
  1481. }
  1482. HPSOCKET_API BOOL __HP_CALL HP_UdpNode_GetLocalAddress(HP_UdpNode pNode, TCHAR lpszAddress[], int* piAddressLen, USHORT* pusPort)
  1483. {
  1484. return C_HP_Object::ToSecond<IUdpNode>(pNode)->GetLocalAddress(lpszAddress, *piAddressLen, *pusPort);
  1485. }
  1486. HPSOCKET_API BOOL __HP_CALL HP_UdpNode_GetCastAddress(HP_UdpNode pNode, TCHAR lpszAddress[], int* piAddressLen, USHORT* pusPort)
  1487. {
  1488. return C_HP_Object::ToSecond<IUdpNode>(pNode)->GetCastAddress(lpszAddress, *piAddressLen, *pusPort);
  1489. }
  1490. HPSOCKET_API En_HP_CastMode __HP_CALL HP_UdpNode_GetCastMode(HP_UdpNode pNode)
  1491. {
  1492. return C_HP_Object::ToSecond<IUdpNode>(pNode)->GetCastMode();
  1493. }
  1494. HPSOCKET_API BOOL __HP_CALL HP_UdpNode_GetPendingDataLength(HP_UdpNode pNode, int* piPending)
  1495. {
  1496. return C_HP_Object::ToSecond<IUdpNode>(pNode)->GetPendingDataLength(*piPending);
  1497. }
  1498. HPSOCKET_API void __HP_CALL HP_UdpNode_SetMaxDatagramSize(HP_UdpNode pNode, DWORD dwMaxDatagramSize)
  1499. {
  1500. C_HP_Object::ToSecond<IUdpNode>(pNode)->SetMaxDatagramSize(dwMaxDatagramSize);
  1501. }
  1502. HPSOCKET_API DWORD __HP_CALL HP_UdpNode_GetMaxDatagramSize(HP_UdpNode pNode)
  1503. {
  1504. return C_HP_Object::ToSecond<IUdpNode>(pNode)->GetMaxDatagramSize();
  1505. }
  1506. HPSOCKET_API void __HP_CALL HP_UdpNode_SetMultiCastTtl(HP_UdpNode pNode, int iMCTtl)
  1507. {
  1508. C_HP_Object::ToSecond<IUdpNode>(pNode)->SetMultiCastTtl(iMCTtl);
  1509. }
  1510. HPSOCKET_API int __HP_CALL HP_UdpNode_GetMultiCastTtl(HP_UdpNode pNode)
  1511. {
  1512. return C_HP_Object::ToSecond<IUdpNode>(pNode)->GetMultiCastTtl();
  1513. }
  1514. HPSOCKET_API void __HP_CALL HP_UdpNode_SetMultiCastLoop(HP_UdpNode pNode, BOOL bMCLoop)
  1515. {
  1516. C_HP_Object::ToSecond<IUdpNode>(pNode)->SetMultiCastLoop(bMCLoop);
  1517. }
  1518. HPSOCKET_API BOOL __HP_CALL HP_UdpNode_IsMultiCastLoop(HP_UdpNode pNode)
  1519. {
  1520. return C_HP_Object::ToSecond<IUdpNode>(pNode)->IsMultiCastLoop();
  1521. }
  1522. HPSOCKET_API void __HP_CALL HP_UdpNode_SetReuseAddressPolicy(HP_UdpNode pNode, En_HP_ReuseAddressPolicy enReusePolicy)
  1523. {
  1524. C_HP_Object::ToSecond<IUdpNode>(pNode)->SetReuseAddressPolicy(enReusePolicy);
  1525. }
  1526. HPSOCKET_API void __HP_CALL HP_UdpNode_SetWorkerThreadCount(HP_UdpNode pNode, DWORD dwWorkerThreadCount)
  1527. {
  1528. C_HP_Object::ToSecond<IUdpNode>(pNode)->SetWorkerThreadCount(dwWorkerThreadCount);
  1529. }
  1530. HPSOCKET_API void __HP_CALL HP_UdpNode_SetPostReceiveCount(HP_UdpNode pNode, DWORD dwPostReceiveCount)
  1531. {
  1532. C_HP_Object::ToSecond<IUdpNode>(pNode)->SetPostReceiveCount(dwPostReceiveCount);
  1533. }
  1534. HPSOCKET_API void __HP_CALL HP_UdpNode_SetFreeBufferPoolSize(HP_UdpNode pNode, DWORD dwFreeBufferPoolSize)
  1535. {
  1536. C_HP_Object::ToSecond<IUdpNode>(pNode)->SetFreeBufferPoolSize(dwFreeBufferPoolSize);
  1537. }
  1538. HPSOCKET_API void __HP_CALL HP_UdpNode_SetFreeBufferPoolHold(HP_UdpNode pNode, DWORD dwFreeBufferPoolHold)
  1539. {
  1540. C_HP_Object::ToSecond<IUdpNode>(pNode)->SetFreeBufferPoolHold(dwFreeBufferPoolHold);
  1541. }
  1542. HPSOCKET_API En_HP_ReuseAddressPolicy __HP_CALL HP_UdpNode_GetReuseAddressPolicy(HP_UdpNode pNode)
  1543. {
  1544. return C_HP_Object::ToSecond<IUdpNode>(pNode)->GetReuseAddressPolicy();
  1545. }
  1546. HPSOCKET_API DWORD __HP_CALL HP_UdpNode_GetWorkerThreadCount(HP_UdpNode pNode)
  1547. {
  1548. return C_HP_Object::ToSecond<IUdpNode>(pNode)->GetWorkerThreadCount();
  1549. }
  1550. HPSOCKET_API DWORD __HP_CALL HP_UdpNode_GetPostReceiveCount(HP_UdpNode pNode)
  1551. {
  1552. return C_HP_Object::ToSecond<IUdpNode>(pNode)->GetPostReceiveCount();
  1553. }
  1554. HPSOCKET_API DWORD __HP_CALL HP_UdpNode_GetFreeBufferPoolSize(HP_UdpNode pNode)
  1555. {
  1556. return C_HP_Object::ToSecond<IUdpNode>(pNode)->GetFreeBufferPoolSize();
  1557. }
  1558. HPSOCKET_API DWORD __HP_CALL HP_UdpNode_GetFreeBufferPoolHold(HP_UdpNode pNode)
  1559. {
  1560. return C_HP_Object::ToSecond<IUdpNode>(pNode)->GetFreeBufferPoolHold();
  1561. }
  1562. #endif
  1563. /***************************************************************************************/
  1564. /***************************** TCP Pull Server 组件操作方法 *****************************/
  1565. HPSOCKET_API En_HP_FetchResult __HP_CALL HP_TcpPullServer_Fetch(HP_TcpPullServer pServer, HP_CONNID dwConnID, BYTE* pData, int iLength)
  1566. {
  1567. return C_HP_Object::ToFirst<IPullSocket>(pServer)->Fetch(dwConnID, pData, iLength);
  1568. }
  1569. HPSOCKET_API En_HP_FetchResult __HP_CALL HP_TcpPullServer_Peek(HP_TcpPullServer pServer, HP_CONNID dwConnID, BYTE* pData, int iLength)
  1570. {
  1571. return C_HP_Object::ToFirst<IPullSocket>(pServer)->Peek(dwConnID, pData, iLength);
  1572. }
  1573. /***************************************************************************************/
  1574. /***************************** TCP Pull Server 属性访问方法 *****************************/
  1575. /***************************************************************************************/
  1576. /***************************** TCP Pull Agent 组件操作方法 *****************************/
  1577. HPSOCKET_API En_HP_FetchResult __HP_CALL HP_TcpPullAgent_Fetch(HP_TcpPullAgent pAgent, HP_CONNID dwConnID, BYTE* pData, int iLength)
  1578. {
  1579. return C_HP_Object::ToFirst<IPullSocket>(pAgent)->Fetch(dwConnID, pData, iLength);
  1580. }
  1581. HPSOCKET_API En_HP_FetchResult __HP_CALL HP_TcpPullAgent_Peek(HP_TcpPullAgent pAgent, HP_CONNID dwConnID, BYTE* pData, int iLength)
  1582. {
  1583. return C_HP_Object::ToFirst<IPullSocket>(pAgent)->Peek(dwConnID, pData, iLength);
  1584. }
  1585. /***************************************************************************************/
  1586. /***************************** TCP Pull Agent 属性访问方法 *****************************/
  1587. /***************************************************************************************/
  1588. /***************************** TCP Pull Client 组件操作方法 *****************************/
  1589. HPSOCKET_API En_HP_FetchResult __HP_CALL HP_TcpPullClient_Fetch(HP_TcpPullClient pClient, BYTE* pData, int iLength)
  1590. {
  1591. return C_HP_Object::ToFirst<IPullClient>(pClient)->Fetch(pData, iLength);
  1592. }
  1593. HPSOCKET_API En_HP_FetchResult __HP_CALL HP_TcpPullClient_Peek(HP_TcpPullClient pClient, BYTE* pData, int iLength)
  1594. {
  1595. return C_HP_Object::ToFirst<IPullClient>(pClient)->Peek(pData, iLength);
  1596. }
  1597. /***************************************************************************************/
  1598. /***************************** TCP Pull Client 属性访问方法 *****************************/
  1599. /***************************************************************************************/
  1600. /***************************** TCP Pack Server 组件操作方法 *****************************/
  1601. /***************************************************************************************/
  1602. /***************************** TCP Pack Server 属性访问方法 *****************************/
  1603. HPSOCKET_API void __HP_CALL HP_TcpPackServer_SetMaxPackSize(HP_TcpPackServer pServer, DWORD dwMaxPackSize)
  1604. {
  1605. C_HP_Object::ToFirst<IPackSocket>(pServer)->SetMaxPackSize(dwMaxPackSize);
  1606. }
  1607. HPSOCKET_API void __HP_CALL HP_TcpPackServer_SetPackHeaderFlag(HP_TcpPackServer pServer, USHORT usPackHeaderFlag)
  1608. {
  1609. C_HP_Object::ToFirst<IPackSocket>(pServer)->SetPackHeaderFlag(usPackHeaderFlag);
  1610. }
  1611. HPSOCKET_API DWORD __HP_CALL HP_TcpPackServer_GetMaxPackSize(HP_TcpPackServer pServer)
  1612. {
  1613. return C_HP_Object::ToFirst<IPackSocket>(pServer)->GetMaxPackSize();
  1614. }
  1615. HPSOCKET_API USHORT __HP_CALL HP_TcpPackServer_GetPackHeaderFlag(HP_TcpPackServer pServer)
  1616. {
  1617. return C_HP_Object::ToFirst<IPackSocket>(pServer)->GetPackHeaderFlag();
  1618. }
  1619. /***************************************************************************************/
  1620. /***************************** TCP Pack Agent 组件操作方法 *****************************/
  1621. /***************************************************************************************/
  1622. /***************************** TCP Pack Agent 属性访问方法 *****************************/
  1623. HPSOCKET_API void __HP_CALL HP_TcpPackAgent_SetMaxPackSize(HP_TcpPackAgent pAgent, DWORD dwMaxPackSize)
  1624. {
  1625. C_HP_Object::ToFirst<IPackSocket>(pAgent)->SetMaxPackSize(dwMaxPackSize);
  1626. }
  1627. HPSOCKET_API void __HP_CALL HP_TcpPackAgent_SetPackHeaderFlag(HP_TcpPackAgent pAgent, USHORT usPackHeaderFlag)
  1628. {
  1629. C_HP_Object::ToFirst<IPackSocket>(pAgent)->SetPackHeaderFlag(usPackHeaderFlag);
  1630. }
  1631. HPSOCKET_API DWORD __HP_CALL HP_TcpPackAgent_GetMaxPackSize(HP_TcpPackAgent pAgent)
  1632. {
  1633. return C_HP_Object::ToFirst<IPackSocket>(pAgent)->GetMaxPackSize();
  1634. }
  1635. HPSOCKET_API USHORT __HP_CALL HP_TcpPackAgent_GetPackHeaderFlag(HP_TcpPackAgent pAgent)
  1636. {
  1637. return C_HP_Object::ToFirst<IPackSocket>(pAgent)->GetPackHeaderFlag();
  1638. }
  1639. /***************************************************************************************/
  1640. /***************************** TCP Pack Client 组件操作方法 *****************************/
  1641. /***************************************************************************************/
  1642. /***************************** TCP Pack Client 属性访问方法 *****************************/
  1643. HPSOCKET_API void __HP_CALL HP_TcpPackClient_SetMaxPackSize(HP_TcpPackClient pClient, DWORD dwMaxPackSize)
  1644. {
  1645. C_HP_Object::ToFirst<IPackClient>(pClient)->SetMaxPackSize(dwMaxPackSize);
  1646. }
  1647. HPSOCKET_API void __HP_CALL HP_TcpPackClient_SetPackHeaderFlag(HP_TcpPackClient pClient, USHORT usPackHeaderFlag)
  1648. {
  1649. C_HP_Object::ToFirst<IPackClient>(pClient)->SetPackHeaderFlag(usPackHeaderFlag);
  1650. }
  1651. HPSOCKET_API DWORD __HP_CALL HP_TcpPackClient_GetMaxPackSize(HP_TcpPackClient pClient)
  1652. {
  1653. return C_HP_Object::ToFirst<IPackClient>(pClient)->GetMaxPackSize();
  1654. }
  1655. HPSOCKET_API USHORT __HP_CALL HP_TcpPackClient_GetPackHeaderFlag(HP_TcpPackClient pClient)
  1656. {
  1657. return C_HP_Object::ToFirst<IPackClient>(pClient)->GetPackHeaderFlag();
  1658. }
  1659. /*****************************************************************************************************************************************************/
  1660. /*************************************************************** Global Function Exports *************************************************************/
  1661. /*****************************************************************************************************************************************************/
  1662. HPSOCKET_API DWORD __HP_CALL HP_GetHPSocketVersion()
  1663. {
  1664. return ::GetHPSocketVersion();
  1665. }
  1666. HPSOCKET_API LPCTSTR __HP_CALL HP_GetSocketErrorDesc(En_HP_SocketError enCode)
  1667. {
  1668. return ::GetSocketErrorDesc(enCode);
  1669. }
  1670. HPSOCKET_API DWORD __HP_CALL SYS_GetLastError()
  1671. {
  1672. return ::GetLastError();
  1673. }
  1674. HPSOCKET_API LPCSTR __HP_CALL SYS_GetLastErrorStr()
  1675. {
  1676. return ::GetLastErrorStr();
  1677. }
  1678. HPSOCKET_API int __HP_CALL SYS_SetSocketOption(SOCKET sock, int level, int name, LPVOID val, int len)
  1679. {
  1680. return ::SSO_SetSocketOption(sock, level, name, val, len);
  1681. }
  1682. HPSOCKET_API int __HP_CALL SYS_GetSocketOption(SOCKET sock, int level, int name, LPVOID val, int* len)
  1683. {
  1684. return ::SSO_GetSocketOption(sock, level, name, val, len);
  1685. }
  1686. HPSOCKET_API int __HP_CALL SYS_IoctlSocket(SOCKET sock, long cmd, ULONG* arg)
  1687. {
  1688. return ::SSO_IoctlSocket(sock, cmd, arg);
  1689. }
  1690. HPSOCKET_API BOOL __HP_CALL SYS_fcntl_SETFL(FD fd, INT fl, BOOL bSet)
  1691. {
  1692. return ::fcntl_SETFL(fd, fl, bSet);
  1693. }
  1694. HPSOCKET_API int __HP_CALL SYS_SSO_NoBlock(SOCKET sock, BOOL bNoBlock)
  1695. {
  1696. return ::SSO_NoBlock(sock, bNoBlock);
  1697. }
  1698. HPSOCKET_API int __HP_CALL SYS_SSO_NoDelay(SOCKET sock, BOOL bNoDelay)
  1699. {
  1700. return ::SSO_NoDelay(sock, bNoDelay);
  1701. }
  1702. HPSOCKET_API int __HP_CALL SYS_SSO_DontLinger(SOCKET sock, BOOL bDont)
  1703. {
  1704. return ::SSO_DontLinger(sock, bDont);
  1705. }
  1706. HPSOCKET_API int __HP_CALL SYS_SSO_Linger(SOCKET sock, USHORT l_onoff, USHORT l_linger)
  1707. {
  1708. return ::SSO_Linger(sock, l_onoff, l_linger);
  1709. }
  1710. HPSOCKET_API int __HP_CALL SYS_SSO_RecvBuffSize(SOCKET sock, int size)
  1711. {
  1712. return ::SSO_RecvBuffSize(sock, size);
  1713. }
  1714. HPSOCKET_API int __HP_CALL SYS_SSO_SendBuffSize(SOCKET sock, int size)
  1715. {
  1716. return ::SSO_SendBuffSize(sock, size);
  1717. }
  1718. HPSOCKET_API int __HP_CALL SYS_SSO_RecvTimeOut(SOCKET sock, int ms)
  1719. {
  1720. return ::SSO_RecvTimeOut(sock, ms);
  1721. }
  1722. HPSOCKET_API int __HP_CALL SYS_SSO_SendTimeOut(SOCKET sock, int ms)
  1723. {
  1724. return ::SSO_SendTimeOut(sock, ms);
  1725. }
  1726. HPSOCKET_API int __HP_CALL SYS_SSO_ReuseAddress(SOCKET sock, En_HP_ReuseAddressPolicy opt)
  1727. {
  1728. return ::SSO_ReuseAddress(sock, opt);
  1729. }
  1730. HPSOCKET_API BOOL __HP_CALL SYS_GetSocketLocalAddress(SOCKET socket, TCHAR lpszAddress[], int* piAddressLen, USHORT* pusPort)
  1731. {
  1732. return ::GetSocketLocalAddress(socket, lpszAddress, *piAddressLen, *pusPort);
  1733. }
  1734. HPSOCKET_API BOOL __HP_CALL SYS_GetSocketRemoteAddress(SOCKET socket, TCHAR lpszAddress[], int* piAddressLen, USHORT* pusPort)
  1735. {
  1736. return ::GetSocketRemoteAddress(socket, lpszAddress, *piAddressLen, *pusPort);
  1737. }
  1738. HPSOCKET_API BOOL __HP_CALL SYS_EnumHostIPAddresses(LPCTSTR lpszHost, En_HP_IPAddrType enType, HP_LPTIPAddr** lpppIPAddr, int* piIPAddrCount)
  1739. {
  1740. return ::EnumHostIPAddresses(lpszHost, enType, lpppIPAddr, *piIPAddrCount);
  1741. }
  1742. HPSOCKET_API BOOL __HP_CALL SYS_FreeHostIPAddresses(HP_LPTIPAddr* lppIPAddr)
  1743. {
  1744. return ::FreeHostIPAddresses(lppIPAddr);
  1745. }
  1746. HPSOCKET_API BOOL __HP_CALL SYS_IsIPAddress(LPCTSTR lpszAddress, En_HP_IPAddrType* penType)
  1747. {
  1748. return ::IsIPAddress(lpszAddress, penType);
  1749. }
  1750. HPSOCKET_API BOOL __HP_CALL SYS_GetIPAddress(LPCTSTR lpszHost, TCHAR lpszIP[], int* piIPLenth, En_HP_IPAddrType* penType)
  1751. {
  1752. return ::GetIPAddress(lpszHost, lpszIP, *piIPLenth, *penType);
  1753. }
  1754. HPSOCKET_API ULONGLONG __HP_CALL SYS_NToH64(ULONGLONG value)
  1755. {
  1756. return ::NToH64(value);
  1757. }
  1758. HPSOCKET_API ULONGLONG __HP_CALL SYS_HToN64(ULONGLONG value)
  1759. {
  1760. return ::HToN64(value);
  1761. }
  1762. HPSOCKET_API USHORT __HP_CALL SYS_SwapEndian16(USHORT value)
  1763. {
  1764. return ENDIAN_SWAP_16(value);
  1765. }
  1766. HPSOCKET_API DWORD __HP_CALL SYS_SwapEndian32(DWORD value)
  1767. {
  1768. return ENDIAN_SWAP_32(value);
  1769. }
  1770. HPSOCKET_API BOOL __HP_CALL SYS_IsLittleEndian()
  1771. {
  1772. return ::IsLittleEndian();
  1773. }
  1774. HPSOCKET_API LPBYTE __HP_CALL SYS_Malloc(int size)
  1775. {
  1776. return MALLOC(BYTE, size);
  1777. }
  1778. HPSOCKET_API LPBYTE __HP_CALL SYS_Realloc(LPBYTE p, int size)
  1779. {
  1780. return REALLOC(BYTE, p, size);
  1781. }
  1782. HPSOCKET_API VOID __HP_CALL SYS_Free(LPBYTE p)
  1783. {
  1784. FREE(p);
  1785. }
  1786. HPSOCKET_API LPVOID __HP_CALL SYS_Calloc(int number, int size)
  1787. {
  1788. return CALLOC(number, size);
  1789. }
  1790. HPSOCKET_API DWORD __HP_CALL SYS_GuessBase64EncodeBound(DWORD dwSrcLen)
  1791. {
  1792. return ::GuessBase64EncodeBound(dwSrcLen);
  1793. }
  1794. HPSOCKET_API DWORD __HP_CALL SYS_GuessBase64DecodeBound(const BYTE* lpszSrc, DWORD dwSrcLen)
  1795. {
  1796. return ::GuessBase64DecodeBound(lpszSrc, dwSrcLen);
  1797. }
  1798. HPSOCKET_API int __HP_CALL SYS_Base64Encode(const BYTE* lpszSrc, DWORD dwSrcLen, BYTE* lpszDest, DWORD* pdwDestLen)
  1799. {
  1800. return ::Base64Encode(lpszSrc, dwSrcLen, lpszDest, *pdwDestLen);
  1801. }
  1802. HPSOCKET_API int __HP_CALL SYS_Base64Decode(const BYTE* lpszSrc, DWORD dwSrcLen, BYTE* lpszDest, DWORD* pdwDestLen)
  1803. {
  1804. return ::Base64Decode(lpszSrc, dwSrcLen, lpszDest, *pdwDestLen);
  1805. }
  1806. HPSOCKET_API DWORD __HP_CALL SYS_GuessUrlEncodeBound(const BYTE* lpszSrc, DWORD dwSrcLen)
  1807. {
  1808. return ::GuessUrlEncodeBound(lpszSrc, dwSrcLen);
  1809. }
  1810. HPSOCKET_API DWORD __HP_CALL SYS_GuessUrlDecodeBound(const BYTE* lpszSrc, DWORD dwSrcLen)
  1811. {
  1812. return ::GuessUrlDecodeBound(lpszSrc, dwSrcLen);
  1813. }
  1814. HPSOCKET_API int __HP_CALL SYS_UrlEncode(BYTE* lpszSrc, DWORD dwSrcLen, BYTE* lpszDest, DWORD* pdwDestLen)
  1815. {
  1816. return ::UrlEncode(lpszSrc, dwSrcLen, lpszDest, *pdwDestLen);
  1817. }
  1818. HPSOCKET_API int __HP_CALL SYS_UrlDecode(BYTE* lpszSrc, DWORD dwSrcLen, BYTE* lpszDest, DWORD* pdwDestLen)
  1819. {
  1820. return ::UrlDecode(lpszSrc, dwSrcLen, lpszDest, *pdwDestLen);
  1821. }
  1822. #ifdef _ZLIB_SUPPORT
  1823. HPSOCKET_API int __HP_CALL SYS_Compress(const BYTE* lpszSrc, DWORD dwSrcLen, BYTE* lpszDest, DWORD* pdwDestLen)
  1824. {
  1825. return ::Compress(lpszSrc, dwSrcLen, lpszDest, *pdwDestLen);
  1826. }
  1827. HPSOCKET_API int __HP_CALL SYS_CompressEx(const BYTE* lpszSrc, DWORD dwSrcLen, BYTE* lpszDest, DWORD* pdwDestLen, int iLevel, int iMethod, int iWindowBits, int iMemLevel, int iStrategy)
  1828. {
  1829. return ::CompressEx(lpszSrc, dwSrcLen, lpszDest, *pdwDestLen, iLevel, iMethod, iWindowBits, iMemLevel, iStrategy);
  1830. }
  1831. HPSOCKET_API int __HP_CALL SYS_Uncompress(const BYTE* lpszSrc, DWORD dwSrcLen, BYTE* lpszDest, DWORD* pdwDestLen)
  1832. {
  1833. return ::Uncompress(lpszSrc, dwSrcLen, lpszDest, *pdwDestLen);
  1834. }
  1835. HPSOCKET_API int __HP_CALL SYS_UncompressEx(const BYTE* lpszSrc, DWORD dwSrcLen, BYTE* lpszDest, DWORD* pdwDestLen, int iWindowBits)
  1836. {
  1837. return ::UncompressEx(lpszSrc, dwSrcLen, lpszDest, *pdwDestLen, iWindowBits);
  1838. }
  1839. HPSOCKET_API DWORD __HP_CALL SYS_GuessCompressBound(DWORD dwSrcLen, BOOL bGZip)
  1840. {
  1841. return ::GuessCompressBound(dwSrcLen, bGZip);
  1842. }
  1843. HPSOCKET_API int __HP_CALL SYS_GZipCompress(const BYTE* lpszSrc, DWORD dwSrcLen, BYTE* lpszDest, DWORD* pdwDestLen)
  1844. {
  1845. return ::GZipCompress(lpszSrc, dwSrcLen, lpszDest, *pdwDestLen);
  1846. }
  1847. HPSOCKET_API int __HP_CALL SYS_GZipUncompress(const BYTE* lpszSrc, DWORD dwSrcLen, BYTE* lpszDest, DWORD* pdwDestLen)
  1848. {
  1849. return ::GZipUncompress(lpszSrc, dwSrcLen, lpszDest, *pdwDestLen);
  1850. }
  1851. HPSOCKET_API DWORD __HP_CALL SYS_GZipGuessUncompressBound(const BYTE* lpszSrc, DWORD dwSrcLen)
  1852. {
  1853. return ::GZipGuessUncompressBound(lpszSrc, dwSrcLen);
  1854. }
  1855. #endif
  1856. #ifdef _BROTLI_SUPPORT
  1857. HPSOCKET_API int __HP_CALL SYS_BrotliCompress(const BYTE* lpszSrc, DWORD dwSrcLen, BYTE* lpszDest, DWORD* pdwDestLen)
  1858. {
  1859. return ::BrotliCompress(lpszSrc, dwSrcLen, lpszDest, *pdwDestLen);
  1860. }
  1861. HPSOCKET_API int __HP_CALL SYS_BrotliCompressEx(const BYTE* lpszSrc, DWORD dwSrcLen, BYTE* lpszDest, DWORD* pdwDestLen, int iQuality, int iWindow, int iMode)
  1862. {
  1863. return ::BrotliCompressEx(lpszSrc, dwSrcLen, lpszDest, *pdwDestLen, iQuality, iWindow , iMode);
  1864. }
  1865. HPSOCKET_API int __HP_CALL SYS_BrotliUncompress(const BYTE* lpszSrc, DWORD dwSrcLen, BYTE* lpszDest, DWORD* pdwDestLen)
  1866. {
  1867. return ::BrotliUncompress(lpszSrc, dwSrcLen, lpszDest, *pdwDestLen);
  1868. }
  1869. HPSOCKET_API DWORD __HP_CALL SYS_BrotliGuessCompressBound(DWORD dwSrcLen)
  1870. {
  1871. return ::BrotliGuessCompressBound(dwSrcLen);
  1872. }
  1873. #endif
  1874. #ifdef _ICONV_SUPPORT
  1875. HPSOCKET_API BOOL __HP_CALL SYS_CharsetConvert(LPCSTR lpszFromCharset, LPCSTR lpszToCharset, LPCSTR lpszInBuf, int iInBufLen, LPSTR lpszOutBuf, int* piOutBufLen)
  1876. {
  1877. return ::CharsetConvert(lpszFromCharset, lpszToCharset, lpszInBuf, iInBufLen, lpszOutBuf, *piOutBufLen);
  1878. }
  1879. HPSOCKET_API BOOL __HP_CALL SYS_GbkToUnicodeEx(const char szSrc[], int iSrcLength, WCHAR szDest[], int* piDestLength)
  1880. {
  1881. return ::GbkToUnicodeEx(szSrc, iSrcLength, szDest, *piDestLength);
  1882. }
  1883. HPSOCKET_API BOOL __HP_CALL SYS_UnicodeToGbkEx(const WCHAR szSrc[], int iSrcLength, char szDest[], int* piDestLength)
  1884. {
  1885. return ::UnicodeToGbkEx(szSrc, iSrcLength, szDest, *piDestLength);
  1886. }
  1887. HPSOCKET_API BOOL __HP_CALL SYS_Utf8ToUnicodeEx(const char szSrc[], int iSrcLength, WCHAR szDest[], int* piDestLength)
  1888. {
  1889. return ::Utf8ToUnicodeEx(szSrc, iSrcLength, szDest, *piDestLength);
  1890. }
  1891. HPSOCKET_API BOOL __HP_CALL SYS_UnicodeToUtf8Ex(const WCHAR szSrc[], int iSrcLength, char szDest[], int* piDestLength)
  1892. {
  1893. return ::UnicodeToUtf8Ex(szSrc, iSrcLength, szDest, *piDestLength);
  1894. }
  1895. HPSOCKET_API BOOL __HP_CALL SYS_GbkToUtf8Ex(const char szSrc[], int iSrcLength, char szDest[], int* piDestLength)
  1896. {
  1897. return ::GbkToUtf8Ex(szSrc, iSrcLength, szDest, *piDestLength);
  1898. }
  1899. HPSOCKET_API BOOL __HP_CALL SYS_Utf8ToGbkEx(const char szSrc[], int iSrcLength, char szDest[], int* piDestLength)
  1900. {
  1901. return ::Utf8ToGbkEx(szSrc, iSrcLength, szDest, *piDestLength);
  1902. }
  1903. HPSOCKET_API BOOL __HP_CALL SYS_GbkToUnicode(const char szSrc[], WCHAR szDest[], int* piDestLength)
  1904. {
  1905. return ::GbkToUnicode(szSrc, szDest, *piDestLength);
  1906. }
  1907. HPSOCKET_API BOOL __HP_CALL SYS_UnicodeToGbk(const WCHAR szSrc[], char szDest[], int* piDestLength)
  1908. {
  1909. return ::UnicodeToGbk(szSrc, szDest, *piDestLength);
  1910. }
  1911. HPSOCKET_API BOOL __HP_CALL SYS_Utf8ToUnicode(const char szSrc[], WCHAR szDest[], int* piDestLength)
  1912. {
  1913. return ::Utf8ToUnicode(szSrc, szDest, *piDestLength);
  1914. }
  1915. HPSOCKET_API BOOL __HP_CALL SYS_UnicodeToUtf8(const WCHAR szSrc[], char szDest[], int* piDestLength)
  1916. {
  1917. return ::UnicodeToUtf8(szSrc, szDest, *piDestLength);
  1918. }
  1919. HPSOCKET_API BOOL __HP_CALL SYS_GbkToUtf8(const char szSrc[], char szDest[], int* piDestLength)
  1920. {
  1921. return ::GbkToUtf8(szSrc, szDest, *piDestLength);
  1922. }
  1923. HPSOCKET_API BOOL __HP_CALL SYS_Utf8ToGbk(const char szSrc[], char szDest[], int* piDestLength)
  1924. {
  1925. return ::Utf8ToGbk(szSrc, szDest, *piDestLength);
  1926. }
  1927. #endif
  1928. /*****************************************************************************************************************************************************/
  1929. /******************************************************************** HTTP Exports *******************************************************************/
  1930. /*****************************************************************************************************************************************************/
  1931. #ifdef _HTTP_SUPPORT
  1932. typedef C_HP_ObjectT<CHttpServer, IHttpServerListener, sizeof(IComplexHttpResponder)> C_HP_HttpServer;
  1933. typedef C_HP_ObjectT<CHttpAgent, IHttpAgentListener, sizeof(IComplexHttpRequester)> C_HP_HttpAgent;
  1934. typedef C_HP_ObjectT<CHttpClient, IHttpClientListener, sizeof(IHttpRequester)> C_HP_HttpClient;
  1935. typedef C_HP_ObjectT<CHttpSyncClient, IHttpClientListener, sizeof(IHttpSyncRequester)> C_HP_HttpSyncClient;
  1936. /****************************************************/
  1937. /***************** HTTP 对象创建函数 *****************/
  1938. HPSOCKET_API HP_HttpServer __HP_CALL Create_HP_HttpServer(HP_HttpServerListener pListener)
  1939. {
  1940. return (HP_HttpServer)(new C_HP_HttpServer((IHttpServerListener*)pListener));
  1941. }
  1942. HPSOCKET_API HP_HttpAgent __HP_CALL Create_HP_HttpAgent(HP_HttpAgentListener pListener)
  1943. {
  1944. return (HP_HttpAgent)(new C_HP_HttpAgent((IHttpAgentListener*)pListener));
  1945. }
  1946. HPSOCKET_API HP_HttpClient __HP_CALL Create_HP_HttpClient(HP_HttpClientListener pListener)
  1947. {
  1948. return (HP_HttpClient)(new C_HP_HttpClient((IHttpClientListener*)pListener));
  1949. }
  1950. HPSOCKET_API HP_HttpSyncClient __HP_CALL Create_HP_HttpSyncClient(HP_HttpClientListener pListener)
  1951. {
  1952. return (HP_HttpSyncClient)(new C_HP_HttpSyncClient((IHttpClientListener*)pListener));
  1953. }
  1954. HPSOCKET_API void __HP_CALL Destroy_HP_HttpServer(HP_HttpServer pServer)
  1955. {
  1956. delete (C_HP_HttpServer*)pServer;
  1957. }
  1958. HPSOCKET_API void __HP_CALL Destroy_HP_HttpAgent(HP_HttpAgent pAgent)
  1959. {
  1960. delete (C_HP_HttpAgent*)pAgent;
  1961. }
  1962. HPSOCKET_API void __HP_CALL Destroy_HP_HttpClient(HP_HttpClient pClient)
  1963. {
  1964. delete (C_HP_HttpClient*)pClient;
  1965. }
  1966. HPSOCKET_API void __HP_CALL Destroy_HP_HttpSyncClient(HP_HttpSyncClient pClient)
  1967. {
  1968. delete (C_HP_HttpSyncClient*)pClient;
  1969. }
  1970. HPSOCKET_API HP_HttpServerListener __HP_CALL Create_HP_HttpServerListener()
  1971. {
  1972. return (HP_HttpServerListener)(new C_HP_HttpServerListener);
  1973. }
  1974. HPSOCKET_API HP_HttpAgentListener __HP_CALL Create_HP_HttpAgentListener()
  1975. {
  1976. return (HP_HttpAgentListener)(new C_HP_HttpAgentListener);
  1977. }
  1978. HPSOCKET_API HP_HttpClientListener __HP_CALL Create_HP_HttpClientListener()
  1979. {
  1980. return (HP_HttpClientListener)(new C_HP_HttpClientListener);
  1981. }
  1982. HPSOCKET_API void __HP_CALL Destroy_HP_HttpServerListener(HP_HttpServerListener pListener)
  1983. {
  1984. delete (C_HP_HttpServerListener*)pListener;
  1985. }
  1986. HPSOCKET_API void __HP_CALL Destroy_HP_HttpAgentListener(HP_HttpAgentListener pListener)
  1987. {
  1988. delete (C_HP_HttpAgentListener*)pListener;
  1989. }
  1990. HPSOCKET_API void __HP_CALL Destroy_HP_HttpClientListener(HP_HttpClientListener pListener)
  1991. {
  1992. delete (C_HP_HttpClientListener*)pListener;
  1993. }
  1994. /**********************************************************************************/
  1995. /*************************** HTTP Server 回调函数设置方法 **************************/
  1996. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpServer_OnMessageBegin(HP_HttpServerListener pListener, HP_FN_HttpServer_OnMessageBegin fn)
  1997. {
  1998. ((C_HP_HttpServerListener*)pListener)->m_lsnHttp.m_fnOnMessageBegin = fn;
  1999. }
  2000. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpServer_OnRequestLine(HP_HttpServerListener pListener, HP_FN_HttpServer_OnRequestLine fn)
  2001. {
  2002. ((C_HP_HttpServerListener*)pListener)->m_lsnHttp.m_fnOnRequestLine = fn;
  2003. }
  2004. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpServer_OnHeader(HP_HttpServerListener pListener, HP_FN_HttpServer_OnHeader fn)
  2005. {
  2006. ((C_HP_HttpServerListener*)pListener)->m_lsnHttp.m_fnOnHeader = fn;
  2007. }
  2008. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpServer_OnHeadersComplete(HP_HttpServerListener pListener, HP_FN_HttpServer_OnHeadersComplete fn)
  2009. {
  2010. ((C_HP_HttpServerListener*)pListener)->m_lsnHttp.m_fnOnHeadersComplete = fn;
  2011. }
  2012. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpServer_OnBody(HP_HttpServerListener pListener, HP_FN_HttpServer_OnBody fn)
  2013. {
  2014. ((C_HP_HttpServerListener*)pListener)->m_lsnHttp.m_fnOnBody = fn;
  2015. }
  2016. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpServer_OnChunkHeader(HP_HttpServerListener pListener, HP_FN_HttpServer_OnChunkHeader fn)
  2017. {
  2018. ((C_HP_HttpServerListener*)pListener)->m_lsnHttp.m_fnOnChunkHeader = fn;
  2019. }
  2020. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpServer_OnChunkComplete(HP_HttpServerListener pListener, HP_FN_HttpServer_OnChunkComplete fn)
  2021. {
  2022. ((C_HP_HttpServerListener*)pListener)->m_lsnHttp.m_fnOnChunkComplete = fn;
  2023. }
  2024. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpServer_OnMessageComplete(HP_HttpServerListener pListener, HP_FN_HttpServer_OnMessageComplete fn)
  2025. {
  2026. ((C_HP_HttpServerListener*)pListener)->m_lsnHttp.m_fnOnMessageComplete = fn;
  2027. }
  2028. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpServer_OnUpgrade(HP_HttpServerListener pListener, HP_FN_HttpServer_OnUpgrade fn)
  2029. {
  2030. ((C_HP_HttpServerListener*)pListener)->m_lsnHttp.m_fnOnUpgrade = fn;
  2031. }
  2032. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpServer_OnParseError(HP_HttpServerListener pListener, HP_FN_HttpServer_OnParseError fn)
  2033. {
  2034. ((C_HP_HttpServerListener*)pListener)->m_lsnHttp.m_fnOnParseError = fn;
  2035. }
  2036. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpServer_OnWSMessageHeader(HP_HttpServerListener pListener, HP_FN_HttpServer_OnWSMessageHeader fn)
  2037. {
  2038. ((C_HP_HttpServerListener*)pListener)->m_lsnHttp.m_fnOnWSMessageHeader = fn;
  2039. }
  2040. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpServer_OnWSMessageBody(HP_HttpServerListener pListener, HP_FN_HttpServer_OnWSMessageBody fn)
  2041. {
  2042. ((C_HP_HttpServerListener*)pListener)->m_lsnHttp.m_fnOnWSMessageBody = fn;
  2043. }
  2044. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpServer_OnWSMessageComplete(HP_HttpServerListener pListener, HP_FN_HttpServer_OnWSMessageComplete fn)
  2045. {
  2046. ((C_HP_HttpServerListener*)pListener)->m_lsnHttp.m_fnOnWSMessageComplete = fn;
  2047. }
  2048. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpServer_OnPrepareListen(HP_HttpServerListener pListener, HP_FN_HttpServer_OnPrepareListen fn)
  2049. {
  2050. ((C_HP_HttpServerListener*)pListener)->m_lsnServer.m_fnOnPrepareListen = fn;
  2051. }
  2052. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpServer_OnAccept(HP_HttpServerListener pListener, HP_FN_HttpServer_OnAccept fn)
  2053. {
  2054. ((C_HP_HttpServerListener*)pListener)->m_lsnServer.m_fnOnAccept = fn;
  2055. }
  2056. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpServer_OnHandShake(HP_HttpServerListener pListener, HP_FN_HttpServer_OnHandShake fn)
  2057. {
  2058. ((C_HP_HttpServerListener*)pListener)->m_lsnServer.m_fnOnHandShake = fn;
  2059. }
  2060. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpServer_OnSend(HP_HttpServerListener pListener, HP_FN_HttpServer_OnSend fn)
  2061. {
  2062. ((C_HP_HttpServerListener*)pListener)->m_lsnServer.m_fnOnSend = fn;
  2063. }
  2064. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpServer_OnReceive(HP_HttpServerListener pListener, HP_FN_HttpServer_OnReceive fn)
  2065. {
  2066. ((C_HP_HttpServerListener*)pListener)->m_lsnServer.m_fnOnReceive = fn;
  2067. }
  2068. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpServer_OnClose(HP_HttpServerListener pListener, HP_FN_HttpServer_OnClose fn)
  2069. {
  2070. ((C_HP_HttpServerListener*)pListener)->m_lsnServer.m_fnOnClose = fn;
  2071. }
  2072. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpServer_OnShutdown(HP_HttpServerListener pListener, HP_FN_HttpServer_OnShutdown fn)
  2073. {
  2074. ((C_HP_HttpServerListener*)pListener)->m_lsnServer.m_fnOnShutdown = fn;
  2075. }
  2076. /**********************************************************************************/
  2077. /**************************** HTTP Agent 回调函数设置方法 **************************/
  2078. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpAgent_OnMessageBegin(HP_HttpAgentListener pListener, HP_FN_HttpAgent_OnMessageBegin fn)
  2079. {
  2080. ((C_HP_HttpAgentListener*)pListener)->m_lsnHttp.m_fnOnMessageBegin = fn;
  2081. }
  2082. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpAgent_OnStatusLine(HP_HttpAgentListener pListener, HP_FN_HttpAgent_OnStatusLine fn)
  2083. {
  2084. ((C_HP_HttpAgentListener*)pListener)->m_lsnHttp.m_fnOnStatusLine = fn;
  2085. }
  2086. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpAgent_OnHeader(HP_HttpAgentListener pListener, HP_FN_HttpAgent_OnHeader fn)
  2087. {
  2088. ((C_HP_HttpAgentListener*)pListener)->m_lsnHttp.m_fnOnHeader = fn;
  2089. }
  2090. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpAgent_OnHeadersComplete(HP_HttpAgentListener pListener, HP_FN_HttpAgent_OnHeadersComplete fn)
  2091. {
  2092. ((C_HP_HttpAgentListener*)pListener)->m_lsnHttp.m_fnOnHeadersComplete = fn;
  2093. }
  2094. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpAgent_OnBody(HP_HttpAgentListener pListener, HP_FN_HttpAgent_OnBody fn)
  2095. {
  2096. ((C_HP_HttpAgentListener*)pListener)->m_lsnHttp.m_fnOnBody = fn;
  2097. }
  2098. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpAgent_OnChunkHeader(HP_HttpAgentListener pListener, HP_FN_HttpAgent_OnChunkHeader fn)
  2099. {
  2100. ((C_HP_HttpAgentListener*)pListener)->m_lsnHttp.m_fnOnChunkHeader = fn;
  2101. }
  2102. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpAgent_OnChunkComplete(HP_HttpAgentListener pListener, HP_FN_HttpAgent_OnChunkComplete fn)
  2103. {
  2104. ((C_HP_HttpAgentListener*)pListener)->m_lsnHttp.m_fnOnChunkComplete = fn;
  2105. }
  2106. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpAgent_OnMessageComplete(HP_HttpAgentListener pListener, HP_FN_HttpAgent_OnMessageComplete fn)
  2107. {
  2108. ((C_HP_HttpAgentListener*)pListener)->m_lsnHttp.m_fnOnMessageComplete = fn;
  2109. }
  2110. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpAgent_OnUpgrade(HP_HttpAgentListener pListener, HP_FN_HttpAgent_OnUpgrade fn)
  2111. {
  2112. ((C_HP_HttpAgentListener*)pListener)->m_lsnHttp.m_fnOnUpgrade = fn;
  2113. }
  2114. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpAgent_OnParseError(HP_HttpAgentListener pListener, HP_FN_HttpAgent_OnParseError fn)
  2115. {
  2116. ((C_HP_HttpAgentListener*)pListener)->m_lsnHttp.m_fnOnParseError = fn;
  2117. }
  2118. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpAgent_OnWSMessageHeader(HP_HttpAgentListener pListener, HP_FN_HttpAgent_OnWSMessageHeader fn)
  2119. {
  2120. ((C_HP_HttpAgentListener*)pListener)->m_lsnHttp.m_fnOnWSMessageHeader = fn;
  2121. }
  2122. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpAgent_OnWSMessageBody(HP_HttpAgentListener pListener, HP_FN_HttpAgent_OnWSMessageBody fn)
  2123. {
  2124. ((C_HP_HttpAgentListener*)pListener)->m_lsnHttp.m_fnOnWSMessageBody = fn;
  2125. }
  2126. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpAgent_OnWSMessageComplete(HP_HttpAgentListener pListener, HP_FN_HttpAgent_OnWSMessageComplete fn)
  2127. {
  2128. ((C_HP_HttpAgentListener*)pListener)->m_lsnHttp.m_fnOnWSMessageComplete = fn;
  2129. }
  2130. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpAgent_OnPrepareConnect(HP_HttpAgentListener pListener, HP_FN_HttpAgent_OnPrepareConnect fn)
  2131. {
  2132. ((C_HP_HttpAgentListener*)pListener)->m_lsnAgent.m_fnOnPrepareConnect = fn;
  2133. }
  2134. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpAgent_OnConnect(HP_HttpAgentListener pListener, HP_FN_HttpAgent_OnConnect fn)
  2135. {
  2136. ((C_HP_HttpAgentListener*)pListener)->m_lsnAgent.m_fnOnConnect = fn;
  2137. }
  2138. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpAgent_OnHandShake(HP_HttpAgentListener pListener, HP_FN_HttpAgent_OnHandShake fn)
  2139. {
  2140. ((C_HP_HttpAgentListener*)pListener)->m_lsnAgent.m_fnOnHandShake = fn;
  2141. }
  2142. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpAgent_OnReceive(HP_HttpAgentListener pListener, HP_FN_HttpAgent_OnReceive fn)
  2143. {
  2144. ((C_HP_HttpAgentListener*)pListener)->m_lsnAgent.m_fnOnReceive = fn;
  2145. }
  2146. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpAgent_OnSend(HP_HttpAgentListener pListener, HP_FN_HttpAgent_OnSend fn)
  2147. {
  2148. ((C_HP_HttpAgentListener*)pListener)->m_lsnAgent.m_fnOnSend = fn;
  2149. }
  2150. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpAgent_OnClose(HP_HttpAgentListener pListener, HP_FN_HttpAgent_OnClose fn)
  2151. {
  2152. ((C_HP_HttpAgentListener*)pListener)->m_lsnAgent.m_fnOnClose = fn;
  2153. }
  2154. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpAgent_OnShutdown(HP_HttpAgentListener pListener, HP_FN_HttpAgent_OnShutdown fn)
  2155. {
  2156. ((C_HP_HttpAgentListener*)pListener)->m_lsnAgent.m_fnOnShutdown = fn;
  2157. }
  2158. /**********************************************************************************/
  2159. /*************************** HTTP Client 回调函数设置方法 **************************/
  2160. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpClient_OnMessageBegin(HP_HttpClientListener pListener, HP_FN_HttpClient_OnMessageBegin fn)
  2161. {
  2162. ((C_HP_HttpClientListener*)pListener)->m_lsnHttp.m_fnOnMessageBegin = fn;
  2163. }
  2164. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpClient_OnStatusLine(HP_HttpClientListener pListener, HP_FN_HttpClient_OnStatusLine fn)
  2165. {
  2166. ((C_HP_HttpClientListener*)pListener)->m_lsnHttp.m_fnOnStatusLine = fn;
  2167. }
  2168. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpClient_OnHeader(HP_HttpClientListener pListener, HP_FN_HttpClient_OnHeader fn)
  2169. {
  2170. ((C_HP_HttpClientListener*)pListener)->m_lsnHttp.m_fnOnHeader = fn;
  2171. }
  2172. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpClient_OnHeadersComplete(HP_HttpClientListener pListener, HP_FN_HttpClient_OnHeadersComplete fn)
  2173. {
  2174. ((C_HP_HttpClientListener*)pListener)->m_lsnHttp.m_fnOnHeadersComplete = fn;
  2175. }
  2176. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpClient_OnBody(HP_HttpClientListener pListener, HP_FN_HttpClient_OnBody fn)
  2177. {
  2178. ((C_HP_HttpClientListener*)pListener)->m_lsnHttp.m_fnOnBody = fn;
  2179. }
  2180. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpClient_OnChunkHeader(HP_HttpClientListener pListener, HP_FN_HttpClient_OnChunkHeader fn)
  2181. {
  2182. ((C_HP_HttpClientListener*)pListener)->m_lsnHttp.m_fnOnChunkHeader = fn;
  2183. }
  2184. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpClient_OnChunkComplete(HP_HttpClientListener pListener, HP_FN_HttpClient_OnChunkComplete fn)
  2185. {
  2186. ((C_HP_HttpClientListener*)pListener)->m_lsnHttp.m_fnOnChunkComplete = fn;
  2187. }
  2188. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpClient_OnMessageComplete(HP_HttpClientListener pListener, HP_FN_HttpClient_OnMessageComplete fn)
  2189. {
  2190. ((C_HP_HttpClientListener*)pListener)->m_lsnHttp.m_fnOnMessageComplete = fn;
  2191. }
  2192. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpClient_OnUpgrade(HP_HttpClientListener pListener, HP_FN_HttpClient_OnUpgrade fn)
  2193. {
  2194. ((C_HP_HttpClientListener*)pListener)->m_lsnHttp.m_fnOnUpgrade = fn;
  2195. }
  2196. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpClient_OnParseError(HP_HttpClientListener pListener, HP_FN_HttpClient_OnParseError fn)
  2197. {
  2198. ((C_HP_HttpClientListener*)pListener)->m_lsnHttp.m_fnOnParseError = fn;
  2199. }
  2200. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpClient_OnWSMessageHeader(HP_HttpClientListener pListener, HP_FN_HttpClient_OnWSMessageHeader fn)
  2201. {
  2202. ((C_HP_HttpClientListener*)pListener)->m_lsnHttp.m_fnOnWSMessageHeader = fn;
  2203. }
  2204. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpClient_OnWSMessageBody(HP_HttpClientListener pListener, HP_FN_HttpClient_OnWSMessageBody fn)
  2205. {
  2206. ((C_HP_HttpClientListener*)pListener)->m_lsnHttp.m_fnOnWSMessageBody = fn;
  2207. }
  2208. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpClient_OnWSMessageComplete(HP_HttpClientListener pListener, HP_FN_HttpClient_OnWSMessageComplete fn)
  2209. {
  2210. ((C_HP_HttpClientListener*)pListener)->m_lsnHttp.m_fnOnWSMessageComplete = fn;
  2211. }
  2212. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpClient_OnPrepareConnect(HP_HttpClientListener pListener, HP_FN_HttpClient_OnPrepareConnect fn)
  2213. {
  2214. ((C_HP_HttpClientListener*)pListener)->m_lsnClient.m_fnOnPrepareConnect = fn;
  2215. }
  2216. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpClient_OnConnect(HP_HttpClientListener pListener, HP_FN_HttpClient_OnConnect fn)
  2217. {
  2218. ((C_HP_HttpClientListener*)pListener)->m_lsnClient.m_fnOnConnect = fn;
  2219. }
  2220. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpClient_OnHandShake(HP_HttpClientListener pListener, HP_FN_HttpClient_OnHandShake fn)
  2221. {
  2222. ((C_HP_HttpClientListener*)pListener)->m_lsnClient.m_fnOnHandShake = fn;
  2223. }
  2224. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpClient_OnReceive(HP_HttpClientListener pListener, HP_FN_HttpClient_OnReceive fn)
  2225. {
  2226. ((C_HP_HttpClientListener*)pListener)->m_lsnClient.m_fnOnReceive = fn;
  2227. }
  2228. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpClient_OnSend(HP_HttpClientListener pListener, HP_FN_HttpClient_OnSend fn)
  2229. {
  2230. ((C_HP_HttpClientListener*)pListener)->m_lsnClient.m_fnOnSend = fn;
  2231. }
  2232. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpClient_OnClose(HP_HttpClientListener pListener, HP_FN_HttpClient_OnClose fn)
  2233. {
  2234. ((C_HP_HttpClientListener*)pListener)->m_lsnClient.m_fnOnClose = fn;
  2235. }
  2236. /**************************************************************************/
  2237. /*************************** HTTP Server 操作方法 **************************/
  2238. HPSOCKET_API BOOL __HP_CALL HP_HttpServer_SendResponse(HP_HttpServer pServer, HP_CONNID dwConnID, USHORT usStatusCode, LPCSTR lpszDesc, const HP_THeader lpHeaders[], int iHeaderCount, const BYTE* pData, int iLength)
  2239. {
  2240. return C_HP_Object::ToFirst<IHttpServer>(pServer)->SendResponse(dwConnID, usStatusCode, lpszDesc, lpHeaders, iHeaderCount, pData, iLength);
  2241. }
  2242. HPSOCKET_API BOOL __HP_CALL HP_HttpServer_SendLocalFile(HP_HttpServer pServer, HP_CONNID dwConnID, LPCSTR lpszFileName, USHORT usStatusCode, LPCSTR lpszDesc, const HP_THeader lpHeaders[], int iHeaderCount)
  2243. {
  2244. return C_HP_Object::ToFirst<IHttpServer>(pServer)->SendLocalFile(dwConnID, lpszFileName, usStatusCode, lpszDesc, lpHeaders, iHeaderCount);
  2245. }
  2246. HPSOCKET_API BOOL __HP_CALL HP_HttpServer_SendChunkData(HP_HttpServer pServer, HP_CONNID dwConnID, const BYTE* pData, int iLength, LPCSTR lpszExtensions)
  2247. {
  2248. return C_HP_Object::ToFirst<IHttpServer>(pServer)->SendChunkData(dwConnID, pData, iLength, lpszExtensions);
  2249. }
  2250. HPSOCKET_API BOOL __HP_CALL HP_HttpServer_SendWSMessage(HP_HttpServer pServer, HP_CONNID dwConnID, BOOL bFinal, BYTE iReserved, BYTE iOperationCode, const BYTE* pData, int iLength, ULONGLONG ullBodyLen)
  2251. {
  2252. return C_HP_Object::ToFirst<IHttpServer>(pServer)->SendWSMessage(dwConnID, bFinal, iReserved, iOperationCode, pData, iLength, ullBodyLen);
  2253. }
  2254. HPSOCKET_API BOOL __HP_CALL HP_HttpServer_Release(HP_HttpServer pServer, HP_CONNID dwConnID)
  2255. {
  2256. return C_HP_Object::ToFirst<IHttpServer>(pServer)->Release(dwConnID);
  2257. }
  2258. HPSOCKET_API BOOL __HP_CALL HP_HttpServer_StartHttp(HP_HttpServer pServer, HP_CONNID dwConnID)
  2259. {
  2260. return C_HP_Object::ToFirst<IHttpServer>(pServer)->StartHttp(dwConnID);
  2261. }
  2262. /******************************************************************************/
  2263. /*************************** HTTP Server 属性访问方法 **************************/
  2264. HPSOCKET_API void __HP_CALL HP_HttpServer_SetReleaseDelay(HP_HttpServer pServer, DWORD dwReleaseDelay)
  2265. {
  2266. C_HP_Object::ToFirst<IHttpServer>(pServer)->SetReleaseDelay(dwReleaseDelay);
  2267. }
  2268. HPSOCKET_API DWORD __HP_CALL HP_HttpServer_GetReleaseDelay(HP_HttpServer pServer)
  2269. {
  2270. return C_HP_Object::ToFirst<IHttpServer>(pServer)->GetReleaseDelay();
  2271. }
  2272. HPSOCKET_API USHORT __HP_CALL HP_HttpServer_GetUrlFieldSet(HP_HttpServer pServer, HP_CONNID dwConnID)
  2273. {
  2274. return C_HP_Object::ToFirst<IHttpServer>(pServer)->GetUrlFieldSet(dwConnID);
  2275. }
  2276. HPSOCKET_API LPCSTR __HP_CALL HP_HttpServer_GetUrlField(HP_HttpServer pServer, HP_CONNID dwConnID, En_HP_HttpUrlField enField)
  2277. {
  2278. return C_HP_Object::ToFirst<IHttpServer>(pServer)->GetUrlField(dwConnID, enField);
  2279. }
  2280. HPSOCKET_API LPCSTR __HP_CALL HP_HttpServer_GetMethod(HP_HttpServer pServer, HP_CONNID dwConnID)
  2281. {
  2282. return C_HP_Object::ToFirst<IHttpServer>(pServer)->GetMethod(dwConnID);
  2283. }
  2284. HPSOCKET_API void __HP_CALL HP_HttpServer_SetLocalVersion(HP_HttpServer pServer, En_HP_HttpVersion usVersion)
  2285. {
  2286. C_HP_Object::ToFirst<IHttpServer>(pServer)->SetLocalVersion(usVersion);
  2287. }
  2288. HPSOCKET_API En_HP_HttpVersion __HP_CALL HP_HttpServer_GetLocalVersion(HP_HttpServer pServer)
  2289. {
  2290. return C_HP_Object::ToFirst<IHttpServer>(pServer)->GetLocalVersion();
  2291. }
  2292. HPSOCKET_API BOOL __HP_CALL HP_HttpServer_IsUpgrade(HP_HttpServer pServer, HP_CONNID dwConnID)
  2293. {
  2294. return C_HP_Object::ToFirst<IHttpServer>(pServer)->IsUpgrade(dwConnID);
  2295. }
  2296. HPSOCKET_API BOOL __HP_CALL HP_HttpServer_IsKeepAlive(HP_HttpServer pServer, HP_CONNID dwConnID)
  2297. {
  2298. return C_HP_Object::ToFirst<IHttpServer>(pServer)->IsKeepAlive(dwConnID);
  2299. }
  2300. HPSOCKET_API USHORT __HP_CALL HP_HttpServer_GetVersion(HP_HttpServer pServer, HP_CONNID dwConnID)
  2301. {
  2302. return C_HP_Object::ToFirst<IHttpServer>(pServer)->GetVersion(dwConnID);
  2303. }
  2304. HPSOCKET_API LPCSTR __HP_CALL HP_HttpServer_GetHost(HP_HttpServer pServer, HP_CONNID dwConnID)
  2305. {
  2306. return C_HP_Object::ToFirst<IHttpServer>(pServer)->GetHost(dwConnID);
  2307. }
  2308. HPSOCKET_API ULONGLONG __HP_CALL HP_HttpServer_GetContentLength(HP_HttpServer pServer, HP_CONNID dwConnID)
  2309. {
  2310. return C_HP_Object::ToFirst<IHttpServer>(pServer)->GetContentLength(dwConnID);
  2311. }
  2312. HPSOCKET_API LPCSTR __HP_CALL HP_HttpServer_GetContentType(HP_HttpServer pServer, HP_CONNID dwConnID)
  2313. {
  2314. return C_HP_Object::ToFirst<IHttpServer>(pServer)->GetContentType(dwConnID);
  2315. }
  2316. HPSOCKET_API LPCSTR __HP_CALL HP_HttpServer_GetContentEncoding(HP_HttpServer pServer, HP_CONNID dwConnID)
  2317. {
  2318. return C_HP_Object::ToFirst<IHttpServer>(pServer)->GetContentEncoding(dwConnID);
  2319. }
  2320. HPSOCKET_API LPCSTR __HP_CALL HP_HttpServer_GetTransferEncoding(HP_HttpServer pServer, HP_CONNID dwConnID)
  2321. {
  2322. return C_HP_Object::ToFirst<IHttpServer>(pServer)->GetTransferEncoding(dwConnID);
  2323. }
  2324. HPSOCKET_API En_HP_HttpUpgradeType __HP_CALL HP_HttpServer_GetUpgradeType(HP_HttpServer pServer, HP_CONNID dwConnID)
  2325. {
  2326. return C_HP_Object::ToFirst<IHttpServer>(pServer)->GetUpgradeType(dwConnID);
  2327. }
  2328. HPSOCKET_API USHORT __HP_CALL HP_HttpServer_GetParseErrorCode(HP_HttpServer pServer, HP_CONNID dwConnID, LPCSTR* lpszErrorDesc)
  2329. {
  2330. return C_HP_Object::ToFirst<IHttpServer>(pServer)->GetParseErrorCode(dwConnID, lpszErrorDesc);
  2331. }
  2332. HPSOCKET_API BOOL __HP_CALL HP_HttpServer_GetHeader(HP_HttpServer pServer, HP_CONNID dwConnID, LPCSTR lpszName, LPCSTR* lpszValue)
  2333. {
  2334. return C_HP_Object::ToFirst<IHttpServer>(pServer)->GetHeader(dwConnID, lpszName, lpszValue);
  2335. }
  2336. HPSOCKET_API BOOL __HP_CALL HP_HttpServer_GetHeaders(HP_HttpServer pServer, HP_CONNID dwConnID, LPCSTR lpszName, LPCSTR lpszValue[], DWORD* pdwCount)
  2337. {
  2338. return C_HP_Object::ToFirst<IHttpServer>(pServer)->GetHeaders(dwConnID, lpszName, lpszValue, *pdwCount);
  2339. }
  2340. HPSOCKET_API BOOL __HP_CALL HP_HttpServer_GetAllHeaders(HP_HttpServer pServer, HP_CONNID dwConnID, HP_THeader lpHeaders[], DWORD* pdwCount)
  2341. {
  2342. return C_HP_Object::ToFirst<IHttpServer>(pServer)->GetAllHeaders(dwConnID, lpHeaders, *pdwCount);
  2343. }
  2344. HPSOCKET_API BOOL __HP_CALL HP_HttpServer_GetAllHeaderNames(HP_HttpServer pServer, HP_CONNID dwConnID, LPCSTR lpszName[], DWORD* pdwCount)
  2345. {
  2346. return C_HP_Object::ToFirst<IHttpServer>(pServer)->GetAllHeaderNames(dwConnID, lpszName, *pdwCount);
  2347. }
  2348. HPSOCKET_API BOOL __HP_CALL HP_HttpServer_GetCookie(HP_HttpServer pServer, HP_CONNID dwConnID, LPCSTR lpszName, LPCSTR* lpszValue)
  2349. {
  2350. return C_HP_Object::ToFirst<IHttpServer>(pServer)->GetCookie(dwConnID, lpszName, lpszValue);
  2351. }
  2352. HPSOCKET_API BOOL __HP_CALL HP_HttpServer_GetAllCookies(HP_HttpServer pServer, HP_CONNID dwConnID, HP_TCookie lpCookies[], DWORD* pdwCount)
  2353. {
  2354. return C_HP_Object::ToFirst<IHttpServer>(pServer)->GetAllCookies(dwConnID, lpCookies, *pdwCount);
  2355. }
  2356. HPSOCKET_API BOOL __HP_CALL HP_HttpServer_GetWSMessageState(HP_HttpServer pServer, HP_CONNID dwConnID, BOOL* lpbFinal, BYTE* lpiReserved, BYTE* lpiOperationCode, LPCBYTE* lpszMask, ULONGLONG* lpullBodyLen, ULONGLONG* lpullBodyRemain)
  2357. {
  2358. return C_HP_Object::ToFirst<IHttpServer>(pServer)->GetWSMessageState(dwConnID, lpbFinal, lpiReserved, lpiOperationCode, lpszMask, lpullBodyLen, lpullBodyRemain);
  2359. }
  2360. HPSOCKET_API void __HP_CALL HP_HttpServer_SetHttpAutoStart(HP_HttpServer pServer, BOOL bAutoStart)
  2361. {
  2362. C_HP_Object::ToFirst<IHttpServer>(pServer)->SetHttpAutoStart(bAutoStart);
  2363. }
  2364. HPSOCKET_API BOOL __HP_CALL HP_HttpServer_IsHttpAutoStart(HP_HttpServer pServer)
  2365. {
  2366. return C_HP_Object::ToFirst<IHttpServer>(pServer)->IsHttpAutoStart();
  2367. }
  2368. /**************************************************************************/
  2369. /*************************** HTTP Agent 操作方法 ***************************/
  2370. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_SendRequest(HP_HttpAgent pAgent, HP_CONNID dwConnID, LPCSTR lpszMethod, LPCSTR lpszPath, const HP_THeader lpHeaders[], int iHeaderCount, const BYTE* pBody, int iLength)
  2371. {
  2372. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->SendRequest(dwConnID, lpszMethod, lpszPath, lpHeaders, iHeaderCount, pBody, iLength);
  2373. }
  2374. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_SendLocalFile(HP_HttpAgent pAgent, HP_CONNID dwConnID, LPCSTR lpszFileName, LPCSTR lpszMethod, LPCSTR lpszPath, const HP_THeader lpHeaders[], int iHeaderCount)
  2375. {
  2376. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->SendLocalFile(dwConnID, lpszFileName, lpszMethod, lpszPath, lpHeaders, iHeaderCount);
  2377. }
  2378. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_SendChunkData(HP_HttpAgent pAgent, HP_CONNID dwConnID, const BYTE* pData, int iLength, LPCSTR lpszExtensions)
  2379. {
  2380. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->SendChunkData(dwConnID, pData, iLength, lpszExtensions);
  2381. }
  2382. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_SendPost(HP_HttpAgent pAgent, HP_CONNID dwConnID, LPCSTR lpszPath, const HP_THeader lpHeaders[], int iHeaderCount, const BYTE* pBody, int iLength)
  2383. {
  2384. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->SendPost(dwConnID, lpszPath, lpHeaders, iHeaderCount, pBody, iLength);
  2385. }
  2386. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_SendPut(HP_HttpAgent pAgent, HP_CONNID dwConnID, LPCSTR lpszPath, const HP_THeader lpHeaders[], int iHeaderCount, const BYTE* pBody, int iLength)
  2387. {
  2388. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->SendPut(dwConnID, lpszPath, lpHeaders, iHeaderCount, pBody, iLength);
  2389. }
  2390. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_SendPatch(HP_HttpAgent pAgent, HP_CONNID dwConnID, LPCSTR lpszPath, const HP_THeader lpHeaders[], int iHeaderCount, const BYTE* pBody, int iLength)
  2391. {
  2392. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->SendPatch(dwConnID, lpszPath, lpHeaders, iHeaderCount, pBody, iLength);
  2393. }
  2394. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_SendGet(HP_HttpAgent pAgent, HP_CONNID dwConnID, LPCSTR lpszPath, const HP_THeader lpHeaders[], int iHeaderCount)
  2395. {
  2396. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->SendGet(dwConnID, lpszPath, lpHeaders, iHeaderCount);
  2397. }
  2398. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_SendDelete(HP_HttpAgent pAgent, HP_CONNID dwConnID, LPCSTR lpszPath, const HP_THeader lpHeaders[], int iHeaderCount)
  2399. {
  2400. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->SendDelete(dwConnID, lpszPath, lpHeaders, iHeaderCount);
  2401. }
  2402. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_SendHead(HP_HttpAgent pAgent, HP_CONNID dwConnID, LPCSTR lpszPath, const HP_THeader lpHeaders[], int iHeaderCount)
  2403. {
  2404. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->SendHead(dwConnID, lpszPath, lpHeaders, iHeaderCount);
  2405. }
  2406. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_SendTrace(HP_HttpAgent pAgent, HP_CONNID dwConnID, LPCSTR lpszPath, const HP_THeader lpHeaders[], int iHeaderCount)
  2407. {
  2408. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->SendTrace(dwConnID, lpszPath, lpHeaders, iHeaderCount);
  2409. }
  2410. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_SendOptions(HP_HttpAgent pAgent, HP_CONNID dwConnID, LPCSTR lpszPath, const HP_THeader lpHeaders[], int iHeaderCount)
  2411. {
  2412. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->SendOptions(dwConnID, lpszPath, lpHeaders, iHeaderCount);
  2413. }
  2414. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_SendConnect(HP_HttpAgent pAgent, HP_CONNID dwConnID, LPCSTR lpszHost, const HP_THeader lpHeaders[], int iHeaderCount)
  2415. {
  2416. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->SendConnect(dwConnID, lpszHost, lpHeaders, iHeaderCount);
  2417. }
  2418. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_SendWSMessage(HP_HttpAgent pAgent, HP_CONNID dwConnID, BOOL bFinal, BYTE iReserved, BYTE iOperationCode, const BYTE lpszMask[4], const BYTE* pData, int iLength, ULONGLONG ullBodyLen)
  2419. {
  2420. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->SendWSMessage(dwConnID, bFinal, iReserved, iOperationCode, lpszMask, pData, iLength, ullBodyLen);
  2421. }
  2422. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_StartHttp(HP_HttpAgent pAgent, HP_CONNID dwConnID)
  2423. {
  2424. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->StartHttp(dwConnID);
  2425. }
  2426. /******************************************************************************/
  2427. /*************************** HTTP Agent 属性访问方法 ***************************/
  2428. HPSOCKET_API USHORT __HP_CALL HP_HttpAgent_GetStatusCode(HP_HttpAgent pAgent, HP_CONNID dwConnID)
  2429. {
  2430. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->GetStatusCode(dwConnID);
  2431. }
  2432. HPSOCKET_API void __HP_CALL HP_HttpAgent_SetLocalVersion(HP_HttpAgent pAgent, En_HP_HttpVersion usVersion)
  2433. {
  2434. C_HP_Object::ToFirst<IHttpAgent>(pAgent)->SetLocalVersion(usVersion);
  2435. }
  2436. HPSOCKET_API En_HP_HttpVersion __HP_CALL HP_HttpAgent_GetLocalVersion(HP_HttpAgent pAgent)
  2437. {
  2438. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->GetLocalVersion();
  2439. }
  2440. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_IsUpgrade(HP_HttpAgent pAgent, HP_CONNID dwConnID)
  2441. {
  2442. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->IsUpgrade(dwConnID);
  2443. }
  2444. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_IsKeepAlive(HP_HttpAgent pAgent, HP_CONNID dwConnID)
  2445. {
  2446. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->IsKeepAlive(dwConnID);
  2447. }
  2448. HPSOCKET_API USHORT __HP_CALL HP_HttpAgent_GetVersion(HP_HttpAgent pAgent, HP_CONNID dwConnID)
  2449. {
  2450. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->GetVersion(dwConnID);
  2451. }
  2452. HPSOCKET_API ULONGLONG __HP_CALL HP_HttpAgent_GetContentLength(HP_HttpAgent pAgent, HP_CONNID dwConnID)
  2453. {
  2454. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->GetContentLength(dwConnID);
  2455. }
  2456. HPSOCKET_API LPCSTR __HP_CALL HP_HttpAgent_GetContentType(HP_HttpAgent pAgent, HP_CONNID dwConnID)
  2457. {
  2458. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->GetContentType(dwConnID);
  2459. }
  2460. HPSOCKET_API LPCSTR __HP_CALL HP_HttpAgent_GetContentEncoding(HP_HttpAgent pAgent, HP_CONNID dwConnID)
  2461. {
  2462. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->GetContentEncoding(dwConnID);
  2463. }
  2464. HPSOCKET_API LPCSTR __HP_CALL HP_HttpAgent_GetTransferEncoding(HP_HttpAgent pAgent, HP_CONNID dwConnID)
  2465. {
  2466. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->GetTransferEncoding(dwConnID);
  2467. }
  2468. HPSOCKET_API En_HP_HttpUpgradeType __HP_CALL HP_HttpAgent_GetUpgradeType(HP_HttpAgent pAgent, HP_CONNID dwConnID)
  2469. {
  2470. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->GetUpgradeType(dwConnID);
  2471. }
  2472. HPSOCKET_API USHORT __HP_CALL HP_HttpAgent_GetParseErrorCode(HP_HttpAgent pAgent, HP_CONNID dwConnID, LPCSTR* lpszErrorDesc)
  2473. {
  2474. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->GetParseErrorCode(dwConnID, lpszErrorDesc);
  2475. }
  2476. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_GetHeader(HP_HttpAgent pAgent, HP_CONNID dwConnID, LPCSTR lpszName, LPCSTR* lpszValue)
  2477. {
  2478. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->GetHeader(dwConnID, lpszName, lpszValue);
  2479. }
  2480. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_GetHeaders(HP_HttpAgent pAgent, HP_CONNID dwConnID, LPCSTR lpszName, LPCSTR lpszValue[], DWORD* pdwCount)
  2481. {
  2482. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->GetHeaders(dwConnID, lpszName, lpszValue, *pdwCount);
  2483. }
  2484. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_GetAllHeaders(HP_HttpAgent pAgent, HP_CONNID dwConnID, HP_THeader lpHeaders[], DWORD* pdwCount)
  2485. {
  2486. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->GetAllHeaders(dwConnID, lpHeaders, *pdwCount);
  2487. }
  2488. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_GetAllHeaderNames(HP_HttpAgent pAgent, HP_CONNID dwConnID, LPCSTR lpszName[], DWORD* pdwCount)
  2489. {
  2490. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->GetAllHeaderNames(dwConnID, lpszName, *pdwCount);
  2491. }
  2492. HPSOCKET_API void __HP_CALL HP_HttpAgent_SetUseCookie(HP_HttpAgent pAgent, BOOL bUseCookie)
  2493. {
  2494. C_HP_Object::ToFirst<IHttpAgent>(pAgent)->SetUseCookie(bUseCookie);
  2495. }
  2496. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_IsUseCookie(HP_HttpAgent pAgent)
  2497. {
  2498. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->IsUseCookie();
  2499. }
  2500. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_GetCookie(HP_HttpAgent pAgent, HP_CONNID dwConnID, LPCSTR lpszName, LPCSTR* lpszValue)
  2501. {
  2502. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->GetCookie(dwConnID, lpszName, lpszValue);
  2503. }
  2504. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_GetAllCookies(HP_HttpAgent pAgent, HP_CONNID dwConnID, HP_TCookie lpCookies[], DWORD* pdwCount)
  2505. {
  2506. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->GetAllCookies(dwConnID, lpCookies, *pdwCount);
  2507. }
  2508. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_GetWSMessageState(HP_HttpAgent pAgent, HP_CONNID dwConnID, BOOL* lpbFinal, BYTE* lpiReserved, BYTE* lpiOperationCode, LPCBYTE* lpszMask, ULONGLONG* lpullBodyLen, ULONGLONG* lpullBodyRemain)
  2509. {
  2510. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->GetWSMessageState(dwConnID, lpbFinal, lpiReserved, lpiOperationCode, lpszMask, lpullBodyLen, lpullBodyRemain);
  2511. }
  2512. HPSOCKET_API void __HP_CALL HP_HttpAgent_SetHttpAutoStart(HP_HttpAgent pAgent, BOOL bAutoStart)
  2513. {
  2514. C_HP_Object::ToFirst<IHttpAgent>(pAgent)->SetHttpAutoStart(bAutoStart);
  2515. }
  2516. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_IsHttpAutoStart(HP_HttpAgent pAgent)
  2517. {
  2518. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->IsHttpAutoStart();
  2519. }
  2520. /**************************************************************************/
  2521. /*************************** HTTP Client 操作方法 **************************/
  2522. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_SendRequest(HP_HttpClient pClient, LPCSTR lpszMethod, LPCSTR lpszPath, const HP_THeader lpHeaders[], int iHeaderCount, const BYTE* pBody, int iLength)
  2523. {
  2524. return C_HP_Object::ToFirst<IHttpClient>(pClient)->SendRequest(lpszMethod, lpszPath, lpHeaders, iHeaderCount, pBody, iLength);
  2525. }
  2526. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_SendLocalFile(HP_HttpClient pClient, LPCSTR lpszFileName, LPCSTR lpszMethod, LPCSTR lpszPath, const HP_THeader lpHeaders[], int iHeaderCount)
  2527. {
  2528. return C_HP_Object::ToFirst<IHttpClient>(pClient)->SendLocalFile(lpszFileName, lpszMethod, lpszPath, lpHeaders, iHeaderCount);
  2529. }
  2530. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_SendChunkData(HP_HttpClient pClient, const BYTE* pData, int iLength, LPCSTR lpszExtensions)
  2531. {
  2532. return C_HP_Object::ToFirst<IHttpClient>(pClient)->SendChunkData(pData, iLength, lpszExtensions);
  2533. }
  2534. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_SendPost(HP_HttpClient pClient, LPCSTR lpszPath, const HP_THeader lpHeaders[], int iHeaderCount, const BYTE* pBody, int iLength)
  2535. {
  2536. return C_HP_Object::ToFirst<IHttpClient>(pClient)->SendPost(lpszPath, lpHeaders, iHeaderCount, pBody, iLength);
  2537. }
  2538. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_SendPut(HP_HttpClient pClient, LPCSTR lpszPath, const HP_THeader lpHeaders[], int iHeaderCount, const BYTE* pBody, int iLength)
  2539. {
  2540. return C_HP_Object::ToFirst<IHttpClient>(pClient)->SendPut(lpszPath, lpHeaders, iHeaderCount, pBody, iLength);
  2541. }
  2542. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_SendPatch(HP_HttpClient pClient, LPCSTR lpszPath, const HP_THeader lpHeaders[], int iHeaderCount, const BYTE* pBody, int iLength)
  2543. {
  2544. return C_HP_Object::ToFirst<IHttpClient>(pClient)->SendPatch(lpszPath, lpHeaders, iHeaderCount, pBody, iLength);
  2545. }
  2546. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_SendGet(HP_HttpClient pClient, LPCSTR lpszPath, const HP_THeader lpHeaders[], int iHeaderCount)
  2547. {
  2548. return C_HP_Object::ToFirst<IHttpClient>(pClient)->SendGet(lpszPath, lpHeaders, iHeaderCount);
  2549. }
  2550. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_SendDelete(HP_HttpClient pClient, LPCSTR lpszPath, const HP_THeader lpHeaders[], int iHeaderCount)
  2551. {
  2552. return C_HP_Object::ToFirst<IHttpClient>(pClient)->SendDelete(lpszPath, lpHeaders, iHeaderCount);
  2553. }
  2554. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_SendHead(HP_HttpClient pClient, LPCSTR lpszPath, const HP_THeader lpHeaders[], int iHeaderCount)
  2555. {
  2556. return C_HP_Object::ToFirst<IHttpClient>(pClient)->SendHead(lpszPath, lpHeaders, iHeaderCount);
  2557. }
  2558. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_SendTrace(HP_HttpClient pClient, LPCSTR lpszPath, const HP_THeader lpHeaders[], int iHeaderCount)
  2559. {
  2560. return C_HP_Object::ToFirst<IHttpClient>(pClient)->SendTrace(lpszPath, lpHeaders, iHeaderCount);
  2561. }
  2562. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_SendOptions(HP_HttpClient pClient, LPCSTR lpszPath, const HP_THeader lpHeaders[], int iHeaderCount)
  2563. {
  2564. return C_HP_Object::ToFirst<IHttpClient>(pClient)->SendOptions(lpszPath, lpHeaders, iHeaderCount);
  2565. }
  2566. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_SendConnect(HP_HttpClient pClient, LPCSTR lpszHost, const HP_THeader lpHeaders[], int iHeaderCount)
  2567. {
  2568. return C_HP_Object::ToFirst<IHttpClient>(pClient)->SendConnect(lpszHost, lpHeaders, iHeaderCount);
  2569. }
  2570. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_SendWSMessage(HP_HttpClient pClient, BOOL bFinal, BYTE iReserved, BYTE iOperationCode, const BYTE lpszMask[4], const BYTE* pData, int iLength, ULONGLONG ullBodyLen)
  2571. {
  2572. return C_HP_Object::ToFirst<IHttpClient>(pClient)->SendWSMessage(bFinal, iReserved, iOperationCode, lpszMask, pData, iLength, ullBodyLen);
  2573. }
  2574. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_StartHttp(HP_HttpClient pClient)
  2575. {
  2576. return C_HP_Object::ToFirst<IHttpClient>(pClient)->StartHttp();
  2577. }
  2578. /******************************************************************************/
  2579. /*************************** HTTP Client 属性访问方法 **************************/
  2580. HPSOCKET_API USHORT __HP_CALL HP_HttpClient_GetStatusCode(HP_HttpClient pClient)
  2581. {
  2582. return C_HP_Object::ToFirst<IHttpClient>(pClient)->GetStatusCode();
  2583. }
  2584. HPSOCKET_API void __HP_CALL HP_HttpClient_SetLocalVersion(HP_HttpClient pClient, En_HP_HttpVersion usVersion)
  2585. {
  2586. C_HP_Object::ToFirst<IHttpClient>(pClient)->SetLocalVersion(usVersion);
  2587. }
  2588. HPSOCKET_API En_HP_HttpVersion __HP_CALL HP_HttpClient_GetLocalVersion(HP_HttpClient pClient)
  2589. {
  2590. return C_HP_Object::ToFirst<IHttpClient>(pClient)->GetLocalVersion();
  2591. }
  2592. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_IsUpgrade(HP_HttpClient pClient)
  2593. {
  2594. return C_HP_Object::ToFirst<IHttpClient>(pClient)->IsUpgrade();
  2595. }
  2596. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_IsKeepAlive(HP_HttpClient pClient)
  2597. {
  2598. return C_HP_Object::ToFirst<IHttpClient>(pClient)->IsKeepAlive();
  2599. }
  2600. HPSOCKET_API USHORT __HP_CALL HP_HttpClient_GetVersion(HP_HttpClient pClient)
  2601. {
  2602. return C_HP_Object::ToFirst<IHttpClient>(pClient)->GetVersion();
  2603. }
  2604. HPSOCKET_API ULONGLONG __HP_CALL HP_HttpClient_GetContentLength(HP_HttpClient pClient)
  2605. {
  2606. return C_HP_Object::ToFirst<IHttpClient>(pClient)->GetContentLength();
  2607. }
  2608. HPSOCKET_API LPCSTR __HP_CALL HP_HttpClient_GetContentType(HP_HttpClient pClient)
  2609. {
  2610. return C_HP_Object::ToFirst<IHttpClient>(pClient)->GetContentType();
  2611. }
  2612. HPSOCKET_API LPCSTR __HP_CALL HP_HttpClient_GetContentEncoding(HP_HttpClient pClient)
  2613. {
  2614. return C_HP_Object::ToFirst<IHttpClient>(pClient)->GetContentEncoding();
  2615. }
  2616. HPSOCKET_API LPCSTR __HP_CALL HP_HttpClient_GetTransferEncoding(HP_HttpClient pClient)
  2617. {
  2618. return C_HP_Object::ToFirst<IHttpClient>(pClient)->GetTransferEncoding();
  2619. }
  2620. HPSOCKET_API En_HP_HttpUpgradeType __HP_CALL HP_HttpClient_GetUpgradeType(HP_HttpClient pClient)
  2621. {
  2622. return C_HP_Object::ToFirst<IHttpClient>(pClient)->GetUpgradeType();
  2623. }
  2624. HPSOCKET_API USHORT __HP_CALL HP_HttpClient_GetParseErrorCode(HP_HttpClient pClient, LPCSTR* lpszErrorDesc)
  2625. {
  2626. return C_HP_Object::ToFirst<IHttpClient>(pClient)->GetParseErrorCode(lpszErrorDesc);
  2627. }
  2628. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_GetHeader(HP_HttpClient pClient, LPCSTR lpszName, LPCSTR* lpszValue)
  2629. {
  2630. return C_HP_Object::ToFirst<IHttpClient>(pClient)->GetHeader(lpszName, lpszValue);
  2631. }
  2632. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_GetHeaders(HP_HttpClient pClient, LPCSTR lpszName, LPCSTR lpszValue[], DWORD* pdwCount)
  2633. {
  2634. return C_HP_Object::ToFirst<IHttpClient>(pClient)->GetHeaders(lpszName, lpszValue, *pdwCount);
  2635. }
  2636. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_GetAllHeaders(HP_HttpClient pClient, HP_THeader lpHeaders[], DWORD* pdwCount)
  2637. {
  2638. return C_HP_Object::ToFirst<IHttpClient>(pClient)->GetAllHeaders(lpHeaders, *pdwCount);
  2639. }
  2640. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_GetAllHeaderNames(HP_HttpClient pClient, LPCSTR lpszName[], DWORD* pdwCount)
  2641. {
  2642. return C_HP_Object::ToFirst<IHttpClient>(pClient)->GetAllHeaderNames(lpszName, *pdwCount);
  2643. }
  2644. HPSOCKET_API void __HP_CALL HP_HttpClient_SetUseCookie(HP_HttpClient pClient, BOOL bUseCookie)
  2645. {
  2646. C_HP_Object::ToFirst<IHttpClient>(pClient)->SetUseCookie(bUseCookie);
  2647. }
  2648. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_IsUseCookie(HP_HttpClient pClient)
  2649. {
  2650. return C_HP_Object::ToFirst<IHttpClient>(pClient)->IsUseCookie();
  2651. }
  2652. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_GetCookie(HP_HttpClient pClient, LPCSTR lpszName, LPCSTR* lpszValue)
  2653. {
  2654. return C_HP_Object::ToFirst<IHttpClient>(pClient)->GetCookie(lpszName, lpszValue);
  2655. }
  2656. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_GetAllCookies(HP_HttpClient pClient, HP_TCookie lpCookies[], DWORD* pdwCount)
  2657. {
  2658. return C_HP_Object::ToFirst<IHttpClient>(pClient)->GetAllCookies(lpCookies, *pdwCount);
  2659. }
  2660. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_GetWSMessageState(HP_HttpClient pClient, BOOL* lpbFinal, BYTE* lpiReserved, BYTE* lpiOperationCode, LPCBYTE* lpszMask, ULONGLONG* lpullBodyLen, ULONGLONG* lpullBodyRemain)
  2661. {
  2662. return C_HP_Object::ToFirst<IHttpClient>(pClient)->GetWSMessageState(lpbFinal, lpiReserved, lpiOperationCode, lpszMask, lpullBodyLen, lpullBodyRemain);
  2663. }
  2664. HPSOCKET_API void __HP_CALL HP_HttpClient_SetHttpAutoStart(HP_HttpClient pClient, BOOL bAutoStart)
  2665. {
  2666. C_HP_Object::ToFirst<IHttpClient>(pClient)->SetHttpAutoStart(bAutoStart);
  2667. }
  2668. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_IsHttpAutoStart(HP_HttpClient pClient)
  2669. {
  2670. return C_HP_Object::ToFirst<IHttpClient>(pClient)->IsHttpAutoStart();
  2671. }
  2672. /**************************************************************************/
  2673. /************************ HTTP Sync Client 操作方法 ************************/
  2674. HPSOCKET_API BOOL __HP_CALL HP_HttpSyncClient_OpenUrl(HP_HttpSyncClient pClient, LPCSTR lpszMethod, LPCSTR lpszUrl, const HP_THeader lpHeaders[], int iHeaderCount, const BYTE* pBody, int iLength, BOOL bForceReconnect)
  2675. {
  2676. return C_HP_Object::ToFirst<IHttpSyncClient>(pClient)->OpenUrl(lpszMethod, lpszUrl, lpHeaders, iHeaderCount, pBody, iLength, bForceReconnect);
  2677. }
  2678. HPSOCKET_API BOOL __HP_CALL HP_HttpSyncClient_CleanupRequestResult(HP_HttpSyncClient pClient)
  2679. {
  2680. return C_HP_Object::ToFirst<IHttpSyncClient>(pClient)->CleanupRequestResult();
  2681. }
  2682. /**************************************************************************/
  2683. /********************** HTTP Sync Client 属性访问方法 **********************/
  2684. HPSOCKET_API void __HP_CALL HP_HttpSyncClient_SetConnectTimeout(HP_HttpSyncClient pClient, DWORD dwConnectTimeout)
  2685. {
  2686. C_HP_Object::ToFirst<IHttpSyncClient>(pClient)->SetConnectTimeout(dwConnectTimeout);
  2687. }
  2688. HPSOCKET_API void __HP_CALL HP_HttpSyncClient_SetRequestTimeout(HP_HttpSyncClient pClient, DWORD dwRequestTimeout)
  2689. {
  2690. C_HP_Object::ToFirst<IHttpSyncClient>(pClient)->SetRequestTimeout(dwRequestTimeout);
  2691. }
  2692. HPSOCKET_API DWORD __HP_CALL HP_HttpSyncClient_GetConnectTimeout(HP_HttpSyncClient pClient)
  2693. {
  2694. return C_HP_Object::ToFirst<IHttpSyncClient>(pClient)->GetConnectTimeout();
  2695. }
  2696. HPSOCKET_API DWORD __HP_CALL HP_HttpSyncClient_GetRequestTimeout(HP_HttpSyncClient pClient)
  2697. {
  2698. return C_HP_Object::ToFirst<IHttpSyncClient>(pClient)->GetRequestTimeout();
  2699. }
  2700. HPSOCKET_API BOOL __HP_CALL HP_HttpSyncClient_GetResponseBody(HP_HttpSyncClient pClient, LPCBYTE* lpszBody, int* piLength)
  2701. {
  2702. return C_HP_Object::ToFirst<IHttpSyncClient>(pClient)->GetResponseBody(lpszBody, piLength);
  2703. }
  2704. /**************************************************************************/
  2705. /*************************** HTTP Cookie 管理方法 **************************/
  2706. HPSOCKET_API BOOL __HP_CALL HP_HttpCookie_MGR_LoadFromFile(LPCSTR lpszFile, BOOL bKeepExists)
  2707. {
  2708. return g_CookieMgr.LoadFromFile(lpszFile, bKeepExists);
  2709. }
  2710. HPSOCKET_API BOOL __HP_CALL HP_HttpCookie_MGR_SaveToFile(LPCSTR lpszFile, BOOL bKeepExists)
  2711. {
  2712. return g_CookieMgr.SaveToFile(lpszFile, bKeepExists);
  2713. }
  2714. HPSOCKET_API BOOL __HP_CALL HP_HttpCookie_MGR_ClearCookies(LPCSTR lpszDomain, LPCSTR lpszPath)
  2715. {
  2716. return g_CookieMgr.ClearCookies(lpszDomain, lpszPath);
  2717. }
  2718. HPSOCKET_API BOOL __HP_CALL HP_HttpCookie_MGR_RemoveExpiredCookies(LPCSTR lpszDomain, LPCSTR lpszPath)
  2719. {
  2720. return g_CookieMgr.RemoveExpiredCookies(lpszDomain, lpszPath);
  2721. }
  2722. HPSOCKET_API BOOL __HP_CALL HP_HttpCookie_MGR_SetCookie(LPCSTR lpszName, LPCSTR lpszValue, LPCSTR lpszDomain, LPCSTR lpszPath, int iMaxAge, BOOL bHttpOnly, BOOL bSecure, int enSameSite, BOOL bOnlyUpdateValueIfExists)
  2723. {
  2724. return g_CookieMgr.SetCookie(lpszName, lpszValue, lpszDomain, lpszPath, iMaxAge, bHttpOnly, bSecure, (CCookie::EnSameSite)enSameSite, bOnlyUpdateValueIfExists);
  2725. }
  2726. HPSOCKET_API BOOL __HP_CALL HP_HttpCookie_MGR_DeleteCookie(LPCSTR lpszDomain, LPCSTR lpszPath, LPCSTR lpszName)
  2727. {
  2728. return g_CookieMgr.DeleteCookie(lpszDomain, lpszPath, lpszName);
  2729. }
  2730. HPSOCKET_API void __HP_CALL HP_HttpCookie_MGR_SetEnableThirdPartyCookie(BOOL bEnableThirdPartyCookie)
  2731. {
  2732. g_CookieMgr.SetEnableThirdPartyCookie(bEnableThirdPartyCookie);
  2733. }
  2734. HPSOCKET_API BOOL __HP_CALL HP_HttpCookie_MGR_IsEnableThirdPartyCookie()
  2735. {
  2736. return g_CookieMgr.IsEnableThirdPartyCookie();
  2737. }
  2738. HPSOCKET_API BOOL __HP_CALL HP_HttpCookie_HLP_ParseExpires(LPCSTR lpszExpires, __time64_t* ptmExpires)
  2739. {
  2740. return CCookie::ParseExpires(lpszExpires, *ptmExpires);
  2741. }
  2742. HPSOCKET_API BOOL __HP_CALL HP_HttpCookie_HLP_MakeExpiresStr(char lpszBuff[], int* piBuffLen, __time64_t tmExpires)
  2743. {
  2744. return CCookie::MakeExpiresStr(lpszBuff, *piBuffLen, tmExpires);
  2745. }
  2746. HPSOCKET_API BOOL __HP_CALL HP_HttpCookie_HLP_ToString(char lpszBuff[], int* piBuffLen, LPCSTR lpszName, LPCSTR lpszValue, LPCSTR lpszDomain, LPCSTR lpszPath, int iMaxAge, BOOL bHttpOnly, BOOL bSecure, int enSameSite)
  2747. {
  2748. return CCookie::ToString(lpszBuff, *piBuffLen, lpszName, lpszValue, lpszDomain, lpszPath, iMaxAge, bHttpOnly, bSecure, (CCookie::EnSameSite)enSameSite);
  2749. }
  2750. HPSOCKET_API __time64_t __HP_CALL HP_HttpCookie_HLP_CurrentUTCTime()
  2751. {
  2752. return CCookie::CurrentUTCTime();
  2753. }
  2754. HPSOCKET_API __time64_t __HP_CALL HP_HttpCookie_HLP_MaxAgeToExpires(int iMaxAge)
  2755. {
  2756. return CCookie::MaxAgeToExpires(iMaxAge);
  2757. }
  2758. HPSOCKET_API int __HP_CALL HP_HttpCookie_HLP_ExpiresToMaxAge(__time64_t tmExpires)
  2759. {
  2760. return CCookie::ExpiresToMaxAge(tmExpires);
  2761. }
  2762. /*****************************************************************************************************************************************************/
  2763. /************************************************************* HTTP Global Function Exports **********************************************************/
  2764. /*****************************************************************************************************************************************************/
  2765. #endif
  2766. /*****************************************************************************************************************************************************/
  2767. /**************************************************************** Thread Pool Exports ****************************************************************/
  2768. /*****************************************************************************************************************************************************/
  2769. /**********************************************************************************/
  2770. /************************** Thread Pool 回调函数设置方法 ***************************/
  2771. HPSOCKET_API void __HP_CALL HP_Set_FN_ThreadPool_OnStartup(HP_ThreadPoolListener pListener, HP_FN_ThreadPool_OnStartup fn)
  2772. {
  2773. ((C_HP_ThreadPoolListener*)pListener)->m_fnOnStartup = fn;
  2774. }
  2775. HPSOCKET_API void __HP_CALL HP_Set_FN_ThreadPool_OnShutdown(HP_ThreadPoolListener pListener, HP_FN_ThreadPool_OnShutdown fn)
  2776. {
  2777. ((C_HP_ThreadPoolListener*)pListener)->m_fnOnShutdown = fn;
  2778. }
  2779. HPSOCKET_API void __HP_CALL HP_Set_FN_ThreadPool_OnWorkerThreadStart(HP_ThreadPoolListener pListener, HP_FN_ThreadPool_OnWorkerThreadStart fn)
  2780. {
  2781. ((C_HP_ThreadPoolListener*)pListener)->m_fnOnWorkerThreadStart = fn;
  2782. }
  2783. HPSOCKET_API void __HP_CALL HP_Set_FN_ThreadPool_OnWorkerThreadEnd(HP_ThreadPoolListener pListener, HP_FN_ThreadPool_OnWorkerThreadEnd fn)
  2784. {
  2785. ((C_HP_ThreadPoolListener*)pListener)->m_fnOnWorkerThreadEnd = fn;
  2786. }
  2787. /****************************************************/
  2788. /******************* 对象创建函数 ********************/
  2789. HPSOCKET_API HP_ThreadPoolListener __HP_CALL Create_HP_ThreadPoolListener()
  2790. {
  2791. return (HP_ThreadPoolListener)(new C_HP_ThreadPoolListener);
  2792. }
  2793. HPSOCKET_API void __HP_CALL Destroy_HP_ThreadPoolListener(HP_ThreadPoolListener pListener)
  2794. {
  2795. delete (IHPThreadPoolListener*)pListener;
  2796. }
  2797. HPSOCKET_API HP_ThreadPool __HP_CALL Create_HP_ThreadPool(HP_ThreadPoolListener pListener)
  2798. {
  2799. return (HP_ThreadPool)(new CHPThreadPool((IHPThreadPoolListener*)pListener));
  2800. }
  2801. HPSOCKET_API void __HP_CALL Destroy_HP_ThreadPool(HP_ThreadPool pThreadPool)
  2802. {
  2803. delete (IHPThreadPool*)pThreadPool;
  2804. }
  2805. HPSOCKET_API LPTSocketTask __HP_CALL Create_HP_SocketTaskObj(Fn_SocketTaskProc fnTaskProc, PVOID pSender, HP_CONNID dwConnID, LPCBYTE pBuffer, INT iBuffLen, En_HP_TaskBufferType enBuffType, WPARAM wParam, LPARAM lParam)
  2806. {
  2807. return ::CreateSocketTaskObj(fnTaskProc, pSender, dwConnID, pBuffer, iBuffLen, enBuffType, wParam, lParam);
  2808. }
  2809. HPSOCKET_API void __HP_CALL Destroy_HP_SocketTaskObj(LPTSocketTask pTask)
  2810. {
  2811. ::DestroySocketTaskObj(pTask);
  2812. }
  2813. /***********************************************************************/
  2814. /***************************** 组件操作方法 *****************************/
  2815. HPSOCKET_API BOOL __HP_CALL HP_ThreadPool_Start(HP_ThreadPool pThreadPool, DWORD dwThreadCount, DWORD dwMaxQueueSize, En_HP_RejectedPolicy enRejectedPolicy, DWORD dwStackSize)
  2816. {
  2817. return ((IHPThreadPool*)pThreadPool)->Start(dwThreadCount, dwMaxQueueSize, enRejectedPolicy, dwStackSize);
  2818. }
  2819. HPSOCKET_API BOOL __HP_CALL HP_ThreadPool_Stop(HP_ThreadPool pThreadPool, DWORD dwMaxWait)
  2820. {
  2821. return ((IHPThreadPool*)pThreadPool)->Stop(dwMaxWait);
  2822. }
  2823. HPSOCKET_API BOOL __HP_CALL HP_ThreadPool_Submit(HP_ThreadPool pThreadPool, HP_Fn_TaskProc fnTaskProc, PVOID pvArg, DWORD dwMaxWait)
  2824. {
  2825. return ((IHPThreadPool*)pThreadPool)->Submit(fnTaskProc, pvArg, dwMaxWait);
  2826. }
  2827. HPSOCKET_API BOOL __HP_CALL HP_ThreadPool_Submit_Task(HP_ThreadPool pThreadPool, HP_LPTSocketTask pTask, DWORD dwMaxWait)
  2828. {
  2829. return ((IHPThreadPool*)pThreadPool)->Submit(pTask, dwMaxWait);
  2830. }
  2831. HPSOCKET_API BOOL __HP_CALL HP_ThreadPool_AdjustThreadCount(HP_ThreadPool pThreadPool, DWORD dwNewThreadCount)
  2832. {
  2833. return ((IHPThreadPool*)pThreadPool)->AdjustThreadCount(dwNewThreadCount);
  2834. }
  2835. HPSOCKET_API BOOL __HP_CALL HP_ThreadPool_Wait(HP_ThreadPool pThreadPool, DWORD dwMilliseconds)
  2836. {
  2837. return ((IHPThreadPool*)pThreadPool)->Wait(dwMilliseconds);
  2838. }
  2839. /***********************************************************************/
  2840. /***************************** 属性访问方法 *****************************/
  2841. HPSOCKET_API BOOL __HP_CALL HP_ThreadPool_HasStarted(HP_ThreadPool pThreadPool)
  2842. {
  2843. return ((IHPThreadPool*)pThreadPool)->HasStarted();
  2844. }
  2845. HPSOCKET_API En_HP_ServiceState __HP_CALL HP_ThreadPool_GetState(HP_ThreadPool pThreadPool)
  2846. {
  2847. return ((IHPThreadPool*)pThreadPool)->GetState();
  2848. }
  2849. HPSOCKET_API DWORD __HP_CALL HP_ThreadPool_GetQueueSize(HP_ThreadPool pThreadPool)
  2850. {
  2851. return ((IHPThreadPool*)pThreadPool)->GetQueueSize();
  2852. }
  2853. HPSOCKET_API DWORD __HP_CALL HP_ThreadPool_GetTaskCount(HP_ThreadPool pThreadPool)
  2854. {
  2855. return ((IHPThreadPool*)pThreadPool)->GetTaskCount();
  2856. }
  2857. HPSOCKET_API DWORD __HP_CALL HP_ThreadPool_GetThreadCount(HP_ThreadPool pThreadPool)
  2858. {
  2859. return ((IHPThreadPool*)pThreadPool)->GetThreadCount();
  2860. }
  2861. HPSOCKET_API DWORD __HP_CALL HP_ThreadPool_GetMaxQueueSize(HP_ThreadPool pThreadPool)
  2862. {
  2863. return ((IHPThreadPool*)pThreadPool)->GetMaxQueueSize();
  2864. }
  2865. HPSOCKET_API En_HP_RejectedPolicy __HP_CALL HP_ThreadPool_GetRejectedPolicy(HP_ThreadPool pThreadPool)
  2866. {
  2867. return ((IHPThreadPool*)pThreadPool)->GetRejectedPolicy();
  2868. }
  2869. /*****************************************************************************************************************************************************/
  2870. /********************************************************* Compressor / Decompressor Exports *********************************************************/
  2871. /*****************************************************************************************************************************************************/
  2872. /****************************************************/
  2873. /******************* 对象创建函数 ********************/
  2874. HPSOCKET_API void __HP_CALL Destroy_HP_Compressor(HP_Compressor pCompressor)
  2875. {
  2876. ::DestroyCompressor((IHPCompressor*)pCompressor);
  2877. }
  2878. HPSOCKET_API void __HP_CALL Destroy_HP_Decompressor(HP_Decompressor pDecompressor)
  2879. {
  2880. ::DestroyDecompressor((IHPDecompressor*)pDecompressor);
  2881. }
  2882. #ifdef _ZLIB_SUPPORT
  2883. HPSOCKET_API HP_Compressor __HP_CALL Create_HP_ZLibCompressor(HP_Fn_CompressDataCallback fnCallback)
  2884. {
  2885. return ::CreateZLibCompressor(fnCallback);
  2886. }
  2887. HPSOCKET_API HP_Compressor __HP_CALL Create_HP_ZLibCompressorEx(HP_Fn_CompressDataCallback fnCallback, int iWindowBits, int iLevel, int iMethod, int iMemLevel, int iStrategy, DWORD dwBuffSize)
  2888. {
  2889. return ::CreateZLibCompressor(fnCallback, iWindowBits, iLevel, iMethod, iMemLevel, iStrategy, dwBuffSize);
  2890. }
  2891. HPSOCKET_API HP_Compressor __HP_CALL Create_HP_GZipCompressor(HP_Fn_CompressDataCallback fnCallback)
  2892. {
  2893. return ::CreateGZipCompressor(fnCallback);
  2894. }
  2895. HPSOCKET_API HP_Compressor __HP_CALL Create_HP_GZipCompressorEx(HP_Fn_CompressDataCallback fnCallback, int iLevel, int iMethod, int iMemLevel, int iStrategy, DWORD dwBuffSize)
  2896. {
  2897. return ::CreateGZipCompressor(fnCallback, iLevel, iMethod, iMemLevel, iStrategy, dwBuffSize);
  2898. }
  2899. HPSOCKET_API HP_Decompressor __HP_CALL Create_HP_ZLibDecompressor(HP_Fn_DecompressDataCallback fnCallback)
  2900. {
  2901. return ::CreateZLibDecompressor(fnCallback);
  2902. }
  2903. HPSOCKET_API HP_Decompressor __HP_CALL Create_HP_ZLibDecompressorEx(HP_Fn_DecompressDataCallback fnCallback, int iWindowBits, DWORD dwBuffSize)
  2904. {
  2905. return ::CreateZLibDecompressor(fnCallback, iWindowBits, dwBuffSize);
  2906. }
  2907. HPSOCKET_API HP_Decompressor __HP_CALL Create_HP_GZipDecompressor(HP_Fn_DecompressDataCallback fnCallback)
  2908. {
  2909. return ::CreateGZipDecompressor(fnCallback);
  2910. }
  2911. HPSOCKET_API HP_Decompressor __HP_CALL Create_HP_GZipDecompressorEx(HP_Fn_DecompressDataCallback fnCallback, DWORD dwBuffSize)
  2912. {
  2913. return ::CreateGZipDecompressor(fnCallback, dwBuffSize);
  2914. }
  2915. #endif
  2916. #ifdef _BROTLI_SUPPORT
  2917. HPSOCKET_API HP_Compressor __HP_CALL Create_HP_BrotliCompressor(HP_Fn_CompressDataCallback fnCallback)
  2918. {
  2919. return ::CreateBrotliCompressor(fnCallback);
  2920. }
  2921. HPSOCKET_API HP_Compressor __HP_CALL Create_HP_BrotliCompressorEx(HP_Fn_CompressDataCallback fnCallback, int iQuality, int iWindow, int iMode, DWORD dwBuffSize)
  2922. {
  2923. return ::CreateBrotliCompressor(fnCallback, iQuality, iWindow, iMode, dwBuffSize);
  2924. }
  2925. HPSOCKET_API HP_Decompressor __HP_CALL Create_HP_BrotliDecompressor(HP_Fn_DecompressDataCallback fnCallback)
  2926. {
  2927. return ::CreateBrotliDecompressor(fnCallback);
  2928. }
  2929. HPSOCKET_API HP_Decompressor __HP_CALL Create_HP_BrotliDecompressorEx(HP_Fn_DecompressDataCallback fnCallback, DWORD dwBuffSize)
  2930. {
  2931. return ::CreateBrotliDecompressor(fnCallback, dwBuffSize);
  2932. }
  2933. #endif
  2934. /***********************************************************************/
  2935. /***************************** 组件操作方法 *****************************/
  2936. HPSOCKET_API BOOL __HP_CALL HP_Compressor_Process(HP_Compressor pCompressor, const BYTE* pData, int iLength, BOOL bLast, PVOID pContext)
  2937. {
  2938. return ((IHPCompressor*)pCompressor)->Process(pData, iLength, bLast, pContext);
  2939. }
  2940. HPSOCKET_API BOOL __HP_CALL HP_Compressor_ProcessEx(HP_Compressor pCompressor, const BYTE* pData, int iLength, BOOL bLast, BOOL bFlush, PVOID pContext)
  2941. {
  2942. return ((IHPCompressor*)pCompressor)->ProcessEx(pData, iLength, bLast, bFlush, pContext);
  2943. }
  2944. HPSOCKET_API BOOL __HP_CALL HP_Compressor_Reset(HP_Compressor pCompressor)
  2945. {
  2946. return ((IHPCompressor*)pCompressor)->Reset();
  2947. }
  2948. HPSOCKET_API BOOL __HP_CALL HP_Decompressor_Process(HP_Decompressor pDecompressor, const BYTE* pData, int iLength, PVOID pContext)
  2949. {
  2950. return ((IHPDecompressor*)pDecompressor)->Process(pData, iLength, pContext);
  2951. }
  2952. HPSOCKET_API BOOL __HP_CALL HP_Decompressor_Reset(HP_Decompressor pDecompressor)
  2953. {
  2954. return ((IHPDecompressor*)pDecompressor)->Reset();
  2955. }
  2956. /***********************************************************************/
  2957. /***************************** 属性访问方法 *****************************/
  2958. HPSOCKET_API BOOL __HP_CALL HP_Compressor_IsValid(HP_Compressor pCompressor)
  2959. {
  2960. return ((IHPCompressor*)pCompressor)->IsValid();
  2961. }
  2962. HPSOCKET_API BOOL __HP_CALL HP_Decompressor_IsValid(HP_Decompressor pDecompressor)
  2963. {
  2964. return ((IHPDecompressor*)pDecompressor)->IsValid();
  2965. }