ThingWorx C SDK
twFileManager.h
Go to the documentation of this file.
1 /*************************************
2  * Copyright (C) 2015 ThingWorx Inc. *
3  *************************************/
4 
14 #ifndef FILEMANAGER_H /* Prevent multiple inclusions. */
15 #define FILEMANAGER_H
16 
17 #include "twOSPort.h"
18 #include "twDefinitions.h"
19 #include "twDefaultSettings.h"
20 #include "twList.h"
21 #include "twInfoTable.h"
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
30 typedef struct twFileTransferInfo {
32  char * sourcePath;
33  char * sourceFile;
34  char * sourceChecksum;
36  char * targetPath;
37  char * targetFile;
38  char * targetChecksum;
39  DATETIME startTime;
40  DATETIME endTime;
41  int32_t duration;
42  char * state;
43  char isComplete;
44  double size;
45  char * transferId;
46  char * user;
47  char * message;
49 
64 
74 void twFileTransferInfo_Delete(void * transferInfo);
75 
89 typedef void (*file_cb) (char fileRcvd, twFileTransferInfo * info, void * userdata);
90 
91 
92 /********************************/
93 /* twFile Functions */
94 /********************************/
95 
99 typedef struct twFile {
100  char * name;
101  char * realPath;
102  char * virtualPath;
103  char * repository;
104  DATETIME lastModified;
105  char readOnly;
106  uint64_t size;
107  TW_FILE_HANDLE handle;
108  char isDir;
110  char * tid;
111  char openForRead;
112  char isInUse;
114 } twFile;
115 
126 
135 
152 int twFileManager_AddVirtualDir(const char * thingName, char * dirName, char * path);
153 
165 int twFileManager_RemoveVirtualDir(const char * thingName, char * dirName);
166 
181 twList * twFileManager_ListVirtualDirs(const char * entityName);
182 
204 twFile * twFileManager_OpenFile(const char * thingName, const char * path, const char * filename, char * mode);
205 
214 void twFileManager_CloseFile(void * file);
215 
233 twFile * twFileManager_GetOpenFile(const char * thingName, const char * path, const char * filename, const char * tid, char * isTimedOut);
234 
249 char * twFileManager_GetRealPath(const char * thingName, const char * path, const char * filename);
250 
262 
278 int twFileManager_RegisterFileCallback(file_cb cb, char * filter, char onceOnly, void * userdata);
279 
293 int twFileManager_UnregisterFileCallback(file_cb cb, char * filter, void * userdata);
294 
295 
326 int twFileManager_SendFile(const char * sourceRepo, const char * sourcePath, const char * sourceFile,
327  const char * targetRepo, const char * targetPath, const char * targetFile,
328  uint32_t timeout, char asynch, char ** tid);
329 
359 int twFileManager_GetFile(const char * sourceRepo, const char * sourcePath, const char * sourceFile,
360  const char * targetRepo, const char * targetPath, const char * targetFile,
361  uint32_t timeout, char asynch, char ** tid);
362 
369 
389 twList * twFileManager_ListEntities(const char * entityName, const char * path, const char * namemask, char returnType);
390 
391 
392 
393 /******************************************************************************/
394 /* Private methods which should only be called by Thingworx functions */
395 /******************************************************************************/
405 void twFile_SetIsInUse(twFile * file, const char isInUse);
406 
413 
419 void twFile_Delete(void * f);
420 
421 #ifdef __cplusplus
422 }
423 #endif
424 
425 #endif
char * user
Definition: twFileManager.h:46
twList * twFileManager_ListEntities(const char *entityName, const char *path, const char *namemask, char returnType)
Lists the files or subdirectories in a directory path.
Definition: twFileManager.c:854
char * transferId
Definition: twFileManager.h:45
TW_MUTEX inUseMutex
Definition: twFileManager.h:113
char * targetRepository
Definition: twFileManager.h:35
char * targetPath
Definition: twFileManager.h:36
char isComplete
Definition: twFileManager.h:43
int32_t duration
Definition: twFileManager.h:41
ThingWorx twInfoTable and twDataShape definitions and functions.
void(* file_cb)(char fileRcvd, twFileTransferInfo *info, void *userdata)
Signature of a callback function that is registered to be called when a file transfer completes or fa...
Definition: twFileManager.h:89
char openForRead
Definition: twFileManager.h:111
char * twFileManager_GetRealPath(const char *thingName, const char *path, const char *filename)
Gets the native file system path for a file.
Definition: twFileManager.c:332
twList * twFileManager_ListVirtualDirs(const char *entityName)
Returns a list of all virtual directories from the twFileManager singleton.
Definition: twFileManager.c:450
char isInUse
Definition: twFileManager.h:112
DATETIME lastModified
Definition: twFileManager.h:104
int twFileManager_UnregisterFileCallback(file_cb cb, char *filter, void *userdata)
Unregisters a file callback function registered via twFileManager_RegisterFileCallback().
Definition: twFileManager.c:706
int twFileManager_Create()
Creates the twFileManager singleton.
Definition: twFileManager.c:275
char * sourcePath
Definition: twFileManager.h:32
#define TW_MUTEX
For Linux builds a TW_MUTEX is a pthread_mutex_t.
Definition: twLinux-openssl.h:81
File Transfer Information structure definition.
Definition: twFileManager.h:30
char * sourceChecksum
Definition: twFileManager.h:34
void twFile_Delete(void *f)
Deletes mutex's, file handles, and Free's memory realted to the twFile struct.
Definition: twFileManager.c:86
void twFileManager_CheckStalledTransfers()
Checks for any stalled file transfers and deletes them.
Definition: twFileManager.c:660
int twFileManager_SendFile(const char *sourceRepo, const char *sourcePath, const char *sourceFile, const char *targetRepo, const char *targetPath, const char *targetFile, uint32_t timeout, char asynch, char **tid)
Definition: twFileManager.c:824
char * sourceFile
Definition: twFileManager.h:33
Wrappers for OS-specific functionality.
Linked list structure definition.
Definition: twList.h:46
char * tid
Definition: twFileManager.h:110
uint64_t size
Definition: twFileManager.h:106
char isDir
Definition: twFileManager.h:108
struct twFileTransferInfo twFileTransferInfo
File Transfer Information structure definition.
void twFile_SetIsInUse(twFile *file, const char isInUse)
uses the file->inUseMutex to safely set file->isInUse to the value of the isInUse parameter ...
Definition: twFileManager.c:135
char * targetFile
Definition: twFileManager.h:37
twFile * twFileManager_GetOpenFile(const char *thingName, const char *path, const char *filename, const char *tid, char *isTimedOut)
Checks to see if the specified file is already open.
Definition: twFileManager.c:490
twFileTransferInfo * twFileTransferInfo_Create(twInfoTable *it)
Creates a new twFileTransferInfo structure.
Definition: twFileManager.c:33
char * realPath
Definition: twFileManager.h:101
DATETIME startTime
Definition: twFileManager.h:39
double size
Definition: twFileManager.h:44
char readOnly
Definition: twFileManager.h:105
TW_FILE_HANDLE handle
Definition: twFileManager.h:107
char * virtualPath
Definition: twFileManager.h:102
twFile * twFileManager_OpenFile(const char *thingName, const char *path, const char *filename, char *mode)
Creates a new twFile structure and populates it with information obtained from a file/directory.
Definition: twFileManager.c:570
Default settings for ThingWorx C SDK.
DATETIME endTime
Definition: twFileManager.h:40
int twFileManager_GetFile(const char *sourceRepo, const char *sourcePath, const char *sourceFile, const char *targetRepo, const char *targetPath, const char *targetFile, uint32_t timeout, char asynch, char **tid)
Gets a file from the server.
Definition: twFileManager.c:846
Common definitions for C SDK.
int twFileManager_AddVirtualDir(const char *thingName, char *dirName, char *path)
Adds a virtual directory to the twFileManager singleton.
Definition: twFileManager.c:407
char * repository
Definition: twFileManager.h:103
twFile * twFile_Create()
allocates memory for the twFile and initializes the twFile->inUseMutex
Definition: twFileManager.c:123
int twFileManager_Delete()
Deletes the twFileManager singleton and all its owned substructures.
Definition: twFileManager.c:318
void twFileManager_MakeFileCallback(char rcvd, twFileTransferInfo *fti)
Forces the file to complete a callback.
Definition: twFileManager.c:664
void twFileTransferInfo_Delete(void *transferInfo)
Frees all memory associated with a twFileTransferInfo structure and all its owned substructures...
Definition: twFileManager.c:64
Info table base structure.
Definition: twInfoTable.h:418
char * targetChecksum
Definition: twFileManager.h:38
File/directory data structure.
Definition: twFileManager.h:99
void twFileManager_CloseFile(void *file)
Closes a file and frees all memory associated with the twFile structure.
Definition: twFileManager.c:630
int twFileManager_RemoveVirtualDir(const char *thingName, char *dirName)
Removes a virtual directory from the twFileManager singleton.
Definition: twFileManager.c:428
char * state
Definition: twFileManager.h:42
char * name
Definition: twFileManager.h:100
char * sourceRepository
Definition: twFileManager.h:31
uint64_t lastFileXferActivity
Definition: twFileManager.h:109
int twFileManager_RegisterFileCallback(file_cb cb, char *filter, char onceOnly, void *userdata)
Registers a function to be called when a file transfer completes.
Definition: twFileManager.c:688
struct twFile twFile
File/directory data structure.
char * message
Definition: twFileManager.h:47