unit SuperTCPChannelChat_ServerMain; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, uROClient, uROPoweredByRemObjectsButton, uROClientIntf, uROServer, uROBinMessage, uROSuperTcpServer, uROSessions, uROEventRepository; type TSuperTCPChannelChat_ServerMainForm = class(TForm) ROPoweredButton: TROPoweredByRemObjectsButton; ROMessage: TROBinMessage; ROServer: TROSuperTcpServer; ROSessionManager: TROInMemorySessionManager; ROEventRepository: TROInMemoryEventRepository; procedure FormCreate(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); private { Private declarations } public { Public declarations } end; var SuperTCPChannelChat_ServerMainForm: TSuperTCPChannelChat_ServerMainForm; implementation uses SuperTCPChannelChatLibrary_Intf; {$R *.dfm} procedure TSuperTCPChannelChat_ServerMainForm.FormCreate(Sender: TObject); begin ROServer.Active := true; end; procedure TSuperTCPChannelChat_ServerMainForm.FormCloseQuery( Sender: TObject; var CanClose: Boolean); var ev: IChatEvents_Writer; Session: TROSession; begin ev := (ROEventRepository as IChatEvents_Writer); ev.ShutdownServer(EmptyGUID); Sleep(2000); // allow clients to gracefully logout. end; end.