× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Hello Steven,

On Fri, 11 Oct 2002, Steven Kurylo wrote:
>
> >Personally, though, I'd like to either see the existing macro support be
> >extended, or I'd like to see a somewhat more external way of handling this
> >(such as opening up a telnet session in your program, and using that to
> >control in the input and output, or writing a separate terminal object for
> >the emulator that works similarly to the way the debug term works... etc)
> >
> >
> Well thats why I'm asking for opinions, because I'd prefer this to be
> general enough that it benefits everyone.
>
[SNIP]

> All help is appreciated.  I'd like to work out the best way to proceed
> and figure out a rough estimate for how long it should take.
>

Here's my thoughts on how to implement it.  Of course, your input is
welcome, even encouraged, because I may just be crazy. :)

But anyway, I'll try to explain what I have in mind:

    1)  If you take a look at tn5250.c, you'll see that if USE_CURSES is
           defined, it creates a new "terminal object" by calling
           tn5250_curses_terminal_new().   If USE_SLANG is defined, it
           will instead call tn5250_slang_terminal_new(), Likewise, if
           you look at tn5250-win.c it calls tn5250_win32_terminal_new,
           and gnome-5250 calls gtk5250_terminal_new().

         These terminal "objects" are connected to the rest of the
         5250 code in this way.  The "term" object that is returned from
         any of these functions is a structure that contains the information
         that each terminal needs to work.

    2)  Note that after the terminal has been set up, to checks to see
         if the remote host starts with "debug:"   If so, it will
         call tn525_debug_terminal_new() and pass the original terminal
         object as an argument.   What this is doing is telling the main
         codebase of tn5250 to call the terminal routines in debug.c.
         The routines in debug.c will in turn call the routines in
         cursesterm.c or slangterm.c or winterm.c or gtk5250terminal.c
         as appropriate.   This means that the debug code will work
         no matter which terminal you use, which is really nice.

    3)  What I'd like to see is something similar with the "remote control
         terminal".   After you've initialized the cursesterm or winterm
         or whatever you planned to use, if a config keyword says that
         remote control is necessary, you'd call tn5250_remote_new()
         and pass the terminal object as an argument.

        It would simply replace the "getkey" and "waitevent" members
        of the terminal structure with it's own routines.  Then, when
        it's own routines are run, it would call getkey and waitevent
        routines from the terminal object, thus allowing the user to
        continue to operate, regardless of terminal type, while still
        inserting its own keyboard input into the stream when necessary.

    4)  Naturally the bulk of the new code would go into it's own source
         file, maybe called "remotecontrol.c" or "tcp_remote.c" or something
         like that.

    5)  What I'd like to avoid is manually hacking changes into display.c
         session.c, and/or the various terminal-related sources.   There
         seems little reason to do this, and it doesn't really fit into the
         object-oriented design of tn5250.

    6)  Plus, by not changing the code inside display.c or session.c, etc,
         you run less risk of accidentally inputting data when the keyboard
         is supposed to be locked out, etc, which can cause the emulator
         to crash, or the program on the iSeries to crash.

    7)  It's also easier to "run without the changed code" if there happens
         to be a bug that would cause things to fail in some unexpected
         circumstance.


So, that's what I'd do.   What do you think?




As an Amazon Associate we earn from qualifying purchases.

This thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.