Despite documentation and manuals, I have not figured out how to use TCP sockets in Object Pascal, since there doesn't seem to be a primitive for it, or any easy way to instantiate sockets and manipulate incoming connections.

So my approach to sockets is to do it externally. A Bash shell script invokes another script, such as Ruby for binding the socket. Upon recieving a socket connection, it invokes an Object Pascal command line program, passing it socket traffic as standard input.

Another similar approach is to pre-parse serialized socket objects and then re-serialize them in a processed form, for the Object Pascal program to further process and manipulate from standard input. If I knew how to do more of this with pure Object Pascal, I'd do it that way.

But as it is, I'm thinking breaking up the program into components in a bunch of different languages. The way it's designed right now, a Bash Shell script is invoked by /etc/init.d to manage the program, including re-binding to the socket, rehashing, etc. A cron job periodically re-calls the program so that time-related functions can be invoked. this lets me get away with not using a core while-true loop. all components execute as a script and then exit until the next time the main Bash Shell script is invoked.

The /etc/init.d script is treated as an initializer, and is used to manage it, but really the main Bash Shell script in cron is what does the lion's share. A few of the persistent scripts are those that handle things like sockets and long-lived connections between components.

At the moment, all objects are stored on file in flat-file format, and serialized as an IRC-like text-line object notation, but I want to eventually switch to using MsgPack, ProtoBuf and SQLite for serialization and object storage, and libpurple for the many protocols libpurple supports.

The name of the application in question is named Tanis. Tanis is an automated personal assistant, or pseudo-AI. It does various things. At the moment, all it is is a protocol-agnostic bot that can retrieve weather, greet people with a random quote, and various IRC bot functions. It can also control chat management and such.

I'm working on an email management console, and from there a Usenet interface. It's going smoothly enough, I suppose. However, I really like Object Pascal, and the more I can do with it, and Common Lisp for the learning portions, the better.

I'd prefer for the sockets to be handled by Object Pascal, but I do not know how to do this. I'm not very good at using other peoples' code and libraries in general, so I tend to focus on either well-documented standard libraries that are easy to access and use, or using purely my own code.

I'm fairly proficient with Bash Shell, and I like Regular Expressions, and am fairly conversant with Extended Regular Expressions, so I tend to focus on using Bash Shell scripts as much as seems reasonable, while invoking other program components from within Bash while the Bash Shell script executes. There are three different Bash Shell scripts. One is an infinite loop, which can be started and stopped with /etc/init.d commands

Anyway, thank you for your time and patience.
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to