home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.wwiv.com
/
ftp.wwiv.com.zip
/
ftp.wwiv.com
/
pub
/
PROTOCOL
/
TPHYD100.ZIP
/
README.DOC
< prev
Wrap
Text File
|
1993-11-29
|
6KB
|
117 lines
This is TP-Hydra 1.00, a Turbo Pascal 6.0 implementation of the
Hydra bidirectional file transfer protocol.
It is a port from the Hydracom 1.08 C sources by Adam Blake of
Wandoo Valley Software (Comunique terminal package) and Arjen Lentz
of LENTZ SOFTWARE-DEVELOPMENT (Hydra co-design and HydraCom).
I (AGL) specifically participated in this effort to provide a
freely available Pascal source of Hydra, aiding further integration
of the protocol in programs.
The stuff works, and was used in the Communique 2.10 release which
supports Hydra internally.
So, here we are....
Couple of things you have to know when including Hydra in your own
program:
The buffers are NEVER flushed or cleared, not even if errors occur.
Only for an abort, just before the cancel sequence is sent.
New data packets are only put in the transmit buffer if there are
less bytes in that buffer than the maximum block length. This will
keep the transmit buffer always full enough, but leave the Hydra
code free to process incoming data.
To enable maximum throughput without losing characters or slowing
down transmission, FORCE your program to use async buffers with a
minimum size of 4096 bytes each.
Of course you can't directly set the size of those buffers if you
use a FOSSIL driver. That's why The-Box Mailer and HydraCom call
the FOSSIL information function, and print a warning message if
either of the buffers is less than 4095 (yes 4095, the OS/2 VX00
reports 4095 instead of 4096 ;-)
Please don't argue, just do it. Alll this has been tried & tested.
Larger buffers are okidoki, but generally will not improve
performance of either transfer direction....
Depending on the system, you may need to lower RTS during disk
access to prevent losing incoming data. DOS keeps interrupts
disabled rather (too) long....
X00 and VX00 have extended FOSSIL functions supporting this.
If you use your own async stuff, make sure they can do it too.
A general note, important not just for Hydra:
Add timers to your lowlevel byte/block transmit functions, and
the flush output buffer routine.
Some (mail)sessions have been observed to just die, while the
program stays online. Carrier is still present, and braindead
timers in the highlevel code don't go off because the program
is stuck in a lower level, waiting for some bytes to be passed
to the FOSSIL or async code.
This can happen because of hardware handshake problems, modem
retraining, whatever. In any case, it happens....
So it's in that lowlevel code that you need to add your timeout;
something in the order of a minute will do fine. No need to pass
back an error code, your high level timers should take care of
the rest.
HYDRA in FidoNet technology mailers
HYDRA is suitable for use in FidoNet mailers. It can be implemented
for EMSI and FTS-6 mail sessions. The FTS-6 (YooHoo) capability bit
for HYDRA is 0x0020 (DOES_HYDRA). The EMSI and IEMSI protocol
capability flag is HYD.
When utilizing HYDRA in a mail session, two complete batches are
always performed. Little else differs from a normal FTS-6 ZedZap mail
session. The first batch is used to transmit all mail, files, and
file requests by both sides. The second batch is always performed,
sending nothing if there are no file requests to honor. The data
buffers are not purged between the two batches since HYDRA ignores
any leftovers from the previous batch (END packets, etc.).
To integrate HYDRA into an existing mailer, the same code used for
the ZedZap session flow can be used, but instead of one transmit and
one receive session, two transmit sessions (or batches) are used.
When the HYDRA end of batch is initiated it will not be terminated
until an end of batch has been received from the remote and the end
of session sequence has been finished.
Adam is moving from Luxembourg back to Australia, so unfortunately
he can't help with any questions....
For help, please use the worldwide HYDRADEV echomail conference, or
contact me directly by NetMail. I never use Pascal myself so a msg
in the echo will probably get you your information faster.
Of course, regarding the protocol and mailer implementation, I can
tell you everything you want to know ;-)
Refer to HYDRA.DOC (HYDRA001.ZIP and FSC-0072.A01) for the original
Hydra specs....
Do read LICENSE.DOC before you grab the sources, and don't forget
to mention what needs to be mentioned in your docs and (C) screens.
Well, have fun, and integrate Hydra into your software soon!
Please don't wait for someone else to do it first?
This stuff was sent directly to developers of mailer, BBS and
terminal software, those who were already aware of this source
becoming available and in fact eagerly waiting for it.
Won't tell you who they are to give them a fair chance of working
on their programs without being harrassed about when they will
release something with Hydra, but.... they are some biggies ;-)
Better you hurry up too!
Arjen Lentz
FidoNet 2:283/512
BBS/FAX +31-33-633916
arjen_lentz@f512.n283.z2.fidonet.org
--- end of "readme.doc" ---