Some difference between DataPort and Bufferport in orocos are:
1, DataPort is copy value from sender to receiver that means it can have many receivers. But for Bufferport , it 's cut that means if sender port just has one data, if one receiver get this value ,then the bufferport will become empty and other receivers can not get value anymore.
2, DataPort always ready to be written and just has one data. BufferPort has size, if it's full ,then the action "Push" will return false, and if it's empty , then the action "Pop" will return false.