Difference between revisions of "Project Proposals/JVPP"
(→Description) |
(→Description) |
||
Line 12: | Line 12: | ||
== Description == | == Description == | ||
+ | |||
+ | === Architecture === | ||
+ | |||
JVPP is a VPP module providing Java APIs for VPP. Java APIs provide a way for a JVM application to access and manage VPP. Main use of JVPP is in Honeycomb project. Honeycomb relies heavily on JVPP to access and manage VPP. | JVPP is a VPP module providing Java APIs for VPP. Java APIs provide a way for a JVM application to access and manage VPP. Main use of JVPP is in Honeycomb project. Honeycomb relies heavily on JVPP to access and manage VPP. | ||
+ | |||
+ | JVPP contains of manually crafted code together with generated classes. Classes are being generated by python based on VPP API json files. Generated code represents various Java classes (Callbacks, callfacades, DTOs, types ...) and jni header files. | ||
+ | |||
[[File:Overview_of_JVPP_usage.jpg|center|603px|JVPP overview]] | [[File:Overview_of_JVPP_usage.jpg|center|603px|JVPP overview]] | ||
+ | <div align="center">Overview of JVPP usage</div> | ||
+ | |||
+ | === Plugin Support === | ||
+ | VppRegistry opens connection to VPP (VppConnection) and manages JVPP plugins. Each plugin needs to be registered in the VppRegistry. Registration involves plugin initialization (providing JNI implementation with JVppCallback reference, VPP client identifier and VPP shared memory queue address). | ||
+ | |||
+ | [[File:Architecture-JVPP.jpg|center|563px|Architecture of JVPP]] | ||
+ | <div align="center">JVPP - Architecture</div> | ||
+ | |||
+ | API user sends message by calling a method of appropriate plugin interface. The call is delegated to JNI implementation provided by the particular plugin. When JNI code receives reply, it invokes callback method of JVppCallback | ||
+ | that corresponds to the received message reply. | ||
+ | |||
+ | [[File:JVPP Architecture example.jpg|center|673px|JVppCore as an example of JVPP plugin architecture]] | ||
+ | <div align="center">JVppCore as an example of JVPP plugin architecture</div> | ||
+ | Components marked with an asterisk (*) contain manually crafted code, which in addition to generated classes form jvpp. Exception applies to Callbacks and DTOs, since there are manually crafted marker interfaces in callback and dto package (dto/JVppRequest, dto/JVppReply, dto/JVppDump, dto/JVppReplyDump, callback/JVppCallback) | ||
== Scope == | == Scope == |
Revision as of 13:23, 12 December 2018
Contents
Name
JVPP - Java API for VPP
Project Contact Name and Email
Repository Name
jvpp
Description
Architecture
JVPP is a VPP module providing Java APIs for VPP. Java APIs provide a way for a JVM application to access and manage VPP. Main use of JVPP is in Honeycomb project. Honeycomb relies heavily on JVPP to access and manage VPP.
JVPP contains of manually crafted code together with generated classes. Classes are being generated by python based on VPP API json files. Generated code represents various Java classes (Callbacks, callfacades, DTOs, types ...) and jni header files.
Plugin Support
VppRegistry opens connection to VPP (VppConnection) and manages JVPP plugins. Each plugin needs to be registered in the VppRegistry. Registration involves plugin initialization (providing JNI implementation with JVppCallback reference, VPP client identifier and VPP shared memory queue address).
API user sends message by calling a method of appropriate plugin interface. The call is delegated to JNI implementation provided by the particular plugin. When JNI code receives reply, it invokes callback method of JVppCallback that corresponds to the received message reply.
Components marked with an asterisk (*) contain manually crafted code, which in addition to generated classes form jvpp. Exception applies to Callbacks and DTOs, since there are manually crafted marker interfaces in callback and dto package (dto/JVppRequest, dto/JVppReply, dto/JVppDump, dto/JVppReplyDump, callback/JVppCallback)
Scope
Initial Committers
Vendor Neutral
Meets Board Policy (including IPR, being within Board defined Scope etc)
Meets board policy as expressed in Technical Community Charter and IP Policy
Administrata
- Request for Project proposal consideration
- Email: (place link to email to TSC proposing project, this can be obtained from TSC Archives
- Date: (date proposed, makes it simpler to calculate the pre-requisite 2 week time period of gestation before being permitted to be voted on)