client-cpp  0.7.4
ILogUploadStrategy.hpp
Go to the documentation of this file.
1 /*
2  * Copyright 2014 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 
69  virtual std::size_t getBatchSize() = 0;
70 
71 
72  virtual std::size_t getRecordsBatchCount() = 0;
73 
81  virtual std::size_t getTimeout() = 0;
82 
83  virtual std::size_t getTimeoutCheckPeriod() = 0;
84 
85  virtual std::size_t getLogUploadCheckPeriod() = 0;
86 
92  virtual std::size_t getMaxParallelUploads() = 0;
93 
99  virtual void onTimeout(ILogFailoverCommand& controller) = 0;
100 
109  virtual void onFailure(ILogFailoverCommand& controller, LogDeliveryErrorCode code) = 0;
110 
111  virtual ~ILogUploadStrategy() {}
112 };
113 
114 
118 typedef std::shared_ptr<ILogUploadStrategy> ILogUploadStrategyPtr;
119 
120 } // namespace kaa
121 
122 #endif /* ILOGUPLOADSTRATEGY_HPP_ */
virtual void onFailure(ILogFailoverCommand &controller, LogDeliveryErrorCode code)=0
Callback is used when the log delivery is failed.
virtual std::size_t getRecordsBatchCount()=0
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
virtual std::size_t getBatchSize()=0
Retrieves the maximum size of the report pack that will be delivered in the single request to the Ope...
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.