137 const RequiredKeys = ...;
141 const RequiredKeysWithHost = RequiredKeys +
"host";
150 "tempfile_template":
".tmp.%s.part",
151 "atomic_transfer": False,
155 const OptionalKeys = ...;
159 const AllKeys = RequiredKeysWithHost + keys Defaults + OptionalKeys;
162 const ErrorDelay = 1m;
187 softlist<string> path =
".";
208 bool runflag = False;
466 hash<FtpPollerFileEventInfo>
retrieveFile(hash<FtpPollerFileEventInfo> event);
512 static checkPath(
string path,
string type,
bool write = False);
523 "atomic_transfer": <DataProviderOptionInfo>{
524 "type": AbstractDataProviderType::get(BoolType),
525 "desc":
"Use an atomic transfer mechanism with `local_dir` where remote files are first moved to a "
526 "temporary location and then moved to the final location when they have been fully transferred",
527 "default_value": True,
530 "local_dir": <DataProviderOptionInfo>{
531 "type": AbstractDataProviderType::get(StringOrNothingType),
532 "desc":
"A local directory that will be used to retrieve files",
535 "mask": <DataProviderOptionInfo>{
536 "type": AbstractDataProviderType::get(StringType),
537 "desc":
"The glob mask to use; will be treated as a regex if `regex` is `true`",
538 "default_value":
"*",
541 "minage": <DataProviderOptionInfo>{
542 "type": AbstractDataProviderType::get(IntType),
543 "desc":
"An integer giving the minimum file age in seconds before the file will be polled; this is "
544 "meant to work around non-atomic file transfer operations",
547 "poll_interval": <DataProviderOptionInfo>{
548 "type": AbstractDataProviderType::get(IntType),
549 "desc":
"The interval in seconds between polling for files",
553 "regex": <DataProviderOptionInfo>{
554 "type": AbstractDataProviderType::get(BoolType),
555 "desc":
"If `true` then `mask` is treated as a regular expression instead of a glob pattern",
558 "reopt": <DataProviderOptionInfo>{
559 "type": AbstractDataProviderType::get(IntType),
560 "desc":
"A bitfield of regular expression options (`1` = ignore case, `2` = treat EOL as a regular "
561 "character); ignored if `regex` is not `true`",
564 "sort_desc": <DataProviderOptionInfo>{
565 "type": AbstractDataProviderType::get(BoolType),
566 "desc":
"Sort descending; if not given then an ascending sort is assumed if a `sort_type` is given",
569 "sort_type": <DataProviderOptionInfo>{
570 "type": AbstractDataProviderType::get(StringType),
571 "desc":
"Either `name` or `date` for the data to use for sorting",
574 "url": <DataProviderOptionInfo>{
575 "type": AbstractDataProviderType::get(StringType),
576 "desc":
"A URL for an FTP connection",
622 "type":
"FtpPollerDataProvider",
623 "supports_observable": True,
632 hash<DataProviderInfo> getStaticInfoImpl();
647 "type":
"FtpDelayedPollerDataProvider",
648 "supports_observable": True,
663 hash<DataProviderInfo> getStaticInfoImpl();
674 static Class
cls =
new Class(
"FtpPollerDataProvider");
679 "desc":
"FTP poller data provider factory",
680 "children_can_support_observers": True,
711class EmbeddedFtpPoller :
public FtpPoller {
716 Observable observable;
720 constructor(FtpPollerDataProviderBase provider, hash<auto> options) ;
723 singleFileEvent(hash<FtpPollerFileEventInfo> event);
726 postSingleFileEvent(hash<FtpPollerFileEventInfo> event);
Event-based data provider for FTP polling events.
Definition: FtpPoller.qm.dox.h:642
const ProviderInfo
Provider info.
Definition: FtpPoller.qm.dox.h:646
constructor(*hash< auto > options)
Creates the object from constructor options.
observersReady()
Called when all observers have been added to the object.
Event-based data provider for FTP polling events.
Definition: FtpPoller.qm.dox.h:518
*string getDesc()
Returns the data provider description.
hash< string, hash< DataProviderMessageInfo > > getEventTypesImpl()
Returns a hash of all supported event types.
constructor(*hash< auto > options)
Creates the object from constructor options.
const ConstructorOptions
Constructor options.
Definition: FtpPoller.qm.dox.h:522
EmbeddedFtpPoller poller
The file poller itself.
Definition: FtpPoller.qm.dox.h:583
The FTP poller data provider factory.
Definition: FtpPoller.qm.dox.h:669
const FactoryInfo
Factory info.
Definition: FtpPoller.qm.dox.h:677
Class getClassImpl()
Returns the class for the data provider object.
static Class cls
Data provider type info.
Definition: FtpPoller.qm.dox.h:674
hash< DataProviderFactoryInfo > getInfoImpl()
Returns static factory information without provider_info.
hash< DataProviderInfo > getProviderInfoImpl()
Returns static provider information.
Event-based data provider for FTP polling events.
Definition: FtpPoller.qm.dox.h:617
const ProviderInfo
Provider info.
Definition: FtpPoller.qm.dox.h:621
constructor(*hash< auto > options)
Creates the object from constructor options.
static checkPath(string path, string type, bool write=False)
checks a path on the local file system
string local_dir
Local directory to transfer file.
Definition: FtpPoller.qm.dox.h:199
const SortNone
no sorting
Definition: FtpPoller.qm.dox.h:131
logInfo(string fmt)
calls the "log_info" closure or call reference with important information
hash< FtpPollerFileEventInfo > getRemoteFileData(hash< FtpPollerFileEventInfo > event)
Retrieves remote file data and adds it to the event data.
int port
port
Definition: FtpPoller.qm.dox.h:172
getStoreFile(string remote_path, string local_path)
retrieves a remote file and stores it to a local path
*code sleep
optional sleep closure
Definition: FtpPoller.qm.dox.h:253
list< hash< FtpPollerFileEventInfo > > getFiles(string subdir, int sort=FtpPoller::SortNone, int order=FtpPoller::OrderAsc)
returns a list of regular file hashes matching any file name mask set for the object
int start()
starts polling in the background; returns the thread ID of the polling thread
*code log_debug
optional debug log closure
Definition: FtpPoller.qm.dox.h:247
stopNoWait()
stops the polling operation, returns immediately
logDetail(string fmt)
calls the "log_detail" closure or call reference with detail information
destructor()
stops the polling operation if in progress and destroys the object
*string mask
file glob name mask (ignored if "regex_mask" also set)
Definition: FtpPoller.qm.dox.h:193
rename(string old, string nnew)
renames a file on the server
int tid
polling tid
Definition: FtpPoller.qm.dox.h:223
*string pass
password
Definition: FtpPoller.qm.dox.h:184
*code start_thread
optional start thread closure
Definition: FtpPoller.qm.dox.h:250
hash< FtpPollerFileEventInfo > retrieveTempFile(hash< FtpPollerFileEventInfo > event)
Retrieves the remote file to local_dir using a temporary file.
constructor(hash< auto > nconf)
creates the FtpPoller object from the configuration hash argument passed
binary getFile(string path)
retrieves a binary file and returns the file's contents
string host
host or address name
Definition: FtpPoller.qm.dox.h:169
*code log_detail
optional detail log closure
Definition: FtpPoller.qm.dox.h:244
*bool fileEvent(list< hash< FtpPollerFileEventInfo > > l)
called for each poll with a list of all files matched before transfer
bool atomic_transfer
Atomic transfer flag for use with local_dir.
Definition: FtpPoller.qm.dox.h:205
abstract postSingleFileEvent(hash< FtpPollerFileEventInfo > event)
called after singleFileEvent() for each matching file individually
string url
url
Definition: FtpPoller.qm.dox.h:178
*code log_info
optional info log closure
Definition: FtpPoller.qm.dox.h:241
*softint minage
minimum file age
Definition: FtpPoller.qm.dox.h:238
hash< FtpPollerFileEventInfo > retrieveFile(hash< FtpPollerFileEventInfo > event)
Retrieves the remote file to local_dir directly.
string tempfile_template
The temporary filename template when local_dir is set.
Definition: FtpPoller.qm.dox.h:202
stop()
stops the polling operation, returns when the polling operation has been stopped
bool runOnce()
runs a single poll (useful for checking for errors inline before starting a background thread)
ftpSleep(softint secs)
sleeps for the specificed number of seconds
run()
starts the polling operation
string getTextFile(string path)
retrieves a text file and returns the file's contents
logDebug(string fmt)
calls the "log_debug" closure or call reference with verbose debugging information
int poll_interval
poll interval in seconds
Definition: FtpPoller.qm.dox.h:196
constructor(Qore::FtpClient n_ftp, hash< auto > nconf)
creates the FtpPoller object from the FtpClient argument and configuration hash argument passed
bool get_files
internal "get files" flag
Definition: FtpPoller.qm.dox.h:211
timeout timeout
timeout in ms
Definition: FtpPoller.qm.dox.h:226
waitStop()
waits indefinitely for the polling operation to stop
int getPollCount()
returns the current poll count
removeFile(string fn)
deletes a file on the server
setMask()
converts a glob mask into a regex
Qore::FtpClient ftp
FtpClient object.
Definition: FtpPoller.qm.dox.h:232
abstract singleFileEvent(hash< FtpPollerFileEventInfo > event)
called for each matching file individually whenever matching files are polled
const OrderAsc
ascending sort order
Definition: FtpPoller.qm.dox.h:126
string user
user
Definition: FtpPoller.qm.dox.h:175
hash< UrlInfo > urlh
url hash
Definition: FtpPoller.qm.dox.h:181
string protocol
Protocol ("ftp" or "ftps")
Definition: FtpPoller.qm.dox.h:166
startInline()
starts the polling operation inline (not in a background thread)
string rootFtpPath
path after connecting to Ftp server
Definition: FtpPoller.qm.dox.h:190
const EVENT_FTP_FILE
FTP file event constant.
Definition: FtpPoller.qm.dox.h:119