MCPcopy Create free account
hub / github.com/apache/brpc / WriteAMFField

Function WriteAMFField

src/brpc/amf.cpp:1059–1112  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1057}
1058
1059static void WriteAMFField(const AMFField& field, AMFOutputStream* stream) {
1060 switch (field.type()) {
1061 case AMF_MARKER_NUMBER: {
1062 stream->put_u8(AMF_MARKER_NUMBER);
1063 const double val = field.AsNumber();
1064 uint64_t* uptr = (uint64_t*)&val;
1065 stream->put_u64(*uptr);
1066 } break;
1067 case AMF_MARKER_BOOLEAN:
1068 stream->put_u8(AMF_MARKER_BOOLEAN);
1069 stream->put_u8(field.AsBool());
1070 break;
1071 case AMF_MARKER_STRING: {
1072 stream->put_u8(AMF_MARKER_STRING);
1073 const butil::StringPiece str = field.AsString();
1074 stream->put_u16(str.size());
1075 stream->putn(str.data(), str.size());
1076 } break;
1077 case AMF_MARKER_LONG_STRING: {
1078 stream->put_u8(AMF_MARKER_LONG_STRING);
1079 const butil::StringPiece str = field.AsString();
1080 stream->put_u32(str.size());
1081 stream->putn(str.data(), str.size());
1082 } break;
1083 case AMF_MARKER_OBJECT:
1084 case AMF_MARKER_ECMA_ARRAY:
1085 WriteAMFObject(field.AsObject(), stream);
1086 break;
1087 case AMF_MARKER_STRICT_ARRAY:
1088 WriteAMFArray(field.AsArray(), stream);
1089 break;
1090 case AMF_MARKER_NULL:
1091 stream->put_u8(AMF_MARKER_NULL);
1092 break;
1093 case AMF_MARKER_UNDEFINED:
1094 stream->put_u8(AMF_MARKER_UNDEFINED);
1095 break;
1096 case AMF_MARKER_UNSUPPORTED:
1097 stream->put_u8(AMF_MARKER_UNSUPPORTED);
1098 break;
1099 case AMF_MARKER_MOVIECLIP:
1100 case AMF_MARKER_REFERENCE:
1101 case AMF_MARKER_DATE:
1102 case AMF_MARKER_RECORDSET:
1103 case AMF_MARKER_XML_DOCUMENT:
1104 case AMF_MARKER_TYPED_OBJECT:
1105 case AMF_MARKER_AVMPLUS_OBJECT:
1106 LOG(ERROR) << marker2str(field.type()) << " is not supported yet";
1107 break;
1108 case AMF_MARKER_OBJECT_END:
1109 CHECK(false) << "object-end shouldn't be present here";
1110 break;
1111 } // switch
1112}
1113
1114void WriteAMFObject(const AMFObject& obj, AMFOutputStream* stream) {
1115 stream->put_u8(AMF_MARKER_OBJECT);

Callers 2

WriteAMFObjectFunction · 0.85
WriteAMFArrayFunction · 0.85

Calls 14

WriteAMFObjectFunction · 0.85
WriteAMFArrayFunction · 0.85
marker2strFunction · 0.85
put_u8Method · 0.80
AsNumberMethod · 0.80
put_u64Method · 0.80
AsBoolMethod · 0.80
AsStringMethod · 0.80
put_u16Method · 0.80
putnMethod · 0.80
put_u32Method · 0.80
typeMethod · 0.45

Tested by

no test coverage detected