File: ServerCommand.cpp

package info (click to toggle)
qtop 2.3.4-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, buster
  • size: 3,980 kB
  • sloc: cpp: 40,477; makefile: 7
file content (102 lines) | stat: -rw-r--r-- 3,647 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
/******************************************************************************
*
* Copyright (C) 2002 Hugo PEREIRA <mailto: hugo.pereira@free.fr>
*
* This is free software; you can redistribute it and/or modify it under the
* terms of the GNU General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option) any later
* version.
*
* This software is distributed in the hope that it will be useful, but WITHOUT
* Any WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
* for more details.
*
* You should have received a copy of the GNU General Public License along with
* this program.  If not, see <http://www.gnu.org/licenses/>.
*
*******************************************************************************/

#include "Debug.h"
#include "ServerCommand.h"

#include <QStringList>

namespace Server
{

    //__________________________________________________________________
    ServerCommand::CommandMap& ServerCommand::_commandNames()
    {
        static CommandMap names = Base::makeT<CommandMap>( {
            { None, "" },
            { Accepted, QObject::tr( "Accepted" ) },
            { Denied, QObject::tr( "Denied" ) },
            { Abort, QObject::tr( "Abort" ) },
            { Identify, QObject::tr( "Identify" ) },
            { IdentifyServer, QObject::tr( "Server" ) },
            { Killed, QObject::tr( "Killed" ) },
            { Raise, QObject::tr( "Raise" ) },
            { Alive, QObject::tr( "Alive" ) },
            { Request, QObject::tr( "Request" ) },
            { Unlock, QObject::tr( "Unlock" ) },
            { GeometryRequest, QObject::tr(  "Request geometry" ) },
            { Geometry, QObject::tr( "Send geometry" ) },
            { Option, QObject::tr( "Option" ) }
        });
        return names;
    }

    //___________________________________________
    ServerCommand::ServerCommand( const ApplicationId& id, const CommandType& command ):
        Counter( "ServerCommand" ),
        timestamp_( TimeStamp::now() ),
        id_( id ),
        command_( command )
    { Debug::Throw( "ServerCommand::ServerCommand.\n" ); }

    //__________________________________________________
    QDataStream& operator << (QDataStream& stream, const ServerCommand& command )
    {
        static const quint32 version = 0;
        stream
            << version
            << command.timestamp_
            << command.clientId_
            << command.id_
            << quint32(command.command_)
            << command.arguments_.get()
            << command.option_.name()
            << command.option_;
        return stream;
    }

    //__________________________________________________
    QDataStream& operator >> (QDataStream& stream, ServerCommand& command )
    {
        quint32 version;
        stream >> version;
        if( version == 0 )
        {
            quint32 commandType;
            QStringList arguments;
            QString optionName;
            Option option;
            stream
                >> command.timestamp_
                >> command.clientId_
                >> command.id_
                >> commandType
                >> arguments
                >> optionName
                >> option;
            command.command_ = (ServerCommand::CommandType) commandType;
            command.arguments_ = CommandLineArguments( arguments );
            command.option_ = XmlOption( optionName, option );

        } else Debug::Throw(0) << "Unrecognized ServerCommand version: " << version << endl;

        return stream;
    }

}