的Protobuf C#的消息翻译到JAVA(Protobuf C# Message Transla

2019-09-21 22:06发布

我想翻译使用C#JAVA产生的消息。 作为第一步,我生成原型文件,这是我得到了什么

package Om.Business.Scanner;

message ScannerActivityDetail {
   optional string ActivityId = 1;
   optional string ContextId = 2;
   optional int32 ActivityStart = 3;
   optional bcl.DateTime ActivityEnd = 4;
}

我如何解释Java世界bcl.DateTime?

我使用protobuf网,并试图反序列化的C#应用​​程序生成的消息。

在此先感谢您的帮助。

Answer 1:

看着bcl.proto ,它应该是相当简单的。 创建Map<DateTime.TimeSpanScale, TimeUnit>在明显的方式,则:

public static Date toDate(bcl.DateTime proto) {
    TimeUnit unit = SCALE_TO_UNIT_MAP.get(proto.getScale());
    if (unit == null) {
        throw new IllegalArgumentException("Invalid scale: " + proto.getScale());
    }
    long millis = unit.toMillis(proto.getValue());
    return new Date(millis);
}

你可以使用约达时间的DateTime完全相同的方法类型,因为它有一个构造函数接受long了。 (您可能要考虑一下哪个时区指定虽然...)



文章来源: Protobuf C# Message Translation to JAVA