syntax = "proto3";

import "google/protobuf/wrappers.proto";


option java_multiple_files = true;
option java_package = "com.navercorp.pinpoint.grpc.trace";
option java_outer_classname = "AnnotationProto";
//option objc_class_prefix = "PIN";

message PIntStringValue {
    int32 intValue = 1;
    google.protobuf.StringValue stringValue = 2;
}

message PIntStringStringValue {
    int32 intValue = 1;
    google.protobuf.StringValue stringValue1 = 2;
    google.protobuf.StringValue stringValue2 = 3;
}

message PLongIntIntByteByteStringValue {
    int64 longValue = 1;
    int32 intValue1 = 2;
    int32 intValue2 = 3;
    sint32 byteValue1 = 4;
    sint32 byteValue2 = 5;
    google.protobuf.StringValue stringValue = 6;
}

message PIntBooleanIntBooleanValue {
    int32 intValue1 = 1;
    bool boolValue1 = 2;
    int32 intValue2 = 3;
    bool boolValue2 = 4;
}

message PStringStringValue {
    google.protobuf.StringValue stringValue1 = 1;
    google.protobuf.StringValue stringValue2 = 2;
}

message PAnnotationValue {
    oneof field {
        string stringValue = 1;
        bool boolValue = 2;
        int32 intValue = 3;
        int64 longValue = 4;
        // for compatibility
        sint32 shortValue = 5;
        double doubleValue = 6;
        bytes binaryValue = 7;
        // for compatibility
        sint32 byteValue = 8;
        PIntStringValue intStringValue = 9;
        PStringStringValue stringStringValue = 10;
        PIntStringStringValue intStringStringValue = 11;
        PLongIntIntByteByteStringValue longIntIntByteByteStringValue = 12;
        PIntBooleanIntBooleanValue intBooleanIntBooleanValue = 13;
    }
}

message PAnnotation {
    int32 key = 1;
    PAnnotationValue value = 2;
}