Skip to content

Commit

Permalink
IPC Protocol modification, now each message is terminated by a NULL c…
Browse files Browse the repository at this point in the history
…haracter.

Huge performance improvement on OSX.
Canvas example is really fast now.
  • Loading branch information
gabrielrcouto committed Oct 4, 2016
1 parent fffd4e4 commit 116f237
Show file tree
Hide file tree
Showing 9 changed files with 100 additions and 242 deletions.
2 changes: 2 additions & 0 deletions PROTOCOL.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ This file describes the IPC protocol used for the PHP <-> Lazarus communication.

This protocol is based on JSON RPC.

Each message needs to be terminated by NULL character (PHP = "\0", Lazarus = #0). This will be used to identify each message on the stream.

## Request (Command):

```json
Expand Down
2 changes: 1 addition & 1 deletion examples/05-canvas/example.php
Original file line number Diff line number Diff line change
Expand Up @@ -416,7 +416,7 @@

$canvas->setSize(82, 42);

$application->getLoop()->addTimer(1, function() use ($canvas, $pixels) {
$application->getLoop()->addTimer(0.01, function() use ($canvas, $pixels) {
$count = 0;

for ($x = 0; $x < 82; $x++) {
Expand Down
Binary file modified lazarus/lib/i386-darwin/UnitIpcThread.o
Binary file not shown.
Binary file modified lazarus/lib/i386-darwin/UnitIpcThread.ppu
Binary file not shown.
Binary file modified lazarus/phpgui-i386-darwin
Binary file not shown.
194 changes: 61 additions & 133 deletions lazarus/phpgui.lps
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,14 @@
<ProjectSession>
<Version Value="9"/>
<BuildModes Active="Default"/>
<Units Count="14">
<Units Count="15">
<Unit0>
<Filename Value="phpgui.lpr"/>
<IsPartOfProject Value="True"/>
<EditorIndex Value="-1"/>
<CursorPos X="39" Y="23"/>
<UsageCount Value="160"/>
<EditorIndex Value="4"/>
<CursorPos X="4" Y="23"/>
<UsageCount Value="181"/>
<Loaded Value="True"/>
</Unit0>
<Unit1>
<Filename Value="unit1.pas"/>
Expand All @@ -19,7 +20,7 @@
<ResourceBaseClass Value="Form"/>
<UnitName Value="Unit1"/>
<CursorPos X="21" Y="15"/>
<UsageCount Value="160"/>
<UsageCount Value="181"/>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
</Unit1>
Expand All @@ -28,219 +29,146 @@
<IsPartOfProject Value="True"/>
<UnitName Value="UnitIpcThread"/>
<IsVisibleTab Value="True"/>
<EditorIndex Value="2"/>
<CursorPos X="22" Y="8"/>
<UsageCount Value="156"/>
<EditorIndex Value="1"/>
<TopLine Value="140"/>
<CursorPos X="31" Y="181"/>
<UsageCount Value="177"/>
<Loaded Value="True"/>
</Unit2>
<Unit3>
<Filename Value="tmythread.pas"/>
<UnitName Value="UnitMyThread"/>
<EditorIndex Value="-1"/>
<CursorPos X="42" Y="4"/>
<UsageCount Value="8"/>
<UsageCount Value="6"/>
</Unit3>
<Unit4>
<Filename Value="/usr/local/share/fpcsrc/rtl/objpas/classes/classesh.inc"/>
<EditorIndex Value="-1"/>
<TopLine Value="595"/>
<CursorPos X="26" Y="611"/>
<UsageCount Value="8"/>
<EditorIndex Value="3"/>
<TopLine Value="855"/>
<CursorPos X="28" Y="876"/>
<UsageCount Value="18"/>
<Loaded Value="True"/>
</Unit4>
<Unit5>
<Filename Value="/Developer/lazarus/lcl/include/control.inc"/>
<EditorIndex Value="-1"/>
<TopLine Value="2743"/>
<CursorPos Y="2736"/>
<UsageCount Value="10"/>
<UsageCount Value="8"/>
</Unit5>
<Unit6>
<Filename Value="/usr/local/share/fpcsrc/packages/fcl-json/src/fpjson.pp"/>
<EditorIndex Value="-1"/>
<TopLine Value="2887"/>
<CursorPos X="25" Y="2914"/>
<UsageCount Value="3"/>
<UsageCount Value="1"/>
</Unit6>
<Unit7>
<Filename Value="/Developer/lazarus/lcl/stdctrls.pp"/>
<UnitName Value="StdCtrls"/>
<EditorIndex Value="3"/>
<EditorIndex Value="-1"/>
<TopLine Value="1077"/>
<CursorPos X="13" Y="1100"/>
<UsageCount Value="20"/>
<Loaded Value="True"/>
<UsageCount Value="18"/>
</Unit7>
<Unit8>
<Filename Value="/usr/local/share/fpcsrc/packages/fcl-base/src/rttiutils.pp"/>
<EditorIndex Value="-1"/>
<CursorPos X="15" Y="32"/>
<UsageCount Value="2"/>
<UsageCount Value="0"/>
</Unit8>
<Unit9>
<Filename Value="/usr/local/share/fpcsrc/rtl/objpas/typinfo.pp"/>
<EditorIndex Value="-1"/>
<TopLine Value="343"/>
<CursorPos X="79" Y="348"/>
<UsageCount Value="2"/>
<UsageCount Value="0"/>
</Unit9>
<Unit10>
<Filename Value="/usr/local/share/fpcsrc/rtl/objpas/sysutils/sysstrh.inc"/>
<EditorIndex Value="-1"/>
<TopLine Value="202"/>
<CursorPos X="10" Y="218"/>
<UsageCount Value="51"/>
<UsageCount Value="49"/>
</Unit10>
<Unit11>
<Filename Value="/usr/local/share/fpcsrc/rtl/inc/objpash.inc"/>
<EditorIndex Value="5"/>
<EditorIndex Value="-1"/>
<TopLine Value="166"/>
<CursorPos X="8" Y="183"/>
<UsageCount Value="20"/>
<Loaded Value="True"/>
<UsageCount Value="18"/>
</Unit11>
<Unit12>
<Filename Value="/Developer/lazarus/lcl/controls.pp"/>
<UnitName Value="Controls"/>
<EditorIndex Value="4"/>
<TopLine Value="1485"/>
<EditorIndex Value="-1"/>
<TopLine Value="1483"/>
<CursorPos X="58" Y="1376"/>
<UsageCount Value="20"/>
<Loaded Value="True"/>
<UsageCount Value="18"/>
</Unit12>
<Unit13>
<Filename Value="/Developer/lazarus/lcl/forms.pp"/>
<UnitName Value="Forms"/>
<EditorIndex Value="1"/>
<TopLine Value="75"/>
<EditorIndex Value="-1"/>
<TopLine Value="43"/>
<CursorPos X="3" Y="708"/>
<UsageCount Value="11"/>
<Loaded Value="True"/>
<UsageCount Value="9"/>
</Unit13>
<Unit14>
<Filename Value="/usr/local/share/fpcsrc/packages/fcl-process/src/pipes.pp"/>
<UnitName Value="Pipes"/>
<EditorIndex Value="2"/>
<TopLine Value="12"/>
<CursorPos X="3" Y="31"/>
<UsageCount Value="18"/>
<Loaded Value="True"/>
</Unit14>
</Units>
<OtherDefines Count="1">
<Define0 Value="UseCThreads"/>
</OtherDefines>
<JumpHistory Count="30" HistoryIndex="29">
<JumpHistory Count="10" HistoryIndex="9">
<Position1>
<Filename Value="/Developer/lazarus/lcl/stdctrls.pp"/>
<Caret Line="1362" Column="21" TopLine="1335"/>
<Filename Value="unit1.pas"/>
<Caret Line="14" Column="24"/>
</Position1>
<Position2>
<Filename Value="/Developer/lazarus/lcl/stdctrls.pp"/>
<Caret Line="1420" Column="21" TopLine="1394"/>
<Filename Value="unit1.pas"/>
<Caret Line="15" Column="22"/>
</Position2>
<Position3>
<Filename Value="/Developer/lazarus/lcl/stdctrls.pp"/>
<Caret Line="1549" Column="21" TopLine="1524"/>
<Filename Value="unit1.pas"/>
<Caret Line="14" Column="24"/>
</Position3>
<Position4>
<Filename Value="/Developer/lazarus/lcl/stdctrls.pp"/>
<Caret Line="200" Column="21" TopLine="186"/>
<Filename Value="unit1.pas"/>
<Caret Column="67"/>
</Position4>
<Position5>
<Filename Value="/Developer/lazarus/lcl/stdctrls.pp"/>
<Caret Line="433" Column="21" TopLine="408"/>
<Filename Value="unit1.pas"/>
<Caret Line="15" Column="21"/>
</Position5>
<Position6>
<Filename Value="/Developer/lazarus/lcl/stdctrls.pp"/>
<Caret Line="585" Column="21" TopLine="559"/>
<Filename Value="unitipcthread.pas"/>
<Caret Line="181" Column="31" TopLine="110"/>
</Position6>
<Position7>
<Filename Value="/Developer/lazarus/lcl/stdctrls.pp"/>
<Caret Line="648" Column="21" TopLine="621"/>
<Filename Value="/usr/local/share/fpcsrc/packages/fcl-process/src/pipes.pp"/>
<Caret Line="31" Column="3" TopLine="12"/>
</Position7>
<Position8>
<Filename Value="/Developer/lazarus/lcl/stdctrls.pp"/>
<Caret Line="901" Column="21" TopLine="875"/>
<Filename Value="/usr/local/share/fpcsrc/rtl/objpas/classes/classesh.inc"/>
<Caret Line="919" Column="3" TopLine="898"/>
</Position8>
<Position9>
<Filename Value="/Developer/lazarus/lcl/stdctrls.pp"/>
<Caret Line="963" Column="21" TopLine="936"/>
<Filename Value="/usr/local/share/fpcsrc/rtl/objpas/classes/classesh.inc"/>
<Caret Line="872" Column="32" TopLine="843"/>
</Position9>
<Position10>
<Filename Value="/Developer/lazarus/lcl/stdctrls.pp"/>
<Caret Line="1056" Column="21" TopLine="1029"/>
<Filename Value="/usr/local/share/fpcsrc/rtl/objpas/classes/classesh.inc"/>
<Caret Line="876" Column="28" TopLine="843"/>
</Position10>
<Position11>
<Filename Value="/Developer/lazarus/lcl/stdctrls.pp"/>
<Caret Line="1197" Column="21" TopLine="1170"/>
</Position11>
<Position12>
<Filename Value="/Developer/lazarus/lcl/stdctrls.pp"/>
<Caret Line="1301" Column="21" TopLine="1274"/>
</Position12>
<Position13>
<Filename Value="/Developer/lazarus/lcl/stdctrls.pp"/>
<Caret Line="1343" Column="44" TopLine="1332"/>
</Position13>
<Position14>
<Filename Value="unitipcthread.pas"/>
<Caret Line="199" Column="31" TopLine="175"/>
</Position14>
<Position15>
<Filename Value="/Developer/lazarus/lcl/stdctrls.pp"/>
<Caret Line="1176" Column="32" TopLine="1160"/>
</Position15>
<Position16>
<Filename Value="/Developer/lazarus/lcl/stdctrls.pp"/>
<Caret Line="1123" Column="39" TopLine="1107"/>
</Position16>
<Position17>
<Filename Value="/Developer/lazarus/lcl/stdctrls.pp"/>
<Caret Line="1086" Column="37" TopLine="1070"/>
</Position17>
<Position18>
<Filename Value="/Developer/lazarus/lcl/controls.pp"/>
<Caret Line="1871" Column="3" TopLine="1865"/>
</Position18>
<Position19>
<Filename Value="/Developer/lazarus/lcl/controls.pp"/>
<Caret Line="1078" Column="13" TopLine="1060"/>
</Position19>
<Position20>
<Filename Value="/Developer/lazarus/lcl/controls.pp"/>
<Caret Line="1606" Column="64" TopLine="1581"/>
</Position20>
<Position21>
<Filename Value="unitipcthread.pas"/>
<Caret Line="76" Column="36" TopLine="59"/>
</Position21>
<Position22>
<Filename Value="unitipcthread.pas"/>
<Caret Column="20"/>
</Position22>
<Position23>
<Filename Value="unitipcthread.pas"/>
<Caret Line="22" Column="34"/>
</Position23>
<Position24>
<Filename Value="unit1.pas"/>
<Caret Line="14" Column="24"/>
</Position24>
<Position25>
<Filename Value="unit1.pas"/>
<Caret Line="15" Column="22"/>
</Position25>
<Position26>
<Filename Value="unit1.pas"/>
<Caret Line="14" Column="24"/>
</Position26>
<Position27>
<Filename Value="unit1.pas"/>
<Caret Column="67"/>
</Position27>
<Position28>
<Filename Value="unit1.pas"/>
<Caret Line="15" Column="21"/>
</Position28>
<Position29>
<Filename Value="unitipcthread.pas"/>
<Caret Line="84" Column="34" TopLine="2"/>
</Position29>
<Position30>
<Filename Value="unitipcthread.pas"/>
<Caret Line="246" Column="6" TopLine="211"/>
</Position30>
</JumpHistory>
</ProjectSession>
<Debugging>
Expand Down
Loading

0 comments on commit 116f237

Please sign in to comment.