public FileMetaData cloneMetaDataObject() { FileMetaData retObj = new FileMetaData (this.filepath, this.owner); retObj.filesize = this.filesize; retObj.sharedwithclients = new List<string> (this.sharedwithclients); retObj.versionNumber = this.versionNumber; retObj.markedForDeletion = this.markedForDeletion; return retObj; }
public FileMetaDataSync(string transactionId, Address localAddress, FileMetaData filemetadata) { this.filepath = filemetadata.filepath; this.owner = filemetadata.owner; this.filesize = filemetadata.filesize; this.transactionID = transactionId; this.initiatedSystemId = localAddress; this.versionNumber = filemetadata.versionNumber; if (null != filemetadata) { int index = 0; foreach(string client in filemetadata.sharedwithclients) { if(index != filemetadata.sharedwithclients.Count - 1) longSharedWithClients += client + ","; else longSharedWithClients += client; } } }
/* * This Function is to be called when the File is Deleted from the Users List */ public bool sendsynchdeleteFile(FileMetaData filemetadata, OOBHandler handler, Group group, bool waitToFinish = true) { try { Logger.Debug("File Operations Synch - sendsynchdeleteFile >> BEGIN"); bool operationResult = false; if (waitToFinish) { string transactionId = FileServerComm.getInstance().transManager.generateTransactionId(filemetadata.filepath); Transaction trans = new Transaction(transactionId); if (true == FileServerComm.getInstance().transManager.insertTransaction(trans)) { FileMetaDataSync sync = new FileMetaDataSync(transactionId, IsisSystem.GetMyAddress(), filemetadata); group.OrderedSend(FileServerComm.DeleteFile, sync); trans.waitTillSignalled(); FileServerComm.getInstance().transManager.removeAndGetTransaction(transactionId); operationResult = !trans.isTimedOut; } else { Logger.Debug("File Operations Synch - sendsynchdeleteFile >> Generation of Transaction ID Failed: " + transactionId); } } else { FileMetaDataSync sync = new FileMetaDataSync("", IsisSystem.GetMyAddress(), filemetadata); group.OrderedSend(FileServerComm.DeleteFile, sync); operationResult = true; } Logger.Debug("File Operations Synch - sendsynchdeleteFileFromMemory >> END Operation Status " + operationResult); return(operationResult); } catch (Exception e) { Logger.Debug("File Operations Synch - sendsynchdeleteFile encountered a Excetpion: " + e.ToString()); return(false); } }
/* * This Function Will be Called when the User Meta Data is Changed * Typical Call is when a File is Shared or Unshared, the Meta Data Changes and we store this information * and Synch it across all the File Server Nodes */ public bool sendsynchFileMetaData(FileMetaData filemetadata, OOBHandler handler, Group group, bool waitToFinish = true) { try { Logger.Debug ("File Operations Synch - sendsynchFileMetaData >> BEGIN"); bool operationResult = false; if (waitToFinish) { string transactionId = FileServerComm.getInstance ().transManager.generateTransactionId (filemetadata.filepath); Transaction trans = new Transaction (transactionId); if (true == FileServerComm.getInstance ().transManager.insertTransaction (trans)) { FileMetaDataSync sync = new FileMetaDataSync (transactionId, IsisSystem.GetMyAddress (), filemetadata); group.OrderedSend (FileServerComm.UpdateFileMetaData, sync); trans.waitTillSignalled (); FileServerComm.getInstance ().transManager.removeAndGetTransaction (transactionId); operationResult = !trans.isTimedOut; } else { Logger.Debug ("File Operations Synch - sendsynchUserMetaData >> Generation of Transaction ID Failed: " + transactionId); } } else { FileMetaDataSync sync = new FileMetaDataSync ("", IsisSystem.GetMyAddress (), filemetadata); group.OrderedSend (FileServerComm.UpdateUserMetaData, sync); operationResult = true; } Logger.Debug ("File Operations Synch - sendsynchFileMetaData >> END Operation Status " + operationResult); return operationResult; } catch (Exception e) { Logger.Debug ("File Operations Synch - sendsynchFileMetaData encountered Exception " + e.ToString()); return false; } }
public UserFile(string filepath, string owner) { this.filemetadata = new FileMetaData(filepath, owner); this.filecontent = new byte[0]; }