KCDDB

asynccddbplookup.h
1 /*
2  SPDX-FileCopyrightText: 2002 Rik Hemsley (rikkus) <[email protected]>
3  SPDX-FileCopyrightText: 2002 Benjamin Meyer <[email protected]>
4 
5  SPDX-License-Identifier: LGPL-2.0-or-later
6 */
7 
8 #ifndef KCDDB_ASYNC_CDDBP_LOOKUP_H
9 #define KCDDB_ASYNC_CDDBP_LOOKUP_H
10 
11 #include "cddbplookup.h"
12 
13 namespace KCDDB
14 {
15  class AsyncCDDBPLookup : public CDDBPLookup
16  {
17  Q_OBJECT
18 
19  public:
20 
21  enum State
22  {
23  Idle,
24  WaitingForConnection,
25  WaitingForGreeting,
26  WaitingForHandshake,
27  WaitingForProtoResponse,
28  WaitingForQueryResponse,
29  WaitingForMoreMatches,
30  WaitingForCDInfoResponse,
31  WaitingForCDInfoData,
32  WaitingForQuitResponse
33  };
34 
35  AsyncCDDBPLookup();
36 
37  virtual ~AsyncCDDBPLookup();
38 
39  Result lookup( const QString &, uint, const TrackOffsetList & ) override;
40 
41  Q_SIGNALS:
42 
43  void finished( KCDDB::Result );
44  void quit( Result );
45 
46  protected Q_SLOTS:
47 
48  void slotGotError(QAbstractSocket::SocketError error);
49  void slotConnectionSuccess();
50  void slotReadyRead();
51 
52  protected:
53 
54  void doHandshake();
55  void doProto();
56  void doQuery();
57  void doQuit();
58 
59  bool parseQueryResponse( const QString & );
60  void requestCDInfoForMatch();
61  bool parseCDInfoResponse( const QString & );
62  void parseCDInfoData();
63 
64  void read();
65 
66  QString readLine();
67 
68  QString stateToString() const;
69 
70  private:
71 
72  State state_;
73  Result result_;
74  QStringList cdInfoBuffer_;
75  };
76 }
77 
78 #endif // KCDDB_ASYNC_CDDBP_LOOKUP_H
79 // vim:tabstop=2:shiftwidth=2:expandtab:cinoptions=(s,U1,m1
Q_SIGNALSQ_SIGNALS
Q_OBJECTQ_OBJECT
QVariant read(const QByteArray &data, int versionOverride=0)
Q_SLOTSQ_SLOTS
State
const QList< QKeySequence > & quit()
This file is part of the KDE documentation.
Documentation copyright © 1996-2021 The KDE developers.
Generated on Fri Nov 26 2021 23:22:53 by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.