Basically, gp units, provide a render html engine for construction of dynamic complex HTML pages. With extension to handle remote control commands. The basic element for rendering Html is THtm.
Some of html codes are coded like enum. types.
For example, html tags like <td>, <text> , <script> are using like a enum. type called TlinkTag, for convention this typed are building with the originiar html tag word with 'LT' added in the begin, (example TABLE tag is called ltTable by Gp engine).
tlinkTag = (ltnone, ltpp, lttd, ltth_,
lttr, ltop, ltul, ltli ,ltbb, ltcap, lttable_, ltform, ltselect, lttextarea,
lthtml, lthead, lttitle, ltbody, ltframeset, ltscript, ltText, ltinput,
ltButton, ltspan, ltoptio, ltdiv, ltimg, ltaa);
Some params 'size', 'border', 'VALIGN', 'bgcolor', 'name', 'method', 'action', 'width', 'value', 'align', 'type' have a integer representation.
Because is multilingual, some words or expression, are coded in integer constant too.
The key component is TgpServer which encapsulate the kernel for build dynamic pages, answer to normal 'string like' http commands in different ways (but web compatible) , handle the list of thread process which answer to the system, have the list of posible actions... and much more.
tGpServer handle a list of tspyce components which provide the specific remote actions (like mouse movement, clicks, file support, handle process, ...) . Then, each group of web commands asociated to each action are encapsulated in a tGpServerce descendant.
Both tGpServer and tGpServerce are
For example, the file handle actions is encapsulated in TSpyceInspect component, or remote screen control in tSpyceScreen. Each other features have their tGpServerce class : TGpPasswords for login actions, tspyceSpice for automatic translation of delphi form to html forms ( so you can reuse old delphi form code by making it web accesible), tMiMenu for menu features.
tGpServer handle a list of users too. Each user is asociated to a Tuser class, which handle the specific info for each session, for example the screensession. This way the screen control can be made by more than one user. About the remote screen control, Gp have embeded a java applet which is downloaded in the client machine, Gp send only the bmp pieces of screen which changes. ( so it have a 'memory' for each session which remain the client image, for sending only the changes).
That is, encapsulate all the features of a remote control web server
but without real connections. Then, you can use tGpServerPrimo in your
system (because it not interferes with your communication system). In
this way , I develop 3 extension for tGpServerPrimo.
TgranPrimo which is a stand-alone HTTP TCP/IP server ( extend TcustomGranPrimo)
TGpIndy which is a Indy adaptation (extend TidhttpServer)
Gp for Intraweb which is a IntraWeb component extension.
Threre is other important common used classes .
TResponserequest which is similar to encapsulate the TIdHTTPRequestInfo and TIdHTTPResponseInfo functionally , and use TgpHtml streams for handle responses.
Is the more common structure passed in spyobjects library call
Another important classes are TmiWebActionItem and TGpWebActions that encapsulate the commands path recognition and add new commands handlers.
( There is some example of how to use TmiResponserequest and TmiWebActionItem
in aliasweb.pas unit.)
Finally there is a base thread class TgpThread which
provide a manage thread function in a threadlist TmiThreadList where is
inserted all the TgpThread descendant.
The TgpThread descendant are process that work in different threads. Basically, in Tgranprimo component there is several communication TgpThread extensions: Listener threads for incoming connections, Answer threads for process the answer to this connections, Clients or Host threads for not keep-alive connections between different Gp systems, sending e-mail connections...
Teléfono: 978-610539 - Fax: 978-610861 -Trav.Agustina Aragón 1,1e 44002 Teruel ( España ).webmaster
Copyright © 1997-2004 , [Multi-Informatica Teruel, S.L].La información contenida en este documento está sujeta a modificaciones sin previo aviso. Otros productos u organizaciones mencionadas aquí son marcas comerciales o marcas registradas propiedad de sus respectivas organizaciones o propietarios.