138        const RequiredKeys = ...;
 
  142        const RequiredKeysWithHost = RequiredKeys + 
"host";
 
  151            "tempfile_template": 
".tmp.%s.part",
 
  152            "atomic_transfer": False,
 
  156        const OptionalKeys = ...;
 
  160        const AllKeys = RequiredKeysWithHost + keys Defaults + OptionalKeys;
 
  163        const ErrorDelay = 1m;
 
  188        softlist<string> path = 
".";
 
  209        bool runflag = False;
 
  414            *
string nlst = ftp.
nlst();
 
  416                throw "FTP-ERROR", sprintf(
"no data returned from NLST command");
 
  418            fl = nlst.split(
"\r\n");
 
  426        list<hash<FtpPollerFileEventInfo>> l = ();
 
  427        foreach string fn in (fl);
 
  434        logDetail(
"%s: polled %d matching file%s", url, l.size(), l.size() == 1 ? 
"" : 
"s");
 
  494     hash<FtpPollerFileEventInfo> 
retrieveFile(hash<FtpPollerFileEventInfo> event);
 
  540      static checkPath(
string path, 
string type, 
bool write = False);
 
  551            "atomic_transfer":  <DataProviderOptionInfo>{
 
  552                "type": AbstractDataProviderType::get(BoolType),
 
  553                "desc": 
"Use an atomic transfer mechanism with `local_dir` where remote files are first moved to a " 
  554                    "temporary location and then moved to the final location when they have been fully transferred",
 
  555                "default_value": True,
 
  558            "local_dir": <DataProviderOptionInfo>{
 
  559                "type": AbstractDataProviderType::get(StringOrNothingType),
 
  560                "desc": 
"A local directory that will be used to retrieve files",
 
  563            "mask": <DataProviderOptionInfo>{
 
  564                "type": AbstractDataProviderType::get(StringType),
 
  565                "desc": 
"The glob mask to use; will be treated as a regex if `regex` is `true`",
 
  566                "default_value": 
"*",
 
  569            "minage": <DataProviderOptionInfo>{
 
  570                "type": AbstractDataProviderType::get(IntType),
 
  571                "desc": 
"An integer giving the minimum file age in seconds before the file will be polled; this is " 
  572                    "meant to work around non-atomic file transfer operations",
 
  575            "poll_interval": <DataProviderOptionInfo>{
 
  576                "type": AbstractDataProviderType::get(IntType),
 
  577                "desc": 
"The interval in seconds between polling for files",
 
  581            "regex": <DataProviderOptionInfo>{
 
  582                "type": AbstractDataProviderType::get(BoolType),
 
  583                "desc": 
"If `true` then `mask` is treated as a regular expression instead of a glob pattern",
 
  586            "reopt": <DataProviderOptionInfo>{
 
  587                "type": AbstractDataProviderType::get(IntType),
 
  588                "desc": 
"A bitfield of regular expression options (`1` = ignore case, `2` = treat EOL as a regular " 
  589                    "character); ignored if `regex` is not `true`",
 
  592            "sort_desc": <DataProviderOptionInfo>{
 
  593                "type": AbstractDataProviderType::get(BoolType),
 
  594                "desc": 
"Sort descending; if not given then an ascending sort is assumed if a `sort_type` is given",
 
  597            "sort_type": <DataProviderOptionInfo>{
 
  598                "type": AbstractDataProviderType::get(StringType),
 
  599                "desc": 
"Either `name` or `date` for the data to use for sorting",
 
  602            "url": <DataProviderOptionInfo>{
 
  603                "type": AbstractDataProviderType::get(StringType),
 
  604                "desc": 
"A URL for an FTP connection",
 
  650            "type": 
"FtpPollerDataProvider",
 
  651            "supports_observable": True,
 
  660     hash<DataProviderInfo> getStaticInfoImpl();
 
  675            "type": 
"FtpDelayedPollerDataProvider",
 
  676            "supports_observable": True,
 
  691     hash<DataProviderInfo> getStaticInfoImpl();
 
  702        static Class 
cls = 
new Class(
"FtpPollerDataProvider");
 
  707            "desc": 
"FTP poller data provider factory",
 
  708            "children_can_support_observers": True,
 
  739class EmbeddedFtpPoller : 
public FtpPoller {
 
  744        Observable observable;
 
  748    constructor(FtpPollerDataProviderBase provider, hash<auto> options)
 
  752    singleFileEvent(hash<FtpPollerFileEventInfo> event);
 
  755    postSingleFileEvent(hash<FtpPollerFileEventInfo> event);
 
Event-based data provider for FTP polling events.
Definition: FtpPoller.qm.dox.h:670
 
const ProviderInfo
Provider info.
Definition: FtpPoller.qm.dox.h:674
 
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:546
 
*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:550
 
EmbeddedFtpPoller poller
The file poller itself.
Definition: FtpPoller.qm.dox.h:611
 
The FTP poller data provider factory.
Definition: FtpPoller.qm.dox.h:697
 
const FactoryInfo
Factory info.
Definition: FtpPoller.qm.dox.h:705
 
Class getClassImpl()
Returns the class for the data provider object.
 
static Class cls
Data provider type info.
Definition: FtpPoller.qm.dox.h:702
 
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:645
 
const ProviderInfo
Provider info.
Definition: FtpPoller.qm.dox.h:649
 
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:200
 
const SortNone
no sorting
Definition: FtpPoller.qm.dox.h:132
 
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:173
 
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:254
 
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
Definition: FtpPoller.qm.dox.h:408
 
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:248
 
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:194
 
rename(string old, string nnew)
renames a file on the server
 
int tid
polling tid
Definition: FtpPoller.qm.dox.h:224
 
*string pass
password
Definition: FtpPoller.qm.dox.h:185
 
*code start_thread
optional start thread closure
Definition: FtpPoller.qm.dox.h:251
 
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:170
 
*code log_detail
optional detail log closure
Definition: FtpPoller.qm.dox.h:245
 
*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:206
 
abstract postSingleFileEvent(hash< FtpPollerFileEventInfo > event)
called after singleFileEvent() for each matching file individually
 
string url
url
Definition: FtpPoller.qm.dox.h:179
 
*code log_info
optional info log closure
Definition: FtpPoller.qm.dox.h:242
 
*softint minage
minimum file age
Definition: FtpPoller.qm.dox.h:239
 
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:203
 
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:197
 
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:212
 
timeout timeout
timeout in ms
Definition: FtpPoller.qm.dox.h:227
 
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:233
 
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:127
 
string user
user
Definition: FtpPoller.qm.dox.h:176
 
hash< UrlInfo > urlh
url hash
Definition: FtpPoller.qm.dox.h:182
 
string protocol
Protocol ("ftp" or "ftps")
Definition: FtpPoller.qm.dox.h:167
 
startInline()
starts the polling operation inline (not in a background thread)
 
string rootFtpPath
path after connecting to Ftp server
Definition: FtpPoller.qm.dox.h:191
 
const EVENT_FTP_FILE
FTP file event constant.
Definition: FtpPoller.qm.dox.h:120