24 #include "kgameprocess.h"
27 #include "kgamemessage.h"
28 #include "kmessageio.h"
30 #include <krandomsequence.h>
33 #include <tqdatastream.h>
34 #include <tqcstring.h>
42 #define READ_BUFFER_SIZE 1024
50 rFile.open(IO_ReadOnly|IO_Raw,stdin);
51 wFile.open(IO_WriteOnly|IO_Raw,stdout);
52 mMessageIO=
new KMessageFilePipe(
this,&rFile,&wFile);
57 connect (mMessageIO, TQ_SIGNAL(received(
const TQByteArray&)),
59 fprintf(stderr,
"KGameProcess::constructor %p %p\n",&rFile,&wFile);
61 mRandom =
new KRandomSequence;
72 fprintf(stderr,
"KGameProcess::destructor\n");
93 fprintf(stderr,
"KGameProcess::sendMessage id=%d recv=%d",msgid,receiver);
95 TQDataStream outstream(a,IO_WriteOnly);
97 TQBuffer *device=(TQBuffer *)stream.device();
98 TQByteArray data=device->buffer();;
100 KGameMessage::createHeader(outstream,0,receiver,msgid);
101 outstream.writeRawBytes(data.data(),data.size());
107 if (mMessageIO) mMessageIO->send(a);
128 fprintf(stderr,
"processArgs \n");
134 TQDataStream stream(receiveBuffer, IO_ReadOnly);
138 KGameMessage::extractHeader(stream, sender, receiver, msgid);
139 fprintf(stderr,
"------ receiveNetworkTransmission(): id=%d sender=%d,recv=%d\n",msgid,sender,receiver);
142 case KGameMessage::IdTurn:
147 case KGameMessage::IdIOAdded:
153 emit
signalCommand(stream,msgid-KGameMessage::IdUser,receiver,sender);
158 #include "kgameprocess.moc"
bool exec(int argc, char *argv[])
Enters the event loop of the computer process.
void receivedMessage(const TQByteArray &receiveBuffer)
A message is received via the interprocess connection.
void processArgs(int argc, char *argv[])
processes the command line argumens to set up the computer player Pass the argumens exactely as given...
void sendMessage(TQDataStream &stream, int msgid, TQ_UINT32 receiver=0)
Sends a message to the corresponding KGameIO device.
void sendSystemMessage(TQDataStream &stream, int msgid, TQ_UINT32 receiver=0)
Sends a system message to the corresonding KGameIO device.
void signalInit(TQDataStream &stream, int userid)
This signal is emmited when the process is initialized, i.e.
void signalCommand(TQDataStream &inputStream, int msgid, int receiver, int sender)
The generic communication signal.
~KGameProcess()
Destruct the process.
KGameProcess()
Creates a KGameProcess class.
void signalTurn(TQDataStream &stream, bool turn)
This signal is emmited if the computer player should perform a turn.