HPSocket4C.cpp 138 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727
  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_SetSocketBufferSize(HP_TcpAgent pAgent, DWORD dwSocketBufferSize)
  1052. {
  1053. C_HP_Object::ToSecond<ITcpAgent>(pAgent)->SetSocketBufferSize(dwSocketBufferSize);
  1054. }
  1055. HPSOCKET_API void __HP_CALL HP_TcpAgent_SetKeepAliveTime(HP_TcpAgent pAgent, DWORD dwKeepAliveTime)
  1056. {
  1057. C_HP_Object::ToSecond<ITcpAgent>(pAgent)->SetKeepAliveTime(dwKeepAliveTime);
  1058. }
  1059. HPSOCKET_API void __HP_CALL HP_TcpAgent_SetKeepAliveInterval(HP_TcpAgent pAgent, DWORD dwKeepAliveInterval)
  1060. {
  1061. C_HP_Object::ToSecond<ITcpAgent>(pAgent)->SetKeepAliveInterval(dwKeepAliveInterval);
  1062. }
  1063. HPSOCKET_API void __HP_CALL HP_TcpAgent_SetNoDelay(HP_TcpAgent pAgent, BOOL bNoDelay)
  1064. {
  1065. C_HP_Object::ToSecond<ITcpAgent>(pAgent)->SetNoDelay(bNoDelay);
  1066. }
  1067. HPSOCKET_API DWORD __HP_CALL HP_TcpAgent_GetSocketBufferSize(HP_TcpAgent pAgent)
  1068. {
  1069. return C_HP_Object::ToSecond<ITcpAgent>(pAgent)->GetSocketBufferSize();
  1070. }
  1071. HPSOCKET_API DWORD __HP_CALL HP_TcpAgent_GetKeepAliveTime(HP_TcpAgent pAgent)
  1072. {
  1073. return C_HP_Object::ToSecond<ITcpAgent>(pAgent)->GetKeepAliveTime();
  1074. }
  1075. HPSOCKET_API DWORD __HP_CALL HP_TcpAgent_GetKeepAliveInterval(HP_TcpAgent pAgent)
  1076. {
  1077. return C_HP_Object::ToSecond<ITcpAgent>(pAgent)->GetKeepAliveInterval();
  1078. }
  1079. HPSOCKET_API BOOL __HP_CALL HP_TcpAgent_IsNoDelay(HP_TcpAgent pAgent)
  1080. {
  1081. return C_HP_Object::ToSecond<ITcpAgent>(pAgent)->IsNoDelay();
  1082. }
  1083. /******************************************************************************/
  1084. /***************************** Client 组件操作方法 *****************************/
  1085. HPSOCKET_API BOOL __HP_CALL HP_Client_Start(HP_Client pClient, LPCTSTR lpszRemoteAddress, USHORT usPort, BOOL bAsyncConnect)
  1086. {
  1087. return C_HP_Object::ToSecond<IClient>(pClient)->Start(lpszRemoteAddress, usPort, bAsyncConnect);
  1088. }
  1089. HPSOCKET_API BOOL __HP_CALL HP_Client_StartWithBindAddress(HP_Client pClient, LPCTSTR lpszRemoteAddress, USHORT usPort, BOOL bAsyncConnect, LPCTSTR lpszBindAddress)
  1090. {
  1091. return C_HP_Object::ToSecond<IClient>(pClient)->Start(lpszRemoteAddress, usPort, bAsyncConnect, lpszBindAddress);
  1092. }
  1093. HPSOCKET_API BOOL __HP_CALL HP_Client_StartWithBindAddressAndLocalPort(HP_Client pClient, LPCTSTR lpszRemoteAddress, USHORT usPort, BOOL bAsyncConnect, LPCTSTR lpszBindAddress, USHORT usLocalPort)
  1094. {
  1095. return C_HP_Object::ToSecond<IClient>(pClient)->Start(lpszRemoteAddress, usPort, bAsyncConnect, lpszBindAddress, usLocalPort);
  1096. }
  1097. HPSOCKET_API BOOL __HP_CALL HP_Client_Stop(HP_Client pClient)
  1098. {
  1099. return C_HP_Object::ToSecond<IClient>(pClient)->Stop();
  1100. }
  1101. HPSOCKET_API BOOL __HP_CALL HP_Client_Send(HP_Client pClient, const BYTE* pBuffer, int iLength)
  1102. {
  1103. return C_HP_Object::ToSecond<IClient>(pClient)->Send(pBuffer, iLength);
  1104. }
  1105. HPSOCKET_API BOOL __HP_CALL HP_Client_SendPart(HP_Client pClient, const BYTE* pBuffer, int iLength, int iOffset)
  1106. {
  1107. return C_HP_Object::ToSecond<IClient>(pClient)->Send(pBuffer, iLength, iOffset);
  1108. }
  1109. HPSOCKET_API BOOL __HP_CALL HP_Client_SendPackets(HP_Client pClient, const WSABUF pBuffers[], int iCount)
  1110. {
  1111. return C_HP_Object::ToSecond<IClient>(pClient)->SendPackets(pBuffers, iCount);
  1112. }
  1113. HPSOCKET_API BOOL __HP_CALL HP_Client_PauseReceive(HP_Client pClient, BOOL bPause)
  1114. {
  1115. return C_HP_Object::ToSecond<IClient>(pClient)->PauseReceive(bPause);
  1116. }
  1117. HPSOCKET_API BOOL __HP_CALL HP_Client_Wait(HP_Client pClient, DWORD dwMilliseconds)
  1118. {
  1119. return C_HP_Object::ToSecond<IClient>(pClient)->Wait(dwMilliseconds);
  1120. }
  1121. /******************************************************************************/
  1122. /***************************** Client 属性访问方法 *****************************/
  1123. HPSOCKET_API void __HP_CALL HP_Client_SetExtra(HP_Client pClient, PVOID pExtra)
  1124. {
  1125. C_HP_Object::ToSecond<IClient>(pClient)->SetExtra(pExtra);
  1126. }
  1127. HPSOCKET_API PVOID __HP_CALL HP_Client_GetExtra(HP_Client pClient)
  1128. {
  1129. return C_HP_Object::ToSecond<IClient>(pClient)->GetExtra();
  1130. }
  1131. HPSOCKET_API BOOL __HP_CALL HP_Client_IsSecure(HP_Client pClient)
  1132. {
  1133. return C_HP_Object::ToSecond<IClient>(pClient)->IsSecure();
  1134. }
  1135. HPSOCKET_API BOOL __HP_CALL HP_Client_HasStarted(HP_Client pClient)
  1136. {
  1137. return C_HP_Object::ToSecond<IClient>(pClient)->HasStarted();
  1138. }
  1139. HPSOCKET_API En_HP_ServiceState __HP_CALL HP_Client_GetState(HP_Client pClient)
  1140. {
  1141. return C_HP_Object::ToSecond<IClient>(pClient)->GetState();
  1142. }
  1143. HPSOCKET_API En_HP_SocketError __HP_CALL HP_Client_GetLastError(HP_Client pClient)
  1144. {
  1145. return C_HP_Object::ToSecond<IClient>(pClient)->GetLastError();
  1146. }
  1147. HPSOCKET_API LPCTSTR __HP_CALL HP_Client_GetLastErrorDesc(HP_Client pClient)
  1148. {
  1149. return C_HP_Object::ToSecond<IClient>(pClient)->GetLastErrorDesc();
  1150. }
  1151. HPSOCKET_API HP_CONNID __HP_CALL HP_Client_GetConnectionID(HP_Client pClient)
  1152. {
  1153. return C_HP_Object::ToSecond<IClient>(pClient)->GetConnectionID();
  1154. }
  1155. HPSOCKET_API BOOL __HP_CALL HP_Client_GetLocalAddress(HP_Client pClient, TCHAR lpszAddress[], int* piAddressLen, USHORT* pusPort)
  1156. {
  1157. return C_HP_Object::ToSecond<IClient>(pClient)->GetLocalAddress(lpszAddress, *piAddressLen, *pusPort);
  1158. }
  1159. HPSOCKET_API BOOL __HP_CALL HP_Client_GetRemoteHost(HP_Client pClient, TCHAR lpszHost[], int* piHostLen, USHORT* pusPort)
  1160. {
  1161. return C_HP_Object::ToSecond<IClient>(pClient)->GetRemoteHost(lpszHost, *piHostLen, *pusPort);
  1162. }
  1163. HPSOCKET_API BOOL __HP_CALL HP_Client_GetPendingDataLength(HP_Client pClient, int* piPending)
  1164. {
  1165. return C_HP_Object::ToSecond<IClient>(pClient)->GetPendingDataLength(*piPending);
  1166. }
  1167. HPSOCKET_API BOOL __HP_CALL HP_Client_IsPauseReceive(HP_Client pClient, BOOL* pbPaused)
  1168. {
  1169. return C_HP_Object::ToSecond<IClient>(pClient)->IsPauseReceive(*pbPaused);
  1170. }
  1171. HPSOCKET_API BOOL __HP_CALL HP_Client_IsConnected(HP_Client pClient)
  1172. {
  1173. return C_HP_Object::ToSecond<IClient>(pClient)->IsConnected();
  1174. }
  1175. HPSOCKET_API void __HP_CALL HP_Client_SetReuseAddressPolicy(HP_Client pClient, En_HP_ReuseAddressPolicy enReusePolicy)
  1176. {
  1177. C_HP_Object::ToSecond<IClient>(pClient)->SetReuseAddressPolicy(enReusePolicy);
  1178. }
  1179. HPSOCKET_API void __HP_CALL HP_Client_SetFreeBufferPoolSize(HP_Client pClient, DWORD dwFreeBufferPoolSize)
  1180. {
  1181. C_HP_Object::ToSecond<IClient>(pClient)->SetFreeBufferPoolSize(dwFreeBufferPoolSize);
  1182. }
  1183. HPSOCKET_API void __HP_CALL HP_Client_SetFreeBufferPoolHold(HP_Client pClient, DWORD dwFreeBufferPoolHold)
  1184. {
  1185. C_HP_Object::ToSecond<IClient>(pClient)->SetFreeBufferPoolHold(dwFreeBufferPoolHold);
  1186. }
  1187. HPSOCKET_API En_HP_ReuseAddressPolicy __HP_CALL HP_Client_GetReuseAddressPolicy(HP_Client pClient)
  1188. {
  1189. return C_HP_Object::ToSecond<IClient>(pClient)->GetReuseAddressPolicy();
  1190. }
  1191. HPSOCKET_API DWORD __HP_CALL HP_Client_GetFreeBufferPoolSize(HP_Client pClient)
  1192. {
  1193. return C_HP_Object::ToSecond<IClient>(pClient)->GetFreeBufferPoolSize();
  1194. }
  1195. HPSOCKET_API DWORD __HP_CALL HP_Client_GetFreeBufferPoolHold(HP_Client pClient)
  1196. {
  1197. return C_HP_Object::ToSecond<IClient>(pClient)->GetFreeBufferPoolHold();
  1198. }
  1199. /**********************************************************************************/
  1200. /******************************* TCP Client 操作方法 *******************************/
  1201. HPSOCKET_API BOOL __HP_CALL HP_TcpClient_SendSmallFile(HP_Client pClient, LPCTSTR lpszFileName, const LPWSABUF pHead, const LPWSABUF pTail)
  1202. {
  1203. return C_HP_Object::ToSecond<ITcpClient>(pClient)->SendSmallFile(lpszFileName, pHead, pTail);
  1204. }
  1205. /**********************************************************************************/
  1206. /***************************** TCP Client 属性访问方法 *****************************/
  1207. HPSOCKET_API void __HP_CALL HP_TcpClient_SetSocketBufferSize(HP_TcpClient pClient, DWORD dwSocketBufferSize)
  1208. {
  1209. C_HP_Object::ToSecond<ITcpClient>(pClient)->SetSocketBufferSize(dwSocketBufferSize);
  1210. }
  1211. HPSOCKET_API void __HP_CALL HP_TcpClient_SetKeepAliveTime(HP_TcpClient pClient, DWORD dwKeepAliveTime)
  1212. {
  1213. C_HP_Object::ToSecond<ITcpClient>(pClient)->SetKeepAliveTime(dwKeepAliveTime);
  1214. }
  1215. HPSOCKET_API void __HP_CALL HP_TcpClient_SetKeepAliveInterval(HP_TcpClient pClient, DWORD dwKeepAliveInterval)
  1216. {
  1217. C_HP_Object::ToSecond<ITcpClient>(pClient)->SetKeepAliveInterval(dwKeepAliveInterval);
  1218. }
  1219. HPSOCKET_API void __HP_CALL HP_TcpClient_SetNoDelay(HP_TcpClient pClient, BOOL bNoDelay)
  1220. {
  1221. C_HP_Object::ToSecond<ITcpClient>(pClient)->SetNoDelay(bNoDelay);
  1222. }
  1223. HPSOCKET_API DWORD __HP_CALL HP_TcpClient_GetSocketBufferSize(HP_TcpClient pClient)
  1224. {
  1225. return C_HP_Object::ToSecond<ITcpClient>(pClient)->GetSocketBufferSize();
  1226. }
  1227. HPSOCKET_API DWORD __HP_CALL HP_TcpClient_GetKeepAliveTime(HP_TcpClient pClient)
  1228. {
  1229. return C_HP_Object::ToSecond<ITcpClient>(pClient)->GetKeepAliveTime();
  1230. }
  1231. HPSOCKET_API DWORD __HP_CALL HP_TcpClient_GetKeepAliveInterval(HP_TcpClient pClient)
  1232. {
  1233. return C_HP_Object::ToSecond<ITcpClient>(pClient)->GetKeepAliveInterval();
  1234. }
  1235. HPSOCKET_API BOOL __HP_CALL HP_TcpClient_IsNoDelay(HP_TcpClient pClient)
  1236. {
  1237. return C_HP_Object::ToSecond<ITcpClient>(pClient)->IsNoDelay();
  1238. }
  1239. #ifdef _UDP_SUPPORT
  1240. /**********************************************************************************/
  1241. /***************************** UDP Client 属性访问方法 *****************************/
  1242. HPSOCKET_API void __HP_CALL HP_UdpClient_SetMaxDatagramSize(HP_UdpClient pClient, DWORD dwMaxDatagramSize)
  1243. {
  1244. C_HP_Object::ToSecond<IUdpClient>(pClient)->SetMaxDatagramSize(dwMaxDatagramSize);
  1245. }
  1246. HPSOCKET_API DWORD __HP_CALL HP_UdpClient_GetMaxDatagramSize(HP_UdpClient pClient)
  1247. {
  1248. return C_HP_Object::ToSecond<IUdpClient>(pClient)->GetMaxDatagramSize();
  1249. }
  1250. HPSOCKET_API void __HP_CALL HP_UdpClient_SetDetectAttempts(HP_UdpClient pClient, DWORD dwDetectAttempts)
  1251. {
  1252. C_HP_Object::ToSecond<IUdpClient>(pClient)->SetDetectAttempts(dwDetectAttempts);
  1253. }
  1254. HPSOCKET_API void __HP_CALL HP_UdpClient_SetDetectInterval(HP_UdpClient pClient, DWORD dwDetectInterval)
  1255. {
  1256. C_HP_Object::ToSecond<IUdpClient>(pClient)->SetDetectInterval(dwDetectInterval);
  1257. }
  1258. HPSOCKET_API DWORD __HP_CALL HP_UdpClient_GetDetectAttempts(HP_UdpClient pClient)
  1259. {
  1260. return C_HP_Object::ToSecond<IUdpClient>(pClient)->GetDetectAttempts();
  1261. }
  1262. HPSOCKET_API DWORD __HP_CALL HP_UdpClient_GetDetectInterval(HP_UdpClient pClient)
  1263. {
  1264. return C_HP_Object::ToSecond<IUdpClient>(pClient)->GetDetectInterval();
  1265. }
  1266. /**********************************************************************************/
  1267. /*************************** UDP ARQ Client 属性访问方法 ***************************/
  1268. HPSOCKET_API void __HP_CALL HP_UdpArqClient_SetNoDelay(HP_UdpArqClient pClient, BOOL bNoDelay)
  1269. {
  1270. C_HP_Object::ToFirst<IArqClient>(pClient)->SetNoDelay(bNoDelay);
  1271. }
  1272. HPSOCKET_API void __HP_CALL HP_UdpArqClient_SetTurnoffCongestCtrl(HP_UdpArqClient pClient, BOOL bTurnOff)
  1273. {
  1274. C_HP_Object::ToFirst<IArqClient>(pClient)->SetTurnoffCongestCtrl(bTurnOff);
  1275. }
  1276. HPSOCKET_API void __HP_CALL HP_UdpArqClient_SetFlushInterval(HP_UdpArqClient pClient, DWORD dwFlushInterval)
  1277. {
  1278. C_HP_Object::ToFirst<IArqClient>(pClient)->SetFlushInterval(dwFlushInterval);
  1279. }
  1280. HPSOCKET_API void __HP_CALL HP_UdpArqClient_SetResendByAcks(HP_UdpArqClient pClient, DWORD dwResendByAcks)
  1281. {
  1282. C_HP_Object::ToFirst<IArqClient>(pClient)->SetResendByAcks(dwResendByAcks);
  1283. }
  1284. HPSOCKET_API void __HP_CALL HP_UdpArqClient_SetSendWndSize(HP_UdpArqClient pClient, DWORD dwSendWndSize)
  1285. {
  1286. C_HP_Object::ToFirst<IArqClient>(pClient)->SetSendWndSize(dwSendWndSize);
  1287. }
  1288. HPSOCKET_API void __HP_CALL HP_UdpArqClient_SetRecvWndSize(HP_UdpArqClient pClient, DWORD dwRecvWndSize)
  1289. {
  1290. C_HP_Object::ToFirst<IArqClient>(pClient)->SetRecvWndSize(dwRecvWndSize);
  1291. }
  1292. HPSOCKET_API void __HP_CALL HP_UdpArqClient_SetMinRto(HP_UdpArqClient pClient, DWORD dwMinRto)
  1293. {
  1294. C_HP_Object::ToFirst<IArqClient>(pClient)->SetMinRto(dwMinRto);
  1295. }
  1296. HPSOCKET_API void __HP_CALL HP_UdpArqClient_SetFastLimit(HP_UdpArqClient pClient, DWORD dwFastLimit)
  1297. {
  1298. C_HP_Object::ToFirst<IArqClient>(pClient)->SetFastLimit(dwFastLimit);
  1299. }
  1300. HPSOCKET_API void __HP_CALL HP_UdpArqClient_SetMaxTransUnit(HP_UdpArqClient pClient, DWORD dwMaxTransUnit)
  1301. {
  1302. C_HP_Object::ToFirst<IArqClient>(pClient)->SetMaxTransUnit(dwMaxTransUnit);
  1303. }
  1304. HPSOCKET_API void __HP_CALL HP_UdpArqClient_SetMaxMessageSize(HP_UdpArqClient pClient, DWORD dwMaxMessageSize)
  1305. {
  1306. C_HP_Object::ToFirst<IArqClient>(pClient)->SetMaxMessageSize(dwMaxMessageSize);
  1307. }
  1308. HPSOCKET_API void __HP_CALL HP_UdpArqClient_SetHandShakeTimeout(HP_UdpArqClient pClient, DWORD dwHandShakeTimeout)
  1309. {
  1310. C_HP_Object::ToFirst<IArqClient>(pClient)->SetHandShakeTimeout(dwHandShakeTimeout);
  1311. }
  1312. HPSOCKET_API BOOL __HP_CALL HP_UdpArqClient_IsNoDelay(HP_UdpArqClient pClient)
  1313. {
  1314. return C_HP_Object::ToFirst<IArqClient>(pClient)->IsNoDelay();
  1315. }
  1316. HPSOCKET_API BOOL __HP_CALL HP_UdpArqClient_IsTurnoffCongestCtrl(HP_UdpArqClient pClient)
  1317. {
  1318. return C_HP_Object::ToFirst<IArqClient>(pClient)->IsTurnoffCongestCtrl();
  1319. }
  1320. HPSOCKET_API DWORD __HP_CALL HP_UdpArqClient_GetFlushInterval(HP_UdpArqClient pClient)
  1321. {
  1322. return C_HP_Object::ToFirst<IArqClient>(pClient)->GetFlushInterval();
  1323. }
  1324. HPSOCKET_API DWORD __HP_CALL HP_UdpArqClient_GetResendByAcks(HP_UdpArqClient pClient)
  1325. {
  1326. return C_HP_Object::ToFirst<IArqClient>(pClient)->GetResendByAcks();
  1327. }
  1328. HPSOCKET_API DWORD __HP_CALL HP_UdpArqClient_GetSendWndSize(HP_UdpArqClient pClient)
  1329. {
  1330. return C_HP_Object::ToFirst<IArqClient>(pClient)->GetSendWndSize();
  1331. }
  1332. HPSOCKET_API DWORD __HP_CALL HP_UdpArqClient_GetRecvWndSize(HP_UdpArqClient pClient)
  1333. {
  1334. return C_HP_Object::ToFirst<IArqClient>(pClient)->GetRecvWndSize();
  1335. }
  1336. HPSOCKET_API DWORD __HP_CALL HP_UdpArqClient_GetMinRto(HP_UdpArqClient pClient)
  1337. {
  1338. return C_HP_Object::ToFirst<IArqClient>(pClient)->GetMinRto();
  1339. }
  1340. HPSOCKET_API DWORD __HP_CALL HP_UdpArqClient_GetFastLimit(HP_UdpArqClient pClient)
  1341. {
  1342. return C_HP_Object::ToFirst<IArqClient>(pClient)->GetFastLimit();
  1343. }
  1344. HPSOCKET_API DWORD __HP_CALL HP_UdpArqClient_GetMaxTransUnit(HP_UdpArqClient pClient)
  1345. {
  1346. return C_HP_Object::ToFirst<IArqClient>(pClient)->GetMaxTransUnit();
  1347. }
  1348. HPSOCKET_API DWORD __HP_CALL HP_UdpArqClient_GetMaxMessageSize(HP_UdpArqClient pClient)
  1349. {
  1350. return C_HP_Object::ToFirst<IArqClient>(pClient)->GetMaxMessageSize();
  1351. }
  1352. HPSOCKET_API DWORD __HP_CALL HP_UdpArqClient_GetHandShakeTimeout(HP_UdpArqClient pClient)
  1353. {
  1354. return C_HP_Object::ToFirst<IArqClient>(pClient)->GetHandShakeTimeout();
  1355. }
  1356. HPSOCKET_API BOOL __HP_CALL HP_UdpArqClient_GetWaitingSendMessageCount(HP_UdpArqClient pClient, int* piCount)
  1357. {
  1358. return C_HP_Object::ToFirst<IArqClient>(pClient)->GetWaitingSendMessageCount(*piCount);
  1359. }
  1360. /**********************************************************************************/
  1361. /****************************** UDP Cast 属性访问方法 ******************************/
  1362. HPSOCKET_API void __HP_CALL HP_UdpCast_SetMaxDatagramSize(HP_UdpCast pCast, DWORD dwMaxDatagramSize)
  1363. {
  1364. C_HP_Object::ToSecond<IUdpCast>(pCast)->SetMaxDatagramSize(dwMaxDatagramSize);
  1365. }
  1366. HPSOCKET_API DWORD __HP_CALL HP_UdpCast_GetMaxDatagramSize(HP_UdpCast pCast)
  1367. {
  1368. return C_HP_Object::ToSecond<IUdpCast>(pCast)->GetMaxDatagramSize();
  1369. }
  1370. HPSOCKET_API BOOL __HP_CALL HP_UdpCast_GetRemoteAddress(HP_UdpCast pCast, TCHAR lpszAddress[], int* piAddressLen, USHORT* pusPort)
  1371. {
  1372. return C_HP_Object::ToSecond<IUdpCast>(pCast)->GetRemoteAddress(lpszAddress, *piAddressLen, *pusPort);
  1373. }
  1374. HPSOCKET_API void __HP_CALL HP_UdpCast_SetCastMode(HP_UdpCast pCast, En_HP_CastMode enCastMode)
  1375. {
  1376. C_HP_Object::ToSecond<IUdpCast>(pCast)->SetCastMode(enCastMode);
  1377. }
  1378. HPSOCKET_API En_HP_CastMode __HP_CALL HP_UdpCast_GetCastMode(HP_UdpCast pCast)
  1379. {
  1380. return C_HP_Object::ToSecond<IUdpCast>(pCast)->GetCastMode();
  1381. }
  1382. HPSOCKET_API void __HP_CALL HP_UdpCast_SetMultiCastTtl(HP_UdpCast pCast, int iMCTtl)
  1383. {
  1384. C_HP_Object::ToSecond<IUdpCast>(pCast)->SetMultiCastTtl(iMCTtl);
  1385. }
  1386. HPSOCKET_API int __HP_CALL HP_UdpCast_GetMultiCastTtl(HP_UdpCast pCast)
  1387. {
  1388. return C_HP_Object::ToSecond<IUdpCast>(pCast)->GetMultiCastTtl();
  1389. }
  1390. HPSOCKET_API void __HP_CALL HP_UdpCast_SetMultiCastLoop(HP_UdpCast pCast, BOOL bMCLoop)
  1391. {
  1392. C_HP_Object::ToSecond<IUdpCast>(pCast)->SetMultiCastLoop(bMCLoop);
  1393. }
  1394. HPSOCKET_API BOOL __HP_CALL HP_UdpCast_IsMultiCastLoop(HP_UdpCast pCast)
  1395. {
  1396. return C_HP_Object::ToSecond<IUdpCast>(pCast)->IsMultiCastLoop();
  1397. }
  1398. /**********************************************************************************/
  1399. /****************************** UDP Node 组件操作方法 ******************************/
  1400. HPSOCKET_API BOOL __HP_CALL HP_UdpNode_Start(HP_UdpNode pNode, LPCTSTR lpszBindAddress, USHORT usPort)
  1401. {
  1402. return C_HP_Object::ToSecond<IUdpNode>(pNode)->Start(lpszBindAddress, usPort);
  1403. }
  1404. HPSOCKET_API BOOL __HP_CALL HP_UdpNode_StartWithCast(HP_UdpNode pNode, LPCTSTR lpszBindAddress, USHORT usPort, En_HP_CastMode enCastMode, LPCTSTR lpszCastAddress)
  1405. {
  1406. return C_HP_Object::ToSecond<IUdpNode>(pNode)->Start(lpszBindAddress, usPort, enCastMode, lpszCastAddress);
  1407. }
  1408. HPSOCKET_API BOOL __HP_CALL HP_UdpNode_Stop(HP_UdpNode pNode)
  1409. {
  1410. return C_HP_Object::ToSecond<IUdpNode>(pNode)->Stop();
  1411. }
  1412. HPSOCKET_API BOOL __HP_CALL HP_UdpNode_Wait(HP_UdpNode pNode, DWORD dwMilliseconds)
  1413. {
  1414. return C_HP_Object::ToSecond<IUdpNode>(pNode)->Wait(dwMilliseconds);
  1415. }
  1416. HPSOCKET_API BOOL __HP_CALL HP_UdpNode_Send(HP_UdpNode pNode, LPCTSTR lpszRemoteAddress, USHORT usRemotePort, const BYTE* pBuffer, int iLength)
  1417. {
  1418. return C_HP_Object::ToSecond<IUdpNode>(pNode)->Send(lpszRemoteAddress, usRemotePort, pBuffer, iLength);
  1419. }
  1420. HPSOCKET_API BOOL __HP_CALL HP_UdpNode_SendPart(HP_UdpNode pNode, LPCTSTR lpszRemoteAddress, USHORT usRemotePort, const BYTE* pBuffer, int iLength, int iOffset)
  1421. {
  1422. return C_HP_Object::ToSecond<IUdpNode>(pNode)->Send(lpszRemoteAddress, usRemotePort, pBuffer, iLength, iOffset);
  1423. }
  1424. HPSOCKET_API BOOL __HP_CALL HP_UdpNode_SendPackets(HP_UdpNode pNode, LPCTSTR lpszRemoteAddress, USHORT usRemotePort, const WSABUF pBuffers[], int iCount)
  1425. {
  1426. return C_HP_Object::ToSecond<IUdpNode>(pNode)->SendPackets(lpszRemoteAddress, usRemotePort, pBuffers, iCount);
  1427. }
  1428. HPSOCKET_API BOOL __HP_CALL HP_UdpNode_SendCast(HP_UdpNode pNode, const BYTE* pBuffer, int iLength)
  1429. {
  1430. return C_HP_Object::ToSecond<IUdpNode>(pNode)->SendCast(pBuffer, iLength);
  1431. }
  1432. HPSOCKET_API BOOL __HP_CALL HP_UdpNode_SendCastPart(HP_UdpNode pNode, const BYTE* pBuffer, int iLength, int iOffset)
  1433. {
  1434. return C_HP_Object::ToSecond<IUdpNode>(pNode)->SendCast(pBuffer, iLength, iOffset);
  1435. }
  1436. HPSOCKET_API BOOL __HP_CALL HP_UdpNode_SendCastPackets(HP_UdpNode pNode, const WSABUF pBuffers[], int iCount)
  1437. {
  1438. return C_HP_Object::ToSecond<IUdpNode>(pNode)->SendCastPackets(pBuffers, iCount);
  1439. }
  1440. /**********************************************************************************/
  1441. /****************************** UDP Node 属性访问方法 ******************************/
  1442. HPSOCKET_API void __HP_CALL HP_UdpNode_SetExtra(HP_UdpNode pNode, PVOID pExtra)
  1443. {
  1444. C_HP_Object::ToSecond<IUdpNode>(pNode)->SetExtra(pExtra);
  1445. }
  1446. HPSOCKET_API PVOID __HP_CALL HP_UdpNode_GetExtra(HP_UdpNode pNode)
  1447. {
  1448. return C_HP_Object::ToSecond<IUdpNode>(pNode)->GetExtra();
  1449. }
  1450. HPSOCKET_API BOOL __HP_CALL HP_UdpNode_HasStarted(HP_UdpNode pNode)
  1451. {
  1452. return C_HP_Object::ToSecond<IUdpNode>(pNode)->HasStarted();
  1453. }
  1454. HPSOCKET_API En_HP_ServiceState __HP_CALL HP_UdpNode_GetState(HP_UdpNode pNode)
  1455. {
  1456. return C_HP_Object::ToSecond<IUdpNode>(pNode)->GetState();
  1457. }
  1458. HPSOCKET_API En_HP_SocketError __HP_CALL HP_UdpNode_GetLastError(HP_UdpNode pNode)
  1459. {
  1460. return C_HP_Object::ToSecond<IUdpNode>(pNode)->GetLastError();
  1461. }
  1462. HPSOCKET_API LPCTSTR __HP_CALL HP_UdpNode_GetLastErrorDesc(HP_UdpNode pNode)
  1463. {
  1464. return C_HP_Object::ToSecond<IUdpNode>(pNode)->GetLastErrorDesc();
  1465. }
  1466. HPSOCKET_API BOOL __HP_CALL HP_UdpNode_GetLocalAddress(HP_UdpNode pNode, TCHAR lpszAddress[], int* piAddressLen, USHORT* pusPort)
  1467. {
  1468. return C_HP_Object::ToSecond<IUdpNode>(pNode)->GetLocalAddress(lpszAddress, *piAddressLen, *pusPort);
  1469. }
  1470. HPSOCKET_API BOOL __HP_CALL HP_UdpNode_GetCastAddress(HP_UdpNode pNode, TCHAR lpszAddress[], int* piAddressLen, USHORT* pusPort)
  1471. {
  1472. return C_HP_Object::ToSecond<IUdpNode>(pNode)->GetCastAddress(lpszAddress, *piAddressLen, *pusPort);
  1473. }
  1474. HPSOCKET_API En_HP_CastMode __HP_CALL HP_UdpNode_GetCastMode(HP_UdpNode pNode)
  1475. {
  1476. return C_HP_Object::ToSecond<IUdpNode>(pNode)->GetCastMode();
  1477. }
  1478. HPSOCKET_API BOOL __HP_CALL HP_UdpNode_GetPendingDataLength(HP_UdpNode pNode, int* piPending)
  1479. {
  1480. return C_HP_Object::ToSecond<IUdpNode>(pNode)->GetPendingDataLength(*piPending);
  1481. }
  1482. HPSOCKET_API void __HP_CALL HP_UdpNode_SetMaxDatagramSize(HP_UdpNode pNode, DWORD dwMaxDatagramSize)
  1483. {
  1484. C_HP_Object::ToSecond<IUdpNode>(pNode)->SetMaxDatagramSize(dwMaxDatagramSize);
  1485. }
  1486. HPSOCKET_API DWORD __HP_CALL HP_UdpNode_GetMaxDatagramSize(HP_UdpNode pNode)
  1487. {
  1488. return C_HP_Object::ToSecond<IUdpNode>(pNode)->GetMaxDatagramSize();
  1489. }
  1490. HPSOCKET_API void __HP_CALL HP_UdpNode_SetMultiCastTtl(HP_UdpNode pNode, int iMCTtl)
  1491. {
  1492. C_HP_Object::ToSecond<IUdpNode>(pNode)->SetMultiCastTtl(iMCTtl);
  1493. }
  1494. HPSOCKET_API int __HP_CALL HP_UdpNode_GetMultiCastTtl(HP_UdpNode pNode)
  1495. {
  1496. return C_HP_Object::ToSecond<IUdpNode>(pNode)->GetMultiCastTtl();
  1497. }
  1498. HPSOCKET_API void __HP_CALL HP_UdpNode_SetMultiCastLoop(HP_UdpNode pNode, BOOL bMCLoop)
  1499. {
  1500. C_HP_Object::ToSecond<IUdpNode>(pNode)->SetMultiCastLoop(bMCLoop);
  1501. }
  1502. HPSOCKET_API BOOL __HP_CALL HP_UdpNode_IsMultiCastLoop(HP_UdpNode pNode)
  1503. {
  1504. return C_HP_Object::ToSecond<IUdpNode>(pNode)->IsMultiCastLoop();
  1505. }
  1506. HPSOCKET_API void __HP_CALL HP_UdpNode_SetReuseAddressPolicy(HP_UdpNode pNode, En_HP_ReuseAddressPolicy enReusePolicy)
  1507. {
  1508. C_HP_Object::ToSecond<IUdpNode>(pNode)->SetReuseAddressPolicy(enReusePolicy);
  1509. }
  1510. HPSOCKET_API void __HP_CALL HP_UdpNode_SetWorkerThreadCount(HP_UdpNode pNode, DWORD dwWorkerThreadCount)
  1511. {
  1512. C_HP_Object::ToSecond<IUdpNode>(pNode)->SetWorkerThreadCount(dwWorkerThreadCount);
  1513. }
  1514. HPSOCKET_API void __HP_CALL HP_UdpNode_SetPostReceiveCount(HP_UdpNode pNode, DWORD dwPostReceiveCount)
  1515. {
  1516. C_HP_Object::ToSecond<IUdpNode>(pNode)->SetPostReceiveCount(dwPostReceiveCount);
  1517. }
  1518. HPSOCKET_API void __HP_CALL HP_UdpNode_SetFreeBufferPoolSize(HP_UdpNode pNode, DWORD dwFreeBufferPoolSize)
  1519. {
  1520. C_HP_Object::ToSecond<IUdpNode>(pNode)->SetFreeBufferPoolSize(dwFreeBufferPoolSize);
  1521. }
  1522. HPSOCKET_API void __HP_CALL HP_UdpNode_SetFreeBufferPoolHold(HP_UdpNode pNode, DWORD dwFreeBufferPoolHold)
  1523. {
  1524. C_HP_Object::ToSecond<IUdpNode>(pNode)->SetFreeBufferPoolHold(dwFreeBufferPoolHold);
  1525. }
  1526. HPSOCKET_API En_HP_ReuseAddressPolicy __HP_CALL HP_UdpNode_GetReuseAddressPolicy(HP_UdpNode pNode)
  1527. {
  1528. return C_HP_Object::ToSecond<IUdpNode>(pNode)->GetReuseAddressPolicy();
  1529. }
  1530. HPSOCKET_API DWORD __HP_CALL HP_UdpNode_GetWorkerThreadCount(HP_UdpNode pNode)
  1531. {
  1532. return C_HP_Object::ToSecond<IUdpNode>(pNode)->GetWorkerThreadCount();
  1533. }
  1534. HPSOCKET_API DWORD __HP_CALL HP_UdpNode_GetPostReceiveCount(HP_UdpNode pNode)
  1535. {
  1536. return C_HP_Object::ToSecond<IUdpNode>(pNode)->GetPostReceiveCount();
  1537. }
  1538. HPSOCKET_API DWORD __HP_CALL HP_UdpNode_GetFreeBufferPoolSize(HP_UdpNode pNode)
  1539. {
  1540. return C_HP_Object::ToSecond<IUdpNode>(pNode)->GetFreeBufferPoolSize();
  1541. }
  1542. HPSOCKET_API DWORD __HP_CALL HP_UdpNode_GetFreeBufferPoolHold(HP_UdpNode pNode)
  1543. {
  1544. return C_HP_Object::ToSecond<IUdpNode>(pNode)->GetFreeBufferPoolHold();
  1545. }
  1546. #endif
  1547. /***************************************************************************************/
  1548. /***************************** TCP Pull Server 组件操作方法 *****************************/
  1549. HPSOCKET_API En_HP_FetchResult __HP_CALL HP_TcpPullServer_Fetch(HP_TcpPullServer pServer, HP_CONNID dwConnID, BYTE* pData, int iLength)
  1550. {
  1551. return C_HP_Object::ToFirst<IPullSocket>(pServer)->Fetch(dwConnID, pData, iLength);
  1552. }
  1553. HPSOCKET_API En_HP_FetchResult __HP_CALL HP_TcpPullServer_Peek(HP_TcpPullServer pServer, HP_CONNID dwConnID, BYTE* pData, int iLength)
  1554. {
  1555. return C_HP_Object::ToFirst<IPullSocket>(pServer)->Peek(dwConnID, pData, iLength);
  1556. }
  1557. /***************************************************************************************/
  1558. /***************************** TCP Pull Server 属性访问方法 *****************************/
  1559. /***************************************************************************************/
  1560. /***************************** TCP Pull Agent 组件操作方法 *****************************/
  1561. HPSOCKET_API En_HP_FetchResult __HP_CALL HP_TcpPullAgent_Fetch(HP_TcpPullAgent pAgent, HP_CONNID dwConnID, BYTE* pData, int iLength)
  1562. {
  1563. return C_HP_Object::ToFirst<IPullSocket>(pAgent)->Fetch(dwConnID, pData, iLength);
  1564. }
  1565. HPSOCKET_API En_HP_FetchResult __HP_CALL HP_TcpPullAgent_Peek(HP_TcpPullAgent pAgent, HP_CONNID dwConnID, BYTE* pData, int iLength)
  1566. {
  1567. return C_HP_Object::ToFirst<IPullSocket>(pAgent)->Peek(dwConnID, pData, iLength);
  1568. }
  1569. /***************************************************************************************/
  1570. /***************************** TCP Pull Agent 属性访问方法 *****************************/
  1571. /***************************************************************************************/
  1572. /***************************** TCP Pull Client 组件操作方法 *****************************/
  1573. HPSOCKET_API En_HP_FetchResult __HP_CALL HP_TcpPullClient_Fetch(HP_TcpPullClient pClient, BYTE* pData, int iLength)
  1574. {
  1575. return C_HP_Object::ToFirst<IPullClient>(pClient)->Fetch(pData, iLength);
  1576. }
  1577. HPSOCKET_API En_HP_FetchResult __HP_CALL HP_TcpPullClient_Peek(HP_TcpPullClient pClient, BYTE* pData, int iLength)
  1578. {
  1579. return C_HP_Object::ToFirst<IPullClient>(pClient)->Peek(pData, iLength);
  1580. }
  1581. /***************************************************************************************/
  1582. /***************************** TCP Pull Client 属性访问方法 *****************************/
  1583. /***************************************************************************************/
  1584. /***************************** TCP Pack Server 组件操作方法 *****************************/
  1585. /***************************************************************************************/
  1586. /***************************** TCP Pack Server 属性访问方法 *****************************/
  1587. HPSOCKET_API void __HP_CALL HP_TcpPackServer_SetMaxPackSize(HP_TcpPackServer pServer, DWORD dwMaxPackSize)
  1588. {
  1589. C_HP_Object::ToFirst<IPackSocket>(pServer)->SetMaxPackSize(dwMaxPackSize);
  1590. }
  1591. HPSOCKET_API void __HP_CALL HP_TcpPackServer_SetPackHeaderFlag(HP_TcpPackServer pServer, USHORT usPackHeaderFlag)
  1592. {
  1593. C_HP_Object::ToFirst<IPackSocket>(pServer)->SetPackHeaderFlag(usPackHeaderFlag);
  1594. }
  1595. HPSOCKET_API DWORD __HP_CALL HP_TcpPackServer_GetMaxPackSize(HP_TcpPackServer pServer)
  1596. {
  1597. return C_HP_Object::ToFirst<IPackSocket>(pServer)->GetMaxPackSize();
  1598. }
  1599. HPSOCKET_API USHORT __HP_CALL HP_TcpPackServer_GetPackHeaderFlag(HP_TcpPackServer pServer)
  1600. {
  1601. return C_HP_Object::ToFirst<IPackSocket>(pServer)->GetPackHeaderFlag();
  1602. }
  1603. /***************************************************************************************/
  1604. /***************************** TCP Pack Agent 组件操作方法 *****************************/
  1605. /***************************************************************************************/
  1606. /***************************** TCP Pack Agent 属性访问方法 *****************************/
  1607. HPSOCKET_API void __HP_CALL HP_TcpPackAgent_SetMaxPackSize(HP_TcpPackAgent pAgent, DWORD dwMaxPackSize)
  1608. {
  1609. C_HP_Object::ToFirst<IPackSocket>(pAgent)->SetMaxPackSize(dwMaxPackSize);
  1610. }
  1611. HPSOCKET_API void __HP_CALL HP_TcpPackAgent_SetPackHeaderFlag(HP_TcpPackAgent pAgent, USHORT usPackHeaderFlag)
  1612. {
  1613. C_HP_Object::ToFirst<IPackSocket>(pAgent)->SetPackHeaderFlag(usPackHeaderFlag);
  1614. }
  1615. HPSOCKET_API DWORD __HP_CALL HP_TcpPackAgent_GetMaxPackSize(HP_TcpPackAgent pAgent)
  1616. {
  1617. return C_HP_Object::ToFirst<IPackSocket>(pAgent)->GetMaxPackSize();
  1618. }
  1619. HPSOCKET_API USHORT __HP_CALL HP_TcpPackAgent_GetPackHeaderFlag(HP_TcpPackAgent pAgent)
  1620. {
  1621. return C_HP_Object::ToFirst<IPackSocket>(pAgent)->GetPackHeaderFlag();
  1622. }
  1623. /***************************************************************************************/
  1624. /***************************** TCP Pack Client 组件操作方法 *****************************/
  1625. /***************************************************************************************/
  1626. /***************************** TCP Pack Client 属性访问方法 *****************************/
  1627. HPSOCKET_API void __HP_CALL HP_TcpPackClient_SetMaxPackSize(HP_TcpPackClient pClient, DWORD dwMaxPackSize)
  1628. {
  1629. C_HP_Object::ToFirst<IPackClient>(pClient)->SetMaxPackSize(dwMaxPackSize);
  1630. }
  1631. HPSOCKET_API void __HP_CALL HP_TcpPackClient_SetPackHeaderFlag(HP_TcpPackClient pClient, USHORT usPackHeaderFlag)
  1632. {
  1633. C_HP_Object::ToFirst<IPackClient>(pClient)->SetPackHeaderFlag(usPackHeaderFlag);
  1634. }
  1635. HPSOCKET_API DWORD __HP_CALL HP_TcpPackClient_GetMaxPackSize(HP_TcpPackClient pClient)
  1636. {
  1637. return C_HP_Object::ToFirst<IPackClient>(pClient)->GetMaxPackSize();
  1638. }
  1639. HPSOCKET_API USHORT __HP_CALL HP_TcpPackClient_GetPackHeaderFlag(HP_TcpPackClient pClient)
  1640. {
  1641. return C_HP_Object::ToFirst<IPackClient>(pClient)->GetPackHeaderFlag();
  1642. }
  1643. /*****************************************************************************************************************************************************/
  1644. /*************************************************************** Global Function Exports *************************************************************/
  1645. /*****************************************************************************************************************************************************/
  1646. HPSOCKET_API DWORD __HP_CALL HP_GetHPSocketVersion()
  1647. {
  1648. return ::GetHPSocketVersion();
  1649. }
  1650. HPSOCKET_API LPCTSTR __HP_CALL HP_GetSocketErrorDesc(En_HP_SocketError enCode)
  1651. {
  1652. return ::GetSocketErrorDesc(enCode);
  1653. }
  1654. HPSOCKET_API DWORD __HP_CALL SYS_GetLastError()
  1655. {
  1656. return ::GetLastError();
  1657. }
  1658. HPSOCKET_API LPCSTR __HP_CALL SYS_GetLastErrorStr()
  1659. {
  1660. return ::GetLastErrorStr();
  1661. }
  1662. HPSOCKET_API int __HP_CALL SYS_SetSocketOption(SOCKET sock, int level, int name, LPVOID val, int len)
  1663. {
  1664. return ::SSO_SetSocketOption(sock, level, name, val, len);
  1665. }
  1666. HPSOCKET_API int __HP_CALL SYS_GetSocketOption(SOCKET sock, int level, int name, LPVOID val, int* len)
  1667. {
  1668. return ::SSO_GetSocketOption(sock, level, name, val, len);
  1669. }
  1670. HPSOCKET_API int __HP_CALL SYS_IoctlSocket(SOCKET sock, long cmd, ULONG* arg)
  1671. {
  1672. return ::SSO_IoctlSocket(sock, cmd, arg);
  1673. }
  1674. HPSOCKET_API BOOL __HP_CALL SYS_fcntl_SETFL(FD fd, INT fl, BOOL bSet)
  1675. {
  1676. return ::fcntl_SETFL(fd, fl, bSet);
  1677. }
  1678. HPSOCKET_API int __HP_CALL SYS_SSO_NoBlock(SOCKET sock, BOOL bNoBlock)
  1679. {
  1680. return ::SSO_NoBlock(sock, bNoBlock);
  1681. }
  1682. HPSOCKET_API int __HP_CALL SYS_SSO_NoDelay(SOCKET sock, BOOL bNoDelay)
  1683. {
  1684. return ::SSO_NoDelay(sock, bNoDelay);
  1685. }
  1686. HPSOCKET_API int __HP_CALL SYS_SSO_DontLinger(SOCKET sock, BOOL bDont)
  1687. {
  1688. return ::SSO_DontLinger(sock, bDont);
  1689. }
  1690. HPSOCKET_API int __HP_CALL SYS_SSO_Linger(SOCKET sock, USHORT l_onoff, USHORT l_linger)
  1691. {
  1692. return ::SSO_Linger(sock, l_onoff, l_linger);
  1693. }
  1694. HPSOCKET_API int __HP_CALL SYS_SSO_RecvBuffSize(SOCKET sock, int size)
  1695. {
  1696. return ::SSO_RecvBuffSize(sock, size);
  1697. }
  1698. HPSOCKET_API int __HP_CALL SYS_SSO_SendBuffSize(SOCKET sock, int size)
  1699. {
  1700. return ::SSO_SendBuffSize(sock, size);
  1701. }
  1702. HPSOCKET_API int __HP_CALL SYS_SSO_RecvTimeOut(SOCKET sock, int ms)
  1703. {
  1704. return ::SSO_RecvTimeOut(sock, ms);
  1705. }
  1706. HPSOCKET_API int __HP_CALL SYS_SSO_SendTimeOut(SOCKET sock, int ms)
  1707. {
  1708. return ::SSO_SendTimeOut(sock, ms);
  1709. }
  1710. HPSOCKET_API int __HP_CALL SYS_SSO_ReuseAddress(SOCKET sock, En_HP_ReuseAddressPolicy opt)
  1711. {
  1712. return ::SSO_ReuseAddress(sock, opt);
  1713. }
  1714. HPSOCKET_API BOOL __HP_CALL SYS_GetSocketLocalAddress(SOCKET socket, TCHAR lpszAddress[], int* piAddressLen, USHORT* pusPort)
  1715. {
  1716. return ::GetSocketLocalAddress(socket, lpszAddress, *piAddressLen, *pusPort);
  1717. }
  1718. HPSOCKET_API BOOL __HP_CALL SYS_GetSocketRemoteAddress(SOCKET socket, TCHAR lpszAddress[], int* piAddressLen, USHORT* pusPort)
  1719. {
  1720. return ::GetSocketRemoteAddress(socket, lpszAddress, *piAddressLen, *pusPort);
  1721. }
  1722. HPSOCKET_API BOOL __HP_CALL SYS_EnumHostIPAddresses(LPCTSTR lpszHost, En_HP_IPAddrType enType, HP_LPTIPAddr** lpppIPAddr, int* piIPAddrCount)
  1723. {
  1724. return ::EnumHostIPAddresses(lpszHost, enType, lpppIPAddr, *piIPAddrCount);
  1725. }
  1726. HPSOCKET_API BOOL __HP_CALL SYS_FreeHostIPAddresses(HP_LPTIPAddr* lppIPAddr)
  1727. {
  1728. return ::FreeHostIPAddresses(lppIPAddr);
  1729. }
  1730. HPSOCKET_API BOOL __HP_CALL SYS_IsIPAddress(LPCTSTR lpszAddress, En_HP_IPAddrType* penType)
  1731. {
  1732. return ::IsIPAddress(lpszAddress, penType);
  1733. }
  1734. HPSOCKET_API BOOL __HP_CALL SYS_GetIPAddress(LPCTSTR lpszHost, TCHAR lpszIP[], int* piIPLenth, En_HP_IPAddrType* penType)
  1735. {
  1736. return ::GetIPAddress(lpszHost, lpszIP, *piIPLenth, *penType);
  1737. }
  1738. HPSOCKET_API ULONGLONG __HP_CALL SYS_NToH64(ULONGLONG value)
  1739. {
  1740. return ::NToH64(value);
  1741. }
  1742. HPSOCKET_API ULONGLONG __HP_CALL SYS_HToN64(ULONGLONG value)
  1743. {
  1744. return ::HToN64(value);
  1745. }
  1746. HPSOCKET_API USHORT __HP_CALL SYS_SwapEndian16(USHORT value)
  1747. {
  1748. return ENDIAN_SWAP_16(value);
  1749. }
  1750. HPSOCKET_API DWORD __HP_CALL SYS_SwapEndian32(DWORD value)
  1751. {
  1752. return ENDIAN_SWAP_32(value);
  1753. }
  1754. HPSOCKET_API BOOL __HP_CALL SYS_IsLittleEndian()
  1755. {
  1756. return ::IsLittleEndian();
  1757. }
  1758. HPSOCKET_API LPBYTE __HP_CALL SYS_Malloc(int size)
  1759. {
  1760. return MALLOC(BYTE, size);
  1761. }
  1762. HPSOCKET_API LPBYTE __HP_CALL SYS_Realloc(LPBYTE p, int size)
  1763. {
  1764. return REALLOC(BYTE, p, size);
  1765. }
  1766. HPSOCKET_API VOID __HP_CALL SYS_Free(LPBYTE p)
  1767. {
  1768. FREE(p);
  1769. }
  1770. HPSOCKET_API LPVOID __HP_CALL SYS_Calloc(int number, int size)
  1771. {
  1772. return CALLOC(number, size);
  1773. }
  1774. HPSOCKET_API DWORD __HP_CALL SYS_GuessBase64EncodeBound(DWORD dwSrcLen)
  1775. {
  1776. return ::GuessBase64EncodeBound(dwSrcLen);
  1777. }
  1778. HPSOCKET_API DWORD __HP_CALL SYS_GuessBase64DecodeBound(const BYTE* lpszSrc, DWORD dwSrcLen)
  1779. {
  1780. return ::GuessBase64DecodeBound(lpszSrc, dwSrcLen);
  1781. }
  1782. HPSOCKET_API int __HP_CALL SYS_Base64Encode(const BYTE* lpszSrc, DWORD dwSrcLen, BYTE* lpszDest, DWORD* pdwDestLen)
  1783. {
  1784. return ::Base64Encode(lpszSrc, dwSrcLen, lpszDest, *pdwDestLen);
  1785. }
  1786. HPSOCKET_API int __HP_CALL SYS_Base64Decode(const BYTE* lpszSrc, DWORD dwSrcLen, BYTE* lpszDest, DWORD* pdwDestLen)
  1787. {
  1788. return ::Base64Decode(lpszSrc, dwSrcLen, lpszDest, *pdwDestLen);
  1789. }
  1790. HPSOCKET_API DWORD __HP_CALL SYS_GuessUrlEncodeBound(const BYTE* lpszSrc, DWORD dwSrcLen)
  1791. {
  1792. return ::GuessUrlEncodeBound(lpszSrc, dwSrcLen);
  1793. }
  1794. HPSOCKET_API DWORD __HP_CALL SYS_GuessUrlDecodeBound(const BYTE* lpszSrc, DWORD dwSrcLen)
  1795. {
  1796. return ::GuessUrlDecodeBound(lpszSrc, dwSrcLen);
  1797. }
  1798. HPSOCKET_API int __HP_CALL SYS_UrlEncode(BYTE* lpszSrc, DWORD dwSrcLen, BYTE* lpszDest, DWORD* pdwDestLen)
  1799. {
  1800. return ::UrlEncode(lpszSrc, dwSrcLen, lpszDest, *pdwDestLen);
  1801. }
  1802. HPSOCKET_API int __HP_CALL SYS_UrlDecode(BYTE* lpszSrc, DWORD dwSrcLen, BYTE* lpszDest, DWORD* pdwDestLen)
  1803. {
  1804. return ::UrlDecode(lpszSrc, dwSrcLen, lpszDest, *pdwDestLen);
  1805. }
  1806. #ifdef _ZLIB_SUPPORT
  1807. HPSOCKET_API int __HP_CALL SYS_Compress(const BYTE* lpszSrc, DWORD dwSrcLen, BYTE* lpszDest, DWORD* pdwDestLen)
  1808. {
  1809. return ::Compress(lpszSrc, dwSrcLen, lpszDest, *pdwDestLen);
  1810. }
  1811. 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)
  1812. {
  1813. return ::CompressEx(lpszSrc, dwSrcLen, lpszDest, *pdwDestLen, iLevel, iMethod, iWindowBits, iMemLevel, iStrategy);
  1814. }
  1815. HPSOCKET_API int __HP_CALL SYS_Uncompress(const BYTE* lpszSrc, DWORD dwSrcLen, BYTE* lpszDest, DWORD* pdwDestLen)
  1816. {
  1817. return ::Uncompress(lpszSrc, dwSrcLen, lpszDest, *pdwDestLen);
  1818. }
  1819. HPSOCKET_API int __HP_CALL SYS_UncompressEx(const BYTE* lpszSrc, DWORD dwSrcLen, BYTE* lpszDest, DWORD* pdwDestLen, int iWindowBits)
  1820. {
  1821. return ::UncompressEx(lpszSrc, dwSrcLen, lpszDest, *pdwDestLen, iWindowBits);
  1822. }
  1823. HPSOCKET_API DWORD __HP_CALL SYS_GuessCompressBound(DWORD dwSrcLen, BOOL bGZip)
  1824. {
  1825. return ::GuessCompressBound(dwSrcLen, bGZip);
  1826. }
  1827. HPSOCKET_API int __HP_CALL SYS_GZipCompress(const BYTE* lpszSrc, DWORD dwSrcLen, BYTE* lpszDest, DWORD* pdwDestLen)
  1828. {
  1829. return ::GZipCompress(lpszSrc, dwSrcLen, lpszDest, *pdwDestLen);
  1830. }
  1831. HPSOCKET_API int __HP_CALL SYS_GZipUncompress(const BYTE* lpszSrc, DWORD dwSrcLen, BYTE* lpszDest, DWORD* pdwDestLen)
  1832. {
  1833. return ::GZipUncompress(lpszSrc, dwSrcLen, lpszDest, *pdwDestLen);
  1834. }
  1835. HPSOCKET_API DWORD __HP_CALL SYS_GZipGuessUncompressBound(const BYTE* lpszSrc, DWORD dwSrcLen)
  1836. {
  1837. return ::GZipGuessUncompressBound(lpszSrc, dwSrcLen);
  1838. }
  1839. #endif
  1840. #ifdef _BROTLI_SUPPORT
  1841. HPSOCKET_API int __HP_CALL SYS_BrotliCompress(const BYTE* lpszSrc, DWORD dwSrcLen, BYTE* lpszDest, DWORD* pdwDestLen)
  1842. {
  1843. return ::BrotliCompress(lpszSrc, dwSrcLen, lpszDest, *pdwDestLen);
  1844. }
  1845. HPSOCKET_API int __HP_CALL SYS_BrotliCompressEx(const BYTE* lpszSrc, DWORD dwSrcLen, BYTE* lpszDest, DWORD* pdwDestLen, int iQuality, int iWindow, int iMode)
  1846. {
  1847. return ::BrotliCompressEx(lpszSrc, dwSrcLen, lpszDest, *pdwDestLen, iQuality, iWindow , iMode);
  1848. }
  1849. HPSOCKET_API int __HP_CALL SYS_BrotliUncompress(const BYTE* lpszSrc, DWORD dwSrcLen, BYTE* lpszDest, DWORD* pdwDestLen)
  1850. {
  1851. return ::BrotliUncompress(lpszSrc, dwSrcLen, lpszDest, *pdwDestLen);
  1852. }
  1853. HPSOCKET_API DWORD __HP_CALL SYS_BrotliGuessCompressBound(DWORD dwSrcLen)
  1854. {
  1855. return ::BrotliGuessCompressBound(dwSrcLen);
  1856. }
  1857. #endif
  1858. #ifdef _ICONV_SUPPORT
  1859. HPSOCKET_API BOOL __HP_CALL SYS_CharsetConvert(LPCSTR lpszFromCharset, LPCSTR lpszToCharset, LPCSTR lpszInBuf, int iInBufLen, LPSTR lpszOutBuf, int* piOutBufLen)
  1860. {
  1861. return ::CharsetConvert(lpszFromCharset, lpszToCharset, lpszInBuf, iInBufLen, lpszOutBuf, *piOutBufLen);
  1862. }
  1863. HPSOCKET_API BOOL __HP_CALL SYS_GbkToUnicodeEx(const char szSrc[], int iSrcLength, WCHAR szDest[], int* piDestLength)
  1864. {
  1865. return ::GbkToUnicodeEx(szSrc, iSrcLength, szDest, *piDestLength);
  1866. }
  1867. HPSOCKET_API BOOL __HP_CALL SYS_UnicodeToGbkEx(const WCHAR szSrc[], int iSrcLength, char szDest[], int* piDestLength)
  1868. {
  1869. return ::UnicodeToGbkEx(szSrc, iSrcLength, szDest, *piDestLength);
  1870. }
  1871. HPSOCKET_API BOOL __HP_CALL SYS_Utf8ToUnicodeEx(const char szSrc[], int iSrcLength, WCHAR szDest[], int* piDestLength)
  1872. {
  1873. return ::Utf8ToUnicodeEx(szSrc, iSrcLength, szDest, *piDestLength);
  1874. }
  1875. HPSOCKET_API BOOL __HP_CALL SYS_UnicodeToUtf8Ex(const WCHAR szSrc[], int iSrcLength, char szDest[], int* piDestLength)
  1876. {
  1877. return ::UnicodeToUtf8Ex(szSrc, iSrcLength, szDest, *piDestLength);
  1878. }
  1879. HPSOCKET_API BOOL __HP_CALL SYS_GbkToUtf8Ex(const char szSrc[], int iSrcLength, char szDest[], int* piDestLength)
  1880. {
  1881. return ::GbkToUtf8Ex(szSrc, iSrcLength, szDest, *piDestLength);
  1882. }
  1883. HPSOCKET_API BOOL __HP_CALL SYS_Utf8ToGbkEx(const char szSrc[], int iSrcLength, char szDest[], int* piDestLength)
  1884. {
  1885. return ::Utf8ToGbkEx(szSrc, iSrcLength, szDest, *piDestLength);
  1886. }
  1887. HPSOCKET_API BOOL __HP_CALL SYS_GbkToUnicode(const char szSrc[], WCHAR szDest[], int* piDestLength)
  1888. {
  1889. return ::GbkToUnicode(szSrc, szDest, *piDestLength);
  1890. }
  1891. HPSOCKET_API BOOL __HP_CALL SYS_UnicodeToGbk(const WCHAR szSrc[], char szDest[], int* piDestLength)
  1892. {
  1893. return ::UnicodeToGbk(szSrc, szDest, *piDestLength);
  1894. }
  1895. HPSOCKET_API BOOL __HP_CALL SYS_Utf8ToUnicode(const char szSrc[], WCHAR szDest[], int* piDestLength)
  1896. {
  1897. return ::Utf8ToUnicode(szSrc, szDest, *piDestLength);
  1898. }
  1899. HPSOCKET_API BOOL __HP_CALL SYS_UnicodeToUtf8(const WCHAR szSrc[], char szDest[], int* piDestLength)
  1900. {
  1901. return ::UnicodeToUtf8(szSrc, szDest, *piDestLength);
  1902. }
  1903. HPSOCKET_API BOOL __HP_CALL SYS_GbkToUtf8(const char szSrc[], char szDest[], int* piDestLength)
  1904. {
  1905. return ::GbkToUtf8(szSrc, szDest, *piDestLength);
  1906. }
  1907. HPSOCKET_API BOOL __HP_CALL SYS_Utf8ToGbk(const char szSrc[], char szDest[], int* piDestLength)
  1908. {
  1909. return ::Utf8ToGbk(szSrc, szDest, *piDestLength);
  1910. }
  1911. #endif
  1912. /*****************************************************************************************************************************************************/
  1913. /******************************************************************** HTTP Exports *******************************************************************/
  1914. /*****************************************************************************************************************************************************/
  1915. #ifdef _HTTP_SUPPORT
  1916. typedef C_HP_ObjectT<CHttpServer, IHttpServerListener, sizeof(IComplexHttpResponder)> C_HP_HttpServer;
  1917. typedef C_HP_ObjectT<CHttpAgent, IHttpAgentListener, sizeof(IComplexHttpRequester)> C_HP_HttpAgent;
  1918. typedef C_HP_ObjectT<CHttpClient, IHttpClientListener, sizeof(IHttpRequester)> C_HP_HttpClient;
  1919. typedef C_HP_ObjectT<CHttpSyncClient, IHttpClientListener, sizeof(IHttpSyncRequester)> C_HP_HttpSyncClient;
  1920. /****************************************************/
  1921. /***************** HTTP 对象创建函数 *****************/
  1922. HPSOCKET_API HP_HttpServer __HP_CALL Create_HP_HttpServer(HP_HttpServerListener pListener)
  1923. {
  1924. return (HP_HttpServer)(new C_HP_HttpServer((IHttpServerListener*)pListener));
  1925. }
  1926. HPSOCKET_API HP_HttpAgent __HP_CALL Create_HP_HttpAgent(HP_HttpAgentListener pListener)
  1927. {
  1928. return (HP_HttpAgent)(new C_HP_HttpAgent((IHttpAgentListener*)pListener));
  1929. }
  1930. HPSOCKET_API HP_HttpClient __HP_CALL Create_HP_HttpClient(HP_HttpClientListener pListener)
  1931. {
  1932. return (HP_HttpClient)(new C_HP_HttpClient((IHttpClientListener*)pListener));
  1933. }
  1934. HPSOCKET_API HP_HttpSyncClient __HP_CALL Create_HP_HttpSyncClient(HP_HttpClientListener pListener)
  1935. {
  1936. return (HP_HttpSyncClient)(new C_HP_HttpSyncClient((IHttpClientListener*)pListener));
  1937. }
  1938. HPSOCKET_API void __HP_CALL Destroy_HP_HttpServer(HP_HttpServer pServer)
  1939. {
  1940. delete (C_HP_HttpServer*)pServer;
  1941. }
  1942. HPSOCKET_API void __HP_CALL Destroy_HP_HttpAgent(HP_HttpAgent pAgent)
  1943. {
  1944. delete (C_HP_HttpAgent*)pAgent;
  1945. }
  1946. HPSOCKET_API void __HP_CALL Destroy_HP_HttpClient(HP_HttpClient pClient)
  1947. {
  1948. delete (C_HP_HttpClient*)pClient;
  1949. }
  1950. HPSOCKET_API void __HP_CALL Destroy_HP_HttpSyncClient(HP_HttpSyncClient pClient)
  1951. {
  1952. delete (C_HP_HttpSyncClient*)pClient;
  1953. }
  1954. HPSOCKET_API HP_HttpServerListener __HP_CALL Create_HP_HttpServerListener()
  1955. {
  1956. return (HP_HttpServerListener)(new C_HP_HttpServerListener);
  1957. }
  1958. HPSOCKET_API HP_HttpAgentListener __HP_CALL Create_HP_HttpAgentListener()
  1959. {
  1960. return (HP_HttpAgentListener)(new C_HP_HttpAgentListener);
  1961. }
  1962. HPSOCKET_API HP_HttpClientListener __HP_CALL Create_HP_HttpClientListener()
  1963. {
  1964. return (HP_HttpClientListener)(new C_HP_HttpClientListener);
  1965. }
  1966. HPSOCKET_API void __HP_CALL Destroy_HP_HttpServerListener(HP_HttpServerListener pListener)
  1967. {
  1968. delete (C_HP_HttpServerListener*)pListener;
  1969. }
  1970. HPSOCKET_API void __HP_CALL Destroy_HP_HttpAgentListener(HP_HttpAgentListener pListener)
  1971. {
  1972. delete (C_HP_HttpAgentListener*)pListener;
  1973. }
  1974. HPSOCKET_API void __HP_CALL Destroy_HP_HttpClientListener(HP_HttpClientListener pListener)
  1975. {
  1976. delete (C_HP_HttpClientListener*)pListener;
  1977. }
  1978. /**********************************************************************************/
  1979. /*************************** HTTP Server 回调函数设置方法 **************************/
  1980. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpServer_OnMessageBegin(HP_HttpServerListener pListener, HP_FN_HttpServer_OnMessageBegin fn)
  1981. {
  1982. ((C_HP_HttpServerListener*)pListener)->m_lsnHttp.m_fnOnMessageBegin = fn;
  1983. }
  1984. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpServer_OnRequestLine(HP_HttpServerListener pListener, HP_FN_HttpServer_OnRequestLine fn)
  1985. {
  1986. ((C_HP_HttpServerListener*)pListener)->m_lsnHttp.m_fnOnRequestLine = fn;
  1987. }
  1988. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpServer_OnHeader(HP_HttpServerListener pListener, HP_FN_HttpServer_OnHeader fn)
  1989. {
  1990. ((C_HP_HttpServerListener*)pListener)->m_lsnHttp.m_fnOnHeader = fn;
  1991. }
  1992. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpServer_OnHeadersComplete(HP_HttpServerListener pListener, HP_FN_HttpServer_OnHeadersComplete fn)
  1993. {
  1994. ((C_HP_HttpServerListener*)pListener)->m_lsnHttp.m_fnOnHeadersComplete = fn;
  1995. }
  1996. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpServer_OnBody(HP_HttpServerListener pListener, HP_FN_HttpServer_OnBody fn)
  1997. {
  1998. ((C_HP_HttpServerListener*)pListener)->m_lsnHttp.m_fnOnBody = fn;
  1999. }
  2000. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpServer_OnChunkHeader(HP_HttpServerListener pListener, HP_FN_HttpServer_OnChunkHeader fn)
  2001. {
  2002. ((C_HP_HttpServerListener*)pListener)->m_lsnHttp.m_fnOnChunkHeader = fn;
  2003. }
  2004. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpServer_OnChunkComplete(HP_HttpServerListener pListener, HP_FN_HttpServer_OnChunkComplete fn)
  2005. {
  2006. ((C_HP_HttpServerListener*)pListener)->m_lsnHttp.m_fnOnChunkComplete = fn;
  2007. }
  2008. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpServer_OnMessageComplete(HP_HttpServerListener pListener, HP_FN_HttpServer_OnMessageComplete fn)
  2009. {
  2010. ((C_HP_HttpServerListener*)pListener)->m_lsnHttp.m_fnOnMessageComplete = fn;
  2011. }
  2012. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpServer_OnUpgrade(HP_HttpServerListener pListener, HP_FN_HttpServer_OnUpgrade fn)
  2013. {
  2014. ((C_HP_HttpServerListener*)pListener)->m_lsnHttp.m_fnOnUpgrade = fn;
  2015. }
  2016. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpServer_OnParseError(HP_HttpServerListener pListener, HP_FN_HttpServer_OnParseError fn)
  2017. {
  2018. ((C_HP_HttpServerListener*)pListener)->m_lsnHttp.m_fnOnParseError = fn;
  2019. }
  2020. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpServer_OnWSMessageHeader(HP_HttpServerListener pListener, HP_FN_HttpServer_OnWSMessageHeader fn)
  2021. {
  2022. ((C_HP_HttpServerListener*)pListener)->m_lsnHttp.m_fnOnWSMessageHeader = fn;
  2023. }
  2024. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpServer_OnWSMessageBody(HP_HttpServerListener pListener, HP_FN_HttpServer_OnWSMessageBody fn)
  2025. {
  2026. ((C_HP_HttpServerListener*)pListener)->m_lsnHttp.m_fnOnWSMessageBody = fn;
  2027. }
  2028. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpServer_OnWSMessageComplete(HP_HttpServerListener pListener, HP_FN_HttpServer_OnWSMessageComplete fn)
  2029. {
  2030. ((C_HP_HttpServerListener*)pListener)->m_lsnHttp.m_fnOnWSMessageComplete = fn;
  2031. }
  2032. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpServer_OnPrepareListen(HP_HttpServerListener pListener, HP_FN_HttpServer_OnPrepareListen fn)
  2033. {
  2034. ((C_HP_HttpServerListener*)pListener)->m_lsnServer.m_fnOnPrepareListen = fn;
  2035. }
  2036. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpServer_OnAccept(HP_HttpServerListener pListener, HP_FN_HttpServer_OnAccept fn)
  2037. {
  2038. ((C_HP_HttpServerListener*)pListener)->m_lsnServer.m_fnOnAccept = fn;
  2039. }
  2040. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpServer_OnHandShake(HP_HttpServerListener pListener, HP_FN_HttpServer_OnHandShake fn)
  2041. {
  2042. ((C_HP_HttpServerListener*)pListener)->m_lsnServer.m_fnOnHandShake = fn;
  2043. }
  2044. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpServer_OnSend(HP_HttpServerListener pListener, HP_FN_HttpServer_OnSend fn)
  2045. {
  2046. ((C_HP_HttpServerListener*)pListener)->m_lsnServer.m_fnOnSend = fn;
  2047. }
  2048. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpServer_OnReceive(HP_HttpServerListener pListener, HP_FN_HttpServer_OnReceive fn)
  2049. {
  2050. ((C_HP_HttpServerListener*)pListener)->m_lsnServer.m_fnOnReceive = fn;
  2051. }
  2052. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpServer_OnClose(HP_HttpServerListener pListener, HP_FN_HttpServer_OnClose fn)
  2053. {
  2054. ((C_HP_HttpServerListener*)pListener)->m_lsnServer.m_fnOnClose = fn;
  2055. }
  2056. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpServer_OnShutdown(HP_HttpServerListener pListener, HP_FN_HttpServer_OnShutdown fn)
  2057. {
  2058. ((C_HP_HttpServerListener*)pListener)->m_lsnServer.m_fnOnShutdown = fn;
  2059. }
  2060. /**********************************************************************************/
  2061. /**************************** HTTP Agent 回调函数设置方法 **************************/
  2062. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpAgent_OnMessageBegin(HP_HttpAgentListener pListener, HP_FN_HttpAgent_OnMessageBegin fn)
  2063. {
  2064. ((C_HP_HttpAgentListener*)pListener)->m_lsnHttp.m_fnOnMessageBegin = fn;
  2065. }
  2066. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpAgent_OnStatusLine(HP_HttpAgentListener pListener, HP_FN_HttpAgent_OnStatusLine fn)
  2067. {
  2068. ((C_HP_HttpAgentListener*)pListener)->m_lsnHttp.m_fnOnStatusLine = fn;
  2069. }
  2070. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpAgent_OnHeader(HP_HttpAgentListener pListener, HP_FN_HttpAgent_OnHeader fn)
  2071. {
  2072. ((C_HP_HttpAgentListener*)pListener)->m_lsnHttp.m_fnOnHeader = fn;
  2073. }
  2074. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpAgent_OnHeadersComplete(HP_HttpAgentListener pListener, HP_FN_HttpAgent_OnHeadersComplete fn)
  2075. {
  2076. ((C_HP_HttpAgentListener*)pListener)->m_lsnHttp.m_fnOnHeadersComplete = fn;
  2077. }
  2078. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpAgent_OnBody(HP_HttpAgentListener pListener, HP_FN_HttpAgent_OnBody fn)
  2079. {
  2080. ((C_HP_HttpAgentListener*)pListener)->m_lsnHttp.m_fnOnBody = fn;
  2081. }
  2082. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpAgent_OnChunkHeader(HP_HttpAgentListener pListener, HP_FN_HttpAgent_OnChunkHeader fn)
  2083. {
  2084. ((C_HP_HttpAgentListener*)pListener)->m_lsnHttp.m_fnOnChunkHeader = fn;
  2085. }
  2086. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpAgent_OnChunkComplete(HP_HttpAgentListener pListener, HP_FN_HttpAgent_OnChunkComplete fn)
  2087. {
  2088. ((C_HP_HttpAgentListener*)pListener)->m_lsnHttp.m_fnOnChunkComplete = fn;
  2089. }
  2090. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpAgent_OnMessageComplete(HP_HttpAgentListener pListener, HP_FN_HttpAgent_OnMessageComplete fn)
  2091. {
  2092. ((C_HP_HttpAgentListener*)pListener)->m_lsnHttp.m_fnOnMessageComplete = fn;
  2093. }
  2094. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpAgent_OnUpgrade(HP_HttpAgentListener pListener, HP_FN_HttpAgent_OnUpgrade fn)
  2095. {
  2096. ((C_HP_HttpAgentListener*)pListener)->m_lsnHttp.m_fnOnUpgrade = fn;
  2097. }
  2098. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpAgent_OnParseError(HP_HttpAgentListener pListener, HP_FN_HttpAgent_OnParseError fn)
  2099. {
  2100. ((C_HP_HttpAgentListener*)pListener)->m_lsnHttp.m_fnOnParseError = fn;
  2101. }
  2102. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpAgent_OnWSMessageHeader(HP_HttpAgentListener pListener, HP_FN_HttpAgent_OnWSMessageHeader fn)
  2103. {
  2104. ((C_HP_HttpAgentListener*)pListener)->m_lsnHttp.m_fnOnWSMessageHeader = fn;
  2105. }
  2106. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpAgent_OnWSMessageBody(HP_HttpAgentListener pListener, HP_FN_HttpAgent_OnWSMessageBody fn)
  2107. {
  2108. ((C_HP_HttpAgentListener*)pListener)->m_lsnHttp.m_fnOnWSMessageBody = fn;
  2109. }
  2110. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpAgent_OnWSMessageComplete(HP_HttpAgentListener pListener, HP_FN_HttpAgent_OnWSMessageComplete fn)
  2111. {
  2112. ((C_HP_HttpAgentListener*)pListener)->m_lsnHttp.m_fnOnWSMessageComplete = fn;
  2113. }
  2114. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpAgent_OnPrepareConnect(HP_HttpAgentListener pListener, HP_FN_HttpAgent_OnPrepareConnect fn)
  2115. {
  2116. ((C_HP_HttpAgentListener*)pListener)->m_lsnAgent.m_fnOnPrepareConnect = fn;
  2117. }
  2118. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpAgent_OnConnect(HP_HttpAgentListener pListener, HP_FN_HttpAgent_OnConnect fn)
  2119. {
  2120. ((C_HP_HttpAgentListener*)pListener)->m_lsnAgent.m_fnOnConnect = fn;
  2121. }
  2122. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpAgent_OnHandShake(HP_HttpAgentListener pListener, HP_FN_HttpAgent_OnHandShake fn)
  2123. {
  2124. ((C_HP_HttpAgentListener*)pListener)->m_lsnAgent.m_fnOnHandShake = fn;
  2125. }
  2126. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpAgent_OnReceive(HP_HttpAgentListener pListener, HP_FN_HttpAgent_OnReceive fn)
  2127. {
  2128. ((C_HP_HttpAgentListener*)pListener)->m_lsnAgent.m_fnOnReceive = fn;
  2129. }
  2130. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpAgent_OnSend(HP_HttpAgentListener pListener, HP_FN_HttpAgent_OnSend fn)
  2131. {
  2132. ((C_HP_HttpAgentListener*)pListener)->m_lsnAgent.m_fnOnSend = fn;
  2133. }
  2134. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpAgent_OnClose(HP_HttpAgentListener pListener, HP_FN_HttpAgent_OnClose fn)
  2135. {
  2136. ((C_HP_HttpAgentListener*)pListener)->m_lsnAgent.m_fnOnClose = fn;
  2137. }
  2138. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpAgent_OnShutdown(HP_HttpAgentListener pListener, HP_FN_HttpAgent_OnShutdown fn)
  2139. {
  2140. ((C_HP_HttpAgentListener*)pListener)->m_lsnAgent.m_fnOnShutdown = fn;
  2141. }
  2142. /**********************************************************************************/
  2143. /*************************** HTTP Client 回调函数设置方法 **************************/
  2144. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpClient_OnMessageBegin(HP_HttpClientListener pListener, HP_FN_HttpClient_OnMessageBegin fn)
  2145. {
  2146. ((C_HP_HttpClientListener*)pListener)->m_lsnHttp.m_fnOnMessageBegin = fn;
  2147. }
  2148. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpClient_OnStatusLine(HP_HttpClientListener pListener, HP_FN_HttpClient_OnStatusLine fn)
  2149. {
  2150. ((C_HP_HttpClientListener*)pListener)->m_lsnHttp.m_fnOnStatusLine = fn;
  2151. }
  2152. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpClient_OnHeader(HP_HttpClientListener pListener, HP_FN_HttpClient_OnHeader fn)
  2153. {
  2154. ((C_HP_HttpClientListener*)pListener)->m_lsnHttp.m_fnOnHeader = fn;
  2155. }
  2156. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpClient_OnHeadersComplete(HP_HttpClientListener pListener, HP_FN_HttpClient_OnHeadersComplete fn)
  2157. {
  2158. ((C_HP_HttpClientListener*)pListener)->m_lsnHttp.m_fnOnHeadersComplete = fn;
  2159. }
  2160. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpClient_OnBody(HP_HttpClientListener pListener, HP_FN_HttpClient_OnBody fn)
  2161. {
  2162. ((C_HP_HttpClientListener*)pListener)->m_lsnHttp.m_fnOnBody = fn;
  2163. }
  2164. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpClient_OnChunkHeader(HP_HttpClientListener pListener, HP_FN_HttpClient_OnChunkHeader fn)
  2165. {
  2166. ((C_HP_HttpClientListener*)pListener)->m_lsnHttp.m_fnOnChunkHeader = fn;
  2167. }
  2168. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpClient_OnChunkComplete(HP_HttpClientListener pListener, HP_FN_HttpClient_OnChunkComplete fn)
  2169. {
  2170. ((C_HP_HttpClientListener*)pListener)->m_lsnHttp.m_fnOnChunkComplete = fn;
  2171. }
  2172. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpClient_OnMessageComplete(HP_HttpClientListener pListener, HP_FN_HttpClient_OnMessageComplete fn)
  2173. {
  2174. ((C_HP_HttpClientListener*)pListener)->m_lsnHttp.m_fnOnMessageComplete = fn;
  2175. }
  2176. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpClient_OnUpgrade(HP_HttpClientListener pListener, HP_FN_HttpClient_OnUpgrade fn)
  2177. {
  2178. ((C_HP_HttpClientListener*)pListener)->m_lsnHttp.m_fnOnUpgrade = fn;
  2179. }
  2180. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpClient_OnParseError(HP_HttpClientListener pListener, HP_FN_HttpClient_OnParseError fn)
  2181. {
  2182. ((C_HP_HttpClientListener*)pListener)->m_lsnHttp.m_fnOnParseError = fn;
  2183. }
  2184. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpClient_OnWSMessageHeader(HP_HttpClientListener pListener, HP_FN_HttpClient_OnWSMessageHeader fn)
  2185. {
  2186. ((C_HP_HttpClientListener*)pListener)->m_lsnHttp.m_fnOnWSMessageHeader = fn;
  2187. }
  2188. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpClient_OnWSMessageBody(HP_HttpClientListener pListener, HP_FN_HttpClient_OnWSMessageBody fn)
  2189. {
  2190. ((C_HP_HttpClientListener*)pListener)->m_lsnHttp.m_fnOnWSMessageBody = fn;
  2191. }
  2192. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpClient_OnWSMessageComplete(HP_HttpClientListener pListener, HP_FN_HttpClient_OnWSMessageComplete fn)
  2193. {
  2194. ((C_HP_HttpClientListener*)pListener)->m_lsnHttp.m_fnOnWSMessageComplete = fn;
  2195. }
  2196. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpClient_OnPrepareConnect(HP_HttpClientListener pListener, HP_FN_HttpClient_OnPrepareConnect fn)
  2197. {
  2198. ((C_HP_HttpClientListener*)pListener)->m_lsnClient.m_fnOnPrepareConnect = fn;
  2199. }
  2200. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpClient_OnConnect(HP_HttpClientListener pListener, HP_FN_HttpClient_OnConnect fn)
  2201. {
  2202. ((C_HP_HttpClientListener*)pListener)->m_lsnClient.m_fnOnConnect = fn;
  2203. }
  2204. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpClient_OnHandShake(HP_HttpClientListener pListener, HP_FN_HttpClient_OnHandShake fn)
  2205. {
  2206. ((C_HP_HttpClientListener*)pListener)->m_lsnClient.m_fnOnHandShake = fn;
  2207. }
  2208. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpClient_OnReceive(HP_HttpClientListener pListener, HP_FN_HttpClient_OnReceive fn)
  2209. {
  2210. ((C_HP_HttpClientListener*)pListener)->m_lsnClient.m_fnOnReceive = fn;
  2211. }
  2212. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpClient_OnSend(HP_HttpClientListener pListener, HP_FN_HttpClient_OnSend fn)
  2213. {
  2214. ((C_HP_HttpClientListener*)pListener)->m_lsnClient.m_fnOnSend = fn;
  2215. }
  2216. HPSOCKET_API void __HP_CALL HP_Set_FN_HttpClient_OnClose(HP_HttpClientListener pListener, HP_FN_HttpClient_OnClose fn)
  2217. {
  2218. ((C_HP_HttpClientListener*)pListener)->m_lsnClient.m_fnOnClose = fn;
  2219. }
  2220. /**************************************************************************/
  2221. /*************************** HTTP Server 操作方法 **************************/
  2222. 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)
  2223. {
  2224. return C_HP_Object::ToFirst<IHttpServer>(pServer)->SendResponse(dwConnID, usStatusCode, lpszDesc, lpHeaders, iHeaderCount, pData, iLength);
  2225. }
  2226. 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)
  2227. {
  2228. return C_HP_Object::ToFirst<IHttpServer>(pServer)->SendLocalFile(dwConnID, lpszFileName, usStatusCode, lpszDesc, lpHeaders, iHeaderCount);
  2229. }
  2230. HPSOCKET_API BOOL __HP_CALL HP_HttpServer_SendChunkData(HP_HttpServer pServer, HP_CONNID dwConnID, const BYTE* pData, int iLength, LPCSTR lpszExtensions)
  2231. {
  2232. return C_HP_Object::ToFirst<IHttpServer>(pServer)->SendChunkData(dwConnID, pData, iLength, lpszExtensions);
  2233. }
  2234. 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)
  2235. {
  2236. return C_HP_Object::ToFirst<IHttpServer>(pServer)->SendWSMessage(dwConnID, bFinal, iReserved, iOperationCode, pData, iLength, ullBodyLen);
  2237. }
  2238. HPSOCKET_API BOOL __HP_CALL HP_HttpServer_Release(HP_HttpServer pServer, HP_CONNID dwConnID)
  2239. {
  2240. return C_HP_Object::ToFirst<IHttpServer>(pServer)->Release(dwConnID);
  2241. }
  2242. HPSOCKET_API BOOL __HP_CALL HP_HttpServer_StartHttp(HP_HttpServer pServer, HP_CONNID dwConnID)
  2243. {
  2244. return C_HP_Object::ToFirst<IHttpServer>(pServer)->StartHttp(dwConnID);
  2245. }
  2246. /******************************************************************************/
  2247. /*************************** HTTP Server 属性访问方法 **************************/
  2248. HPSOCKET_API void __HP_CALL HP_HttpServer_SetReleaseDelay(HP_HttpServer pServer, DWORD dwReleaseDelay)
  2249. {
  2250. C_HP_Object::ToFirst<IHttpServer>(pServer)->SetReleaseDelay(dwReleaseDelay);
  2251. }
  2252. HPSOCKET_API DWORD __HP_CALL HP_HttpServer_GetReleaseDelay(HP_HttpServer pServer)
  2253. {
  2254. return C_HP_Object::ToFirst<IHttpServer>(pServer)->GetReleaseDelay();
  2255. }
  2256. HPSOCKET_API USHORT __HP_CALL HP_HttpServer_GetUrlFieldSet(HP_HttpServer pServer, HP_CONNID dwConnID)
  2257. {
  2258. return C_HP_Object::ToFirst<IHttpServer>(pServer)->GetUrlFieldSet(dwConnID);
  2259. }
  2260. HPSOCKET_API LPCSTR __HP_CALL HP_HttpServer_GetUrlField(HP_HttpServer pServer, HP_CONNID dwConnID, En_HP_HttpUrlField enField)
  2261. {
  2262. return C_HP_Object::ToFirst<IHttpServer>(pServer)->GetUrlField(dwConnID, enField);
  2263. }
  2264. HPSOCKET_API LPCSTR __HP_CALL HP_HttpServer_GetMethod(HP_HttpServer pServer, HP_CONNID dwConnID)
  2265. {
  2266. return C_HP_Object::ToFirst<IHttpServer>(pServer)->GetMethod(dwConnID);
  2267. }
  2268. HPSOCKET_API void __HP_CALL HP_HttpServer_SetLocalVersion(HP_HttpServer pServer, En_HP_HttpVersion usVersion)
  2269. {
  2270. C_HP_Object::ToFirst<IHttpServer>(pServer)->SetLocalVersion(usVersion);
  2271. }
  2272. HPSOCKET_API En_HP_HttpVersion __HP_CALL HP_HttpServer_GetLocalVersion(HP_HttpServer pServer)
  2273. {
  2274. return C_HP_Object::ToFirst<IHttpServer>(pServer)->GetLocalVersion();
  2275. }
  2276. HPSOCKET_API BOOL __HP_CALL HP_HttpServer_IsUpgrade(HP_HttpServer pServer, HP_CONNID dwConnID)
  2277. {
  2278. return C_HP_Object::ToFirst<IHttpServer>(pServer)->IsUpgrade(dwConnID);
  2279. }
  2280. HPSOCKET_API BOOL __HP_CALL HP_HttpServer_IsKeepAlive(HP_HttpServer pServer, HP_CONNID dwConnID)
  2281. {
  2282. return C_HP_Object::ToFirst<IHttpServer>(pServer)->IsKeepAlive(dwConnID);
  2283. }
  2284. HPSOCKET_API USHORT __HP_CALL HP_HttpServer_GetVersion(HP_HttpServer pServer, HP_CONNID dwConnID)
  2285. {
  2286. return C_HP_Object::ToFirst<IHttpServer>(pServer)->GetVersion(dwConnID);
  2287. }
  2288. HPSOCKET_API LPCSTR __HP_CALL HP_HttpServer_GetHost(HP_HttpServer pServer, HP_CONNID dwConnID)
  2289. {
  2290. return C_HP_Object::ToFirst<IHttpServer>(pServer)->GetHost(dwConnID);
  2291. }
  2292. HPSOCKET_API ULONGLONG __HP_CALL HP_HttpServer_GetContentLength(HP_HttpServer pServer, HP_CONNID dwConnID)
  2293. {
  2294. return C_HP_Object::ToFirst<IHttpServer>(pServer)->GetContentLength(dwConnID);
  2295. }
  2296. HPSOCKET_API LPCSTR __HP_CALL HP_HttpServer_GetContentType(HP_HttpServer pServer, HP_CONNID dwConnID)
  2297. {
  2298. return C_HP_Object::ToFirst<IHttpServer>(pServer)->GetContentType(dwConnID);
  2299. }
  2300. HPSOCKET_API LPCSTR __HP_CALL HP_HttpServer_GetContentEncoding(HP_HttpServer pServer, HP_CONNID dwConnID)
  2301. {
  2302. return C_HP_Object::ToFirst<IHttpServer>(pServer)->GetContentEncoding(dwConnID);
  2303. }
  2304. HPSOCKET_API LPCSTR __HP_CALL HP_HttpServer_GetTransferEncoding(HP_HttpServer pServer, HP_CONNID dwConnID)
  2305. {
  2306. return C_HP_Object::ToFirst<IHttpServer>(pServer)->GetTransferEncoding(dwConnID);
  2307. }
  2308. HPSOCKET_API En_HP_HttpUpgradeType __HP_CALL HP_HttpServer_GetUpgradeType(HP_HttpServer pServer, HP_CONNID dwConnID)
  2309. {
  2310. return C_HP_Object::ToFirst<IHttpServer>(pServer)->GetUpgradeType(dwConnID);
  2311. }
  2312. HPSOCKET_API USHORT __HP_CALL HP_HttpServer_GetParseErrorCode(HP_HttpServer pServer, HP_CONNID dwConnID, LPCSTR* lpszErrorDesc)
  2313. {
  2314. return C_HP_Object::ToFirst<IHttpServer>(pServer)->GetParseErrorCode(dwConnID, lpszErrorDesc);
  2315. }
  2316. HPSOCKET_API BOOL __HP_CALL HP_HttpServer_GetHeader(HP_HttpServer pServer, HP_CONNID dwConnID, LPCSTR lpszName, LPCSTR* lpszValue)
  2317. {
  2318. return C_HP_Object::ToFirst<IHttpServer>(pServer)->GetHeader(dwConnID, lpszName, lpszValue);
  2319. }
  2320. HPSOCKET_API BOOL __HP_CALL HP_HttpServer_GetHeaders(HP_HttpServer pServer, HP_CONNID dwConnID, LPCSTR lpszName, LPCSTR lpszValue[], DWORD* pdwCount)
  2321. {
  2322. return C_HP_Object::ToFirst<IHttpServer>(pServer)->GetHeaders(dwConnID, lpszName, lpszValue, *pdwCount);
  2323. }
  2324. HPSOCKET_API BOOL __HP_CALL HP_HttpServer_GetAllHeaders(HP_HttpServer pServer, HP_CONNID dwConnID, HP_THeader lpHeaders[], DWORD* pdwCount)
  2325. {
  2326. return C_HP_Object::ToFirst<IHttpServer>(pServer)->GetAllHeaders(dwConnID, lpHeaders, *pdwCount);
  2327. }
  2328. HPSOCKET_API BOOL __HP_CALL HP_HttpServer_GetAllHeaderNames(HP_HttpServer pServer, HP_CONNID dwConnID, LPCSTR lpszName[], DWORD* pdwCount)
  2329. {
  2330. return C_HP_Object::ToFirst<IHttpServer>(pServer)->GetAllHeaderNames(dwConnID, lpszName, *pdwCount);
  2331. }
  2332. HPSOCKET_API BOOL __HP_CALL HP_HttpServer_GetCookie(HP_HttpServer pServer, HP_CONNID dwConnID, LPCSTR lpszName, LPCSTR* lpszValue)
  2333. {
  2334. return C_HP_Object::ToFirst<IHttpServer>(pServer)->GetCookie(dwConnID, lpszName, lpszValue);
  2335. }
  2336. HPSOCKET_API BOOL __HP_CALL HP_HttpServer_GetAllCookies(HP_HttpServer pServer, HP_CONNID dwConnID, HP_TCookie lpCookies[], DWORD* pdwCount)
  2337. {
  2338. return C_HP_Object::ToFirst<IHttpServer>(pServer)->GetAllCookies(dwConnID, lpCookies, *pdwCount);
  2339. }
  2340. 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)
  2341. {
  2342. return C_HP_Object::ToFirst<IHttpServer>(pServer)->GetWSMessageState(dwConnID, lpbFinal, lpiReserved, lpiOperationCode, lpszMask, lpullBodyLen, lpullBodyRemain);
  2343. }
  2344. HPSOCKET_API void __HP_CALL HP_HttpServer_SetHttpAutoStart(HP_HttpServer pServer, BOOL bAutoStart)
  2345. {
  2346. C_HP_Object::ToFirst<IHttpServer>(pServer)->SetHttpAutoStart(bAutoStart);
  2347. }
  2348. HPSOCKET_API BOOL __HP_CALL HP_HttpServer_IsHttpAutoStart(HP_HttpServer pServer)
  2349. {
  2350. return C_HP_Object::ToFirst<IHttpServer>(pServer)->IsHttpAutoStart();
  2351. }
  2352. /**************************************************************************/
  2353. /*************************** HTTP Agent 操作方法 ***************************/
  2354. 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)
  2355. {
  2356. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->SendRequest(dwConnID, lpszMethod, lpszPath, lpHeaders, iHeaderCount, pBody, iLength);
  2357. }
  2358. 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)
  2359. {
  2360. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->SendLocalFile(dwConnID, lpszFileName, lpszMethod, lpszPath, lpHeaders, iHeaderCount);
  2361. }
  2362. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_SendChunkData(HP_HttpAgent pAgent, HP_CONNID dwConnID, const BYTE* pData, int iLength, LPCSTR lpszExtensions)
  2363. {
  2364. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->SendChunkData(dwConnID, pData, iLength, lpszExtensions);
  2365. }
  2366. 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)
  2367. {
  2368. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->SendPost(dwConnID, lpszPath, lpHeaders, iHeaderCount, pBody, iLength);
  2369. }
  2370. 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)
  2371. {
  2372. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->SendPut(dwConnID, lpszPath, lpHeaders, iHeaderCount, pBody, iLength);
  2373. }
  2374. 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)
  2375. {
  2376. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->SendPatch(dwConnID, lpszPath, lpHeaders, iHeaderCount, pBody, iLength);
  2377. }
  2378. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_SendGet(HP_HttpAgent pAgent, HP_CONNID dwConnID, LPCSTR lpszPath, const HP_THeader lpHeaders[], int iHeaderCount)
  2379. {
  2380. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->SendGet(dwConnID, lpszPath, lpHeaders, iHeaderCount);
  2381. }
  2382. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_SendDelete(HP_HttpAgent pAgent, HP_CONNID dwConnID, LPCSTR lpszPath, const HP_THeader lpHeaders[], int iHeaderCount)
  2383. {
  2384. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->SendDelete(dwConnID, lpszPath, lpHeaders, iHeaderCount);
  2385. }
  2386. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_SendHead(HP_HttpAgent pAgent, HP_CONNID dwConnID, LPCSTR lpszPath, const HP_THeader lpHeaders[], int iHeaderCount)
  2387. {
  2388. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->SendHead(dwConnID, lpszPath, lpHeaders, iHeaderCount);
  2389. }
  2390. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_SendTrace(HP_HttpAgent pAgent, HP_CONNID dwConnID, LPCSTR lpszPath, const HP_THeader lpHeaders[], int iHeaderCount)
  2391. {
  2392. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->SendTrace(dwConnID, lpszPath, lpHeaders, iHeaderCount);
  2393. }
  2394. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_SendOptions(HP_HttpAgent pAgent, HP_CONNID dwConnID, LPCSTR lpszPath, const HP_THeader lpHeaders[], int iHeaderCount)
  2395. {
  2396. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->SendOptions(dwConnID, lpszPath, lpHeaders, iHeaderCount);
  2397. }
  2398. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_SendConnect(HP_HttpAgent pAgent, HP_CONNID dwConnID, LPCSTR lpszHost, const HP_THeader lpHeaders[], int iHeaderCount)
  2399. {
  2400. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->SendConnect(dwConnID, lpszHost, lpHeaders, iHeaderCount);
  2401. }
  2402. 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)
  2403. {
  2404. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->SendWSMessage(dwConnID, bFinal, iReserved, iOperationCode, lpszMask, pData, iLength, ullBodyLen);
  2405. }
  2406. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_StartHttp(HP_HttpAgent pAgent, HP_CONNID dwConnID)
  2407. {
  2408. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->StartHttp(dwConnID);
  2409. }
  2410. /******************************************************************************/
  2411. /*************************** HTTP Agent 属性访问方法 ***************************/
  2412. HPSOCKET_API USHORT __HP_CALL HP_HttpAgent_GetStatusCode(HP_HttpAgent pAgent, HP_CONNID dwConnID)
  2413. {
  2414. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->GetStatusCode(dwConnID);
  2415. }
  2416. HPSOCKET_API void __HP_CALL HP_HttpAgent_SetLocalVersion(HP_HttpAgent pAgent, En_HP_HttpVersion usVersion)
  2417. {
  2418. C_HP_Object::ToFirst<IHttpAgent>(pAgent)->SetLocalVersion(usVersion);
  2419. }
  2420. HPSOCKET_API En_HP_HttpVersion __HP_CALL HP_HttpAgent_GetLocalVersion(HP_HttpAgent pAgent)
  2421. {
  2422. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->GetLocalVersion();
  2423. }
  2424. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_IsUpgrade(HP_HttpAgent pAgent, HP_CONNID dwConnID)
  2425. {
  2426. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->IsUpgrade(dwConnID);
  2427. }
  2428. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_IsKeepAlive(HP_HttpAgent pAgent, HP_CONNID dwConnID)
  2429. {
  2430. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->IsKeepAlive(dwConnID);
  2431. }
  2432. HPSOCKET_API USHORT __HP_CALL HP_HttpAgent_GetVersion(HP_HttpAgent pAgent, HP_CONNID dwConnID)
  2433. {
  2434. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->GetVersion(dwConnID);
  2435. }
  2436. HPSOCKET_API ULONGLONG __HP_CALL HP_HttpAgent_GetContentLength(HP_HttpAgent pAgent, HP_CONNID dwConnID)
  2437. {
  2438. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->GetContentLength(dwConnID);
  2439. }
  2440. HPSOCKET_API LPCSTR __HP_CALL HP_HttpAgent_GetContentType(HP_HttpAgent pAgent, HP_CONNID dwConnID)
  2441. {
  2442. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->GetContentType(dwConnID);
  2443. }
  2444. HPSOCKET_API LPCSTR __HP_CALL HP_HttpAgent_GetContentEncoding(HP_HttpAgent pAgent, HP_CONNID dwConnID)
  2445. {
  2446. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->GetContentEncoding(dwConnID);
  2447. }
  2448. HPSOCKET_API LPCSTR __HP_CALL HP_HttpAgent_GetTransferEncoding(HP_HttpAgent pAgent, HP_CONNID dwConnID)
  2449. {
  2450. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->GetTransferEncoding(dwConnID);
  2451. }
  2452. HPSOCKET_API En_HP_HttpUpgradeType __HP_CALL HP_HttpAgent_GetUpgradeType(HP_HttpAgent pAgent, HP_CONNID dwConnID)
  2453. {
  2454. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->GetUpgradeType(dwConnID);
  2455. }
  2456. HPSOCKET_API USHORT __HP_CALL HP_HttpAgent_GetParseErrorCode(HP_HttpAgent pAgent, HP_CONNID dwConnID, LPCSTR* lpszErrorDesc)
  2457. {
  2458. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->GetParseErrorCode(dwConnID, lpszErrorDesc);
  2459. }
  2460. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_GetHeader(HP_HttpAgent pAgent, HP_CONNID dwConnID, LPCSTR lpszName, LPCSTR* lpszValue)
  2461. {
  2462. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->GetHeader(dwConnID, lpszName, lpszValue);
  2463. }
  2464. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_GetHeaders(HP_HttpAgent pAgent, HP_CONNID dwConnID, LPCSTR lpszName, LPCSTR lpszValue[], DWORD* pdwCount)
  2465. {
  2466. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->GetHeaders(dwConnID, lpszName, lpszValue, *pdwCount);
  2467. }
  2468. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_GetAllHeaders(HP_HttpAgent pAgent, HP_CONNID dwConnID, HP_THeader lpHeaders[], DWORD* pdwCount)
  2469. {
  2470. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->GetAllHeaders(dwConnID, lpHeaders, *pdwCount);
  2471. }
  2472. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_GetAllHeaderNames(HP_HttpAgent pAgent, HP_CONNID dwConnID, LPCSTR lpszName[], DWORD* pdwCount)
  2473. {
  2474. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->GetAllHeaderNames(dwConnID, lpszName, *pdwCount);
  2475. }
  2476. HPSOCKET_API void __HP_CALL HP_HttpAgent_SetUseCookie(HP_HttpAgent pAgent, BOOL bUseCookie)
  2477. {
  2478. C_HP_Object::ToFirst<IHttpAgent>(pAgent)->SetUseCookie(bUseCookie);
  2479. }
  2480. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_IsUseCookie(HP_HttpAgent pAgent)
  2481. {
  2482. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->IsUseCookie();
  2483. }
  2484. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_GetCookie(HP_HttpAgent pAgent, HP_CONNID dwConnID, LPCSTR lpszName, LPCSTR* lpszValue)
  2485. {
  2486. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->GetCookie(dwConnID, lpszName, lpszValue);
  2487. }
  2488. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_GetAllCookies(HP_HttpAgent pAgent, HP_CONNID dwConnID, HP_TCookie lpCookies[], DWORD* pdwCount)
  2489. {
  2490. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->GetAllCookies(dwConnID, lpCookies, *pdwCount);
  2491. }
  2492. 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)
  2493. {
  2494. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->GetWSMessageState(dwConnID, lpbFinal, lpiReserved, lpiOperationCode, lpszMask, lpullBodyLen, lpullBodyRemain);
  2495. }
  2496. HPSOCKET_API void __HP_CALL HP_HttpAgent_SetHttpAutoStart(HP_HttpAgent pAgent, BOOL bAutoStart)
  2497. {
  2498. C_HP_Object::ToFirst<IHttpAgent>(pAgent)->SetHttpAutoStart(bAutoStart);
  2499. }
  2500. HPSOCKET_API BOOL __HP_CALL HP_HttpAgent_IsHttpAutoStart(HP_HttpAgent pAgent)
  2501. {
  2502. return C_HP_Object::ToFirst<IHttpAgent>(pAgent)->IsHttpAutoStart();
  2503. }
  2504. /**************************************************************************/
  2505. /*************************** HTTP Client 操作方法 **************************/
  2506. 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)
  2507. {
  2508. return C_HP_Object::ToFirst<IHttpClient>(pClient)->SendRequest(lpszMethod, lpszPath, lpHeaders, iHeaderCount, pBody, iLength);
  2509. }
  2510. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_SendLocalFile(HP_HttpClient pClient, LPCSTR lpszFileName, LPCSTR lpszMethod, LPCSTR lpszPath, const HP_THeader lpHeaders[], int iHeaderCount)
  2511. {
  2512. return C_HP_Object::ToFirst<IHttpClient>(pClient)->SendLocalFile(lpszFileName, lpszMethod, lpszPath, lpHeaders, iHeaderCount);
  2513. }
  2514. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_SendChunkData(HP_HttpClient pClient, const BYTE* pData, int iLength, LPCSTR lpszExtensions)
  2515. {
  2516. return C_HP_Object::ToFirst<IHttpClient>(pClient)->SendChunkData(pData, iLength, lpszExtensions);
  2517. }
  2518. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_SendPost(HP_HttpClient pClient, LPCSTR lpszPath, const HP_THeader lpHeaders[], int iHeaderCount, const BYTE* pBody, int iLength)
  2519. {
  2520. return C_HP_Object::ToFirst<IHttpClient>(pClient)->SendPost(lpszPath, lpHeaders, iHeaderCount, pBody, iLength);
  2521. }
  2522. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_SendPut(HP_HttpClient pClient, LPCSTR lpszPath, const HP_THeader lpHeaders[], int iHeaderCount, const BYTE* pBody, int iLength)
  2523. {
  2524. return C_HP_Object::ToFirst<IHttpClient>(pClient)->SendPut(lpszPath, lpHeaders, iHeaderCount, pBody, iLength);
  2525. }
  2526. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_SendPatch(HP_HttpClient pClient, LPCSTR lpszPath, const HP_THeader lpHeaders[], int iHeaderCount, const BYTE* pBody, int iLength)
  2527. {
  2528. return C_HP_Object::ToFirst<IHttpClient>(pClient)->SendPatch(lpszPath, lpHeaders, iHeaderCount, pBody, iLength);
  2529. }
  2530. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_SendGet(HP_HttpClient pClient, LPCSTR lpszPath, const HP_THeader lpHeaders[], int iHeaderCount)
  2531. {
  2532. return C_HP_Object::ToFirst<IHttpClient>(pClient)->SendGet(lpszPath, lpHeaders, iHeaderCount);
  2533. }
  2534. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_SendDelete(HP_HttpClient pClient, LPCSTR lpszPath, const HP_THeader lpHeaders[], int iHeaderCount)
  2535. {
  2536. return C_HP_Object::ToFirst<IHttpClient>(pClient)->SendDelete(lpszPath, lpHeaders, iHeaderCount);
  2537. }
  2538. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_SendHead(HP_HttpClient pClient, LPCSTR lpszPath, const HP_THeader lpHeaders[], int iHeaderCount)
  2539. {
  2540. return C_HP_Object::ToFirst<IHttpClient>(pClient)->SendHead(lpszPath, lpHeaders, iHeaderCount);
  2541. }
  2542. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_SendTrace(HP_HttpClient pClient, LPCSTR lpszPath, const HP_THeader lpHeaders[], int iHeaderCount)
  2543. {
  2544. return C_HP_Object::ToFirst<IHttpClient>(pClient)->SendTrace(lpszPath, lpHeaders, iHeaderCount);
  2545. }
  2546. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_SendOptions(HP_HttpClient pClient, LPCSTR lpszPath, const HP_THeader lpHeaders[], int iHeaderCount)
  2547. {
  2548. return C_HP_Object::ToFirst<IHttpClient>(pClient)->SendOptions(lpszPath, lpHeaders, iHeaderCount);
  2549. }
  2550. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_SendConnect(HP_HttpClient pClient, LPCSTR lpszHost, const HP_THeader lpHeaders[], int iHeaderCount)
  2551. {
  2552. return C_HP_Object::ToFirst<IHttpClient>(pClient)->SendConnect(lpszHost, lpHeaders, iHeaderCount);
  2553. }
  2554. 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)
  2555. {
  2556. return C_HP_Object::ToFirst<IHttpClient>(pClient)->SendWSMessage(bFinal, iReserved, iOperationCode, lpszMask, pData, iLength, ullBodyLen);
  2557. }
  2558. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_StartHttp(HP_HttpClient pClient)
  2559. {
  2560. return C_HP_Object::ToFirst<IHttpClient>(pClient)->StartHttp();
  2561. }
  2562. /******************************************************************************/
  2563. /*************************** HTTP Client 属性访问方法 **************************/
  2564. HPSOCKET_API USHORT __HP_CALL HP_HttpClient_GetStatusCode(HP_HttpClient pClient)
  2565. {
  2566. return C_HP_Object::ToFirst<IHttpClient>(pClient)->GetStatusCode();
  2567. }
  2568. HPSOCKET_API void __HP_CALL HP_HttpClient_SetLocalVersion(HP_HttpClient pClient, En_HP_HttpVersion usVersion)
  2569. {
  2570. C_HP_Object::ToFirst<IHttpClient>(pClient)->SetLocalVersion(usVersion);
  2571. }
  2572. HPSOCKET_API En_HP_HttpVersion __HP_CALL HP_HttpClient_GetLocalVersion(HP_HttpClient pClient)
  2573. {
  2574. return C_HP_Object::ToFirst<IHttpClient>(pClient)->GetLocalVersion();
  2575. }
  2576. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_IsUpgrade(HP_HttpClient pClient)
  2577. {
  2578. return C_HP_Object::ToFirst<IHttpClient>(pClient)->IsUpgrade();
  2579. }
  2580. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_IsKeepAlive(HP_HttpClient pClient)
  2581. {
  2582. return C_HP_Object::ToFirst<IHttpClient>(pClient)->IsKeepAlive();
  2583. }
  2584. HPSOCKET_API USHORT __HP_CALL HP_HttpClient_GetVersion(HP_HttpClient pClient)
  2585. {
  2586. return C_HP_Object::ToFirst<IHttpClient>(pClient)->GetVersion();
  2587. }
  2588. HPSOCKET_API ULONGLONG __HP_CALL HP_HttpClient_GetContentLength(HP_HttpClient pClient)
  2589. {
  2590. return C_HP_Object::ToFirst<IHttpClient>(pClient)->GetContentLength();
  2591. }
  2592. HPSOCKET_API LPCSTR __HP_CALL HP_HttpClient_GetContentType(HP_HttpClient pClient)
  2593. {
  2594. return C_HP_Object::ToFirst<IHttpClient>(pClient)->GetContentType();
  2595. }
  2596. HPSOCKET_API LPCSTR __HP_CALL HP_HttpClient_GetContentEncoding(HP_HttpClient pClient)
  2597. {
  2598. return C_HP_Object::ToFirst<IHttpClient>(pClient)->GetContentEncoding();
  2599. }
  2600. HPSOCKET_API LPCSTR __HP_CALL HP_HttpClient_GetTransferEncoding(HP_HttpClient pClient)
  2601. {
  2602. return C_HP_Object::ToFirst<IHttpClient>(pClient)->GetTransferEncoding();
  2603. }
  2604. HPSOCKET_API En_HP_HttpUpgradeType __HP_CALL HP_HttpClient_GetUpgradeType(HP_HttpClient pClient)
  2605. {
  2606. return C_HP_Object::ToFirst<IHttpClient>(pClient)->GetUpgradeType();
  2607. }
  2608. HPSOCKET_API USHORT __HP_CALL HP_HttpClient_GetParseErrorCode(HP_HttpClient pClient, LPCSTR* lpszErrorDesc)
  2609. {
  2610. return C_HP_Object::ToFirst<IHttpClient>(pClient)->GetParseErrorCode(lpszErrorDesc);
  2611. }
  2612. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_GetHeader(HP_HttpClient pClient, LPCSTR lpszName, LPCSTR* lpszValue)
  2613. {
  2614. return C_HP_Object::ToFirst<IHttpClient>(pClient)->GetHeader(lpszName, lpszValue);
  2615. }
  2616. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_GetHeaders(HP_HttpClient pClient, LPCSTR lpszName, LPCSTR lpszValue[], DWORD* pdwCount)
  2617. {
  2618. return C_HP_Object::ToFirst<IHttpClient>(pClient)->GetHeaders(lpszName, lpszValue, *pdwCount);
  2619. }
  2620. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_GetAllHeaders(HP_HttpClient pClient, HP_THeader lpHeaders[], DWORD* pdwCount)
  2621. {
  2622. return C_HP_Object::ToFirst<IHttpClient>(pClient)->GetAllHeaders(lpHeaders, *pdwCount);
  2623. }
  2624. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_GetAllHeaderNames(HP_HttpClient pClient, LPCSTR lpszName[], DWORD* pdwCount)
  2625. {
  2626. return C_HP_Object::ToFirst<IHttpClient>(pClient)->GetAllHeaderNames(lpszName, *pdwCount);
  2627. }
  2628. HPSOCKET_API void __HP_CALL HP_HttpClient_SetUseCookie(HP_HttpClient pClient, BOOL bUseCookie)
  2629. {
  2630. C_HP_Object::ToFirst<IHttpClient>(pClient)->SetUseCookie(bUseCookie);
  2631. }
  2632. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_IsUseCookie(HP_HttpClient pClient)
  2633. {
  2634. return C_HP_Object::ToFirst<IHttpClient>(pClient)->IsUseCookie();
  2635. }
  2636. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_GetCookie(HP_HttpClient pClient, LPCSTR lpszName, LPCSTR* lpszValue)
  2637. {
  2638. return C_HP_Object::ToFirst<IHttpClient>(pClient)->GetCookie(lpszName, lpszValue);
  2639. }
  2640. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_GetAllCookies(HP_HttpClient pClient, HP_TCookie lpCookies[], DWORD* pdwCount)
  2641. {
  2642. return C_HP_Object::ToFirst<IHttpClient>(pClient)->GetAllCookies(lpCookies, *pdwCount);
  2643. }
  2644. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_GetWSMessageState(HP_HttpClient pClient, BOOL* lpbFinal, BYTE* lpiReserved, BYTE* lpiOperationCode, LPCBYTE* lpszMask, ULONGLONG* lpullBodyLen, ULONGLONG* lpullBodyRemain)
  2645. {
  2646. return C_HP_Object::ToFirst<IHttpClient>(pClient)->GetWSMessageState(lpbFinal, lpiReserved, lpiOperationCode, lpszMask, lpullBodyLen, lpullBodyRemain);
  2647. }
  2648. HPSOCKET_API void __HP_CALL HP_HttpClient_SetHttpAutoStart(HP_HttpClient pClient, BOOL bAutoStart)
  2649. {
  2650. C_HP_Object::ToFirst<IHttpClient>(pClient)->SetHttpAutoStart(bAutoStart);
  2651. }
  2652. HPSOCKET_API BOOL __HP_CALL HP_HttpClient_IsHttpAutoStart(HP_HttpClient pClient)
  2653. {
  2654. return C_HP_Object::ToFirst<IHttpClient>(pClient)->IsHttpAutoStart();
  2655. }
  2656. /**************************************************************************/
  2657. /************************ HTTP Sync Client 操作方法 ************************/
  2658. 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)
  2659. {
  2660. return C_HP_Object::ToFirst<IHttpSyncClient>(pClient)->OpenUrl(lpszMethod, lpszUrl, lpHeaders, iHeaderCount, pBody, iLength, bForceReconnect);
  2661. }
  2662. HPSOCKET_API BOOL __HP_CALL HP_HttpSyncClient_CleanupRequestResult(HP_HttpSyncClient pClient)
  2663. {
  2664. return C_HP_Object::ToFirst<IHttpSyncClient>(pClient)->CleanupRequestResult();
  2665. }
  2666. /**************************************************************************/
  2667. /********************** HTTP Sync Client 属性访问方法 **********************/
  2668. HPSOCKET_API void __HP_CALL HP_HttpSyncClient_SetConnectTimeout(HP_HttpSyncClient pClient, DWORD dwConnectTimeout)
  2669. {
  2670. C_HP_Object::ToFirst<IHttpSyncClient>(pClient)->SetConnectTimeout(dwConnectTimeout);
  2671. }
  2672. HPSOCKET_API void __HP_CALL HP_HttpSyncClient_SetRequestTimeout(HP_HttpSyncClient pClient, DWORD dwRequestTimeout)
  2673. {
  2674. C_HP_Object::ToFirst<IHttpSyncClient>(pClient)->SetRequestTimeout(dwRequestTimeout);
  2675. }
  2676. HPSOCKET_API DWORD __HP_CALL HP_HttpSyncClient_GetConnectTimeout(HP_HttpSyncClient pClient)
  2677. {
  2678. return C_HP_Object::ToFirst<IHttpSyncClient>(pClient)->GetConnectTimeout();
  2679. }
  2680. HPSOCKET_API DWORD __HP_CALL HP_HttpSyncClient_GetRequestTimeout(HP_HttpSyncClient pClient)
  2681. {
  2682. return C_HP_Object::ToFirst<IHttpSyncClient>(pClient)->GetRequestTimeout();
  2683. }
  2684. HPSOCKET_API BOOL __HP_CALL HP_HttpSyncClient_GetResponseBody(HP_HttpSyncClient pClient, LPCBYTE* lpszBody, int* piLength)
  2685. {
  2686. return C_HP_Object::ToFirst<IHttpSyncClient>(pClient)->GetResponseBody(lpszBody, piLength);
  2687. }
  2688. /**************************************************************************/
  2689. /*************************** HTTP Cookie 管理方法 **************************/
  2690. HPSOCKET_API BOOL __HP_CALL HP_HttpCookie_MGR_LoadFromFile(LPCSTR lpszFile, BOOL bKeepExists)
  2691. {
  2692. return g_CookieMgr.LoadFromFile(lpszFile, bKeepExists);
  2693. }
  2694. HPSOCKET_API BOOL __HP_CALL HP_HttpCookie_MGR_SaveToFile(LPCSTR lpszFile, BOOL bKeepExists)
  2695. {
  2696. return g_CookieMgr.SaveToFile(lpszFile, bKeepExists);
  2697. }
  2698. HPSOCKET_API BOOL __HP_CALL HP_HttpCookie_MGR_ClearCookies(LPCSTR lpszDomain, LPCSTR lpszPath)
  2699. {
  2700. return g_CookieMgr.ClearCookies(lpszDomain, lpszPath);
  2701. }
  2702. HPSOCKET_API BOOL __HP_CALL HP_HttpCookie_MGR_RemoveExpiredCookies(LPCSTR lpszDomain, LPCSTR lpszPath)
  2703. {
  2704. return g_CookieMgr.RemoveExpiredCookies(lpszDomain, lpszPath);
  2705. }
  2706. 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)
  2707. {
  2708. return g_CookieMgr.SetCookie(lpszName, lpszValue, lpszDomain, lpszPath, iMaxAge, bHttpOnly, bSecure, (CCookie::EnSameSite)enSameSite, bOnlyUpdateValueIfExists);
  2709. }
  2710. HPSOCKET_API BOOL __HP_CALL HP_HttpCookie_MGR_DeleteCookie(LPCSTR lpszDomain, LPCSTR lpszPath, LPCSTR lpszName)
  2711. {
  2712. return g_CookieMgr.DeleteCookie(lpszDomain, lpszPath, lpszName);
  2713. }
  2714. HPSOCKET_API void __HP_CALL HP_HttpCookie_MGR_SetEnableThirdPartyCookie(BOOL bEnableThirdPartyCookie)
  2715. {
  2716. g_CookieMgr.SetEnableThirdPartyCookie(bEnableThirdPartyCookie);
  2717. }
  2718. HPSOCKET_API BOOL __HP_CALL HP_HttpCookie_MGR_IsEnableThirdPartyCookie()
  2719. {
  2720. return g_CookieMgr.IsEnableThirdPartyCookie();
  2721. }
  2722. HPSOCKET_API BOOL __HP_CALL HP_HttpCookie_HLP_ParseExpires(LPCSTR lpszExpires, __time64_t* ptmExpires)
  2723. {
  2724. return CCookie::ParseExpires(lpszExpires, *ptmExpires);
  2725. }
  2726. HPSOCKET_API BOOL __HP_CALL HP_HttpCookie_HLP_MakeExpiresStr(char lpszBuff[], int* piBuffLen, __time64_t tmExpires)
  2727. {
  2728. return CCookie::MakeExpiresStr(lpszBuff, *piBuffLen, tmExpires);
  2729. }
  2730. 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)
  2731. {
  2732. return CCookie::ToString(lpszBuff, *piBuffLen, lpszName, lpszValue, lpszDomain, lpszPath, iMaxAge, bHttpOnly, bSecure, (CCookie::EnSameSite)enSameSite);
  2733. }
  2734. HPSOCKET_API __time64_t __HP_CALL HP_HttpCookie_HLP_CurrentUTCTime()
  2735. {
  2736. return CCookie::CurrentUTCTime();
  2737. }
  2738. HPSOCKET_API __time64_t __HP_CALL HP_HttpCookie_HLP_MaxAgeToExpires(int iMaxAge)
  2739. {
  2740. return CCookie::MaxAgeToExpires(iMaxAge);
  2741. }
  2742. HPSOCKET_API int __HP_CALL HP_HttpCookie_HLP_ExpiresToMaxAge(__time64_t tmExpires)
  2743. {
  2744. return CCookie::ExpiresToMaxAge(tmExpires);
  2745. }
  2746. /*****************************************************************************************************************************************************/
  2747. /************************************************************* HTTP Global Function Exports **********************************************************/
  2748. /*****************************************************************************************************************************************************/
  2749. #endif
  2750. /*****************************************************************************************************************************************************/
  2751. /**************************************************************** Thread Pool Exports ****************************************************************/
  2752. /*****************************************************************************************************************************************************/
  2753. /**********************************************************************************/
  2754. /************************** Thread Pool 回调函数设置方法 ***************************/
  2755. HPSOCKET_API void __HP_CALL HP_Set_FN_ThreadPool_OnStartup(HP_ThreadPoolListener pListener, HP_FN_ThreadPool_OnStartup fn)
  2756. {
  2757. ((C_HP_ThreadPoolListener*)pListener)->m_fnOnStartup = fn;
  2758. }
  2759. HPSOCKET_API void __HP_CALL HP_Set_FN_ThreadPool_OnShutdown(HP_ThreadPoolListener pListener, HP_FN_ThreadPool_OnShutdown fn)
  2760. {
  2761. ((C_HP_ThreadPoolListener*)pListener)->m_fnOnShutdown = fn;
  2762. }
  2763. HPSOCKET_API void __HP_CALL HP_Set_FN_ThreadPool_OnWorkerThreadStart(HP_ThreadPoolListener pListener, HP_FN_ThreadPool_OnWorkerThreadStart fn)
  2764. {
  2765. ((C_HP_ThreadPoolListener*)pListener)->m_fnOnWorkerThreadStart = fn;
  2766. }
  2767. HPSOCKET_API void __HP_CALL HP_Set_FN_ThreadPool_OnWorkerThreadEnd(HP_ThreadPoolListener pListener, HP_FN_ThreadPool_OnWorkerThreadEnd fn)
  2768. {
  2769. ((C_HP_ThreadPoolListener*)pListener)->m_fnOnWorkerThreadEnd = fn;
  2770. }
  2771. /****************************************************/
  2772. /******************* 对象创建函数 ********************/
  2773. HPSOCKET_API HP_ThreadPoolListener __HP_CALL Create_HP_ThreadPoolListener()
  2774. {
  2775. return (HP_ThreadPoolListener)(new C_HP_ThreadPoolListener);
  2776. }
  2777. HPSOCKET_API void __HP_CALL Destroy_HP_ThreadPoolListener(HP_ThreadPoolListener pListener)
  2778. {
  2779. delete (IHPThreadPoolListener*)pListener;
  2780. }
  2781. HPSOCKET_API HP_ThreadPool __HP_CALL Create_HP_ThreadPool(HP_ThreadPoolListener pListener)
  2782. {
  2783. return (HP_ThreadPool)(new CHPThreadPool((IHPThreadPoolListener*)pListener));
  2784. }
  2785. HPSOCKET_API void __HP_CALL Destroy_HP_ThreadPool(HP_ThreadPool pThreadPool)
  2786. {
  2787. delete (IHPThreadPool*)pThreadPool;
  2788. }
  2789. 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)
  2790. {
  2791. return ::CreateSocketTaskObj(fnTaskProc, pSender, dwConnID, pBuffer, iBuffLen, enBuffType, wParam, lParam);
  2792. }
  2793. HPSOCKET_API void __HP_CALL Destroy_HP_SocketTaskObj(LPTSocketTask pTask)
  2794. {
  2795. ::DestroySocketTaskObj(pTask);
  2796. }
  2797. /***********************************************************************/
  2798. /***************************** 组件操作方法 *****************************/
  2799. HPSOCKET_API BOOL __HP_CALL HP_ThreadPool_Start(HP_ThreadPool pThreadPool, DWORD dwThreadCount, DWORD dwMaxQueueSize, En_HP_RejectedPolicy enRejectedPolicy, DWORD dwStackSize)
  2800. {
  2801. return ((IHPThreadPool*)pThreadPool)->Start(dwThreadCount, dwMaxQueueSize, enRejectedPolicy, dwStackSize);
  2802. }
  2803. HPSOCKET_API BOOL __HP_CALL HP_ThreadPool_Stop(HP_ThreadPool pThreadPool, DWORD dwMaxWait)
  2804. {
  2805. return ((IHPThreadPool*)pThreadPool)->Stop(dwMaxWait);
  2806. }
  2807. HPSOCKET_API BOOL __HP_CALL HP_ThreadPool_Submit(HP_ThreadPool pThreadPool, HP_Fn_TaskProc fnTaskProc, PVOID pvArg, DWORD dwMaxWait)
  2808. {
  2809. return ((IHPThreadPool*)pThreadPool)->Submit(fnTaskProc, pvArg, dwMaxWait);
  2810. }
  2811. HPSOCKET_API BOOL __HP_CALL HP_ThreadPool_Submit_Task(HP_ThreadPool pThreadPool, HP_LPTSocketTask pTask, DWORD dwMaxWait)
  2812. {
  2813. return ((IHPThreadPool*)pThreadPool)->Submit(pTask, dwMaxWait);
  2814. }
  2815. HPSOCKET_API BOOL __HP_CALL HP_ThreadPool_AdjustThreadCount(HP_ThreadPool pThreadPool, DWORD dwNewThreadCount)
  2816. {
  2817. return ((IHPThreadPool*)pThreadPool)->AdjustThreadCount(dwNewThreadCount);
  2818. }
  2819. HPSOCKET_API BOOL __HP_CALL HP_ThreadPool_Wait(HP_ThreadPool pThreadPool, DWORD dwMilliseconds)
  2820. {
  2821. return ((IHPThreadPool*)pThreadPool)->Wait(dwMilliseconds);
  2822. }
  2823. /***********************************************************************/
  2824. /***************************** 属性访问方法 *****************************/
  2825. HPSOCKET_API BOOL __HP_CALL HP_ThreadPool_HasStarted(HP_ThreadPool pThreadPool)
  2826. {
  2827. return ((IHPThreadPool*)pThreadPool)->HasStarted();
  2828. }
  2829. HPSOCKET_API En_HP_ServiceState __HP_CALL HP_ThreadPool_GetState(HP_ThreadPool pThreadPool)
  2830. {
  2831. return ((IHPThreadPool*)pThreadPool)->GetState();
  2832. }
  2833. HPSOCKET_API DWORD __HP_CALL HP_ThreadPool_GetQueueSize(HP_ThreadPool pThreadPool)
  2834. {
  2835. return ((IHPThreadPool*)pThreadPool)->GetQueueSize();
  2836. }
  2837. HPSOCKET_API DWORD __HP_CALL HP_ThreadPool_GetTaskCount(HP_ThreadPool pThreadPool)
  2838. {
  2839. return ((IHPThreadPool*)pThreadPool)->GetTaskCount();
  2840. }
  2841. HPSOCKET_API DWORD __HP_CALL HP_ThreadPool_GetThreadCount(HP_ThreadPool pThreadPool)
  2842. {
  2843. return ((IHPThreadPool*)pThreadPool)->GetThreadCount();
  2844. }
  2845. HPSOCKET_API DWORD __HP_CALL HP_ThreadPool_GetMaxQueueSize(HP_ThreadPool pThreadPool)
  2846. {
  2847. return ((IHPThreadPool*)pThreadPool)->GetMaxQueueSize();
  2848. }
  2849. HPSOCKET_API En_HP_RejectedPolicy __HP_CALL HP_ThreadPool_GetRejectedPolicy(HP_ThreadPool pThreadPool)
  2850. {
  2851. return ((IHPThreadPool*)pThreadPool)->GetRejectedPolicy();
  2852. }
  2853. /*****************************************************************************************************************************************************/
  2854. /********************************************************* Compressor / Decompressor Exports *********************************************************/
  2855. /*****************************************************************************************************************************************************/
  2856. /****************************************************/
  2857. /******************* 对象创建函数 ********************/
  2858. HPSOCKET_API void __HP_CALL Destroy_HP_Compressor(HP_Compressor pCompressor)
  2859. {
  2860. ::DestroyCompressor((IHPCompressor*)pCompressor);
  2861. }
  2862. HPSOCKET_API void __HP_CALL Destroy_HP_Decompressor(HP_Decompressor pDecompressor)
  2863. {
  2864. ::DestroyDecompressor((IHPDecompressor*)pDecompressor);
  2865. }
  2866. #ifdef _ZLIB_SUPPORT
  2867. HPSOCKET_API HP_Compressor __HP_CALL Create_HP_ZLibCompressor(HP_Fn_CompressDataCallback fnCallback)
  2868. {
  2869. return ::CreateZLibCompressor(fnCallback);
  2870. }
  2871. 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)
  2872. {
  2873. return ::CreateZLibCompressor(fnCallback, iWindowBits, iLevel, iMethod, iMemLevel, iStrategy, dwBuffSize);
  2874. }
  2875. HPSOCKET_API HP_Compressor __HP_CALL Create_HP_GZipCompressor(HP_Fn_CompressDataCallback fnCallback)
  2876. {
  2877. return ::CreateGZipCompressor(fnCallback);
  2878. }
  2879. HPSOCKET_API HP_Compressor __HP_CALL Create_HP_GZipCompressorEx(HP_Fn_CompressDataCallback fnCallback, int iLevel, int iMethod, int iMemLevel, int iStrategy, DWORD dwBuffSize)
  2880. {
  2881. return ::CreateGZipCompressor(fnCallback, iLevel, iMethod, iMemLevel, iStrategy, dwBuffSize);
  2882. }
  2883. HPSOCKET_API HP_Decompressor __HP_CALL Create_HP_ZLibDecompressor(HP_Fn_DecompressDataCallback fnCallback)
  2884. {
  2885. return ::CreateZLibDecompressor(fnCallback);
  2886. }
  2887. HPSOCKET_API HP_Decompressor __HP_CALL Create_HP_ZLibDecompressorEx(HP_Fn_DecompressDataCallback fnCallback, int iWindowBits, DWORD dwBuffSize)
  2888. {
  2889. return ::CreateZLibDecompressor(fnCallback, iWindowBits, dwBuffSize);
  2890. }
  2891. HPSOCKET_API HP_Decompressor __HP_CALL Create_HP_GZipDecompressor(HP_Fn_DecompressDataCallback fnCallback)
  2892. {
  2893. return ::CreateGZipDecompressor(fnCallback);
  2894. }
  2895. HPSOCKET_API HP_Decompressor __HP_CALL Create_HP_GZipDecompressorEx(HP_Fn_DecompressDataCallback fnCallback, DWORD dwBuffSize)
  2896. {
  2897. return ::CreateGZipDecompressor(fnCallback, dwBuffSize);
  2898. }
  2899. #endif
  2900. #ifdef _BROTLI_SUPPORT
  2901. HPSOCKET_API HP_Compressor __HP_CALL Create_HP_BrotliCompressor(HP_Fn_CompressDataCallback fnCallback)
  2902. {
  2903. return ::CreateBrotliCompressor(fnCallback);
  2904. }
  2905. HPSOCKET_API HP_Compressor __HP_CALL Create_HP_BrotliCompressorEx(HP_Fn_CompressDataCallback fnCallback, int iQuality, int iWindow, int iMode, DWORD dwBuffSize)
  2906. {
  2907. return ::CreateBrotliCompressor(fnCallback, iQuality, iWindow, iMode, dwBuffSize);
  2908. }
  2909. HPSOCKET_API HP_Decompressor __HP_CALL Create_HP_BrotliDecompressor(HP_Fn_DecompressDataCallback fnCallback)
  2910. {
  2911. return ::CreateBrotliDecompressor(fnCallback);
  2912. }
  2913. HPSOCKET_API HP_Decompressor __HP_CALL Create_HP_BrotliDecompressorEx(HP_Fn_DecompressDataCallback fnCallback, DWORD dwBuffSize)
  2914. {
  2915. return ::CreateBrotliDecompressor(fnCallback, dwBuffSize);
  2916. }
  2917. #endif
  2918. /***********************************************************************/
  2919. /***************************** 组件操作方法 *****************************/
  2920. HPSOCKET_API BOOL __HP_CALL HP_Compressor_Process(HP_Compressor pCompressor, const BYTE* pData, int iLength, BOOL bLast, PVOID pContext)
  2921. {
  2922. return ((IHPCompressor*)pCompressor)->Process(pData, iLength, bLast, pContext);
  2923. }
  2924. HPSOCKET_API BOOL __HP_CALL HP_Compressor_ProcessEx(HP_Compressor pCompressor, const BYTE* pData, int iLength, BOOL bLast, BOOL bFlush, PVOID pContext)
  2925. {
  2926. return ((IHPCompressor*)pCompressor)->ProcessEx(pData, iLength, bLast, bFlush, pContext);
  2927. }
  2928. HPSOCKET_API BOOL __HP_CALL HP_Compressor_Reset(HP_Compressor pCompressor)
  2929. {
  2930. return ((IHPCompressor*)pCompressor)->Reset();
  2931. }
  2932. HPSOCKET_API BOOL __HP_CALL HP_Decompressor_Process(HP_Decompressor pDecompressor, const BYTE* pData, int iLength, PVOID pContext)
  2933. {
  2934. return ((IHPDecompressor*)pDecompressor)->Process(pData, iLength, pContext);
  2935. }
  2936. HPSOCKET_API BOOL __HP_CALL HP_Decompressor_Reset(HP_Decompressor pDecompressor)
  2937. {
  2938. return ((IHPDecompressor*)pDecompressor)->Reset();
  2939. }
  2940. /***********************************************************************/
  2941. /***************************** 属性访问方法 *****************************/
  2942. HPSOCKET_API BOOL __HP_CALL HP_Compressor_IsValid(HP_Compressor pCompressor)
  2943. {
  2944. return ((IHPCompressor*)pCompressor)->IsValid();
  2945. }
  2946. HPSOCKET_API BOOL __HP_CALL HP_Decompressor_IsValid(HP_Decompressor pDecompressor)
  2947. {
  2948. return ((IHPDecompressor*)pDecompressor)->IsValid();
  2949. }