E-MailRelay
gexecutableverifier.h
Go to the documentation of this file.
1//
2// Copyright (C) 2001-2023 Graeme Walker <graeme_walker@users.sourceforge.net>
3//
4// This program is free software: you can redistribute it and/or modify
5// it under the terms of the GNU General Public License as published by
6// the Free Software Foundation, either version 3 of the License, or
7// (at your option) any later version.
8//
9// This program is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12// GNU General Public License for more details.
13//
14// You should have received a copy of the GNU General Public License
15// along with this program. If not, see <http://www.gnu.org/licenses/>.
16// ===
17///
18/// \file gexecutableverifier.h
19///
20
21#ifndef G_EXECUTABLE_VERIFIER_H
22#define G_EXECUTABLE_VERIFIER_H
23
24#include "gdef.h"
25#include "gverifier.h"
26#include "gtask.h"
27#include "gtimer.h"
28#include <string>
29
30namespace GVerifiers
31{
32 class ExecutableVerifier ;
33}
34
35//| \class GVerifiers::ExecutableVerifier
36/// A Verifier that runs an executable.
37///
39{
40public:
41 ExecutableVerifier( GNet::ExceptionSink , const G::Path & , unsigned int timeout ) ;
42 ///< Constructor.
43
44private: // overrides
45 G::Slot::Signal<GSmtp::Verifier::Command,const GSmtp::VerifierStatus&> & doneSignal() override ; // GSmtp::Verifier
46 void cancel() override ; // GSmtp::Verifier
47 void onTaskDone( int , const std::string & ) override ; // GNet::TaskCallback
48 void verify( GSmtp::Verifier::Command , const std::string & rcpt_to_parameter ,
49 const GSmtp::Verifier::Info & ) override ; // GSmtp::Verifier
50
51public:
52 ~ExecutableVerifier() override = default ;
53 ExecutableVerifier( const ExecutableVerifier & ) = delete ;
55 ExecutableVerifier & operator=( const ExecutableVerifier & ) = delete ;
56 ExecutableVerifier & operator=( ExecutableVerifier && ) = delete ;
57
58private:
59 void onTimeout() ;
60
61private:
63 GSmtp::Verifier::Command m_command ;
64 G::Path m_path ;
65 unsigned int m_timeout ;
67 std::string m_to_address ;
68 GNet::Task m_task ;
69} ;
70
71#endif
A tuple containing an ExceptionHandler interface pointer and a bound 'exception source' pointer.
An abstract interface for callbacks from GNet::Task.
Definition: gtask.h:114
A class for running an exectuable in a separate process with an asychronous completion callback.
Definition: gtask.h:46
A timer class template in which the timeout is delivered to the specified method.
Definition: gtimer.h:141
An asynchronous interface that verifies recipient 'to' addresses.
Definition: gverifier.h:43
A Verifier that runs an executable.
ExecutableVerifier(GNet::ExceptionSink, const G::Path &, unsigned int timeout)
Constructor.
A Path object represents a file system path.
Definition: gpath.h:73
Address verifier classes.
Extra information passed to GSmtp::Verifier::verify().
Definition: gverifier.h:47