Table of Contents
This chapter describes RDP program components, environment configurations and compilations.
A RDP (Real time Data Processor) works similarly to a server in a UCS. A RDP is a process that is modified from a UCS-type process in a kernel level to send continuously changing data to clients rapidly and effectively.
RDP sends data to clients without passing through CLH. This enables far better performance in process occupations or process speeds than UCS when sending small volumes of data to multiple clients in short term intervals.
A RDP server program implements application logic using usermain() like a UCS program.
int usermain(int argc, char *argv[])
Actual application logic is implemented. An application process will be terminated after executing tpsvrdone() if the process is returned from usermain(), so mostly this part will be implemented as an infinite loop.
A RDP server program does not require tpschedule() unlike a UCS server program. A RDP client program is like a UCS client program. Implement the program to receive unrequested messages using APIs such as tpsetunsol_flag(), tpsetunsol(), and tpgetunsol(). For more information, refer to "2.2.2. Client Program".
To create a configuration file for RDP, set MINCLH and MAXCLH in a DOMAIN section to the same value. Set REALSVR in a NODE section to the name of a server and then set the rscpc item.
An actual server is unique in a node and other server processes send data to the actual server and then the actual server sends the data to the client. The service result value will be sent to the server from each server process and the number of channels to use must be set in rscpc.
In a SERVER section, the values of MIN and MAX are usually double that of the values of MINCLH and MAXCLH. Set SVRTYPE to 'REALSVR.'
*DOMAIN tmax1 SHMKEY =70990, MINCLH=1, MAXCLH=1 *NODE tmaxi1 TMAXDIR = "/home/navis/tmax", APPDIR = "/home/navis/tmax/appbin", PATHDIR = "/home/navis/tmax/path", TLOGDIR = "/home/navis/tmax/log/tlog", ULOGDIR = "/home/navis/tmax/log/ulog", SLOGDIR = "/home/navis/tmax/log/slog", REALSVR = “real", rscpc = 16 *SVRGROUP svg1 NODENAME = "tmaxi1" svg2 NODENAME = "tmaxi1" *SERVER deal SVGNAME = svg2, MIN=1 real SVGNAME = svg1, MIN=2, MAX=2, SVRTYPE = REALSVR *SERVICE IN SVRNAME = deal OUT SVRNAME = deal
A RDP server program must be linked to a RDP library (libsvrrs.so) when it is compiled. The program must include $TMAXDIR/usrinc/ucs.h and TMAXLIBS and a Makefile must include –lsvrrs and –lpthread.
The following is a Makefile example to compile a RDP server program in a 32bit Solaris.
# Server makefile TARGET = $(COMP_TARGET) APOBJS = $(TARGET).o SDLFILE = demo.s #Solaris LIBS = -lsvrrs -lpthread -lnodb -lsocket -lnsl OBJS = $(APOBJS) $(SDLOBJ) $(SVCTOBJ) SDLOBJ = ${SDLFILE:.s=_sdl.o} SDLC = ${SDLFILE:.s=_sdl.c} SVCTOBJ = $(TARGET)_svctab.o CFLAGS = -O -I$(TMAXDIR) APPDIR = $(TMAXDIR)/appbin SVCTDIR = $(TMAXDIR)/svct LIBDIR = $(TMAXDIR)/lib # .SUFFIXES : .c .c.o: $(CC) $(CFLAGS) -c $< # # server compile # $(TARGET): $(OBJS) $(CC) $(CFLAGS) -L$(LIBDIR) -o $(TARGET) $(OBJS) $(LIBS) mv $(TARGET) $(APPDIR)/. rm -f $(OBJS) $(APOBJS): $(TARGET).c $(CC) $(CFLAGS) -c $(TARGET).c $(SVCTOBJ): touch $(SVCTDIR)/$(TARGET)_svctab.c $(CC) $(CFLAGS) -c $(SVCTDIR)/$(TARGET)_svctab.c $(SDLOBJ): $(TMAXDIR)/bin/sdlc -i ../sdl/$(SDLFILE) $(CC) $(CFLAGS) -c ../sdl/$(SDLC) # clean: -rm -f *.o core $(TARGET)
Makefile content might be different based on the OS used.