2024/11/14/untangling setup calls

From Woozle Writes Code
Revision as of 22:26, 14 November 2024 by Woozle (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

This is mainly notes to myself, trying to figure out why my code is complaining about there not being any input parameters before it has actually processed them...

Before Fix Attempt

First call to Setup():

| nArrIndex | sFileSpec                            | nFileLine | sCallClass                          | sCallType | sCallFunc   | aCallArgs | oCallObj |
|         3 | [F] /apps/futils/src/Kiosk/WUIDL.php |        89 | Woozalia\Ferret\Sys\Routing\caKiosk |    ->     | ShowStack   |
|         4 | [F] /apps/futils/src/App/WUIDL.php   |        22 | Woozalia\Futil\Kiosk\caWUIDL        |    ->     | Setup       |
|         5 | [F] /apps/futils/src/App.php         |        46 | Woozalia\Futil\App\cWUIDL           |    ->     | SetupIface  |
|         6 | [F] /src/App.php                     |        49 | Woozalia\Futil\caApp                |    ->     | EmitStartup |
|         7 | [F] /apps/futils/run/dba/go.php      |        39 | Woozalia\Ferret\caApp               |    ->     | Go          |
|         8 | [F] /apps/futils/boot/go.php         |        42 | Woozalia\Futil\DBA\cBoot            |    ->     | Go          |
|         9 | [F] /apps/futils/run/dba/go.php      |        44 | Woozalia\Futil\boot\caBoot          |    ->     | __construct |

Second call to Setup():

| nArrIndex | sFileSpec                            | nFileLine | sCallClass                               | sCallType | sCallFunc      | aCallArgs | oCallObj |
|         3 | [F] /apps/futils/src/Kiosk/WUIDL.php |        89 | Woozalia\Ferret\Sys\Routing\caKiosk      |    ->     | ShowStack      |
|         4 | [F] /src/Sys/Routing/Kiosk/Root.php  |        72 | Woozalia\Futil\Kiosk\caWUIDL             |    ->     | Setup          |
|         5 | [F] /src/App/Routed.php              |        23 | Woozalia\Ferret\Sys\Routing\Kiosk\caRoot |    ->     | Go             |
|         6 | [F] /src/App.php                     |        75 | Woozalia\Futil\caApp                     |    ->     | ReceiveRequest |
|         7 | [F] /apps/futils/run/dba/go.php      |        39 | Woozalia\Ferret\caApp                    |    ->     | Go             |
|         8 | [F] /apps/futils/boot/go.php         |        42 | Woozalia\Futil\DBA\cBoot                 |    ->     | Go             |
|         9 | [F] /apps/futils/run/dba/go.php      |        44 | Woozalia\Futil\boot\caBoot               |    ->     | __construct    |

(The two calls are separated by a couple of screenfulls of other diagnostic info I'm not ready to remove yet; I needed to see them next to each other.)

The key call-chains seem to be:

  • [Fe:App->Go()] => [Fu:App->EmitStartup()] => [Fu:WUIDL App->SetupIface()] => [Fu:WUIDL Kiosk->Setup()]
  • [Fe:App->Go()] => [Fu:App->ReceiveRequest()] => [Fe:Root Kiosk->Go()] => [Fu:WUIDL Kiosk->Setup()]

"EmitStartup" seems like maybe a poor choice of words, or an inaccurate description. I think maybe the problem is that it doesn't match what actually needs to be done, which is "describe the app once it has fully started but before it does anything".

After Fix #1

First call to Setup():

| nArrIndex | sFileSpec                            | nFileLine | sCallClass                          | sCallType | sCallFunc   | aCallArgs | oCallObj |
|         3 | [F] /apps/futils/src/Kiosk/WUIDL.php |        89 | Woozalia\Ferret\Sys\Routing\caKiosk |    ->     | ShowStack   |
|         4 | [F] /apps/futils/src/App/WUIDL.php   |        23 | Woozalia\Futil\Kiosk\caWUIDL        |    ->     | Setup       |
|         5 | [F] /src/App.php                     |        80 | Woozalia\Futil\App\cWUIDL           |    ->     | SetupIface  |
|         6 | [F] /src/App.php                     |        75 | Woozalia\Ferret\caApp               |    ->     | Setup       |
|         7 | [F] /apps/futils/run/dba/go.php      |        39 | Woozalia\Ferret\caApp               |    ->     | Go          |
|         8 | [F] /apps/futils/boot/go.php         |        42 | Woozalia\Futil\DBA\cBoot            |    ->     | Go          |
|         9 | [F] /apps/futils/run/dba/go.php      |        44 | Woozalia\Futil\boot\caBoot          |    ->     | __construct |

Second call to Setup():

| nArrIndex | sFileSpec                            | nFileLine | sCallClass                               | sCallType | sCallFunc      | aCallArgs | oCallObj |
|         3 | [F] /apps/futils/src/Kiosk/WUIDL.php |        89 | Woozalia\Ferret\Sys\Routing\caKiosk      |    ->     | ShowStack      |
|         4 | [F] /src/Sys/Routing/Kiosk/Root.php  |        72 | Woozalia\Futil\Kiosk\caWUIDL             |    ->     | Setup          |
|         5 | [F] /src/App/Routed.php              |        23 | Woozalia\Ferret\Sys\Routing\Kiosk\caRoot |    ->     | Go             |
|         6 | [F] /src/App.php                     |        81 | Woozalia\Futil\caApp                     |    ->     | ReceiveRequest |
|         7 | [F] /src/App.php                     |        75 | Woozalia\Ferret\caApp                    |    ->     | Setup          |
|         8 | [F] /apps/futils/run/dba/go.php      |        39 | Woozalia\Ferret\caApp                    |    ->     | Go             |
|         9 | [F] /apps/futils/boot/go.php         |        42 | Woozalia\Futil\DBA\cBoot                 |    ->     | Go             |
|        10 | [F] /apps/futils/run/dba/go.php      |        44 | Woozalia\Futil\boot\caBoot               |    ->     | __construct    |

Key call-chains:

  • [Fe:App->Go()] => [Fe:App->Setup()] => [Fu:SetupIface()] => [Fu:WUIDL Kiosk->Setup()]
  • [Fe:App->Go()] => [Fe:App->Setup()] => [Fu:ReceiveRequest()] => [Fe:Root Kiosk->Go()] => [Fu:WUIDL Kiosk->Setup()]

So improve. Very remediation. Wow.

After Fix #2

Actually fixed. Now the question is why $this->Actions() is empty even after running ReceiveRequest().

  • Actions() is filled in ParseInput().

...oh wait, actually it isn't empty. The error is now "no destination given", which is only appropriate for read or write -- but I said list, so the input check just needs to be a bit more granular.