| 817 | } |
| 818 | |
| 819 | bool runEncapsulationOptionsTest() |
| 820 | { |
| 821 | std::cerr << "\nRunning encapsulation options tests...\n"; |
| 822 | const ACE_CDR::Octet arr[4] = {0}; |
| 823 | OpenDDS::DCPS::EncapsulationHeader encap; |
| 824 | const OpenDDS::DCPS::Encoding encoding = OpenDDS::DCPS::Encoding( |
| 825 | OpenDDS::DCPS::Encoding::KIND_XCDR2, OpenDDS::DCPS::ENDIAN_BIG); |
| 826 | |
| 827 | if (!from_encoding(encap, encoding, OpenDDS::DCPS::APPENDABLE)) { |
| 828 | std::cerr << "EncapsulationHeader::from_encoding failed" << std::endl; |
| 829 | return false; |
| 830 | } |
| 831 | |
| 832 | bool status = true; |
| 833 | for (unsigned int i = 1; i <= OpenDDS::DCPS::EncapsulationHeader::padding_marker_alignment; i++) { |
| 834 | OpenDDS::DCPS::Message_Block_Ptr mb; |
| 835 | ACE_Message_Block* tmp_mb; |
| 836 | |
| 837 | ACE_NEW_RETURN(tmp_mb, |
| 838 | ACE_Message_Block(4 + i, ACE_Message_Block::MB_DATA), |
| 839 | false); |
| 840 | mb.reset(tmp_mb); |
| 841 | |
| 842 | OpenDDS::DCPS::Serializer serializer(mb.get(), encoding); |
| 843 | if (!(serializer << encap) || !serializer.write_octet_array(arr, i)) { |
| 844 | std::cerr << "Serialization failed in runEncapsulationOptionsTest" << std::endl; |
| 845 | return false; |
| 846 | } |
| 847 | |
| 848 | if (!OpenDDS::DCPS::EncapsulationHeader::set_encapsulation_options(mb)) { |
| 849 | std::cerr << "EncapsulationHeader::set_encapsulation_options failed. Size: " << mb->length() << std::endl; |
| 850 | return false; |
| 851 | } |
| 852 | |
| 853 | unsigned int padding_marker_alignment = mb->rd_ptr()[OpenDDS::DCPS::EncapsulationHeader::padding_marker_byte_index] & 0x03; |
| 854 | if (padding_marker_alignment != (OpenDDS::DCPS::EncapsulationHeader::padding_marker_alignment - i)) { |
| 855 | std::cerr << "EncapsulationHeader::set_encapsulation_options failed for " |
| 856 | << i << " bytes, padding marker alignment: " << padding_marker_alignment << std::endl; |
| 857 | status = false; |
| 858 | } |
| 859 | } |
| 860 | |
| 861 | return status; |
| 862 | } |
| 863 | |
| 864 | int |
| 865 | ACE_TMAIN(int, ACE_TCHAR*[]) |
no test coverage detected