QTfrontend/tcpBase.h
author koda
Sat, 06 Aug 2011 07:09:30 +0200
changeset 5505 a55aab592950
parent 5213 a86768368309
permissions -rw-r--r--
Ditch the renderer system in sdl1.3 and use the 'old fashioned' sdl/opengl context. This gives us more flexibility and less problem in receiving video events (expecially on mobile platform) as well as not having to care to reset the gl context every time sdl interferes. This is a major sdl1.3 update so it should be tested with care (working great on ios)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     1
/*
1066
1f1b3686a2b0 Update copyright headers a bit
unc0rr
parents: 533
diff changeset
     2
 * Hedgewars, a free turn based strategy game
4976
088d40d8aba2 Happy 2011 :)
koda
parents: 1066
diff changeset
     3
 * Copyright (c) 2006-2007 Igor Ulyanov <iulyanov@gmail.com>
088d40d8aba2 Happy 2011 :)
koda
parents: 1066
diff changeset
     4
 * Copyright (c) 2007-2011 Andrey Korotaev <unC0Rr@gmail.com>
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     5
 *
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     6
 * This program is free software; you can redistribute it and/or modify
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     7
 * it under the terms of the GNU General Public License as published by
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     8
 * the Free Software Foundation; version 2 of the License
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     9
 *
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    10
 * This program is distributed in the hope that it will be useful,
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    13
 * GNU General Public License for more details.
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    14
 *
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    15
 * You should have received a copy of the GNU General Public License
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    16
 * along with this program; if not, write to the Free Software
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    17
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    18
 */
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    19
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    20
#ifndef _TCPBASE_INCLUDED
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    21
#define _TCPBASE_INCLUDED
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    22
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    23
#include <QObject>
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    24
#include <QTcpServer>
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    25
#include <QTcpSocket>
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    26
#include <QByteArray>
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    27
#include <QString>
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    28
#include <QDir>
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    29
#include <QProcess>
389
9628e69b609f Fix IPCSocket issues
unc0rr
parents: 291
diff changeset
    30
#include <QPointer>
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    31
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    32
#include <QImage>
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    33
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    34
#define MAXMSGCHARS 255
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    35
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    36
class TCPBase : public QObject
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    37
{
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    38
  Q_OBJECT
389
9628e69b609f Fix IPCSocket issues
unc0rr
parents: 291
diff changeset
    39
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    40
 public:
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    41
  TCPBase(bool demoMode);
419
fdeed9718e6b virtual destructors for tcpBase derived classes, readarray clear removed as unneeded
displacer
parents: 389
diff changeset
    42
  virtual ~TCPBase();
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    43
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    44
 signals:
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    45
  void isReadyNow();
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    46
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    47
 protected:
291
afa378f1e961 automatic assign of game server TCP port
displacer
parents: 186
diff changeset
    48
  quint16 ipc_port;
afa378f1e961 automatic assign of game server TCP port
displacer
parents: 186
diff changeset
    49
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    50
  void Start();
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    51
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    52
  QByteArray readbuffer;
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    53
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    54
  QByteArray toSendBuf;
533
eebb7684ac22 Save saves in Save directory
unc0rr
parents: 486
diff changeset
    55
  QByteArray demo;
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    56
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    57
  void SendIPC(const QByteArray & buf);
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    58
  void RawSendIPC(const QByteArray & buf);
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    59
5213
a86768368309 make the associate button use the user's settings for loading demos/saves
nemo
parents: 4976
diff changeset
    60
  virtual QStringList getArguments()=0;
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    61
  virtual void onClientRead();
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    62
  virtual void onClientDisconnect();
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    63
  virtual void SendToClientFirst();
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    64
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    65
 private:
389
9628e69b609f Fix IPCSocket issues
unc0rr
parents: 291
diff changeset
    66
  static QPointer<QTcpServer> IPCServer;
185
3b777d7008d9 static TCP Server
displacer
parents: 184
diff changeset
    67
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    68
  bool m_isDemoMode;
185
3b777d7008d9 static TCP Server
displacer
parents: 184
diff changeset
    69
  void RealStart();
389
9628e69b609f Fix IPCSocket issues
unc0rr
parents: 291
diff changeset
    70
  QPointer<QTcpSocket> IPCSocket;
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    71
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    72
 private slots:
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    73
  void NewConnection();
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    74
  void ClientDisconnect();
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    75
  void ClientRead();
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    76
  void StartProcessError(QProcess::ProcessError error);
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    77
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    78
  void tcpServerReady();
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    79
};
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    80
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    81
#endif // _TCPBASE_INCLUDED