QTfrontend/tcpBase.h
author nemo
Thu, 01 Jul 2010 23:41:10 -0400
changeset 3608 c509bbc779e7
parent 1066 1f1b3686a2b0
child 4976 088d40d8aba2
permissions -rw-r--r--
Revert prior attempted optimisation. Gridding the land pays in some situations, but not all. Restricting to an upper bound might help, but overall, seems too fuzzy to be worth it. On one side is increased cost of Add/Delete + extra test on collision check, on the other is skipping the list iteration. Perhaps for large lists.
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
486
7ea71cd3acd5 - Change proto version to 4
unc0rr
parents: 419
diff changeset
     3
 * Copyright (c) 2006, 2007 Igor Ulyanov <iulyanov@gmail.com>
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     4
 *
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     6
 * it under the terms of the GNU General Public License as published by
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     7
 * the Free Software Foundation; version 2 of the License
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     8
 *
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    12
 * GNU General Public License for more details.
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    13
 *
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    14
 * You should have received a copy of the GNU General Public License
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    15
 * along with this program; if not, write to the Free Software
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    16
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    17
 */
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    18
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    19
#ifndef _TCPBASE_INCLUDED
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    20
#define _TCPBASE_INCLUDED
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    21
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    22
#include <QObject>
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    23
#include <QTcpServer>
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    24
#include <QTcpSocket>
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    25
#include <QByteArray>
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    26
#include <QString>
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    27
#include <QDir>
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    28
#include <QProcess>
389
9628e69b609f Fix IPCSocket issues
unc0rr
parents: 291
diff changeset
    29
#include <QPointer>
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    30
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    31
#include <QImage>
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    32
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    33
#define MAXMSGCHARS 255
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    34
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    35
class TCPBase : public QObject
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    36
{
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    37
  Q_OBJECT
389
9628e69b609f Fix IPCSocket issues
unc0rr
parents: 291
diff changeset
    38
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    39
 public:
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    40
  TCPBase(bool demoMode);
419
fdeed9718e6b virtual destructors for tcpBase derived classes, readarray clear removed as unneeded
displacer
parents: 389
diff changeset
    41
  virtual ~TCPBase();
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    42
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    43
 signals:
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    44
  void isReadyNow();
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    45
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    46
 protected:
291
afa378f1e961 automatic assign of game server TCP port
displacer
parents: 186
diff changeset
    47
  quint16 ipc_port;
afa378f1e961 automatic assign of game server TCP port
displacer
parents: 186
diff changeset
    48
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    49
  void Start();
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    50
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    51
  QByteArray readbuffer;
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    52
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    53
  QByteArray toSendBuf;
533
eebb7684ac22 Save saves in Save directory
unc0rr
parents: 486
diff changeset
    54
  QByteArray demo;
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    55
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    56
  void SendIPC(const QByteArray & buf);
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    57
  void RawSendIPC(const QByteArray & buf);
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    58
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    59
  virtual QStringList setArguments()=0;
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    60
  virtual void onClientRead();
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    61
  virtual void onClientDisconnect();
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    62
  virtual void SendToClientFirst();
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    63
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    64
 private:
389
9628e69b609f Fix IPCSocket issues
unc0rr
parents: 291
diff changeset
    65
  static QPointer<QTcpServer> IPCServer;
185
3b777d7008d9 static TCP Server
displacer
parents: 184
diff changeset
    66
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    67
  bool m_isDemoMode;
185
3b777d7008d9 static TCP Server
displacer
parents: 184
diff changeset
    68
  void RealStart();
389
9628e69b609f Fix IPCSocket issues
unc0rr
parents: 291
diff changeset
    69
  QPointer<QTcpSocket> IPCSocket;
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    70
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    71
 private slots:
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    72
  void NewConnection();
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    73
  void ClientDisconnect();
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    74
  void ClientRead();
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    75
  void StartProcessError(QProcess::ProcessError error);
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    76
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    77
  void tcpServerReady();
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    78
};
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    79
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    80
#endif // _TCPBASE_INCLUDED