client-cpp  0.10.0
ILogUploadStrategy.hpp
Go to the documentation of this file.
1 /*
2  * Copyright 2014-2016 CyberVision, Inc.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef ILOGUPLOADSTRATEGY_HPP_
18 #define ILOGUPLOADSTRATEGY_HPP_
19 
20 #include <memory>
21 #include <cstdint>
22 
23 #include "kaa/gen/EndpointGen.hpp"
24 
25 namespace kaa {
26 
27 /*
28  * Forward declaration.
29  */
30 class ILogStorageStatus;
31 class ILogFailoverCommand;
32 
37  NOOP = 0,
38  UPLOAD
39 };
40 
47 public:
62 
70  virtual std::size_t getTimeout() = 0;
71 
72  virtual std::size_t getTimeoutCheckPeriod() = 0;
73 
74  virtual std::size_t getLogUploadCheckPeriod() = 0;
75 
81  virtual std::size_t getMaxParallelUploads() = 0;
82 
88  virtual void onTimeout(ILogFailoverCommand& controller) = 0;
89 
98  virtual void onFailure(ILogFailoverCommand& controller, LogDeliveryErrorCode code) = 0;
99 
100  virtual ~ILogUploadStrategy() {}
101 };
102 
103 
107 typedef std::shared_ptr<ILogUploadStrategy> ILogUploadStrategyPtr;
108 
109 } // namespace kaa
110 
111 #endif /* ILOGUPLOADSTRATEGY_HPP_ */
virtual void onFailure(ILogFailoverCommand &controller, LogDeliveryErrorCode code)=0
Callback is used when the log delivery is failed.
The public interface for the log upload strategy.
virtual LogUploadStrategyDecision isUploadNeeded(ILogStorageStatus &status)=0
Decides whether the log upload is needed.
virtual std::size_t getTimeoutCheckPeriod()=0
virtual std::size_t getTimeout()=0
Maximum time to wait the log delivery response.
virtual std::size_t getMaxParallelUploads()=0
Max amount of log batches allowed to be uploaded parallel.
virtual std::size_t getLogUploadCheckPeriod()=0
std::shared_ptr< ILogUploadStrategy > ILogUploadStrategyPtr
LogUploadStrategyDecision
Log upload decisions.
virtual void onTimeout(ILogFailoverCommand &controller)=0
Callback is used when the log delivery timeout detected.
The public interface to represent the current log storage state.