2026/07/18
< 2026
|
Saturday, July 18, 2026 (#199)
|
|
References |
Main Work
Ferreteria FileSys stuff in order to support sftp in FTM
Relevant notes: Friday, Thursday
Points in favor of merging Server and Entry:
Serveris basically just a wrapper aroundEntry, and adds no other functionality.Serveris abstract, and therefore never instantiated.Serverhas only one podling,SSH2- ...although that podling itself is at the head of a small tree, but I think this is part of what I'm already trying to remediate?
So, connecting all these notes with the original mission:
- It doesn't make sense for the
Localvariant ofVenueto have an$OServerproperty, because it doesn't need one. - However, the core Stream library (e.g.
SecLib) needs one when opening a remote file. - We need some way to regularize this. Obvious solutions:
- Encapsulate everything that
SecLibneeds from$OServerinto$OServeritself, and have a local variant of$OServerwhich basically does nothing. - Have a local variant of
SecLibthat doesn't expect an$OServer.
- Encapsulate everything that
Q: Where is the Stream object created?
- A:
Fil::$OStreamfetches it fromFil::$OVenue->OStream, which means that it's determined by whichVenue-class is being instantiated. This in turn is determined by the top-level abstractVenueclass looking at theNode's URL (call to static functionVenue::FindFromNode()).
...so it looks like all that needs to happen is that Local::$OStream needs to return the native Stream-class (Native) instead of the SecLib SFTP Stream-class.
Done... ok, slight correction: that's not specifically a file class, and also it's abstract. What we need is File.
next problem
Fil::ActualOpen()is trying to open->OStream($fs)which then callsFile->ActualOpen()which then tries to access->FileNodebefore it has been set.- Thing is,
Filalready has aNodefor the given filespec, so it should be possible to setFile->FileNodeexplicitly after creating the object.- ...done.
- Thing is,
...and now we have yet another infinite loop:
[WFe]IO/Aspect/Connx/Stream/Native/File.php @ 42 \Sys\FileSys\Node\aux\Fil -> Open [WFe]IO/Aspect/Connx.php @ 85 IO\Aspect\Connx\Stream\Native\File -> ActualOpen [WFe]Sys/FileSys/Node/aux/Fil.php @ 110 IO\Aspect\Connx -> Open [WFe]IO/Aspect/Connx.php @ 85 Sys\FileSys\Node\aux\Fil -> ActualOpen
The fact that Connx line 85's call ends up in two different places is because the object is a different class each time (Fil vs. Native Stream File).