add linux syscall sys_getrandom to lcorernd
[lcore.git] / lcore.pas
index f47bdabff64d482bb8ff4aa62001ad6034938b39..ce72179461277aeee5937a6f596cbcb5bdb65175 100644 (file)
--- a/lcore.pas
+++ b/lcore.pas
@@ -40,9 +40,10 @@ interface
     - be safe for either "ethernet v1" or "PPPoE", both take 8 bytes\r
     - IPv6 header: 40 bytes (IPv4 is 20)\r
     - TCP/UDP header: 20 bytes\r
+    packetbasesize is deprecated and should not be used anymore\r
     }\r
     packetbasesize = 1432;\r
-    receivebufsize=packetbasesize*8;\r
+    receivebufsize=16384;\r
 \r
   var\r
     absolutemaxs:integer=0;\r
@@ -110,6 +111,11 @@ interface
       {$ifdef mswindows}\r
       sendflushlasterror:integer;\r
       {$endif}\r
+\r
+      sendflushmaxwrite:integer;\r
+      //how much to write to the socket internally in one go. higher values allow faster throughput especially if latency is high\r
+      //but it also causes onsenddata to be called less often (typically once for every sendflushmaxwrite bytes)\r
+\r
       function receivestr:tbufferstring; virtual;\r
       procedure close;\r
       procedure abort;\r
@@ -225,7 +231,7 @@ procedure exitmessageloop;
 \r
 var\r
   firsttimer                            : tltimer    ;\r
-  firsttask  , lasttask   , currenttask : tltask     ;\r
+  firsttask  , lasttask                 : tltask     ;\r
 \r
   numread                               : integer    ;\r
   mustrefreshfds                        : boolean    ;\r
@@ -343,6 +349,7 @@ begin
   state := wsclosed;\r
   fdhandlein := -1;\r
   fdhandleout := -1;\r
+  sendflushmaxwrite := 16384;\r
 end;\r
 \r
 destructor tlasio.destroy;\r
@@ -490,7 +497,10 @@ begin
   end;\r
   datasentcalled := false;\r
 \r
-  lensent := sendq.get(data,packetbasesize*2);\r
+  lensent := sendflushmaxwrite;\r
+  if (lensent <= 0) then lensent := sendq.size;\r
+\r
+  lensent := sendq.get(data,lensent);\r
   if assigned(data) then result := myfdwrite(fdhandleout,data^,lensent) else result := 0;\r
 \r
   if result = -1 then lensent := 0 else lensent := result;\r
@@ -812,6 +822,8 @@ end;
 {$endif}\r
 \r
 procedure processtasks;//inline;\r
+var\r
+  currenttask:tltask;\r
 begin\r
 \r
   while assigned(firsttask) do begin\r
@@ -820,7 +832,7 @@ begin
     if not assigned(firsttask) then lasttask := nil;\r
 \r
     if assigned(currenttask.handler) then currenttask.handler(currenttask.wparam,currenttask.lparam);\r
-\r
+    currenttask.free;\r
   end;\r
   currenttask := nil;\r
 end;\r