US 9,813,381 B2
Flexible and secure transformation of data using stream pipes
Dana Lawrence Khoyi, Westford, MA (US); John Martin Pratt, Atkinson, NH (US); and John Patino-Bueno, Hudson, NH (US)
Assigned to Open Text SA ULC, Halifax, CA (US)
Filed by Open Text SA ULC, Halifax (CA)
Filed on May 1, 2015, as Appl. No. 14/701,967.
Claims priority of provisional application 62/013,809, filed on Jun. 18, 2014.
Prior Publication US 2015/0372807 A1, Dec. 24, 2015
Int. Cl. H04L 29/06 (2006.01); G06F 21/60 (2013.01); G06F 17/30 (2006.01)
CPC H04L 63/04 (2013.01) [G06F 17/30076 (2013.01); G06F 21/602 (2013.01); G06F 21/606 (2013.01); G06F 2221/2107 (2013.01)] 17 Claims
OG exemplary drawing
 
1. A system for streamed transformation of data, the system comprising:
a storage device;
a first computing device coupled to the storage device, the first computing device comprising a memory, a processor, at least one non-transitory computer-readable medium, and stored instructions translatable by the processor to perform:
receiving a request from a second computing device to read or write a file;
responsive to the request, creating a transformation pipeline, the transformation pipeline providing a processing sequence and traffic path for streamed data and comprising a sequence of transformation streams corresponding to a set of transformations to be applied to the file, the creating the transformation pipeline comprising instantiating a stream object for each transformation stream of the transformation streams, the stream object including a write method for moving a unit of data into the each transformation stream and a read method for retrieving the unit of data from the each transformation stream, calling a transformation function of the set of transformations to transform the unit of data, and providing the unit of data thus transformed within the each transformation stream to a next transformation stream or, if there are no more transformation streams in the transformation pipeline, to a destination device;
receiving file data for the file streamed from a source device;
buffering the file data from the source device in a memory buffer at the first computing device;
segmenting buffered file data to produce units of file data;
passing and transforming the file data through the transformation pipeline one unit of file data at a time, wherein transforming a unit of file data comprises:
providing the unit of file data to a first transformation stream in the transformation pipeline, the providing performed by a write method associated with the first transformation stream;
applying a transformation associated with the first transformation stream to the unit of file data, the applying performed by a read method associated with the first transformation stream, the applying including the read method calling a transformation function to perform the transformation; and
performing the providing and the applying until all transformations in the set of transformations have been applied to the unit of file data through the sequence of transformation streams in the transformation pipeline; and
sending the unit of file data so transformed by the set of transformations to a destination device.