java代码到opcode_Java Opcode.CONST_STRING属性代码示例

private void writeDebugAndCodeItems(@Nonnull DexDataWriter offsetWriter,

@Nonnull DeferredOutputStream temp) throws IOException {

ByteArrayOutputStream ehBuf = new ByteArrayOutputStream();

debugSectionOffset = offsetWriter.getPosition();

DebugWriter debugWriter =

new DebugWriter(stringSection, typeSection, offsetWriter);

DexDataWriter codeWriter = new DexDataWriter(temp, 0);

List> codeOffsets = Lists.newArrayList();

for (ClassKey classKey: classSection.getSortedClasses()) {

Collection extends MethodKey> directMethods = classSection.getSortedDirectMethods(classKey);

Collection extends MethodKey> virtualMethods = classSection.getSortedVirtualMethods(classKey);

Iterable methods = Iterables.concat(directMethods, virtualMethods);

for (MethodKey methodKey: methods) {

List extends TryBlock extends ExceptionHandler>> tryBlocks =

classSection.getTryBlocks(methodKey);

Iterable extends Instruction> instructions = classSection.getInstructions(methodKey);

Iterable extends DebugItem> debugItems = classSection.getDebugItems(methodKey);

if (instructions != null && stringSection.hasJumboIndexes()) {

boolean needsFix = false;

for (Instruction instruction: instructions) {

if (instruction.getOpcode() == Opcode.CONST_STRING) {

if (stringSection.getItemIndex(

(StringRef)((ReferenceInstruction)instruction).getReference()) >= 65536) {

needsFix = true;

break;

}

}

}

if (needsFix) {

MutableMethodImplementation mutableMethodImplementation =

classSection.makeMutableMethodImplementation(methodKey);

fixInstructions(mutableMethodImplementation);

instructions = mutableMethodImplementation.getInstructions();

tryBlocks = mutableMethodImplementation.getTryBlocks();

debugItems = mutableMethodImplementation.getDebugItems();

}

}

int debugItemOffset = writeDebugItem(offsetWriter, debugWriter,

classSection.getParameterNames(methodKey), debugItems);

int codeItemOffset = writeCodeItem(codeWriter, ehBuf, methodKey, tryBlocks, instructions, debugItemOffset);

if (codeItemOffset != -1) {

codeOffsets.add(new CodeItemOffset(methodKey, codeItemOffset));

}

}

}

offsetWriter.align();

codeSectionOffset = offsetWriter.getPosition();

codeWriter.close();

temp.writeTo(offsetWriter);

temp.close();

for (CodeItemOffset codeOffset: codeOffsets) {

classSection.setCodeItemOffset(codeOffset.method, codeSectionOffset + codeOffset.codeOffset);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
帮我修改代码,实现用wss发送serialized_data到wss://autopilot-test.t3go.cn:443/api/v1/vehicle/push/message/LFB1FV696M2L43840。 main.cpp: #include "ros/ros.h" #include "std_msgs/String.h" #include <boost/thread/locks.hpp> #include <boost/thread/shared_mutex.hpp> #include "third_party/apollo/proto/perception/perception_obstacle.pb.h" #include "t3_perception.pb.h" apollo::perception::PerceptionObstacles perception_obstacles_; void perceptionCallback(const std_msgs::String& msg) { ROS_WARN("t3 perceptionCallback parse"); if (perception_obstacles_.ParseFromString(msg.data)) { double timestamp = perception_obstacles_.header().timestamp_sec(); ROS_INFO("t3 perceptionCallback timestamp %f count:%d", timestamp, perception_obstacles_.perception_obstacle().size()); std::string data; perception_obstacles_.SerializeToString(&data); VehData veh_data; veh_data.set_messagetype(5); veh_data.set_messagedes("PerceptionObstacles"); veh_data.set_contents(data); std::string serialized_data; veh_data.SerializeToString(&serialized_data); } else { ROS_ERROR("t3 perceptionCallback parse fail!"); } } int main(int argc, char **argv) { ros::init(argc, argv, "listener"); ros::NodeHandle n; ros::Subscriber sub = n.subscribe("/perception_node/perception_objects", 1000, perceptionCallback); ros::spin(); return 0; } t3_perception.proto: syntax = "proto3"; option java_package = "com.t3.ts.dt.ad.web.protobuf"; option java_outer_classname = "VehDTO"; option java_multiple_files = false; message VehData { /** messageType: 1:客户端心跳 2:云端心跳响应 3:连接成功 4:连接失败 5:客户端发送消息 6:云端发送消息 7:消息处理成功 8:消息处理失败 9:此客户端未注册 10:未知消息类型 */ int32 messageType = 1; string messageDes = 2; bytes contents = 3; // 发送内容 }
06-09

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值