Faspstream Manager C/C++ API  3.6.1
A C and C++ language interface to basic streaming over the fasp protocol
FaspOutputStreamToFile.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <string>
4 #include <vector>
5 
6 #include <Poco/Thread.h>
7 #include <Poco/RunnableAdapter.h>
8 #include <Poco/Process.h>
9 #include <Poco/SharedPtr.h>
10 #include <Poco/PipeStream.h>
11 
12 #include "Constants.h"
13 
14 #ifdef WIN32
15 
16 #ifdef FASPSTREAM_CPP_EXPORTS
17 #define FASPSTREAM_CPP_API __declspec(dllexport)
18 #else
19 #define FASPSTREAM_CPP_API __declspec(dllimport)
20 #endif
21 
22 #else // NOT WIN32
23 #define FASPSTREAM_CPP_API
24 #endif
25 
27 {
28 
29 private:
30  // Private members are mostly configuration settings, set at the client (sender)
31  Poco::SharedPtr<Poco::ProcessHandle> _ph;
32  Poco::Pipe _inPipe;
33  Poco::Pipe _errPipe;
34 
35  bool _lockPolicy;
36  bool _lockMinimum;
37  bool _lockTarget;
38  int _tcpPort;
39  int _udpPort;
40  int _datagramSize;
41  int _chunkSize;
42  std::string _username;
43  std::string _password;
44  std::string _hostname;
45  int _targetRate;
46  FASPSTREAM_CIPHER_TYPE _cipherType;
47  long _fileSize;
48  int _minRate;
49  int _maxMemory;
50  std::string _ascpPath;
51  FASPSTREAM_POLICY_TYPE _policy;
52 
53 
54  std::string _errorString;
55  bool _subprocessDied;
56  std::string _destinationFilename;
57  std::string _destinationDirectory;
58  std::string _logDirectory;
59  std::string _sshKeyFilePath;
60  std::string _license;
61 
62  const std::vector<std::string> getCommandLine();
63 
64 public:
67 
68  // Should be a private method, but package scope for testability, not in interface
69  FASPSTREAM_CPP_API std::vector<std::string> getCommandline() const;
70 
71  FASPSTREAM_CPP_API bool connect(long size);
72  FASPSTREAM_CPP_API std::string getUsername() const;
73  FASPSTREAM_CPP_API void setUsername(const std::string& username);
74  FASPSTREAM_CPP_API std::string getPassword() const;
75  FASPSTREAM_CPP_API void setPassword(const std::string& password);
76  FASPSTREAM_CPP_API int getMaxMemory() const;
77  FASPSTREAM_CPP_API void setMaxMemory(int maxMem);
78  FASPSTREAM_CPP_API int getUdpPort() const;
79  FASPSTREAM_CPP_API void setUdpPort(int udpPort);
80  FASPSTREAM_CPP_API int getTcpPort() const;
81  FASPSTREAM_CPP_API void setTcpPort(int tcpPort);
83  FASPSTREAM_CPP_API void setDatagramSize(int size);
84  FASPSTREAM_CPP_API int getChunkSize() const;
85  FASPSTREAM_CPP_API void setChunkSize(int size);
86  FASPSTREAM_CPP_API std::string getHostname() const;
87  FASPSTREAM_CPP_API void setHostname(const std::string& hostname);
88  FASPSTREAM_CPP_API int getTargetRate() const ;
89  FASPSTREAM_CPP_API void setTargetRate(int target);
92  FASPSTREAM_CPP_API bool isLockTarget() const;
93  FASPSTREAM_CPP_API void setLockTarget(bool target);
94  FASPSTREAM_CPP_API int getMinRate() const;
95  FASPSTREAM_CPP_API void setMinRate(int minimum);
96  FASPSTREAM_CPP_API bool isLockMinimum() const;
97  FASPSTREAM_CPP_API void setLockMinimum(bool lockMin);
100  FASPSTREAM_CPP_API bool isLockPolicy() const;
101  FASPSTREAM_CPP_API void setLockPolicy(bool lock);
103  FASPSTREAM_CPP_API void setAggressiveness(int aggressive);
104  FASPSTREAM_CPP_API void write(const char* buffer, int length);
105  FASPSTREAM_CPP_API std::string close();
107  FASPSTREAM_CPP_API std::string getAscpPath() const;
108  FASPSTREAM_CPP_API void setAscpPath(const std::string& ascpPath);
109  FASPSTREAM_CPP_API std::string getDestinationFilename() const;
111  const std::string& destinationFilename);
112  FASPSTREAM_CPP_API std::string getDestinationDirectory() const;
114  const std::string& destinationDirectory);
115  FASPSTREAM_CPP_API std::string getLogDirectory() const;
116  FASPSTREAM_CPP_API void setLogDirectory(const std::string& logDirectory);
117  FASPSTREAM_CPP_API std::string getSshKeyFilePath() const;
119  const std::string& sshKeyFilePath);
120  FASPSTREAM_CPP_API long getFileSize() const;
121  FASPSTREAM_CPP_API void setFileSize(const long fileSize);
122  void handleError(int errorCode);
123  FASPSTREAM_CPP_API void setLicense(std::string commandToExecute);
124  FASPSTREAM_CPP_API std::string getLicense() const;
125 
126 };
FASPSTREAM_CPP_API std::string getLogDirectory() const
FASPSTREAM_CPP_API std::string getUsername() const
FASPSTREAM_CPP_API std::vector< std::string > getCommandline() const
FASPSTREAM_CPP_API void setUsername(const std::string &username)
FASPSTREAM_CPP_API int getUdpPort() const
FASPSTREAM_CPP_API void setMinRate(int minimum)
FASPSTREAM_CPP_API void setSshKeyFilePath(const std::string &sshKeyFilePath)
FASPSTREAM_CPP_API int getMaxMemory() const
FASPSTREAM_CPP_API void setFileSize(const long fileSize)
FASPSTREAM_CPP_API void setLockMinimum(bool lockMin)
FASPSTREAM_CPP_API bool isLockPolicy() const
FASPSTREAM_CPP_API int getMinRate() const
FASPSTREAM_CPP_API void setPolicy(FASPSTREAM_POLICY_TYPE newPolicy)
FASPSTREAM_CPP_API std::string close()
FASPSTREAM_CPP_API void forceClose()
FASPSTREAM_CPP_API FASPSTREAM_POLICY_TYPE getPolicy() const
FASPSTREAM_POLICY_TYPE
Definition: fasp_stream_constants.h:25
FASPSTREAM_CPP_API bool isLockMinimum() const
FASPSTREAM_CPP_API void write(const char *buffer, int length)
FASPSTREAM_CPP_API int getDatagramSize() const
FASPSTREAM_CPP_API std::string getDestinationFilename() const
FASPSTREAM_CPP_API std::string getAscpPath() const
FASPSTREAM_CPP_API void setDestinationFilename(const std::string &destinationFilename)
FASPSTREAM_CPP_API int getChunkSize() const
FASPSTREAM_CPP_API void setChunkSize(int size)
FASPSTREAM_CPP_API void setLogDirectory(const std::string &logDirectory)
FASPSTREAM_CPP_API std::string getHostname() const
FASPSTREAM_CPP_API std::string getLicense() const
FASPSTREAM_CPP_API bool isLockTarget() const
FASPSTREAM_CPP_API int getAggressiveness() const
FASPSTREAM_CPP_API void setDestinationDirectory(const std::string &destinationDirectory)
FASPSTREAM_CPP_API long getFileSize() const
FASPSTREAM_CPP_API void setMaxMemory(int maxMem)
FASPSTREAM_CPP_API void setAggressiveness(int aggressive)
FASPSTREAM_CPP_API ~FaspOutputStreamToFile()
FASPSTREAM_CPP_API FASPSTREAM_CIPHER_TYPE getCipherType() const
FASPSTREAM_CPP_API void setPassword(const std::string &password)
FASPSTREAM_CIPHER_TYPE
Definition: fasp_stream_constants.h:37
Definition: FaspOutputStreamToFile.h:26
FASPSTREAM_CPP_API void setAscpPath(const std::string &ascpPath)
FASPSTREAM_CPP_API int getTcpPort() const
FASPSTREAM_CPP_API void setLockTarget(bool target)
FASPSTREAM_CPP_API void setUdpPort(int udpPort)
FASPSTREAM_CPP_API void setTargetRate(int target)
FASPSTREAM_CPP_API void setLockPolicy(bool lock)
void handleError(int errorCode)
FASPSTREAM_CPP_API void setHostname(const std::string &hostname)
FASPSTREAM_CPP_API std::string getPassword() const
FASPSTREAM_CPP_API std::string getSshKeyFilePath() const
FASPSTREAM_CPP_API void setLicense(std::string commandToExecute)
FASPSTREAM_CPP_API void setTcpPort(int tcpPort)
FASPSTREAM_CPP_API void setDatagramSize(int size)
FASPSTREAM_CPP_API std::string getDestinationDirectory() const
FASPSTREAM_CPP_API int getTargetRate() const
FASPSTREAM_CPP_API bool connect(long size)
#define FASPSTREAM_CPP_API
Definition: FaspOutputStreamToFile.h:23
FASPSTREAM_CPP_API void setCipherType(FASPSTREAM_CIPHER_TYPE type)
FASPSTREAM_CPP_API FaspOutputStreamToFile()