Commit 9dec26df authored by Vít Kabele's avatar Vít Kabele

Unified protocol

parent efce5bcf
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="output/build/disl" path="src-disl"/>
<classpathentry kind="src" output="output/build/util" path="src-util"/>
<classpathentry kind="src" output="output/build/test" path="src-test"/>
<classpathentry kind="src" output="output/build/shvm-dispatch" path="src-shvm-dispatch"/>
<classpathentry kind="src" path="disl/src/src-classparser"/>
<classpathentry kind="src" path="disl/src/src-exception"/>
<classpathentry kind="src" path="disl/src/src-main"/>
<classpathentry kind="src" path="disl/src/src-resolver"/>
<classpathentry kind="src" path="disl/src/src-coderep"/>
<classpathentry kind="src" path="disl/src/src-util"/>
<classpathentry kind="src" path="disl/src/src-snippet"/>
<classpathentry kind="src" path="disl/src/src-processor"/>
<classpathentry kind="src" path="disl/src/src-guard"/>
<classpathentry kind="src" path="disl/src/src-localvar"/>
<classpathentry kind="src" path="disl/src/src-scope"/>
<classpathentry kind="src" path="disl-server/src"/>
<classpathentry kind="src" path="disl/src/src-staticcontext"/>
<classpathentry kind="src" path="disl/src/src-staticcontext-uid"/>
<classpathentry kind="src" path="disl/src/src-marker"/>
<classpathentry kind="src" path="disl/src/src-weaver"/>
<classpathentry kind="src" path="disl/src/src-weaver-pe"/>
<classpathentry kind="src" path="disl/src/src-annotation"/>
<classpathentry kind="src" path="disl/src/src-context"/>
<classpathentry kind="src" path="disl/src-test"/>
<classpathentry kind="src" path="shvm/src/src-msg-analyze"/>
<classpathentry kind="src" path="shvm/src/src-msg-instr"/>
<classpathentry kind="src" path="shvm/src/src-msg-analyze-mtdispatch"/>
<classpathentry kind="src" path="shvm/src/src-remoteanalysis"/>
<classpathentry kind="src" path="shvm/src/src-reqdispatch"/>
<classpathentry kind="src" path="shvm/src/src-shadow"/>
<classpathentry kind="src" path="shvm/src/src-util"/>
<classpathentry kind="src" path="shvm/src/src-server-api"/>
<classpathentry kind="src" path="shvm/src-test"/>
<classpathentry kind="src" path="shvm-server/src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="output/lib/disl-bypass.jar"/>
<classpathentry kind="lib" path="lib/disl/log4j.jar" sourcepath="lib/devel/log4j-source.jar"/>
<classpathentry kind="lib" path="lib/test/junit.jar" sourcepath="lib/devel/junit-source.jar"/>
<classpathentry kind="lib" path="lib/test/hamcrest-core.jar"/>
<classpathentry kind="lib" path="lib/disl/asm-tree.jar" sourcepath="lib/devel/asm-tree-source.jar"/>
<classpathentry kind="lib" path="lib/disl/asm.jar" sourcepath="lib/devel/asm-source.jar"/>
<classpathentry kind="lib" path="lib/disl/asm-analysis.jar" sourcepath="lib/devel/asm-analysis-source.jar"/>
<classpathentry kind="lib" path="lib/disl/asm-commons.jar" sourcepath="lib/devel/asm-commons-source.jar"/>
<classpathentry kind="lib" path="lib/disl/asm-util.jar" sourcepath="lib/devel/asm-util-source.jar"/>
<classpathentry kind="lib" path="lib/disl/protobuf-lite.jar"/>
<classpathentry kind="output" path="output/build/disl"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>DiSL</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -7,7 +7,8 @@ ...@@ -7,7 +7,8 @@
package ch.usi.dag.dislserver; package ch.usi.dag.dislserver;
import ch.usi.dag.dislserver.Protocol.*; import ch.usi.dag.dislre.protocol.Main.*;
import ch.usi.dag.dislre.protocol.DiSL.*;
import ch.usi.dag.util.logging.Logger; import ch.usi.dag.util.logging.Logger;
import com.google.protobuf.CodedInputStream; import com.google.protobuf.CodedInputStream;
import com.google.protobuf.CodedOutputStream; import com.google.protobuf.CodedOutputStream;
...@@ -141,7 +142,7 @@ final class ConnectionHandler implements Runnable { ...@@ -141,7 +142,7 @@ final class ConnectionHandler implements Runnable {
timer.mark (DiSLServer.ElapsedTime.PROCESS); timer.mark (DiSLServer.ElapsedTime.PROCESS);
sendMessage (response, timer); sendMessage (response, timer);
if (response.getInstrumentClassResponse ().getResult () == Protocol.InstrumentClassResponse.InstrumentClassResult.ERROR) { if (response.getInstrumentClassResponse ().getResult () == InstrumentClassResponse.InstrumentClassResult.ERROR) {
// //
// Error during instrumentation. Report it to the client // Error during instrumentation. Report it to the client
// and stop receiving requests from this connection. // and stop receiving requests from this connection.
......
...@@ -4,9 +4,9 @@ import ch.usi.dag.disl.DiSL; ...@@ -4,9 +4,9 @@ import ch.usi.dag.disl.DiSL;
import ch.usi.dag.disl.DiSL.CodeOption; import ch.usi.dag.disl.DiSL.CodeOption;
import ch.usi.dag.disl.DiSLException; import ch.usi.dag.disl.DiSLException;
import ch.usi.dag.disl.JavaNames; import ch.usi.dag.disl.JavaNames;
import ch.usi.dag.dislserver.Protocol.ClassInfo; import ch.usi.dag.dislre.protocol.DiSL.InstrClassInfo;
import ch.usi.dag.dislserver.Protocol.InstrumentClassRequest; import ch.usi.dag.dislre.protocol.DiSL.InstrumentClassRequest;
import ch.usi.dag.dislserver.Protocol.InstrumentClassResponse; import ch.usi.dag.dislre.protocol.DiSL.InstrumentClassResponse;
import ch.usi.dag.util.Strings; import ch.usi.dag.util.Strings;
import ch.usi.dag.util.logging.Logger; import ch.usi.dag.util.logging.Logger;
import com.google.protobuf.ByteString; import com.google.protobuf.ByteString;
...@@ -47,7 +47,7 @@ final class RequestProcessor { ...@@ -47,7 +47,7 @@ final class RequestProcessor {
public InstrumentClassResponse process (final InstrumentClassRequest request) { public InstrumentClassResponse process (final InstrumentClassRequest request) {
final byte [] classBytes = request.getClassBytes ().toByteArray (); final byte [] classBytes = request.getClassBytes ().toByteArray ();
final ClassInfo classInfo = request.getClassInfo (); final InstrClassInfo classInfo = request.getClassInfo ();
final String className = __getClassName (classInfo.getClassName (), classBytes); final String className = __getClassName (classInfo.getClassName (), classBytes);
final Set <CodeOption> options = CodeOption.setOf (request.getFlags ()); final Set <CodeOption> options = CodeOption.setOf (request.getFlags ());
...@@ -82,13 +82,13 @@ final class RequestProcessor { ...@@ -82,13 +82,13 @@ final class RequestProcessor {
} }
return InstrumentClassResponse.newBuilder () return InstrumentClassResponse.newBuilder ()
.setResult (Protocol.InstrumentClassResponse.InstrumentClassResult.CLASS_MODIFIED) .setResult (InstrumentClassResponse.InstrumentClassResult.CLASS_MODIFIED)
.setClassBytes (ByteString.copyFrom (newClassBytes)) .setClassBytes (ByteString.copyFrom (newClassBytes))
.build (); .build ();
} else { } else {
return InstrumentClassResponse.newBuilder () return InstrumentClassResponse.newBuilder ()
.setResult (Protocol.InstrumentClassResponse.InstrumentClassResult.CLASS_UNMODIFIED) .setResult (InstrumentClassResponse.InstrumentClassResult.CLASS_UNMODIFIED)
.build (); .build ();
} }
...@@ -100,7 +100,7 @@ final class RequestProcessor { ...@@ -100,7 +100,7 @@ final class RequestProcessor {
__log.error (message); __log.error (message);
return InstrumentClassResponse.newBuilder () return InstrumentClassResponse.newBuilder ()
.setResult (Protocol.InstrumentClassResponse.InstrumentClassResult.ERROR) .setResult (InstrumentClassResponse.InstrumentClassResult.ERROR)
.setErrorMessage (message) .setErrorMessage (message)
.build (); .build ();
} }
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -9,6 +9,8 @@ import java.nio.channels.ClosedByInterruptException; ...@@ -9,6 +9,8 @@ import java.nio.channels.ClosedByInterruptException;
import java.nio.channels.ServerSocketChannel; import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel; import java.nio.channels.SocketChannel;
import ch.usi.dag.dislre.protocol.Main;
import ch.usi.dag.util.logging.Logger; import ch.usi.dag.util.logging.Logger;
...@@ -92,7 +94,7 @@ public abstract class DiSLREServer { ...@@ -92,7 +94,7 @@ public abstract class DiSLREServer {
final DataInputStream is = new DataInputStream ( final DataInputStream is = new DataInputStream (
new BufferedInputStream (sock.getInputStream ())); new BufferedInputStream (sock.getInputStream ()));
Protocol.AgentMessage agentMessage; Main.ClientMessage clientMessage;
int messageSize; int messageSize;
byte[] byteArray; byte[] byteArray;
while (true) { while (true) {
...@@ -107,9 +109,9 @@ public abstract class DiSLREServer { ...@@ -107,9 +109,9 @@ public abstract class DiSLREServer {
is.readFully (byteArray,0, messageSize); is.readFully (byteArray,0, messageSize);
agentMessage = Protocol.AgentMessage.parseFrom (byteArray); clientMessage = Main.ClientMessage.parseFrom (byteArray);
RequestDispatcher.ProcessMessage (server, agentMessage, __log); RequestDispatcher.ProcessMessage (server, clientMessage, __log);
} }
} catch (final Exception e) { } catch (final Exception e) {
......
package ch.usi.dag.dislreserver; package ch.usi.dag.dislreserver;
import ch.usi.dag.dislreserver.Protocol.*; import ch.usi.dag.dislre.protocol.Main.*;
import ch.usi.dag.dislre.protocol.Analysis.*;
import ch.usi.dag.util.logging.Logger; import ch.usi.dag.util.logging.Logger;
...@@ -15,30 +16,30 @@ final class RequestDispatcher { ...@@ -15,30 +16,30 @@ final class RequestDispatcher {
* Process the agent message, and pass the unpacked data to {@link SHVM} instance. * Process the agent message, and pass the unpacked data to {@link SHVM} instance.
* *
* @param shadowVM ShadowVM instance to process the requests. * @param shadowVM ShadowVM instance to process the requests.
* @param agentMessage The agent message. * @param clientMessage The agent message.
* @param logger Logger * @param logger Logger
* @throws DiSLREServerException * @throws DiSLREServerException
*/ */
static void ProcessMessage( static void ProcessMessage(
final SHVM shadowVM, final AgentMessage agentMessage, final Logger logger final SHVM shadowVM, final ClientMessage clientMessage, final Logger logger
) throws DiSLREServerException ) throws DiSLREServerException
{ {
switch (agentMessage.getRequestCase ()) switch (clientMessage.getRequestCase ())
{ {
case ANALYZE: case ANALYZE:
Analyze analyze = agentMessage.getAnalyze (); Analyze analyze = clientMessage.getAnalyze ();
shadowVM.HandleAnalyze ( shadowVM.HandleAnalyze (
analyze.getOrderingID (), analyze.getOrderingID (),
analyze.getInvocationCount (), analyze.getInvocationCount (),
analyze.getRawData ().toByteArray () analyze.getRawData ().toByteArray ()
); );
break; break;
case CLOSE: case CLOSE_CONNECTION:
shadowVM.HandleClose (); shadowVM.HandleClose ();
break; break;
case CLASS_INFO: case CLASS_INFO:
ClassInfo classInfo = agentMessage.getClassInfo (); ClassInfo classInfo = clientMessage.getClassInfo ();
shadowVM.HandleClassInfo ( shadowVM.HandleClassInfo (
classInfo.getClassTag (), classInfo.getClassTag (),
classInfo.getClassSignature (), classInfo.getClassSignature (),
...@@ -48,7 +49,7 @@ final class RequestDispatcher { ...@@ -48,7 +49,7 @@ final class RequestDispatcher {
); );
break; break;
case NEW_CLASS: case NEW_CLASS:
NewClass newClass = agentMessage.getNewClass (); NewClass newClass = clientMessage.getNewClass ();
shadowVM.HandleNewClass ( shadowVM.HandleNewClass (
newClass.getClassName (), newClass.getClassName (),
newClass.getClassLoaderTag (), newClass.getClassLoaderTag (),
...@@ -56,24 +57,24 @@ final class RequestDispatcher { ...@@ -56,24 +57,24 @@ final class RequestDispatcher {
); );
break; break;
case THREAD_END: case THREAD_END:
shadowVM.HandleThreadEnd (agentMessage.getThreadEnd ().getThreadId ()); shadowVM.HandleThreadEnd (clientMessage.getThreadEnd ().getThreadId ());
break; break;
case REGISTER_ANALYSIS: case REGISTER_ANALYSIS:
RegisterAnalysis registerAnalysis = agentMessage.getRegisterAnalysis (); RegisterAnalysis registerAnalysis = clientMessage.getRegisterAnalysis ();
shadowVM.HandleRegisterAnalysis ( shadowVM.HandleRegisterAnalysis (
registerAnalysis.getAnalysisId (), registerAnalysis.getAnalysisId (),
registerAnalysis.getDescriptor () registerAnalysis.getDescriptor ()
); );
break; break;
case STRING_INFO: case STRING_INFO:
StringInfo stringInfo = agentMessage.getStringInfo (); StringInfo stringInfo = clientMessage.getStringInfo ();
shadowVM.HandleStringInfo ( shadowVM.HandleStringInfo (
stringInfo.getStringTag (), stringInfo.getStringTag (),
stringInfo.getStringData () stringInfo.getStringData ()
); );
break; break;
case THREAD_INFO: case THREAD_INFO:
ThreadInfo threadInfo = agentMessage.getThreadInfo (); ThreadInfo threadInfo = clientMessage.getThreadInfo ();
shadowVM.HandleThreadInfo ( shadowVM.HandleThreadInfo (
threadInfo.getThreadTag (), threadInfo.getThreadTag (),
threadInfo.getName (), threadInfo.getName (),
...@@ -81,9 +82,9 @@ final class RequestDispatcher { ...@@ -81,9 +82,9 @@ final class RequestDispatcher {
); );
break; break;
case OBJECT_FREE: case OBJECT_FREE:
int count = agentMessage.getObjectFree().getCount (); int count = clientMessage.getObjectFree().getCount ();
long[] ids = new long[count]; long[] ids = new long[count];
byte[] byteArray = agentMessage.getObjectFree ().getRawData ().toByteArray (); byte[] byteArray = clientMessage.getObjectFree ().getRawData ().toByteArray ();
logger.error ( logger.error (
"Serious error in data transfer: Indicated length (%d) does not match real length (%d)", "Serious error in data transfer: Indicated length (%d) does not match real length (%d)",
...@@ -99,8 +100,8 @@ final class RequestDispatcher { ...@@ -99,8 +100,8 @@ final class RequestDispatcher {
break; break;
case REQUEST_NOT_SET: case REQUEST_NOT_SET:
default: default:
logger.error ( logger.info (
"Serious problem in data transfer: Unknown type of message from agent" "Not implemented request case %s", clientMessage.getRequestCase ().name ()
); );
} }
......
cmake_minimum_required(VERSION 3.13)
project(src_disl_agent C)
set(CMAKE_C_STANDARD 11)
include_directories(.)
include_directories(protocol)
include_directories(../src-jdk-include)
include_directories(../src-jdk-include/macosx)
add_executable(src_disl_agent
protocol/disl.pb-c.c
protocol/disl.pb-c.h
protocol/main.pb-c.c
protocol/main.pb-c.h
protocol/shvm.pb-c.c
protocol/shvm.pb-c.h
bytecode.c
bytecode.h
classparser.c
classparser.h
codeflags.h
common.c
common.h
config.c
config.h
connection.c
connection.h
connpool.c
connpool.h
debug.h
dislagent.c
jvmtiutil.c
jvmtiutil.h
list.h
msgchannel.c
msgchannel.h
network.c
network.h
sessions.c
sessions.h
threads.h)
...@@ -108,12 +108,11 @@ LIBRARY := $(TARGET_DIR)/$(LIBRARY_NAME) ...@@ -108,12 +108,11 @@ LIBRARY := $(TARGET_DIR)/$(LIBRARY_NAME)
# Source and object files needed to create the library # Source and object files needed to create the library
SOURCES = bytecode.c common.c jvmtiutil.c connection.c \ SOURCES = bytecode.c common.c jvmtiutil.c connection.c \
connpool.c msgchannel.c network.c classparser.c \ connpool.c msgchannel.c network.c classparser.c \
dislserver.pb-c.c protobuf-c.c dislagent.c \ dislagent.c sessions.c \
sessions.c protocol/protobuf-c.c protocol/main.pb-c.c protocol/disl.pb-c.c protocol/shvm.pb-c.c
HEADERS = $(wildcard *.h) codeflags.h dislserver.pb-c.h HEADERS = $(wildcard *.h) codeflags.h $(wildcard protocol/*.h)
GENSRCS = bytecode.c codeflags.h \ GENSRCS = bytecode.c codeflags.h
dislserver.pb-c.c dislserver.pb-c.h
OBJECTS = $(addprefix $(BUILD_DIR)/,$(SOURCES:%.c=%.o)) OBJECTS = $(addprefix $(BUILD_DIR)/,$(SOURCES:%.c=%.o))
SRCDEPS = $(SOURCES:%.c=%.d) SRCDEPS = $(SOURCES:%.c=%.d)
...@@ -182,6 +181,7 @@ bytecode.c codeflags.h: ...@@ -182,6 +181,7 @@ bytecode.c codeflags.h:
$(BUILD_DIR): $(BUILD_DIR):
mkdir $@ mkdir $@
mkdir $@/protocol
# Compilation and linking targets # Compilation and linking targets
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
#include "connection.h" #include "connection.h"
#include "network.h" #include "network.h"
#include "msgchannel.h" #include "msgchannel.h"
#include "dislserver.pb-c.h" #include "protocol/main.pb-c.h"
#include "sessions.h" #include "sessions.h"
#include "bytecode.h" #include "bytecode.h"
...@@ -188,7 +188,7 @@ __instrument_class ( ...@@ -188,7 +188,7 @@ __instrument_class (
ClientMessage message = CLIENT_MESSAGE__INIT; ClientMessage message = CLIENT_MESSAGE__INIT;
message.session_id = agent_config.session_id; message.session_id = agent_config.session_id;
ClassInfo class_info = CLASS_INFO__INIT; InstrClassInfo class_info = INSTR_CLASS_INFO__INIT;
class_info.classname = (char *) class_name; class_info.classname = (char *) class_name;
class_info.classloadertag = classloader_tag; class_info.classloadertag = classloader_tag;
......
This diff is collapsed.
This diff is collapsed.
...@@ -52,51 +52,6 @@ void analyze__free_unpacked ...@@ -52,51 +52,6 @@ void analyze__free_unpacked
assert(message->base.descriptor == &analyze__descriptor); assert(message->base.descriptor == &analyze__descriptor);
protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
} }
void close__init
(Close *message)
{
static const Close init_value = CLOSE__INIT;
*message = init_value;
}
size_t close__get_packed_size
(const Close *message)
{
assert(message->base.descriptor == &close__descriptor);
return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t close__pack
(const Close *message,
uint8_t *out)
{
assert(message->base.descriptor == &close__descriptor);
return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t close__pack_to_buffer
(const Close *message,
ProtobufCBuffer *buffer)
{
assert(message->base.descriptor == &close__descriptor);
return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
Close *
close__unpack
(ProtobufCAllocator *allocator,
size_t len,
const uint8_t *data)
{
return (Close *)
protobuf_c_message_unpack (&close__descriptor,
allocator, len, data);
}
void close__free_unpacked
(Close *message,
ProtobufCAllocator *allocator)
{
if(!message)
return;
assert(message->base.descriptor == &close__descriptor);
protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void class_info__init void class_info__init
(ClassInfo *message) (ClassInfo *message)
{ {
...@@ -412,51 +367,6 @@ void thread_info__free_unpacked ...@@ -412,51 +367,6 @@ void thread_info__free_unpacked
assert(message->base.descriptor == &thread_info__descriptor); assert(message->base.descriptor == &thread_info__descriptor);
protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
} }
void agent_message__init
(AgentMessage *message)
{
static const AgentMessage init_value = AGENT_MESSAGE__INIT;
*message = init_value;
}
size_t agent_message__get_packed_size
(const AgentMessage *message)
{
assert(message->base.descriptor == &agent_message__descriptor);
return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t agent_message__pack
(const AgentMessage *message,
uint8_t *out)
{
assert(message->base.descriptor == &agent_message__descriptor);
return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t agent_message__pack_to_buffer
(const AgentMessage *message,
ProtobufCBuffer *buffer)
{
assert(message->base.descriptor == &agent_message__descriptor);
return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
AgentMessage *
agent_message__unpack
(ProtobufCAllocator *allocator,
size_t len,
const uint8_t *data)
{
return (AgentMessage *)
protobuf_c_message_unpack (&agent_message__descriptor,
allocator, len, data);
}
void agent_message__free_unpacked
(AgentMessage *message,
ProtobufCAllocator *allocator)
{
if(!message)
return;
assert(message->base.descriptor == &agent_message__descriptor);
protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
static const ProtobufCFieldDescriptor analyze__field_descriptors[3] = static const ProtobufCFieldDescriptor analyze__field_descriptors[3] =
{ {
{ {
...@@ -521,24 +431,6 @@ const ProtobufCMessageDescriptor analyze__descriptor = ...@@ -521,24 +431,6 @@ const ProtobufCMessageDescriptor analyze__descriptor =
(ProtobufCMessageInit) analyze__init, (ProtobufCMessageInit) analyze__init,
NULL,NULL,NULL /* reserved[123] */ NULL,NULL,NULL /* reserved[123] */
}; };
#define close__field_descriptors NULL
#define close__field_indices_by_name NULL
#define close__number_ranges NULL
const ProtobufCMessageDescriptor close__descriptor =
{
PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
"Close",
"Close",
"Close",
"",
sizeof(Close),
0,
close__field_descriptors,
close__field_indices_by_name,
0, close__number_ranges,
(ProtobufCMessageInit) close__init,
NULL,NULL,NULL /* reserved[123] */
};
static const ProtobufCFieldDescriptor class_info__field_descriptors[5] = static const ProtobufCFieldDescriptor class_info__field_descriptors[5] =
{ {
{ {
...@@ -949,158 +841,3 @@ const ProtobufCMessageDescriptor thread_info__descriptor = ...@@ -949,158 +841,3 @@ const ProtobufCMessageDescriptor thread_info__descriptor =
(ProtobufCMessageInit) thread_info__init, (ProtobufCMessageInit) thread_info__init,
NULL,NULL,NULL /* reserved[123] */ NULL,NULL,NULL /* reserved[123] */
}; };
static const ProtobufCFieldDescriptor agent_message__field_descriptors[10] =
{
{
"ShvmID",
1,
PROTOBUF_C_LABEL_NONE,
PROTOBUF_C_TYPE_INT32,
0, /* quantifier_offset */
offsetof(AgentMessage, shvmid),
NULL,
NULL,
0, /* flags */
0,NULL,NULL /* reserved1,reserved2, etc */
},
{
"analyze",
2,
PROTOBUF_C_LABEL_NONE,
PROTOBUF_C_TYPE_MESSAGE,
offsetof(AgentMessage, request_case),
offsetof(AgentMessage, analyze),
&analyze__descriptor,
NULL,
0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */
0,NULL,NULL /* reserved1,reserved2, etc */
},
{
"close",
3,
PROTOBUF_C_LABEL_NONE,
PROTOBUF_C_TYPE_MESSAGE,
offsetof(AgentMessage, request_case),
offsetof(AgentMessage, close),
&close__descriptor,
NULL,
0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */
0,NULL,NULL /* reserved1,reserved2, etc */
},
{
"class_info",
4,
PROTOBUF_C_LABEL_NONE,
PROTOBUF_C_TYPE_MESSAGE,
offsetof(AgentMessage, request_case),
offsetof(AgentMessage, class_info),
&class_info__descriptor,
NULL,
0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */
0,NULL,NULL /* reserved1,reserved2, etc */
},
{
"new_class",
5,
PROTOBUF_C_LABEL_NONE,
PROTOBUF_C_TYPE_MESSAGE,