libkdegames Library API Documentation

KGameProcessIO Class Reference

The KGameProcessIO class. More...

#include <kgameio.h>

Inheritance diagram for KGameProcessIO:

KGameIO QObject List of all members.

Signals

void signalProcessQuery (QDataStream &stream, KGameProcessIO *me)
void signalIOAdded (KGameIO *game, QDataStream &stream, KPlayer *p, bool *send)

Public Methods

 KGameProcessIO (const QString &name)
virtual ~KGameProcessIO ()
int rtti () const
void sendMessage (QDataStream &stream, int msgid, Q_UINT32 receiver, Q_UINT32 sender)
void sendSystemMessage (QDataStream &stream, int msgid, Q_UINT32 receiver, Q_UINT32 sender)
void initIO (KPlayer *p)
virtual void notifyTurn (bool turn)

Protected Slots

void receivedMessage (const QByteArray &receiveBuffer)

Protected Methods

void sendAllMessages (QDataStream &stream, int msgid, Q_UINT32 receiver, Q_UINT32 sender, bool usermsg)

Detailed Description

The KGameProcessIO class.

It is used to create a computer player via a separate process and communicate transparetly with it. Its counterpart is the KGameProcess class which needs to be used by the computer player. See its documentation for the definition of the computer player.

Author:
Martin Heni <martin@heni-online.de>

Definition at line 323 of file kgameio.h.


Constructor & Destructor Documentation

KGameProcessIO::KGameProcessIO const QString   name
 

Creates a computer player via a separate process.

The process name is given as fully qualified filename. Example:

 KGameProcessIO *input;
   input=new KGameProcessIO(executable_file);
  connect(input,SIGNAL(signalPrepareTurn(QDataStream &,bool,KGameIO *,bool *)),
          this,SLOT(slotPrepareTurn(QDataStream &,bool,KGameIO *,bool *)));
  connect(input,SIGNAL(signalProcessQuery(QDataStream &,KGameProcessIO *)),
          this,SLOT(slotProcessQuery(QDataStream &,KGameProcessIO *)));
Parameters:
name  the filename of the process to start

Definition at line 252 of file kgameio.cpp.

References QObject::connect(), QObject::name(), and receivedMessage().

KGameProcessIO::~KGameProcessIO   [virtual]
 

Deletes the process input devices.

Definition at line 278 of file kgameio.cpp.

References KGameIO::player(), and KPlayer::removeGameIO().


Member Function Documentation

int KGameProcessIO::rtti   const [virtual]
 

The idendification of the IO.

Returns:
ProcessIO

Implements KGameIO.

Definition at line 294 of file kgameio.cpp.

void KGameProcessIO::sendMessage QDataStream   stream,
int    msgid,
Q_UINT32    receiver,
Q_UINT32    sender
 

Send a message to the process.

This is analogous to the sendMessage commands of KGame. It will result in a signal of the computer player on which you can react in the process player.

Parameters:
stream  - the actual data
msgid  - the id of the message
receiver  - not used
sender  - who send the message

Definition at line 346 of file kgameio.cpp.

References sendAllMessages(), and QObject::sender().

void KGameProcessIO::sendSystemMessage QDataStream   stream,
int    msgid,
Q_UINT32    receiver,
Q_UINT32    sender
 

Send a system message to the process.

This is analogous to the sendMessage commands of KGame. It will result in a signal of the computer player on which you can react in the process player.

Parameters:
stream  - the actual data
msgid  - the id of the message
receiver  - not used
sender  - who send the message

Definition at line 341 of file kgameio.cpp.

References sendAllMessages(), and QObject::sender().

Referenced by initIO(), and notifyTurn().

void KGameProcessIO::initIO KPlayer   p [virtual]
 

Init this device by setting the player and e.g.

sending an init message to the device. Calling this function will emit the IOAdded signal on which you can react and initilise the computer player. This function is called automatically when adding the IO to a player.

Reimplemented from KGameIO.

Definition at line 299 of file kgameio.cpp.

References KPlayer::id(), KGameIO::initIO(), QObject::sender(), sendSystemMessage(), signalIOAdded(), and KPlayer::userId().

void KGameProcessIO::notifyTurn bool    turn [virtual]
 

Notifies the IO device that the player's setTurn had been called Called by KPlayer.

You can react on the signalPrepareTurn to prepare a message for the process, i.e. either update it on the changes made to the game since the last turn or the initIO has been called or transmit your gamestatus now.

Parameters:
turn  is true/false

Reimplemented from KGameIO.

Definition at line 321 of file kgameio.cpp.

References KPlayer::id(), KGameIO::player(), QObject::sender(), sendSystemMessage(), and KGameIO::signalPrepareTurn().

void KGameProcessIO::sendAllMessages QDataStream   stream,
int    msgid,
Q_UINT32    receiver,
Q_UINT32    sender,
bool    usermsg
[protected]
 

Internal ~ombined function for all message handling.

Definition at line 351 of file kgameio.cpp.

References QBuffer::buffer(), QDataStream::device(), QObject::sender(), and QDataStream::writeRawBytes().

Referenced by sendMessage(), and sendSystemMessage().

void KGameProcessIO::receivedMessage const QByteArray   receiveBuffer [protected, slot]
 

Internal message handler to receive data from the process.

Definition at line 381 of file kgameio.cpp.

References QBuffer::buffer(), QDataStream::device(), KPlayer::forwardMessage(), KPlayer::id(), KGameIO::player(), QObject::sender(), KGameIO::sendInput(), and signalProcessQuery().

Referenced by KGameProcessIO().

void KGameProcessIO::signalProcessQuery QDataStream   stream,
KGameProcessIO *    me
[signal]
 

A computer query message is received.

This is a 'dummy' message sent by the process if it needs to communicate with us. It is not forwarded over the network. Reacting to this message allows you to 'answer' questions of the process, e.g. sending addition data which the process needs to calculate a move.

Example:

  void GameWindow::slotProcessQuery(QDataStream &stream,KGameProcessIO *reply)
  {
    int no;
    stream >> no;  // We assume the process sends us an integer question numner
    if (no==1)     // but YOU have to do this in the process player
    {
      QByteArray buffer;
      QDataStream out(buffer,IO_WriteOnly);
      reply->sendSystemMessage(out,4242,0,0);  // lets reply something...
    }
  }

Referenced by receivedMessage().

void KGameProcessIO::signalIOAdded KGameIO   game,
QDataStream   stream,
KPlayer   p,
bool *    send
[signal]
 

Signal generated when the computer player is added.

You can use this to communicated with the process and e.g. send initialisation information to the process.

Parameters:
game  the KGameIO object itself
stream  the stream into which the move will be written
p  the player itself
send  set this to false if no move should be generated

Referenced by initIO().


The documentation for this class was generated from the following files:
KDE Logo
This file is part of the documentation for libkdegames Library Version 3.2.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Sat May 1 10:06:39 2004 by doxygen 1.2.15 written by Dimitri van Heesch, © 1997-2003