commit 04e0fc2684f7f95fca9f80b864d9968d3a95c82f Author: stream Date: Thu Aug 21 14:39:54 2025 +0800 migrate project to new repository diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5ce99cd --- /dev/null +++ b/.gitignore @@ -0,0 +1,56 @@ +###################################################################### +# Build Tools + +.gradle +/build/ +!gradle/wrapper/gradle-wrapper.jar + +target/ +!.mvn/wrapper/maven-wrapper.jar + +###################################################################### +# IDE + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### JRebel ### +rebel.xml + +### NetBeans ### +nbproject/private/ +build/* +nbbuild/ +dist/ +nbdist/ +.nb-gradle/ + +###################################################################### +# Others +*.log +*.xml.versionsBackup +*.swp + +!*/build/*.java +!*/build/*.html +!*/build/*.xml + +bin/ +ry.bat +ry.sh +run.sh +package.bat +sql/quartz.sql + +**/application-local.yml diff --git a/DirectoryV3.xml b/DirectoryV3.xml new file mode 100644 index 0000000..fa6d752 --- /dev/null +++ b/DirectoryV3.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..a73295e --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,43 @@ +pipeline { + agent any + + stages { + stage('Build') { + steps { + sh 'mvn clean install -Dmaven.test.skip=true' + } + } + + stage('Deploy') { + parallel { + stage('Deploy to DEV') { + steps { + sh './ry.sh start dev' + } + } + stage('Deploy to TEST') { + steps { + sh './ry.sh start test' + } + } + stage('Deploy to PROD') { + steps { + sh './ry.sh start prod' + } + } + } + } + } + + post { + always { + archiveArtifacts artifacts: '**/*.jar', allowEmptyArchive: true + } + success { + echo 'Pipeline completed successfully.' + } + failure { + echo 'Pipeline failed.' + } + } +} \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..8564f29 --- /dev/null +++ b/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2018 RuoYi + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/cmvr-iot-admin/pom.xml b/cmvr-iot-admin/pom.xml new file mode 100644 index 0000000..f9b6aa2 --- /dev/null +++ b/cmvr-iot-admin/pom.xml @@ -0,0 +1,91 @@ + + + + cmvr-iot + com.cmvr + 3.8.9 + + 4.0.0 + jar + cmvr-iot-admin + + + web服务入口 + + + + + + + org.springframework.boot + spring-boot-devtools + true + + + + + mysql + mysql-connector-java + + + + + com.cmvr + cmvr-iot-test + + + + + com.cmvr + cmvr-iot-framework + + + + + com.cmvr + cmvr-iot-quartz + + + + + com.cmvr + cmvr-iot-generator + + + + + com.cmvr + cmvr-iot-device + + + + + dev + + + + + + org.springframework.boot + spring-boot-maven-plugin + 2.5.15 + + com.cmvr.CmvrIotApplication + true + + + + + repackage + + + ${project.artifactId}-${env} + + + + + + + diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/CmvrIotApplication.java b/cmvr-iot-admin/src/main/java/com/cmvr/CmvrIotApplication.java new file mode 100644 index 0000000..454973e --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/CmvrIotApplication.java @@ -0,0 +1,23 @@ +package com.cmvr; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.scheduling.annotation.EnableScheduling; + +/** + * 启动程序 + * + * @author cmvr-iot + */ +@EnableScheduling +@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class }) +public class CmvrIotApplication +{ + public static void main(String[] args) + { + // System.setProperty("spring.devtools.restart.enabled", "false"); + SpringApplication.run(CmvrIotApplication.class, args); + System.out.println("招商车研物联网平台启动成功"); + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/CmvrIotServletInitializer.java b/cmvr-iot-admin/src/main/java/com/cmvr/CmvrIotServletInitializer.java new file mode 100644 index 0000000..f3f7118 --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/CmvrIotServletInitializer.java @@ -0,0 +1,18 @@ +package com.cmvr; + +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; + +/** + * web容器中进行部署 + * + * @author cmvr-iot + */ +public class CmvrIotServletInitializer extends SpringBootServletInitializer +{ + @Override + protected SpringApplicationBuilder configure(SpringApplicationBuilder application) + { + return application.sources(CmvrIotApplication.class); + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/api/DeviceListController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/api/DeviceListController.java new file mode 100644 index 0000000..7c6a517 --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/api/DeviceListController.java @@ -0,0 +1,40 @@ +package com.cmvr.web.controller.api; + + +import com.cmvr.device.domain.DeDeviceRegistration; +import com.cmvr.device.service.IDeDeviceRegistrationService; +import com.cmvr.edge.client.service.EdgeSystemService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@Api(tags = "设备信息获取") +@RestController +@RequestMapping("/api/deviceList") +@RequiredArgsConstructor +public class DeviceListController { + + private final EdgeSystemService systemService; + private final IDeDeviceRegistrationService registrationService; + + + @PreAuthorize("@ss.hasPermi('device:profile:list')") + @GetMapping("/addList") + @ApiOperation("同步设备信息列表") + public int addDeviceList(@RequestParam String terminalId){ + + List list = systemService.deviceList(terminalId); + + return registrationService.addDeviceList(list); + } + + + +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/api/EdgeBioHeadController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/api/EdgeBioHeadController.java new file mode 100644 index 0000000..5ca3ac5 --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/api/EdgeBioHeadController.java @@ -0,0 +1,68 @@ +package com.cmvr.web.controller.api; + +import com.cmvr.common.core.controller.BaseController; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.edge.client.model.biohead.EdgeCommonVO; +import com.cmvr.edge.client.model.biohead.EdgeFacialExpressionVO; +import com.cmvr.edge.client.service.EdgeBioHeadService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Api(tags = "机器人头部") +@RestController +@RequestMapping("/api/biohead") +@RequiredArgsConstructor +public class EdgeBioHeadController extends BaseController { + + private final EdgeBioHeadService edgeBioHeadService; + + @ApiOperation("设置面部表情") + @PostMapping("/expression") + public AjaxResult expression(@RequestBody EdgeFacialExpressionVO facialExpressionVo) { + /*// 构建面部表情参数 + EdgeFacialExpressionVo expression = EdgeFacialExpressionVo.builder() + .eyebrow(EdgeFacialExpressionVo.Eyebrow.builder() + .leftOutsideY(1f) + .leftInsideY(0.4f) + .rightOutsideY(0.2f) + .rightInsideY(0.2f) + .build()) + .eyelid(EdgeFacialExpressionVo.Eyelid.builder() + .leftUpperY(0.4f) + .leftLowerY(0.4f) + .rightUpperY(0.4f) + .rightLowerY(0.5f) + .build()) + .eyeball(EdgeFacialExpressionVo.Eyeball.builder() + .leftX(0.2f) + .leftY(0.3f) + .rightX(0.4f) + .rightY(0.5f) + .build()) + .mouth(EdgeFacialExpressionVo.Mouth.builder() + .upperLipY(0.3f) + .lowerLipY(-0.3f) + .build()) + .nose(EdgeFacialExpressionVo.Nose.builder() + .leftY(0f) + .rightY(0f) + .build()) + .jaw(EdgeFacialExpressionVo.Jaw.builder() + .x(0f) + .y(0f) + .build()) + .build();*/ + return success(edgeBioHeadService.setExpression(facialExpressionVo)); + } + + @ApiOperation("紧急停止") + @PostMapping("/stop") + public AjaxResult emergencyStop(@RequestBody EdgeCommonVO edgeCommonVO) { + return success(edgeBioHeadService.emergencyStop(edgeCommonVO)); + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/api/EdgeDeviceController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/api/EdgeDeviceController.java new file mode 100644 index 0000000..0da51e0 --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/api/EdgeDeviceController.java @@ -0,0 +1,24 @@ +package com.cmvr.web.controller.api; + +import com.cmvr.common.core.controller.BaseController; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.test.enums.ActionEnum; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Api(tags = "API操作") +@RestController +@RequestMapping("/api") +@RequiredArgsConstructor +public class EdgeDeviceController extends BaseController { + + @ApiOperation("查询操作内容") + @GetMapping("/action") + public AjaxResult getAction() { + return success(ActionEnum.toList()); + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/api/EdgeDexHandController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/api/EdgeDexHandController.java new file mode 100644 index 0000000..90eecbb --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/api/EdgeDexHandController.java @@ -0,0 +1,55 @@ +package com.cmvr.web.controller.api; + +import com.alibaba.fastjson2.JSON; +import com.cmvr.common.core.controller.BaseController; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.edge.client.model.biohead.EdgeFacialExpressionVO; +import com.cmvr.edge.client.service.EdgeBioHeadService; +import com.cmvr.edge.client.service.EdgeDexHandService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + +@Api(tags = "机器人灵巧手") +@RestController +@RequestMapping("/api/dexHand") +@RequiredArgsConstructor +public class EdgeDexHandController extends BaseController { + + private final EdgeDexHandService edgeDexHandService; + + @ApiOperation("获取灵巧手状态信息") + @GetMapping("/status") + public AjaxResult status( + @RequestParam("deviceId") String deviceId, + @RequestParam("terminalId") String terminalId + ) { + return success(JSON.parseObject(JSON.toJSONString(edgeDexHandService.getStatus(terminalId, deviceId)), Map.class)); + } + + + @ApiOperation("设置灵巧手弯曲角度") + @GetMapping("/angle") + public AjaxResult setAngle( + @RequestParam("deviceId") String deviceId, + @RequestParam("terminalId") String terminalId, + @RequestParam("id") int id, + @RequestParam("value") float value + ) { + edgeDexHandService.setDexHandAngle(terminalId, deviceId, id, value); + return success("ok"); + } + + + @ApiOperation("获取灵巧手按压力信息") + @GetMapping("/sensor") + public AjaxResult sensor( + @RequestParam("deviceId") String deviceId, + @RequestParam("terminalId") String terminalId + ) { + return success(JSON.parseObject(edgeDexHandService.getSensorData(terminalId, deviceId), Map.class)); + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/api/LargeModelRemoteController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/api/LargeModelRemoteController.java new file mode 100644 index 0000000..bd4cdd6 --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/api/LargeModelRemoteController.java @@ -0,0 +1,41 @@ +package com.cmvr.web.controller.api; + +import com.cmvr.llm.model.CallAgentVO; +import com.cmvr.llm.service.LargeModelRemoteService; +import com.cmvr.llm.util.LargeModelFileUploadUtil; +import com.cmvr.common.core.domain.AjaxResult; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + + +@Api(tags = "大模型接口调用") +@RestController +@RequestMapping("/api/call") +@RequiredArgsConstructor +public class LargeModelRemoteController { + + private final LargeModelRemoteService largeModelRemoteService; + + @ApiOperation("执行语音转文本工作流") + @PostMapping("/speechToText") + public AjaxResult runSpeechToText(@RequestBody CallAgentVO callAgentVO) { + String result = largeModelRemoteService.runSpeechToTextWorkflow(callAgentVO); + return AjaxResult.success("工作流执行成功", result); + } + + @ApiOperation("查询语音转文本结果") + @PostMapping("/result") + public AjaxResult queryResult(@RequestParam("processId") String processId) { + String result = largeModelRemoteService.querySpeechToTextResult(processId); + return AjaxResult.success("查询成功", result); + } + + @ApiOperation("上传文件到大模型") + @PostMapping("/upload/large") + public String uploadFileLarge(@RequestPart("file") MultipartFile file) throws Exception { + return LargeModelFileUploadUtil.uploadFile(file.getBytes()); + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/api/MicrophoneController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/api/MicrophoneController.java new file mode 100644 index 0000000..fb70011 --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/api/MicrophoneController.java @@ -0,0 +1,133 @@ +package com.cmvr.web.controller.api; + +import cmvr.api.MicrophoneCommand; +import com.cmvr.edge.client.service.EdgeMicrophoneService; +import com.cmvr.common.core.domain.AjaxResult; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import lombok.RequiredArgsConstructor; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import java.util.HashMap; +import java.util.Map; + +/** + * 麦克风管理 + */ +@Api(tags = "麦克风") +@RestController +@RequestMapping("/api/Microphone") +@RequiredArgsConstructor +public class MicrophoneController { + + private final EdgeMicrophoneService microphoneService; + + @ApiOperation("获取麦克风状态") + @PreAuthorize("@ss.hasPermi('system:microphone:query')") + @GetMapping("/status") + public AjaxResult getStatus( + @ApiParam(value = "终端设备ID", required = true) + @RequestParam String terminalId, + @ApiParam(value = "设备ID", required = true) + @RequestParam String deviceId) { + try { + MicrophoneCommand.GetMicStateCommand.Feedback feedback = microphoneService.getStatus(terminalId, deviceId); + MicrophoneCommand.MicState state = feedback.getState(); + + Map result = new HashMap<>(); + Map header = new HashMap<>(); + header.put("deviceId", deviceId); + header.put("timestamp", feedback.getHeader().getTimestamp().getSeconds()); + result.put("header", header); + + Map stateMap = new HashMap<>(); + stateMap.put("isInitialized", state.getIsInitialized()); + stateMap.put("isRunning", state.getIsRunning()); + stateMap.put("isRecording", state.getIsRecording()); + stateMap.put("volume", state.getVolume()); + stateMap.put("errorMessage", state.getErrorMessage()); + result.put("state", stateMap); + + return AjaxResult.success(result); + } catch (Exception e) { + return AjaxResult.error("获取麦克风状态失败:" + e.getMessage()); + } + } + + @ApiOperation("开始录音") + @PreAuthorize("@ss.hasPermi('system:microphone:record')") + @PostMapping("/start") + public AjaxResult startRecord( + @ApiParam(value = "终端设备ID", required = true) + @RequestParam String terminalId, + @ApiParam(value = "设备ID", required = true) + @RequestParam String deviceId, + @ApiParam(value = "录音文件路径", required = true) + @RequestParam String filePath) { + microphoneService.startRecord(terminalId, deviceId, filePath); + return AjaxResult.success(); + } + + @ApiOperation("停止录音") + @PreAuthorize("@ss.hasPermi('system:microphone:stop')") + @PostMapping("/stop") + public AjaxResult stopRecord( + @ApiParam(value = "终端设备ID", required = true) + @RequestParam String terminalId, + @ApiParam(value = "设备ID", required = true) + @RequestParam String deviceId) { + microphoneService.stopRecord(terminalId, deviceId); + return AjaxResult.success(); + } + + @ApiOperation("暂停录音") + @PreAuthorize("@ss.hasPermi('system:microphone:pause')") + @PostMapping("/pause") + public AjaxResult pauseRecord( + @ApiParam(value = "终端设备ID", required = true) + @RequestParam String terminalId, + @ApiParam(value = "设备ID", required = true) + @RequestParam String deviceId) { + microphoneService.pauseRecord(terminalId, deviceId); + return AjaxResult.success(); + } + + @ApiOperation("恢复录音") + @PreAuthorize("@ss.hasPermi('system:microphone:resume')") + @PostMapping("/resume") + public AjaxResult resumeRecord( + @ApiParam(value = "终端设备ID", required = true) + @RequestParam String terminalId, + @ApiParam(value = "设备ID", required = true) + @RequestParam String deviceId) { + microphoneService.resumeRecord(terminalId, deviceId); + return AjaxResult.success(); + } + + @ApiOperation("设置音量") + @PreAuthorize("@ss.hasPermi('system:microphone:volume')") + @PostMapping("/volume") + public AjaxResult setVolume( + @ApiParam(value = "终端设备ID", required = true) + @RequestParam String terminalId, + @ApiParam(value = "设备ID", required = true) + @RequestParam String deviceId, + @ApiParam(value = "音量大小(0-100)", required = true) + @RequestParam int volume) { + microphoneService.setVolume(terminalId, deviceId, volume); + return AjaxResult.success(); + } + + @ApiOperation("获取音量") + @PreAuthorize("@ss.hasPermi('system:microphone:volume')") + @GetMapping("/volume") + public AjaxResult getVolume( + @ApiParam(value = "终端设备ID", required = true) + @RequestParam String terminalId, + @ApiParam(value = "设备ID", required = true) + @RequestParam String deviceId) { + return AjaxResult.success(microphoneService.getVolume(terminalId, deviceId)); + } +} \ No newline at end of file diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/api/SpeakerController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/api/SpeakerController.java new file mode 100644 index 0000000..31fa6c3 --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/api/SpeakerController.java @@ -0,0 +1,166 @@ +package com.cmvr.web.controller.api; + +import cmvr.api.SpeakerCommand; +import com.cmvr.edge.client.service.EdgeSpeakerService; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.core.page.TableDataInfo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import lombok.RequiredArgsConstructor; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import java.util.HashMap; +import java.util.Map; + +/** + * 扬声器管理 + * + * @author cmvr + */ +@Api(tags = "扬声器") +@RestController +@RequestMapping("/api/Speaker") +@RequiredArgsConstructor +public class SpeakerController { + + private final EdgeSpeakerService speakerService; + + @ApiOperation("获取扬声器状态") + @PreAuthorize("@ss.hasPermi('system:speaker:query')") + @GetMapping("/status") + public AjaxResult getStatus( + @ApiParam(value = "终端设备ID", required = true) + @RequestParam String terminalId, + @ApiParam(value = "设备ID", required = true) + @RequestParam String deviceId) { + try { + // 获取扬声器状态 + SpeakerCommand.GetSpeakerStateCommand.Feedback feedback = speakerService.getStatus(terminalId, deviceId); + SpeakerCommand.SpeakerState state = feedback.getState(); + + // 构建返回结果 + Map result = new HashMap<>(); + // 添加 header 信息 + Map header = new HashMap<>(); + header.put("deviceId", deviceId); + header.put("timestamp", feedback.getHeader().getTimestamp().getSeconds()); + result.put("header", header); + + // 添加 state 信息 + Map stateMap = new HashMap<>(); + stateMap.put("isInitialized", state.getIsInitialized()); + stateMap.put("isRunning", state.getIsRunning()); + stateMap.put("isDecoding", state.getIsDecoding()); + stateMap.put("isPaused", state.getIsPaused()); + stateMap.put("volume", state.getVolume()); + stateMap.put("errorMessage", state.getErrorMessage()); + result.put("state", stateMap); + + return AjaxResult.success(result); + } catch (Exception e) { + return AjaxResult.error("获取扬声器状态失败:" + e.getMessage()); + } + } + + /** + * 播放音频 + */ + @ApiOperation("播放音频") + @PreAuthorize("@ss.hasPermi('system:speaker:play')") + @PostMapping("/play") + public AjaxResult playAudio( + @ApiParam(value = "终端设备ID", required = true) + @RequestParam String terminalId, + @ApiParam(value = "设备ID", required = true) + @RequestParam String deviceId, + @ApiParam(value = "音频文件路径", required = true) + @RequestParam String audioPath) { + speakerService.playAudio(terminalId, deviceId, audioPath); + return AjaxResult.success(); + } + + /** + * 停止播放 + */ + @ApiOperation("停止播放") + @PreAuthorize("@ss.hasPermi('system:speaker:stop')") + @PostMapping("/stop") + public AjaxResult stopPlayback( + @ApiParam(value = "终端设备ID", required = true) + @RequestParam String terminalId, + @ApiParam(value = "设备ID", required = true) + @RequestParam String deviceId) { + speakerService.stopPlayback(terminalId, deviceId); + return AjaxResult.success(); + } + + /** + * 暂停播放 + */ + @ApiOperation("暂停播放") + @PreAuthorize("@ss.hasPermi('system:speaker:pause')") + @PostMapping("/pause") + public AjaxResult pausePlayback( + @ApiParam(value = "终端设备ID", required = true) + @RequestParam String terminalId, + @ApiParam(value = "设备ID", required = true) + @RequestParam String deviceId) { + speakerService.pausePlayback(terminalId, deviceId); + return AjaxResult.success(); + } + + /** + * 恢复播放 + */ + @ApiOperation("恢复播放") + @PreAuthorize("@ss.hasPermi('system:speaker:resume')") + @PostMapping("/resume") + public AjaxResult resumePlayback( + @ApiParam(value = "终端设备ID", required = true) + @RequestParam String terminalId, + @ApiParam(value = "设备ID", required = true) + @RequestParam String deviceId) { + speakerService.resumePlayback(terminalId, deviceId); + return AjaxResult.success(); + } + + /** + * 设置音量 + */ + @ApiOperation("设置音量") + @PreAuthorize("@ss.hasPermi('system:speaker:volume')") + @PostMapping("/volume") + public AjaxResult setVolume( + @ApiParam(value = "终端设备ID", required = true) + @RequestParam String terminalId, + @ApiParam(value = "设备ID", required = true) + @RequestParam String deviceId, + @ApiParam(value = "音量大小(0-100)", required = true) + @RequestParam int volume) { + speakerService.setVolume(terminalId, deviceId, volume); + return AjaxResult.success(); + } + + /** + * 获取音量 + */ + @ApiOperation("获取音量") + @PreAuthorize("@ss.hasPermi('system:speaker:volume')") + @GetMapping("/volume") + public AjaxResult getVolume( + @ApiParam(value = "终端设备ID", required = true) + @RequestParam String terminalId, + @ApiParam(value = "设备ID", required = true) + @RequestParam String deviceId) { + return AjaxResult.success(speakerService.getVolume(terminalId, deviceId)); + } + + @ApiOperation("获取所有音频") + @PreAuthorize("@ss.hasPermi('system:speaker:getAll')") + @GetMapping("/getAll") + public AjaxResult getAll() { + return AjaxResult.success(speakerService.getAll()); + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/api/TestGrpcController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/api/TestGrpcController.java new file mode 100644 index 0000000..031a102 --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/api/TestGrpcController.java @@ -0,0 +1,85 @@ +package com.cmvr.web.controller.api; + +import com.alibaba.fastjson2.JSON; +import com.cmvr.common.core.controller.BaseController; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.edge.client.service.EdgeCameraService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@Api(tags = "测试相机服务") +@RestController +@RequestMapping("/api/edge/camera") +@RequiredArgsConstructor +public class TestGrpcController extends BaseController { + + private final EdgeCameraService edgeCameraService; + + @ApiOperation("获取相机状态") + @GetMapping("/status") + public AjaxResult status( + @RequestParam("deviceId") String deviceId, + @RequestParam("terminalId") String terminalId + ) { + return success(JSON.toJSONString(edgeCameraService.status(terminalId, deviceId))); + } + + @ApiOperation("开启相机") + @GetMapping("/start") + public AjaxResult start( + @RequestParam("deviceId") String deviceId, + @RequestParam("terminalId") String terminalId + ) { + return success(edgeCameraService.start(terminalId, deviceId)); + } + + @ApiOperation("关闭相机") + @GetMapping("/stop") + public AjaxResult stop( + @RequestParam("deviceId") String deviceId, + @RequestParam("terminalId") String terminalId + ) { + return success(edgeCameraService.stop(terminalId, deviceId)); + } + + @ApiOperation("获取图片") + @GetMapping("/getRGBImage") + public AjaxResult getRGBImage( + @RequestParam("deviceId") String deviceId, + @RequestParam("terminalId") String terminalId + ) { + return success(edgeCameraService.getRGBImage(terminalId, deviceId)); + } + + @ApiOperation("开始录制视频") + @GetMapping("/startRecording") + public AjaxResult startRecording( + @RequestParam("deviceId") String deviceId, + @RequestParam("terminalId") String terminalId + ) { + return success(edgeCameraService.startRecording(terminalId, deviceId)); + } + + @ApiOperation("停止录制视频") + @GetMapping("/stopRecording") + public AjaxResult stopRecording( + @RequestParam("deviceId") String deviceId, + @RequestParam("terminalId") String terminalId + ) { + return success(edgeCameraService.stopRecording(terminalId, deviceId)); + } + + @ApiOperation("获取图片和视频") + @GetMapping("/getRGBDImages") + public AjaxResult getRGBDImages( + @RequestParam("deviceId") String deviceId, + @RequestParam("terminalId") String terminalId + ) { + return success(edgeCameraService.getRGBDImages(terminalId, deviceId)); + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/common/CaptchaController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/common/CaptchaController.java new file mode 100644 index 0000000..b3f1326 --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/common/CaptchaController.java @@ -0,0 +1,94 @@ +package com.cmvr.web.controller.common; + +import java.awt.image.BufferedImage; +import java.io.IOException; +import java.util.concurrent.TimeUnit; +import javax.annotation.Resource; +import javax.imageio.ImageIO; +import javax.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.FastByteArrayOutputStream; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; +import com.google.code.kaptcha.Producer; +import com.cmvr.common.config.CmvrIotConfig; +import com.cmvr.common.constant.CacheConstants; +import com.cmvr.common.constant.Constants; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.core.redis.RedisCache; +import com.cmvr.common.utils.sign.Base64; +import com.cmvr.common.utils.uuid.IdUtils; +import com.cmvr.system.service.ISysConfigService; + +/** + * 验证码操作处理 + * + * @author cmvr-iot + */ +@RestController +public class CaptchaController +{ + @Resource(name = "captchaProducer") + private Producer captchaProducer; + + @Resource(name = "captchaProducerMath") + private Producer captchaProducerMath; + + @Autowired + private RedisCache redisCache; + + @Autowired + private ISysConfigService configService; + /** + * 生成验证码 + */ + @GetMapping("/captchaImage") + public AjaxResult getCode(HttpServletResponse response) throws IOException + { + AjaxResult ajax = AjaxResult.success(); + boolean captchaEnabled = configService.selectCaptchaEnabled(); + ajax.put("captchaEnabled", captchaEnabled); + if (!captchaEnabled) + { + return ajax; + } + + // 保存验证码信息 + String uuid = IdUtils.simpleUUID(); + String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + uuid; + + String capStr = null, code = null; + BufferedImage image = null; + + // 生成验证码 + String captchaType = CmvrIotConfig.getCaptchaType(); + if ("math".equals(captchaType)) + { + String capText = captchaProducerMath.createText(); + capStr = capText.substring(0, capText.lastIndexOf("@")); + code = capText.substring(capText.lastIndexOf("@") + 1); + image = captchaProducerMath.createImage(capStr); + } + else if ("char".equals(captchaType)) + { + capStr = code = captchaProducer.createText(); + image = captchaProducer.createImage(capStr); + } + + redisCache.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES); + // 转换流信息写出 + FastByteArrayOutputStream os = new FastByteArrayOutputStream(); + try + { + ImageIO.write(image, "jpg", os); + } + catch (IOException e) + { + return AjaxResult.error(e.getMessage()); + } + + ajax.put("uuid", uuid); + ajax.put("img", Base64.encode(os.toByteArray())); + return ajax; + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/common/CommonController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/common/CommonController.java new file mode 100644 index 0000000..4f50a54 --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/common/CommonController.java @@ -0,0 +1,140 @@ +package com.cmvr.web.controller.common; + +import com.cmvr.common.config.CmvrIotConfig; +import com.cmvr.common.constant.Constants; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.common.utils.file.FileUploadUtils; +import com.cmvr.common.utils.file.FileUtils; +import com.cmvr.framework.config.ServerConfig; +import io.swagger.annotations.Api; +import lombok.RequiredArgsConstructor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.ArrayList; +import java.util.List; + +@Api(tags = "通用请求处理") +@RestController +@RequestMapping("/common") +@RequiredArgsConstructor +public class CommonController { + private static final Logger log = LoggerFactory.getLogger(CommonController.class); + + private final ServerConfig serverConfig; + + private static final String FILE_DELIMETER = ","; + + /** + * 通用下载请求 + * + * @param fileName 文件名称 + * @param delete 是否删除 + */ + @GetMapping("/download") + public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request) { + try { + if (!FileUtils.checkAllowDownload(fileName)) { + throw new Exception(StringUtils.format("文件名称({})非法,不允许下载。 ", fileName)); + } + String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1); + String filePath = CmvrIotConfig.getDownloadPath() + fileName; + + response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); + FileUtils.setAttachmentResponseHeader(response, realFileName); + FileUtils.writeBytes(filePath, response.getOutputStream()); + if (delete) { + FileUtils.deleteFile(filePath); + } + } catch (Exception e) { + log.error("下载文件失败", e); + } + } + + /** + * 通用上传请求(单个) + */ + @PostMapping("/upload") + public AjaxResult uploadFile(MultipartFile file) throws Exception { + try { + // 上传文件路径 + String filePath = CmvrIotConfig.getUploadPath(); + // 上传并返回新文件名称 + String fileName = FileUploadUtils.upload(filePath, file); + String url = serverConfig.getUrl() + fileName; + AjaxResult ajax = AjaxResult.success(); + ajax.put("url", url); + ajax.put("fileName", fileName); + ajax.put("newFileName", FileUtils.getName(fileName)); + ajax.put("originalFilename", file.getOriginalFilename()); + return ajax; + } catch (Exception e) { + return AjaxResult.error(e.getMessage()); + } + } + + /** + * 通用上传请求(多个) + */ + @PostMapping("/uploads") + public AjaxResult uploadFiles(List files) throws Exception { + try { + // 上传文件路径 + String filePath = CmvrIotConfig.getUploadPath(); + List urls = new ArrayList(); + List fileNames = new ArrayList(); + List newFileNames = new ArrayList(); + List originalFilenames = new ArrayList(); + for (MultipartFile file : files) { + // 上传并返回新文件名称 + String fileName = FileUploadUtils.upload(filePath, file); + String url = serverConfig.getUrl() + fileName; + urls.add(url); + fileNames.add(fileName); + newFileNames.add(FileUtils.getName(fileName)); + originalFilenames.add(file.getOriginalFilename()); + } + AjaxResult ajax = AjaxResult.success(); + ajax.put("urls", StringUtils.join(urls, FILE_DELIMETER)); + ajax.put("fileNames", StringUtils.join(fileNames, FILE_DELIMETER)); + ajax.put("newFileNames", StringUtils.join(newFileNames, FILE_DELIMETER)); + ajax.put("originalFilenames", StringUtils.join(originalFilenames, FILE_DELIMETER)); + return ajax; + } catch (Exception e) { + return AjaxResult.error(e.getMessage()); + } + } + + /** + * 本地资源通用下载 + */ + @GetMapping("/download/resource") + public void resourceDownload(String resource, HttpServletRequest request, HttpServletResponse response) + throws Exception { + try { + if (!FileUtils.checkAllowDownload(resource)) { + throw new Exception(StringUtils.format("资源文件({})非法,不允许下载。 ", resource)); + } + // 本地资源路径 + String localPath = CmvrIotConfig.getProfile(); + // 数据库资源地址 + String downloadPath = localPath + StringUtils.substringAfter(resource, Constants.RESOURCE_PREFIX); + // 下载名称 + String downloadName = StringUtils.substringAfterLast(downloadPath, "/"); + response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); + FileUtils.setAttachmentResponseHeader(response, downloadName); + FileUtils.writeBytes(downloadPath, response.getOutputStream()); + } catch (Exception e) { + log.error("下载文件失败", e); + } + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/device/DeDeviceProfileController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/device/DeDeviceProfileController.java new file mode 100644 index 0000000..90b2d50 --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/device/DeDeviceProfileController.java @@ -0,0 +1,115 @@ +package com.cmvr.web.controller.device; + +import java.util.List; + +import com.cmvr.device.domain.vo.ProfileVo; +import com.cmvr.device.domain.vo.TeMechanicalArmVo; +import com.cmvr.edge.client.service.EdgeSystemService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; +import com.cmvr.common.annotation.Log; +import com.cmvr.common.core.controller.BaseController; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.enums.BusinessType; +import com.cmvr.device.domain.DeDeviceProfile; +import com.cmvr.device.service.IDeDeviceProfileService; +import com.cmvr.common.core.page.TableDataInfo; + +/** + * 设备配置信息Controller + * + * @author cmvr-iot + * @date 2025-05-09 + */ +@RestController +@RequestMapping("/device/profile") +@RequiredArgsConstructor +@Api(tags = "设备配置信息") +public class DeDeviceProfileController extends BaseController +{ + + private final IDeDeviceProfileService deDeviceProfileService; + + private final EdgeSystemService systemService; + + /** + * 查询设备配置信息列表 + */ + @PreAuthorize("@ss.hasPermi('device:profile:list')") + @GetMapping("/list") + @ApiOperation("查询设备信息列表") + public TableDataInfo list(DeDeviceProfile deDeviceProfile) + { + startPage(); + List list = deDeviceProfileService.selectDeDeviceProfileList(deDeviceProfile); + return getDataTable(list); + } + + + /** + * 根据设备id获取设备详细配置信息 + */ + @PreAuthorize("@ss.hasPermi('device:profile:query')") + @GetMapping("/{id}") + @ApiOperation("根据设备id获取当前设备配置信息") + public AjaxResult getInfo(@PathVariable String id) + { + return success(deDeviceProfileService.selectDeDeviceProfileById(id)); + } + + /** + * 根据设备id和备注获取设备详细配置信息 + */ + @PreAuthorize("@ss.hasPermi('device:profile:query')") + @GetMapping("/parameterInfo") + @ApiOperation("根据设备id获取当前设备配置信息") + public AjaxResult getParameterInfo(@RequestParam String id, @RequestParam String remark) + { + return success(deDeviceProfileService.selectProfileByIdAndRemark(id,remark)); + } + + /** + * 新增设备配置信息 + */ + @PreAuthorize("@ss.hasPermi('device:profile:add')") + @Log(title = "设备配置信息", businessType = BusinessType.INSERT) + @ApiOperation("新增设备信息") + @PostMapping + public AjaxResult add(@RequestBody List deDeviceProfiles) + { + + return toAjax(deDeviceProfileService.insertDeDeviceProfile(deDeviceProfiles)); + } + + /** + * 修改设备配置信息 + */ + @PreAuthorize("@ss.hasPermi('device:profile:edit')") + @Log(title = "设备配置信息", businessType = BusinessType.UPDATE) + @ApiOperation("修改设备信息") + @PutMapping + public AjaxResult edit(@RequestBody List deDeviceProfiles) + { + return toAjax(deDeviceProfileService.updateDeDeviceProfile(deDeviceProfiles)); + } + + /** + * 删除设备配置信息 + */ + @PreAuthorize("@ss.hasPermi('device:profile:remove')") + @Log(title = "设备配置信息", businessType = BusinessType.DELETE) + @ApiOperation("删除设备配置信息") + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable String[] ids) + { + return toAjax(deDeviceProfileService.deleteDeDeviceProfileByIds(ids)); + } + + + + + +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/device/DeDeviceRegistrationController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/device/DeDeviceRegistrationController.java new file mode 100644 index 0000000..f0138ba --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/device/DeDeviceRegistrationController.java @@ -0,0 +1,122 @@ +package com.cmvr.web.controller.device; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; + +import com.cmvr.edge.client.service.EdgeSystemService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.cmvr.common.annotation.Log; +import com.cmvr.common.core.controller.BaseController; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.enums.BusinessType; +import com.cmvr.device.domain.DeDeviceRegistration; +import com.cmvr.device.service.IDeDeviceRegistrationService; +import com.cmvr.common.utils.poi.ExcelUtil; +import com.cmvr.common.core.page.TableDataInfo; + +/** + * 设备注册Controller + * + * @author cmvr-iot + * @date 2025-05-08 + */ +@RestController +@RequestMapping("/device/register") +@RequiredArgsConstructor +@Api(tags = "设备注册") +public class DeDeviceRegistrationController extends BaseController +{ + @Autowired + private IDeDeviceRegistrationService deDeviceRegistrationService; + + private final EdgeSystemService systemService; + + /** + * 查询设备注册列表 + */ + @ApiOperation("查询设备注册列表") + @PreAuthorize("@ss.hasPermi('device:register:list')") + @GetMapping("/list") + public TableDataInfo list(DeDeviceRegistration deDeviceRegistration) + { + startPage(); + List list = deDeviceRegistrationService.selectDeDeviceRegistrationList(deDeviceRegistration); + return getDataTable(list); + } + + /** + * 导出设备注册列表 + */ + @ApiOperation("导出设备注册列表") + @PreAuthorize("@ss.hasPermi('device:register:export')") + @Log(title = "设备注册", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, DeDeviceRegistration deDeviceRegistration) + { + List list = deDeviceRegistrationService.selectDeDeviceRegistrationList(deDeviceRegistration); + ExcelUtil util = new ExcelUtil(DeDeviceRegistration.class); + util.exportExcel(response, list, "设备注册数据"); + } + + /** + * 获取设备注册详细信息 + */ + @ApiOperation("获取设备注册详细信息") + @PreAuthorize("@ss.hasPermi('device:register:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") String id) + { + return success(deDeviceRegistrationService.selectDeDeviceRegistrationById(id)); + } + + /** + * 新增设备注册 + */ + @ApiOperation("新增设备注册") + @PreAuthorize("@ss.hasPermi('device:register:add')") + @Log(title = "设备注册", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody DeDeviceRegistration deDeviceRegistration) + { + return toAjax(deDeviceRegistrationService.insertDeDeviceRegistration(deDeviceRegistration)); + } + + /** + * 修改设备注册 + */ + @ApiOperation("修改设备注册") + @PreAuthorize("@ss.hasPermi('device:register:edit')") + @Log(title = "设备注册", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody DeDeviceRegistration deDeviceRegistration) + { + return toAjax(deDeviceRegistrationService.updateDeDeviceRegistration(deDeviceRegistration)); + } + + + + + /** + * 删除设备注册 + */ + @ApiOperation("删除设备注册") + @PreAuthorize("@ss.hasPermi('device:register:remove')") + @Log(title = "设备注册", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable String[] ids) + { + return toAjax(deDeviceRegistrationService.deleteDeDeviceRegistrationByIds(ids)); + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/device/DeDeviceTerminalConfigController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/device/DeDeviceTerminalConfigController.java new file mode 100644 index 0000000..902db5e --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/device/DeDeviceTerminalConfigController.java @@ -0,0 +1,102 @@ +package com.cmvr.web.controller.device; + +import com.cmvr.common.annotation.Log; +import com.cmvr.common.core.controller.BaseController; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.core.page.TableDataInfo; +import com.cmvr.common.enums.BusinessType; +import com.cmvr.common.utils.poi.ExcelUtil; +import com.cmvr.device.domain.DeDeviceTerminalConfig; +import com.cmvr.device.service.IDeDeviceTerminalConfigService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * 设备终端配置Controller + * + * @author cmvr-iot + * @date 2025-05-08 + */ +@RestController +@RequestMapping("/device/terminal") +@RequiredArgsConstructor +@Api(tags = "设备终端配置") +public class DeDeviceTerminalConfigController extends BaseController { + @Autowired + private IDeDeviceTerminalConfigService deDeviceTerminalConfigService; + + /** + * 查询设备终端配置列表 + */ + @ApiOperation("查询设备终端配置列表") + @PreAuthorize("@ss.hasPermi('device:terminal:list')") + @GetMapping("/list") + public TableDataInfo list(DeDeviceTerminalConfig deDeviceTerminalConfig) { + startPage(); + List list = deDeviceTerminalConfigService.selectDeDeviceTerminalConfigList(deDeviceTerminalConfig); + return getDataTable(list); + } + + /** + * 导出设备终端配置列表 + */ + @ApiOperation("导出设备终端配置列表") + @PreAuthorize("@ss.hasPermi('device:terminal:export')") + @Log(title = "设备终端配置", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, DeDeviceTerminalConfig deDeviceTerminalConfig) { + List list = deDeviceTerminalConfigService.selectDeDeviceTerminalConfigList(deDeviceTerminalConfig); + ExcelUtil util = new ExcelUtil(DeDeviceTerminalConfig.class); + util.exportExcel(response, list, "设备终端配置数据"); + } + + /** + * 获取设备终端配置详细信息 + */ + @ApiOperation("获取设备终端配置详细信息") + @PreAuthorize("@ss.hasPermi('device:terminal:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") String id) { + return success(deDeviceTerminalConfigService.selectDeDeviceTerminalConfigById(id)); + } + + /** + * 新增设备终端配置 + */ + @ApiOperation("新增设备终端配置") + @PreAuthorize("@ss.hasPermi('device:terminal:add')") + @Log(title = "设备终端配置", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody DeDeviceTerminalConfig deDeviceTerminalConfig) { + return toAjax(deDeviceTerminalConfigService.insertDeDeviceTerminalConfig(deDeviceTerminalConfig)); + } + + /** + * 修改设备终端配置 + */ + @ApiOperation("修改设备终端数据") + @PreAuthorize("@ss.hasPermi('device:terminal:edit')") + @Log(title = "设备终端配置", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody DeDeviceTerminalConfig deDeviceTerminalConfig) { + return toAjax(deDeviceTerminalConfigService.updateDeDeviceTerminalConfig(deDeviceTerminalConfig)); + } + + /** + * 删除设备终端配置 + */ + @ApiOperation("删除设备终端配置") + @PreAuthorize("@ss.hasPermi('device:terminal:remove')") + @Log(title = "设备终端配置", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable String[] ids) { + return toAjax(deDeviceTerminalConfigService.deleteDeDeviceTerminalConfigByIds(ids)); + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/monitor/CacheController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/monitor/CacheController.java new file mode 100644 index 0000000..c06f1ff --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/monitor/CacheController.java @@ -0,0 +1,121 @@ +package com.cmvr.web.controller.monitor; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Properties; +import java.util.Set; +import java.util.TreeSet; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisCallback; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.cmvr.common.constant.CacheConstants; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.system.domain.SysCache; + +/** + * 缓存监控 + * + * @author cmvr-iot + */ +@RestController +@RequestMapping("/monitor/cache") +public class CacheController +{ + @Autowired + private RedisTemplate redisTemplate; + + private final static List caches = new ArrayList(); + { + caches.add(new SysCache(CacheConstants.LOGIN_TOKEN_KEY, "用户信息")); + caches.add(new SysCache(CacheConstants.SYS_CONFIG_KEY, "配置信息")); + caches.add(new SysCache(CacheConstants.SYS_DICT_KEY, "数据字典")); + caches.add(new SysCache(CacheConstants.CAPTCHA_CODE_KEY, "验证码")); + caches.add(new SysCache(CacheConstants.REPEAT_SUBMIT_KEY, "防重提交")); + caches.add(new SysCache(CacheConstants.RATE_LIMIT_KEY, "限流处理")); + caches.add(new SysCache(CacheConstants.PWD_ERR_CNT_KEY, "密码错误次数")); + } + + @PreAuthorize("@ss.hasPermi('monitor:cache:list')") + @GetMapping() + public AjaxResult getInfo() throws Exception + { + Properties info = (Properties) redisTemplate.execute((RedisCallback) connection -> connection.info()); + Properties commandStats = (Properties) redisTemplate.execute((RedisCallback) connection -> connection.info("commandstats")); + Object dbSize = redisTemplate.execute((RedisCallback) connection -> connection.dbSize()); + + Map result = new HashMap<>(3); + result.put("info", info); + result.put("dbSize", dbSize); + + List> pieList = new ArrayList<>(); + commandStats.stringPropertyNames().forEach(key -> { + Map data = new HashMap<>(2); + String property = commandStats.getProperty(key); + data.put("name", StringUtils.removeStart(key, "cmdstat_")); + data.put("value", StringUtils.substringBetween(property, "calls=", ",usec")); + pieList.add(data); + }); + result.put("commandStats", pieList); + return AjaxResult.success(result); + } + + @PreAuthorize("@ss.hasPermi('monitor:cache:list')") + @GetMapping("/getNames") + public AjaxResult cache() + { + return AjaxResult.success(caches); + } + + @PreAuthorize("@ss.hasPermi('monitor:cache:list')") + @GetMapping("/getKeys/{cacheName}") + public AjaxResult getCacheKeys(@PathVariable String cacheName) + { + Set cacheKeys = redisTemplate.keys(cacheName + "*"); + return AjaxResult.success(new TreeSet<>(cacheKeys)); + } + + @PreAuthorize("@ss.hasPermi('monitor:cache:list')") + @GetMapping("/getValue/{cacheName}/{cacheKey}") + public AjaxResult getCacheValue(@PathVariable String cacheName, @PathVariable String cacheKey) + { + String cacheValue = redisTemplate.opsForValue().get(cacheKey); + SysCache sysCache = new SysCache(cacheName, cacheKey, cacheValue); + return AjaxResult.success(sysCache); + } + + @PreAuthorize("@ss.hasPermi('monitor:cache:list')") + @DeleteMapping("/clearCacheName/{cacheName}") + public AjaxResult clearCacheName(@PathVariable String cacheName) + { + Collection cacheKeys = redisTemplate.keys(cacheName + "*"); + redisTemplate.delete(cacheKeys); + return AjaxResult.success(); + } + + @PreAuthorize("@ss.hasPermi('monitor:cache:list')") + @DeleteMapping("/clearCacheKey/{cacheKey}") + public AjaxResult clearCacheKey(@PathVariable String cacheKey) + { + redisTemplate.delete(cacheKey); + return AjaxResult.success(); + } + + @PreAuthorize("@ss.hasPermi('monitor:cache:list')") + @DeleteMapping("/clearCacheAll") + public AjaxResult clearCacheAll() + { + Collection cacheKeys = redisTemplate.keys("*"); + redisTemplate.delete(cacheKeys); + return AjaxResult.success(); + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/monitor/ServerController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/monitor/ServerController.java new file mode 100644 index 0000000..022e2e9 --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/monitor/ServerController.java @@ -0,0 +1,27 @@ +package com.cmvr.web.controller.monitor; + +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.framework.web.domain.Server; + +/** + * 服务器监控 + * + * @author cmvr-iot + */ +@RestController +@RequestMapping("/monitor/server") +public class ServerController +{ + @PreAuthorize("@ss.hasPermi('monitor:server:list')") + @GetMapping() + public AjaxResult getInfo() throws Exception + { + Server server = new Server(); + server.copyTo(); + return AjaxResult.success(server); + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/monitor/SysLogininforController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/monitor/SysLogininforController.java new file mode 100644 index 0000000..edb6ee7 --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/monitor/SysLogininforController.java @@ -0,0 +1,82 @@ +package com.cmvr.web.controller.monitor; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.cmvr.common.annotation.Log; +import com.cmvr.common.core.controller.BaseController; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.core.page.TableDataInfo; +import com.cmvr.common.enums.BusinessType; +import com.cmvr.common.utils.poi.ExcelUtil; +import com.cmvr.framework.web.service.SysPasswordService; +import com.cmvr.system.domain.SysLogininfor; +import com.cmvr.system.service.ISysLogininforService; + +/** + * 系统访问记录 + * + * @author cmvr-iot + */ +@RestController +@RequestMapping("/monitor/logininfor") +public class SysLogininforController extends BaseController +{ + @Autowired + private ISysLogininforService logininforService; + + @Autowired + private SysPasswordService passwordService; + + @PreAuthorize("@ss.hasPermi('monitor:logininfor:list')") + @GetMapping("/list") + public TableDataInfo list(SysLogininfor logininfor) + { + startPage(); + List list = logininforService.selectLogininforList(logininfor); + return getDataTable(list); + } + + @Log(title = "登录日志", businessType = BusinessType.EXPORT) + @PreAuthorize("@ss.hasPermi('monitor:logininfor:export')") + @PostMapping("/export") + public void export(HttpServletResponse response, SysLogininfor logininfor) + { + List list = logininforService.selectLogininforList(logininfor); + ExcelUtil util = new ExcelUtil(SysLogininfor.class); + util.exportExcel(response, list, "登录日志"); + } + + @PreAuthorize("@ss.hasPermi('monitor:logininfor:remove')") + @Log(title = "登录日志", businessType = BusinessType.DELETE) + @DeleteMapping("/{infoIds}") + public AjaxResult remove(@PathVariable Long[] infoIds) + { + return toAjax(logininforService.deleteLogininforByIds(infoIds)); + } + + @PreAuthorize("@ss.hasPermi('monitor:logininfor:remove')") + @Log(title = "登录日志", businessType = BusinessType.CLEAN) + @DeleteMapping("/clean") + public AjaxResult clean() + { + logininforService.cleanLogininfor(); + return success(); + } + + @PreAuthorize("@ss.hasPermi('monitor:logininfor:unlock')") + @Log(title = "账户解锁", businessType = BusinessType.OTHER) + @GetMapping("/unlock/{userName}") + public AjaxResult unlock(@PathVariable("userName") String userName) + { + passwordService.clearLoginRecordCache(userName); + return success(); + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/monitor/SysOperlogController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/monitor/SysOperlogController.java new file mode 100644 index 0000000..1fb1e56 --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/monitor/SysOperlogController.java @@ -0,0 +1,69 @@ +package com.cmvr.web.controller.monitor; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.cmvr.common.annotation.Log; +import com.cmvr.common.core.controller.BaseController; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.core.page.TableDataInfo; +import com.cmvr.common.enums.BusinessType; +import com.cmvr.common.utils.poi.ExcelUtil; +import com.cmvr.system.domain.SysOperLog; +import com.cmvr.system.service.ISysOperLogService; + +/** + * 操作日志记录 + * + * @author cmvr-iot + */ +@RestController +@RequestMapping("/monitor/operlog") +public class SysOperlogController extends BaseController +{ + @Autowired + private ISysOperLogService operLogService; + + @PreAuthorize("@ss.hasPermi('monitor:operlog:list')") + @GetMapping("/list") + public TableDataInfo list(SysOperLog operLog) + { + startPage(); + List list = operLogService.selectOperLogList(operLog); + return getDataTable(list); + } + + @Log(title = "操作日志", businessType = BusinessType.EXPORT) + @PreAuthorize("@ss.hasPermi('monitor:operlog:export')") + @PostMapping("/export") + public void export(HttpServletResponse response, SysOperLog operLog) + { + List list = operLogService.selectOperLogList(operLog); + ExcelUtil util = new ExcelUtil(SysOperLog.class); + util.exportExcel(response, list, "操作日志"); + } + + @Log(title = "操作日志", businessType = BusinessType.DELETE) + @PreAuthorize("@ss.hasPermi('monitor:operlog:remove')") + @DeleteMapping("/{operIds}") + public AjaxResult remove(@PathVariable Long[] operIds) + { + return toAjax(operLogService.deleteOperLogByIds(operIds)); + } + + @Log(title = "操作日志", businessType = BusinessType.CLEAN) + @PreAuthorize("@ss.hasPermi('monitor:operlog:remove')") + @DeleteMapping("/clean") + public AjaxResult clean() + { + operLogService.cleanOperLog(); + return success(); + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/monitor/SysUserOnlineController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/monitor/SysUserOnlineController.java new file mode 100644 index 0000000..dab9a66 --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/monitor/SysUserOnlineController.java @@ -0,0 +1,83 @@ +package com.cmvr.web.controller.monitor; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.cmvr.common.annotation.Log; +import com.cmvr.common.constant.CacheConstants; +import com.cmvr.common.core.controller.BaseController; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.core.domain.model.LoginUser; +import com.cmvr.common.core.page.TableDataInfo; +import com.cmvr.common.core.redis.RedisCache; +import com.cmvr.common.enums.BusinessType; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.system.domain.SysUserOnline; +import com.cmvr.system.service.ISysUserOnlineService; + +/** + * 在线用户监控 + * + * @author cmvr-iot + */ +@RestController +@RequestMapping("/monitor/online") +public class SysUserOnlineController extends BaseController +{ + @Autowired + private ISysUserOnlineService userOnlineService; + + @Autowired + private RedisCache redisCache; + + @PreAuthorize("@ss.hasPermi('monitor:online:list')") + @GetMapping("/list") + public TableDataInfo list(String ipaddr, String userName) + { + Collection keys = redisCache.keys(CacheConstants.LOGIN_TOKEN_KEY + "*"); + List userOnlineList = new ArrayList(); + for (String key : keys) + { + LoginUser user = redisCache.getCacheObject(key); + if (StringUtils.isNotEmpty(ipaddr) && StringUtils.isNotEmpty(userName)) + { + userOnlineList.add(userOnlineService.selectOnlineByInfo(ipaddr, userName, user)); + } + else if (StringUtils.isNotEmpty(ipaddr)) + { + userOnlineList.add(userOnlineService.selectOnlineByIpaddr(ipaddr, user)); + } + else if (StringUtils.isNotEmpty(userName) && StringUtils.isNotNull(user.getUser())) + { + userOnlineList.add(userOnlineService.selectOnlineByUserName(userName, user)); + } + else + { + userOnlineList.add(userOnlineService.loginUserToUserOnline(user)); + } + } + Collections.reverse(userOnlineList); + userOnlineList.removeAll(Collections.singleton(null)); + return getDataTable(userOnlineList); + } + + /** + * 强退用户 + */ + @PreAuthorize("@ss.hasPermi('monitor:online:forceLogout')") + @Log(title = "在线用户", businessType = BusinessType.FORCE) + @DeleteMapping("/{tokenId}") + public AjaxResult forceLogout(@PathVariable String tokenId) + { + redisCache.deleteObject(CacheConstants.LOGIN_TOKEN_KEY + tokenId); + return success(); + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/show/ShowIntelligentCockpitController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/show/ShowIntelligentCockpitController.java new file mode 100644 index 0000000..b1da9eb --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/show/ShowIntelligentCockpitController.java @@ -0,0 +1,95 @@ +package com.cmvr.web.controller.show; + +import cn.hutool.core.util.StrUtil; +import com.cmvr.common.annotation.Log; +import com.cmvr.common.core.controller.BaseController; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.enums.BusinessType; +import com.cmvr.llm.model.CallAgentVO; +import com.cmvr.llm.model.CallAgentAdvancedVO; +import com.cmvr.llm.model.CallTTSAdvancedVO; +import com.cmvr.llm.model.CallTTSVO; +import com.cmvr.llm.service.ShowIntelligentCockpitService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RequestPart; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid; +import java.io.IOException; + +@Api(tags = "演示-智能座舱") +@RestController +@RequestMapping("/show") +@RequiredArgsConstructor +public class ShowIntelligentCockpitController extends BaseController { + + private final ShowIntelligentCockpitService showIntelligentCockpitService; + + // ----------------------------- 语音合成 ----------------------------- + + @Log(title = "演示-智能座舱-创建音色", businessType = BusinessType.OTHER) + @ApiOperation("创建音色") + @PostMapping("/tts/create") + public AjaxResult create(@RequestPart(value = "file") MultipartFile file) throws IOException { + return success(showIntelligentCockpitService.createTimbre(file)); + } + + @ApiOperation("查询音色") + @GetMapping("/tts/query") + public AjaxResult query() { + return success(showIntelligentCockpitService.queryTimbre()); + } + + @Log(title = "演示-智能座舱-生成语料", businessType = BusinessType.OTHER) + @ApiOperation("生成语料") + @PostMapping("/tts/corpus") + public AjaxResult corpus(@Valid @RequestBody CallAgentVO callAgentVO) { + callAgentVO.setConvertWords(StrUtil.trim(callAgentVO.getConvertWords())); + return success(showIntelligentCockpitService.genCorpus(callAgentVO)); + } + + @Log(title = "演示-智能座舱-语音合成", businessType = BusinessType.OTHER) + @ApiOperation("语音合成") + @PostMapping("/tts/synthesize") + public ResponseEntity synthesize(@Valid @RequestBody CallTTSVO callTTSVO) { + callTTSVO.setText(StrUtil.trim(callTTSVO.getText())); + return showIntelligentCockpitService.synthesizeAudio(callTTSVO); + } + + @Log(title = "演示-智能座舱-生成语料-增强", businessType = BusinessType.OTHER) + @ApiOperation("生成语料-增强") + @PostMapping("/tts/corpus/advanced") + public AjaxResult corpusAdvanced(@Valid @RequestBody CallAgentAdvancedVO callAgentAdvancedVO) { + callAgentAdvancedVO.setConvertWords(StrUtil.trim(callAgentAdvancedVO.getConvertWords())); + return success(showIntelligentCockpitService.genCorpusAdvanced(callAgentAdvancedVO)); + } + + @Log(title = "演示-智能座舱-语音合成-增强", businessType = BusinessType.OTHER) + @ApiOperation("语音合成-增强") + @PostMapping("/tts/synthesize/advanced") + public ResponseEntity synthesizeAdvanced(@Valid @RequestBody CallTTSAdvancedVO callTTSAdvancedVO) { + callTTSAdvancedVO.setText(StrUtil.trim(callTTSAdvancedVO.getText())); + return showIntelligentCockpitService.synthesizeAudioAdvanced(callTTSAdvancedVO); + } + + // ----------------------------- 触控交互 ----------------------------- + + @Log(title = "演示-智能座舱-触控坐标", businessType = BusinessType.OTHER) + @ApiOperation("触控坐标") + @PostMapping("/touch/coordinates") + public AjaxResult coordinates( + @RequestPart(value = "image") MultipartFile image, + @RequestParam("words") String words + ) throws Exception { + return success(showIntelligentCockpitService.getCoordinates(image.getBytes(), words)); + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysConfigController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysConfigController.java new file mode 100644 index 0000000..9fcfe74 --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysConfigController.java @@ -0,0 +1,133 @@ +package com.cmvr.web.controller.system; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.cmvr.common.annotation.Log; +import com.cmvr.common.core.controller.BaseController; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.core.page.TableDataInfo; +import com.cmvr.common.enums.BusinessType; +import com.cmvr.common.utils.poi.ExcelUtil; +import com.cmvr.system.domain.SysConfig; +import com.cmvr.system.service.ISysConfigService; + +/** + * 参数配置 信息操作处理 + * + * @author cmvr-iot + */ +@RestController +@RequestMapping("/system/config") +public class SysConfigController extends BaseController +{ + @Autowired + private ISysConfigService configService; + + /** + * 获取参数配置列表 + */ + @PreAuthorize("@ss.hasPermi('system:config:list')") + @GetMapping("/list") + public TableDataInfo list(SysConfig config) + { + startPage(); + List list = configService.selectConfigList(config); + return getDataTable(list); + } + + @Log(title = "参数管理", businessType = BusinessType.EXPORT) + @PreAuthorize("@ss.hasPermi('system:config:export')") + @PostMapping("/export") + public void export(HttpServletResponse response, SysConfig config) + { + List list = configService.selectConfigList(config); + ExcelUtil util = new ExcelUtil(SysConfig.class); + util.exportExcel(response, list, "参数数据"); + } + + /** + * 根据参数编号获取详细信息 + */ + @PreAuthorize("@ss.hasPermi('system:config:query')") + @GetMapping(value = "/{configId}") + public AjaxResult getInfo(@PathVariable Long configId) + { + return success(configService.selectConfigById(configId)); + } + + /** + * 根据参数键名查询参数值 + */ + @GetMapping(value = "/configKey/{configKey}") + public AjaxResult getConfigKey(@PathVariable String configKey) + { + return success(configService.selectConfigByKey(configKey)); + } + + /** + * 新增参数配置 + */ + @PreAuthorize("@ss.hasPermi('system:config:add')") + @Log(title = "参数管理", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@Validated @RequestBody SysConfig config) + { + if (!configService.checkConfigKeyUnique(config)) + { + return error("新增参数'" + config.getConfigName() + "'失败,参数键名已存在"); + } + config.setCreateBy(getUsername()); + return toAjax(configService.insertConfig(config)); + } + + /** + * 修改参数配置 + */ + @PreAuthorize("@ss.hasPermi('system:config:edit')") + @Log(title = "参数管理", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@Validated @RequestBody SysConfig config) + { + if (!configService.checkConfigKeyUnique(config)) + { + return error("修改参数'" + config.getConfigName() + "'失败,参数键名已存在"); + } + config.setUpdateBy(getUsername()); + return toAjax(configService.updateConfig(config)); + } + + /** + * 删除参数配置 + */ + @PreAuthorize("@ss.hasPermi('system:config:remove')") + @Log(title = "参数管理", businessType = BusinessType.DELETE) + @DeleteMapping("/{configIds}") + public AjaxResult remove(@PathVariable Long[] configIds) + { + configService.deleteConfigByIds(configIds); + return success(); + } + + /** + * 刷新参数缓存 + */ + @PreAuthorize("@ss.hasPermi('system:config:remove')") + @Log(title = "参数管理", businessType = BusinessType.CLEAN) + @DeleteMapping("/refreshCache") + public AjaxResult refreshCache() + { + configService.resetConfigCache(); + return success(); + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysDeptController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysDeptController.java new file mode 100644 index 0000000..14e915a --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysDeptController.java @@ -0,0 +1,132 @@ +package com.cmvr.web.controller.system; + +import java.util.List; +import org.apache.commons.lang3.ArrayUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.cmvr.common.annotation.Log; +import com.cmvr.common.constant.UserConstants; +import com.cmvr.common.core.controller.BaseController; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.core.domain.entity.SysDept; +import com.cmvr.common.enums.BusinessType; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.system.service.ISysDeptService; + +/** + * 部门信息 + * + * @author cmvr-iot + */ +@RestController +@RequestMapping("/system/dept") +public class SysDeptController extends BaseController +{ + @Autowired + private ISysDeptService deptService; + + /** + * 获取部门列表 + */ + @PreAuthorize("@ss.hasPermi('system:dept:list')") + @GetMapping("/list") + public AjaxResult list(SysDept dept) + { + List depts = deptService.selectDeptList(dept); + return success(depts); + } + + /** + * 查询部门列表(排除节点) + */ + @PreAuthorize("@ss.hasPermi('system:dept:list')") + @GetMapping("/list/exclude/{deptId}") + public AjaxResult excludeChild(@PathVariable(value = "deptId", required = false) Long deptId) + { + List depts = deptService.selectDeptList(new SysDept()); + depts.removeIf(d -> d.getDeptId().intValue() == deptId || ArrayUtils.contains(StringUtils.split(d.getAncestors(), ","), deptId + "")); + return success(depts); + } + + /** + * 根据部门编号获取详细信息 + */ + @PreAuthorize("@ss.hasPermi('system:dept:query')") + @GetMapping(value = "/{deptId}") + public AjaxResult getInfo(@PathVariable Long deptId) + { + deptService.checkDeptDataScope(deptId); + return success(deptService.selectDeptById(deptId)); + } + + /** + * 新增部门 + */ + @PreAuthorize("@ss.hasPermi('system:dept:add')") + @Log(title = "部门管理", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@Validated @RequestBody SysDept dept) + { + if (!deptService.checkDeptNameUnique(dept)) + { + return error("新增部门'" + dept.getDeptName() + "'失败,部门名称已存在"); + } + dept.setCreateBy(getUsername()); + return toAjax(deptService.insertDept(dept)); + } + + /** + * 修改部门 + */ + @PreAuthorize("@ss.hasPermi('system:dept:edit')") + @Log(title = "部门管理", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@Validated @RequestBody SysDept dept) + { + Long deptId = dept.getDeptId(); + deptService.checkDeptDataScope(deptId); + if (!deptService.checkDeptNameUnique(dept)) + { + return error("修改部门'" + dept.getDeptName() + "'失败,部门名称已存在"); + } + else if (dept.getParentId().equals(deptId)) + { + return error("修改部门'" + dept.getDeptName() + "'失败,上级部门不能是自己"); + } + else if (StringUtils.equals(UserConstants.DEPT_DISABLE, dept.getStatus()) && deptService.selectNormalChildrenDeptById(deptId) > 0) + { + return error("该部门包含未停用的子部门!"); + } + dept.setUpdateBy(getUsername()); + return toAjax(deptService.updateDept(dept)); + } + + /** + * 删除部门 + */ + @PreAuthorize("@ss.hasPermi('system:dept:remove')") + @Log(title = "部门管理", businessType = BusinessType.DELETE) + @DeleteMapping("/{deptId}") + public AjaxResult remove(@PathVariable Long deptId) + { + if (deptService.hasChildByDeptId(deptId)) + { + return warn("存在下级部门,不允许删除"); + } + if (deptService.checkDeptExistUser(deptId)) + { + return warn("部门存在用户,不允许删除"); + } + deptService.checkDeptDataScope(deptId); + return toAjax(deptService.deleteDeptById(deptId)); + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysDictDataController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysDictDataController.java new file mode 100644 index 0000000..f251a15 --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysDictDataController.java @@ -0,0 +1,121 @@ +package com.cmvr.web.controller.system; + +import java.util.ArrayList; +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.cmvr.common.annotation.Log; +import com.cmvr.common.core.controller.BaseController; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.core.domain.entity.SysDictData; +import com.cmvr.common.core.page.TableDataInfo; +import com.cmvr.common.enums.BusinessType; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.common.utils.poi.ExcelUtil; +import com.cmvr.system.service.ISysDictDataService; +import com.cmvr.system.service.ISysDictTypeService; + +/** + * 数据字典信息 + * + * @author cmvr-iot + */ +@RestController +@RequestMapping("/system/dict/data") +public class SysDictDataController extends BaseController +{ + @Autowired + private ISysDictDataService dictDataService; + + @Autowired + private ISysDictTypeService dictTypeService; + + @PreAuthorize("@ss.hasPermi('system:dict:list')") + @GetMapping("/list") + public TableDataInfo list(SysDictData dictData) + { + startPage(); + List list = dictDataService.selectDictDataList(dictData); + return getDataTable(list); + } + + @Log(title = "字典数据", businessType = BusinessType.EXPORT) + @PreAuthorize("@ss.hasPermi('system:dict:export')") + @PostMapping("/export") + public void export(HttpServletResponse response, SysDictData dictData) + { + List list = dictDataService.selectDictDataList(dictData); + ExcelUtil util = new ExcelUtil(SysDictData.class); + util.exportExcel(response, list, "字典数据"); + } + + /** + * 查询字典数据详细 + */ + @PreAuthorize("@ss.hasPermi('system:dict:query')") + @GetMapping(value = "/{dictCode}") + public AjaxResult getInfo(@PathVariable Long dictCode) + { + return success(dictDataService.selectDictDataById(dictCode)); + } + + /** + * 根据字典类型查询字典数据信息 + */ + @GetMapping(value = "/type/{dictType}") + public AjaxResult dictType(@PathVariable String dictType) + { + List data = dictTypeService.selectDictDataByType(dictType); + if (StringUtils.isNull(data)) + { + data = new ArrayList(); + } + return success(data); + } + + /** + * 新增字典类型 + */ + @PreAuthorize("@ss.hasPermi('system:dict:add')") + @Log(title = "字典数据", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@Validated @RequestBody SysDictData dict) + { + dict.setCreateBy(getUsername()); + return toAjax(dictDataService.insertDictData(dict)); + } + + /** + * 修改保存字典类型 + */ + @PreAuthorize("@ss.hasPermi('system:dict:edit')") + @Log(title = "字典数据", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@Validated @RequestBody SysDictData dict) + { + dict.setUpdateBy(getUsername()); + return toAjax(dictDataService.updateDictData(dict)); + } + + /** + * 删除字典类型 + */ + @PreAuthorize("@ss.hasPermi('system:dict:remove')") + @Log(title = "字典类型", businessType = BusinessType.DELETE) + @DeleteMapping("/{dictCodes}") + public AjaxResult remove(@PathVariable Long[] dictCodes) + { + dictDataService.deleteDictDataByIds(dictCodes); + return success(); + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysDictTypeController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysDictTypeController.java new file mode 100644 index 0000000..7814a06 --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysDictTypeController.java @@ -0,0 +1,131 @@ +package com.cmvr.web.controller.system; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.cmvr.common.annotation.Log; +import com.cmvr.common.core.controller.BaseController; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.core.domain.entity.SysDictType; +import com.cmvr.common.core.page.TableDataInfo; +import com.cmvr.common.enums.BusinessType; +import com.cmvr.common.utils.poi.ExcelUtil; +import com.cmvr.system.service.ISysDictTypeService; + +/** + * 数据字典信息 + * + * @author cmvr-iot + */ +@RestController +@RequestMapping("/system/dict/type") +public class SysDictTypeController extends BaseController +{ + @Autowired + private ISysDictTypeService dictTypeService; + + @PreAuthorize("@ss.hasPermi('system:dict:list')") + @GetMapping("/list") + public TableDataInfo list(SysDictType dictType) + { + startPage(); + List list = dictTypeService.selectDictTypeList(dictType); + return getDataTable(list); + } + + @Log(title = "字典类型", businessType = BusinessType.EXPORT) + @PreAuthorize("@ss.hasPermi('system:dict:export')") + @PostMapping("/export") + public void export(HttpServletResponse response, SysDictType dictType) + { + List list = dictTypeService.selectDictTypeList(dictType); + ExcelUtil util = new ExcelUtil(SysDictType.class); + util.exportExcel(response, list, "字典类型"); + } + + /** + * 查询字典类型详细 + */ + @PreAuthorize("@ss.hasPermi('system:dict:query')") + @GetMapping(value = "/{dictId}") + public AjaxResult getInfo(@PathVariable Long dictId) + { + return success(dictTypeService.selectDictTypeById(dictId)); + } + + /** + * 新增字典类型 + */ + @PreAuthorize("@ss.hasPermi('system:dict:add')") + @Log(title = "字典类型", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@Validated @RequestBody SysDictType dict) + { + if (!dictTypeService.checkDictTypeUnique(dict)) + { + return error("新增字典'" + dict.getDictName() + "'失败,字典类型已存在"); + } + dict.setCreateBy(getUsername()); + return toAjax(dictTypeService.insertDictType(dict)); + } + + /** + * 修改字典类型 + */ + @PreAuthorize("@ss.hasPermi('system:dict:edit')") + @Log(title = "字典类型", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@Validated @RequestBody SysDictType dict) + { + if (!dictTypeService.checkDictTypeUnique(dict)) + { + return error("修改字典'" + dict.getDictName() + "'失败,字典类型已存在"); + } + dict.setUpdateBy(getUsername()); + return toAjax(dictTypeService.updateDictType(dict)); + } + + /** + * 删除字典类型 + */ + @PreAuthorize("@ss.hasPermi('system:dict:remove')") + @Log(title = "字典类型", businessType = BusinessType.DELETE) + @DeleteMapping("/{dictIds}") + public AjaxResult remove(@PathVariable Long[] dictIds) + { + dictTypeService.deleteDictTypeByIds(dictIds); + return success(); + } + + /** + * 刷新字典缓存 + */ + @PreAuthorize("@ss.hasPermi('system:dict:remove')") + @Log(title = "字典类型", businessType = BusinessType.CLEAN) + @DeleteMapping("/refreshCache") + public AjaxResult refreshCache() + { + dictTypeService.resetDictCache(); + return success(); + } + + /** + * 获取字典选择框列表 + */ + @GetMapping("/optionselect") + public AjaxResult optionselect() + { + List dictTypes = dictTypeService.selectDictTypeAll(); + return success(dictTypes); + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysFileInfoController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysFileInfoController.java new file mode 100644 index 0000000..395bc05 --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysFileInfoController.java @@ -0,0 +1,51 @@ +package com.cmvr.web.controller.system; + +import com.cmvr.common.annotation.Log; +import com.cmvr.common.core.controller.BaseController; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.core.domain.entity.SysFileInfo; +import com.cmvr.common.core.page.TableDataInfo; +import com.cmvr.common.enums.BusinessType; +import com.cmvr.system.service.ISysFileService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; + +@Api(tags = "文件管理") +@RestController +@RequestMapping("/system/file") +@RequiredArgsConstructor +public class SysFileInfoController extends BaseController { + + private final ISysFileService sysFileService; + + @ApiOperation("查询文件") + @GetMapping("/list") + public TableDataInfo query(SysFileInfo sysFileInfo) { + startPage(); + List list = sysFileService.selectFileList(sysFileInfo); + return getDataTable(list); + } + + @ApiOperation(value = "上传文件,上传后返回文件URL", notes = "0:其他、1:普通文件、2:图片、3:音频、4:视频") + @Log(title = "文件管理", businessType = BusinessType.INSERT) + @PostMapping("/upload") + public AjaxResult upload( + @RequestParam("fileType") Integer fileType, + @RequestPart("file") MultipartFile file + ) { + return AjaxResult.success(sysFileService.uploadFile(file, fileType)); + } + + + @ApiOperation("删除文件") + @Log(title = "文件管理", businessType = BusinessType.DELETE) + @DeleteMapping("/{groupIds}") + public AjaxResult remove(@PathVariable Long[] groupIds) { + return toAjax(sysFileService.deleteFileByIds(groupIds)); + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysGroupController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysGroupController.java new file mode 100644 index 0000000..73c5c32 --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysGroupController.java @@ -0,0 +1,64 @@ +package com.cmvr.web.controller.system; + +import com.cmvr.common.annotation.Log; +import com.cmvr.common.core.controller.BaseController; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.core.domain.entity.SysGroup; +import com.cmvr.common.core.page.TableDataInfo; +import com.cmvr.common.enums.BusinessType; +import com.cmvr.system.service.ISysGroupService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Api(tags = "通用分组配置") +@RestController +@RequestMapping("/system/group") +@RequiredArgsConstructor +public class SysGroupController extends BaseController { + private final ISysGroupService sysGroupService; + + @ApiOperation("查询通用分组配置列表") + @PreAuthorize("@ss.hasPermi('system:group:list')") + @GetMapping("/list") + public TableDataInfo list(SysGroup sysGroup) { + startPage(); + List list = sysGroupService.selectSysGroupList(sysGroup); + return getDataTable(list); + } + + @ApiOperation("获取通用分组配置详细信息") + @PreAuthorize("@ss.hasPermi('system:group:query')") + @GetMapping(value = "/{groupId}") + public AjaxResult getInfo(@PathVariable("groupId") Long groupId) { + return success(sysGroupService.selectSysGroupByGroupId(groupId)); + } + + @ApiOperation("新增通用分组配置") + @PreAuthorize("@ss.hasPermi('system:group:add')") + @Log(title = "通用分组配置", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody SysGroup sysGroup) { + return toAjax(sysGroupService.insertSysGroup(sysGroup)); + } + + @ApiOperation("修改通用分组配置") + @PreAuthorize("@ss.hasPermi('system:group:edit')") + @Log(title = "通用分组配置", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody SysGroup sysGroup) { + return toAjax(sysGroupService.updateSysGroup(sysGroup)); + } + + @ApiOperation("删除通用分组配置") + @PreAuthorize("@ss.hasPermi('system:group:remove')") + @Log(title = "通用分组配置", businessType = BusinessType.DELETE) + @DeleteMapping("/{groupIds}") + public AjaxResult remove(@PathVariable Long[] groupIds) { + return toAjax(sysGroupService.deleteSysGroupByGroupIds(groupIds)); + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysIndexController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysIndexController.java new file mode 100644 index 0000000..a976eb0 --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysIndexController.java @@ -0,0 +1,29 @@ +package com.cmvr.web.controller.system; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.cmvr.common.config.CmvrIotConfig; +import com.cmvr.common.utils.StringUtils; + +/** + * 首页 + * + * @author cmvr-iot + */ +@RestController +public class SysIndexController +{ + /** 系统基础配置 */ + @Autowired + private CmvrIotConfig cmvrIotConfig; + + /** + * 访问首页,提示语 + */ + @RequestMapping("/") + public String index() + { + return StringUtils.format("欢迎使用{}后台管理框架,当前版本:v{},请通过前端地址访问。", cmvrIotConfig.getName(), cmvrIotConfig.getVersion()); + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysLoginController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysLoginController.java new file mode 100644 index 0000000..6d56bac --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysLoginController.java @@ -0,0 +1,102 @@ +package com.cmvr.web.controller.system; + +import java.util.List; +import java.util.Set; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; +import com.cmvr.common.constant.Constants; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.core.domain.entity.SysMenu; +import com.cmvr.common.core.domain.entity.SysUser; +import com.cmvr.common.core.domain.model.LoginBody; +import com.cmvr.common.core.domain.model.LoginUser; +import com.cmvr.common.utils.SecurityUtils; +import com.cmvr.framework.web.service.SysLoginService; +import com.cmvr.framework.web.service.SysPermissionService; +import com.cmvr.framework.web.service.TokenService; +import com.cmvr.system.service.ISysMenuService; + +/** + * 登录验证 + * + * @author cmvr-iot + */ +@Api(tags = "登录验证") +@RestController +public class SysLoginController +{ + @Autowired + private SysLoginService loginService; + + @Autowired + private ISysMenuService menuService; + + @Autowired + private SysPermissionService permissionService; + + @Autowired + private TokenService tokenService; + + /** + * 登录方法 + * + * @param loginBody 登录信息 + * @return 结果 + */ + @ApiOperation("登录") + @PostMapping("/login") + public AjaxResult login(@RequestBody LoginBody loginBody) + { + AjaxResult ajax = AjaxResult.success(); + // 生成令牌 + String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(), + loginBody.getUuid()); + ajax.put(Constants.TOKEN, token); + return ajax; + } + + /** + * 获取用户信息 + * + * @return 用户信息 + */ + @GetMapping("getInfo") + public AjaxResult getInfo() + { + LoginUser loginUser = SecurityUtils.getLoginUser(); + SysUser user = loginUser.getUser(); + // 角色集合 + Set roles = permissionService.getRolePermission(user); + // 权限集合 + Set permissions = permissionService.getMenuPermission(user); + if (!loginUser.getPermissions().equals(permissions)) + { + loginUser.setPermissions(permissions); + tokenService.refreshToken(loginUser); + } + AjaxResult ajax = AjaxResult.success(); + ajax.put("user", user); + ajax.put("roles", roles); + ajax.put("permissions", permissions); + return ajax; + } + + /** + * 获取路由信息 + * + * @return 路由信息 + */ + @GetMapping("getRouters") + public AjaxResult getRouters() + { + Long userId = SecurityUtils.getUserId(); + List menus = menuService.selectMenuTreeByUserId(userId); + return AjaxResult.success(menuService.buildMenus(menus)); + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysMenuController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysMenuController.java new file mode 100644 index 0000000..a503820 --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysMenuController.java @@ -0,0 +1,142 @@ +package com.cmvr.web.controller.system; + +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.cmvr.common.annotation.Log; +import com.cmvr.common.constant.UserConstants; +import com.cmvr.common.core.controller.BaseController; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.core.domain.entity.SysMenu; +import com.cmvr.common.enums.BusinessType; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.system.service.ISysMenuService; + +/** + * 菜单信息 + * + * @author cmvr-iot + */ +@RestController +@RequestMapping("/system/menu") +public class SysMenuController extends BaseController +{ + @Autowired + private ISysMenuService menuService; + + /** + * 获取菜单列表 + */ + @PreAuthorize("@ss.hasPermi('system:menu:list')") + @GetMapping("/list") + public AjaxResult list(SysMenu menu) + { + List menus = menuService.selectMenuList(menu, getUserId()); + return success(menus); + } + + /** + * 根据菜单编号获取详细信息 + */ + @PreAuthorize("@ss.hasPermi('system:menu:query')") + @GetMapping(value = "/{menuId}") + public AjaxResult getInfo(@PathVariable Long menuId) + { + return success(menuService.selectMenuById(menuId)); + } + + /** + * 获取菜单下拉树列表 + */ + @GetMapping("/treeselect") + public AjaxResult treeselect(SysMenu menu) + { + List menus = menuService.selectMenuList(menu, getUserId()); + return success(menuService.buildMenuTreeSelect(menus)); + } + + /** + * 加载对应角色菜单列表树 + */ + @GetMapping(value = "/roleMenuTreeselect/{roleId}") + public AjaxResult roleMenuTreeselect(@PathVariable("roleId") Long roleId) + { + List menus = menuService.selectMenuList(getUserId()); + AjaxResult ajax = AjaxResult.success(); + ajax.put("checkedKeys", menuService.selectMenuListByRoleId(roleId)); + ajax.put("menus", menuService.buildMenuTreeSelect(menus)); + return ajax; + } + + /** + * 新增菜单 + */ + @PreAuthorize("@ss.hasPermi('system:menu:add')") + @Log(title = "菜单管理", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@Validated @RequestBody SysMenu menu) + { + if (!menuService.checkMenuNameUnique(menu)) + { + return error("新增菜单'" + menu.getMenuName() + "'失败,菜单名称已存在"); + } + else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath())) + { + return error("新增菜单'" + menu.getMenuName() + "'失败,地址必须以http(s)://开头"); + } + menu.setCreateBy(getUsername()); + return toAjax(menuService.insertMenu(menu)); + } + + /** + * 修改菜单 + */ + @PreAuthorize("@ss.hasPermi('system:menu:edit')") + @Log(title = "菜单管理", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@Validated @RequestBody SysMenu menu) + { + if (!menuService.checkMenuNameUnique(menu)) + { + return error("修改菜单'" + menu.getMenuName() + "'失败,菜单名称已存在"); + } + else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath())) + { + return error("修改菜单'" + menu.getMenuName() + "'失败,地址必须以http(s)://开头"); + } + else if (menu.getMenuId().equals(menu.getParentId())) + { + return error("修改菜单'" + menu.getMenuName() + "'失败,上级菜单不能选择自己"); + } + menu.setUpdateBy(getUsername()); + return toAjax(menuService.updateMenu(menu)); + } + + /** + * 删除菜单 + */ + @PreAuthorize("@ss.hasPermi('system:menu:remove')") + @Log(title = "菜单管理", businessType = BusinessType.DELETE) + @DeleteMapping("/{menuId}") + public AjaxResult remove(@PathVariable("menuId") Long menuId) + { + if (menuService.hasChildByMenuId(menuId)) + { + return warn("存在子菜单,不允许删除"); + } + if (menuService.checkMenuExistRole(menuId)) + { + return warn("菜单已分配,不允许删除"); + } + return toAjax(menuService.deleteMenuById(menuId)); + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysNoticeController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysNoticeController.java new file mode 100644 index 0000000..d9d22a4 --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysNoticeController.java @@ -0,0 +1,91 @@ +package com.cmvr.web.controller.system; + +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.cmvr.common.annotation.Log; +import com.cmvr.common.core.controller.BaseController; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.core.page.TableDataInfo; +import com.cmvr.common.enums.BusinessType; +import com.cmvr.system.domain.SysNotice; +import com.cmvr.system.service.ISysNoticeService; + +/** + * 公告 信息操作处理 + * + * @author cmvr-iot + */ +@RestController +@RequestMapping("/system/notice") +public class SysNoticeController extends BaseController +{ + @Autowired + private ISysNoticeService noticeService; + + /** + * 获取通知公告列表 + */ + @PreAuthorize("@ss.hasPermi('system:notice:list')") + @GetMapping("/list") + public TableDataInfo list(SysNotice notice) + { + startPage(); + List list = noticeService.selectNoticeList(notice); + return getDataTable(list); + } + + /** + * 根据通知公告编号获取详细信息 + */ + @PreAuthorize("@ss.hasPermi('system:notice:query')") + @GetMapping(value = "/{noticeId}") + public AjaxResult getInfo(@PathVariable Long noticeId) + { + return success(noticeService.selectNoticeById(noticeId)); + } + + /** + * 新增通知公告 + */ + @PreAuthorize("@ss.hasPermi('system:notice:add')") + @Log(title = "通知公告", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@Validated @RequestBody SysNotice notice) + { + notice.setCreateBy(getUsername()); + return toAjax(noticeService.insertNotice(notice)); + } + + /** + * 修改通知公告 + */ + @PreAuthorize("@ss.hasPermi('system:notice:edit')") + @Log(title = "通知公告", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@Validated @RequestBody SysNotice notice) + { + notice.setUpdateBy(getUsername()); + return toAjax(noticeService.updateNotice(notice)); + } + + /** + * 删除通知公告 + */ + @PreAuthorize("@ss.hasPermi('system:notice:remove')") + @Log(title = "通知公告", businessType = BusinessType.DELETE) + @DeleteMapping("/{noticeIds}") + public AjaxResult remove(@PathVariable Long[] noticeIds) + { + return toAjax(noticeService.deleteNoticeByIds(noticeIds)); + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysPostController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysPostController.java new file mode 100644 index 0000000..bbb53bf --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysPostController.java @@ -0,0 +1,129 @@ +package com.cmvr.web.controller.system; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.cmvr.common.annotation.Log; +import com.cmvr.common.core.controller.BaseController; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.core.page.TableDataInfo; +import com.cmvr.common.enums.BusinessType; +import com.cmvr.common.utils.poi.ExcelUtil; +import com.cmvr.system.domain.SysPost; +import com.cmvr.system.service.ISysPostService; + +/** + * 岗位信息操作处理 + * + * @author cmvr-iot + */ +@RestController +@RequestMapping("/system/post") +public class SysPostController extends BaseController +{ + @Autowired + private ISysPostService postService; + + /** + * 获取岗位列表 + */ + @PreAuthorize("@ss.hasPermi('system:post:list')") + @GetMapping("/list") + public TableDataInfo list(SysPost post) + { + startPage(); + List list = postService.selectPostList(post); + return getDataTable(list); + } + + @Log(title = "岗位管理", businessType = BusinessType.EXPORT) + @PreAuthorize("@ss.hasPermi('system:post:export')") + @PostMapping("/export") + public void export(HttpServletResponse response, SysPost post) + { + List list = postService.selectPostList(post); + ExcelUtil util = new ExcelUtil(SysPost.class); + util.exportExcel(response, list, "岗位数据"); + } + + /** + * 根据岗位编号获取详细信息 + */ + @PreAuthorize("@ss.hasPermi('system:post:query')") + @GetMapping(value = "/{postId}") + public AjaxResult getInfo(@PathVariable Long postId) + { + return success(postService.selectPostById(postId)); + } + + /** + * 新增岗位 + */ + @PreAuthorize("@ss.hasPermi('system:post:add')") + @Log(title = "岗位管理", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@Validated @RequestBody SysPost post) + { + if (!postService.checkPostNameUnique(post)) + { + return error("新增岗位'" + post.getPostName() + "'失败,岗位名称已存在"); + } + else if (!postService.checkPostCodeUnique(post)) + { + return error("新增岗位'" + post.getPostName() + "'失败,岗位编码已存在"); + } + post.setCreateBy(getUsername()); + return toAjax(postService.insertPost(post)); + } + + /** + * 修改岗位 + */ + @PreAuthorize("@ss.hasPermi('system:post:edit')") + @Log(title = "岗位管理", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@Validated @RequestBody SysPost post) + { + if (!postService.checkPostNameUnique(post)) + { + return error("修改岗位'" + post.getPostName() + "'失败,岗位名称已存在"); + } + else if (!postService.checkPostCodeUnique(post)) + { + return error("修改岗位'" + post.getPostName() + "'失败,岗位编码已存在"); + } + post.setUpdateBy(getUsername()); + return toAjax(postService.updatePost(post)); + } + + /** + * 删除岗位 + */ + @PreAuthorize("@ss.hasPermi('system:post:remove')") + @Log(title = "岗位管理", businessType = BusinessType.DELETE) + @DeleteMapping("/{postIds}") + public AjaxResult remove(@PathVariable Long[] postIds) + { + return toAjax(postService.deletePostByIds(postIds)); + } + + /** + * 获取岗位选择框列表 + */ + @GetMapping("/optionselect") + public AjaxResult optionselect() + { + List posts = postService.selectPostAll(); + return success(posts); + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysProfileController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysProfileController.java new file mode 100644 index 0000000..2a77b9a --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysProfileController.java @@ -0,0 +1,140 @@ +package com.cmvr.web.controller.system; + +import java.util.Map; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; +import com.cmvr.common.annotation.Log; +import com.cmvr.common.config.CmvrIotConfig; +import com.cmvr.common.core.controller.BaseController; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.core.domain.entity.SysUser; +import com.cmvr.common.core.domain.model.LoginUser; +import com.cmvr.common.enums.BusinessType; +import com.cmvr.common.utils.SecurityUtils; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.common.utils.file.FileUploadUtils; +import com.cmvr.common.utils.file.MimeTypeUtils; +import com.cmvr.framework.web.service.TokenService; +import com.cmvr.system.service.ISysUserService; + +/** + * 个人信息 业务处理 + * + * @author cmvr-iot + */ +@RestController +@RequestMapping("/system/user/profile") +public class SysProfileController extends BaseController +{ + @Autowired + private ISysUserService userService; + + @Autowired + private TokenService tokenService; + + /** + * 个人信息 + */ + @GetMapping + public AjaxResult profile() + { + LoginUser loginUser = getLoginUser(); + SysUser user = loginUser.getUser(); + AjaxResult ajax = AjaxResult.success(user); + ajax.put("roleGroup", userService.selectUserRoleGroup(loginUser.getUsername())); + ajax.put("postGroup", userService.selectUserPostGroup(loginUser.getUsername())); + return ajax; + } + + /** + * 修改用户 + */ + @Log(title = "个人信息", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult updateProfile(@RequestBody SysUser user) + { + LoginUser loginUser = getLoginUser(); + SysUser currentUser = loginUser.getUser(); + currentUser.setNickName(user.getNickName()); + currentUser.setEmail(user.getEmail()); + currentUser.setPhonenumber(user.getPhonenumber()); + currentUser.setSex(user.getSex()); + if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(currentUser)) + { + return error("修改用户'" + loginUser.getUsername() + "'失败,手机号码已存在"); + } + if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(currentUser)) + { + return error("修改用户'" + loginUser.getUsername() + "'失败,邮箱账号已存在"); + } + if (userService.updateUserProfile(currentUser) > 0) + { + // 更新缓存用户信息 + tokenService.setLoginUser(loginUser); + return success(); + } + return error("修改个人信息异常,请联系管理员"); + } + + /** + * 重置密码 + */ + @Log(title = "个人信息", businessType = BusinessType.UPDATE) + @PutMapping("/updatePwd") + public AjaxResult updatePwd(@RequestBody Map params) + { + String oldPassword = params.get("oldPassword"); + String newPassword = params.get("newPassword"); + LoginUser loginUser = getLoginUser(); + String userName = loginUser.getUsername(); + String password = loginUser.getPassword(); + if (!SecurityUtils.matchesPassword(oldPassword, password)) + { + return error("修改密码失败,旧密码错误"); + } + if (SecurityUtils.matchesPassword(newPassword, password)) + { + return error("新密码不能与旧密码相同"); + } + newPassword = SecurityUtils.encryptPassword(newPassword); + if (userService.resetUserPwd(userName, newPassword) > 0) + { + // 更新缓存用户密码 + loginUser.getUser().setPassword(newPassword); + tokenService.setLoginUser(loginUser); + return success(); + } + return error("修改密码异常,请联系管理员"); + } + + /** + * 头像上传 + */ + @Log(title = "用户头像", businessType = BusinessType.UPDATE) + @PostMapping("/avatar") + public AjaxResult avatar(@RequestParam("avatarfile") MultipartFile file) throws Exception + { + if (!file.isEmpty()) + { + LoginUser loginUser = getLoginUser(); + String avatar = FileUploadUtils.upload(CmvrIotConfig.getAvatarPath(), file, MimeTypeUtils.IMAGE_EXTENSION); + if (userService.updateUserAvatar(loginUser.getUsername(), avatar)) + { + AjaxResult ajax = AjaxResult.success(); + ajax.put("imgUrl", avatar); + // 更新缓存用户头像 + loginUser.getUser().setAvatar(avatar); + tokenService.setLoginUser(loginUser); + return ajax; + } + } + return error("上传图片异常,请联系管理员"); + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysRegisterController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysRegisterController.java new file mode 100644 index 0000000..f1d887c --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysRegisterController.java @@ -0,0 +1,38 @@ +package com.cmvr.web.controller.system; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; +import com.cmvr.common.core.controller.BaseController; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.core.domain.model.RegisterBody; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.framework.web.service.SysRegisterService; +import com.cmvr.system.service.ISysConfigService; + +/** + * 注册验证 + * + * @author cmvr-iot + */ +@RestController +public class SysRegisterController extends BaseController +{ + @Autowired + private SysRegisterService registerService; + + @Autowired + private ISysConfigService configService; + + @PostMapping("/register") + public AjaxResult register(@RequestBody RegisterBody user) + { + if (!("true".equals(configService.selectConfigByKey("sys.account.registerUser")))) + { + return error("当前系统没有开启注册功能!"); + } + String msg = registerService.register(user); + return StringUtils.isEmpty(msg) ? success() : error(msg); + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysRoleController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysRoleController.java new file mode 100644 index 0000000..b17e905 --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysRoleController.java @@ -0,0 +1,262 @@ +package com.cmvr.web.controller.system; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.cmvr.common.annotation.Log; +import com.cmvr.common.core.controller.BaseController; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.core.domain.entity.SysDept; +import com.cmvr.common.core.domain.entity.SysRole; +import com.cmvr.common.core.domain.entity.SysUser; +import com.cmvr.common.core.domain.model.LoginUser; +import com.cmvr.common.core.page.TableDataInfo; +import com.cmvr.common.enums.BusinessType; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.common.utils.poi.ExcelUtil; +import com.cmvr.framework.web.service.SysPermissionService; +import com.cmvr.framework.web.service.TokenService; +import com.cmvr.system.domain.SysUserRole; +import com.cmvr.system.service.ISysDeptService; +import com.cmvr.system.service.ISysRoleService; +import com.cmvr.system.service.ISysUserService; + +/** + * 角色信息 + * + * @author cmvr-iot + */ +@RestController +@RequestMapping("/system/role") +public class SysRoleController extends BaseController +{ + @Autowired + private ISysRoleService roleService; + + @Autowired + private TokenService tokenService; + + @Autowired + private SysPermissionService permissionService; + + @Autowired + private ISysUserService userService; + + @Autowired + private ISysDeptService deptService; + + @PreAuthorize("@ss.hasPermi('system:role:list')") + @GetMapping("/list") + public TableDataInfo list(SysRole role) + { + startPage(); + List list = roleService.selectRoleList(role); + return getDataTable(list); + } + + @Log(title = "角色管理", businessType = BusinessType.EXPORT) + @PreAuthorize("@ss.hasPermi('system:role:export')") + @PostMapping("/export") + public void export(HttpServletResponse response, SysRole role) + { + List list = roleService.selectRoleList(role); + ExcelUtil util = new ExcelUtil(SysRole.class); + util.exportExcel(response, list, "角色数据"); + } + + /** + * 根据角色编号获取详细信息 + */ + @PreAuthorize("@ss.hasPermi('system:role:query')") + @GetMapping(value = "/{roleId}") + public AjaxResult getInfo(@PathVariable Long roleId) + { + roleService.checkRoleDataScope(roleId); + return success(roleService.selectRoleById(roleId)); + } + + /** + * 新增角色 + */ + @PreAuthorize("@ss.hasPermi('system:role:add')") + @Log(title = "角色管理", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@Validated @RequestBody SysRole role) + { + if (!roleService.checkRoleNameUnique(role)) + { + return error("新增角色'" + role.getRoleName() + "'失败,角色名称已存在"); + } + else if (!roleService.checkRoleKeyUnique(role)) + { + return error("新增角色'" + role.getRoleName() + "'失败,角色权限已存在"); + } + role.setCreateBy(getUsername()); + return toAjax(roleService.insertRole(role)); + + } + + /** + * 修改保存角色 + */ + @PreAuthorize("@ss.hasPermi('system:role:edit')") + @Log(title = "角色管理", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@Validated @RequestBody SysRole role) + { + roleService.checkRoleAllowed(role); + roleService.checkRoleDataScope(role.getRoleId()); + if (!roleService.checkRoleNameUnique(role)) + { + return error("修改角色'" + role.getRoleName() + "'失败,角色名称已存在"); + } + else if (!roleService.checkRoleKeyUnique(role)) + { + return error("修改角色'" + role.getRoleName() + "'失败,角色权限已存在"); + } + role.setUpdateBy(getUsername()); + + if (roleService.updateRole(role) > 0) + { + // 更新缓存用户权限 + LoginUser loginUser = getLoginUser(); + if (StringUtils.isNotNull(loginUser.getUser()) && !loginUser.getUser().isAdmin()) + { + loginUser.setUser(userService.selectUserByUserName(loginUser.getUser().getUserName())); + loginUser.setPermissions(permissionService.getMenuPermission(loginUser.getUser())); + tokenService.setLoginUser(loginUser); + } + return success(); + } + return error("修改角色'" + role.getRoleName() + "'失败,请联系管理员"); + } + + /** + * 修改保存数据权限 + */ + @PreAuthorize("@ss.hasPermi('system:role:edit')") + @Log(title = "角色管理", businessType = BusinessType.UPDATE) + @PutMapping("/dataScope") + public AjaxResult dataScope(@RequestBody SysRole role) + { + roleService.checkRoleAllowed(role); + roleService.checkRoleDataScope(role.getRoleId()); + return toAjax(roleService.authDataScope(role)); + } + + /** + * 状态修改 + */ + @PreAuthorize("@ss.hasPermi('system:role:edit')") + @Log(title = "角色管理", businessType = BusinessType.UPDATE) + @PutMapping("/changeStatus") + public AjaxResult changeStatus(@RequestBody SysRole role) + { + roleService.checkRoleAllowed(role); + roleService.checkRoleDataScope(role.getRoleId()); + role.setUpdateBy(getUsername()); + return toAjax(roleService.updateRoleStatus(role)); + } + + /** + * 删除角色 + */ + @PreAuthorize("@ss.hasPermi('system:role:remove')") + @Log(title = "角色管理", businessType = BusinessType.DELETE) + @DeleteMapping("/{roleIds}") + public AjaxResult remove(@PathVariable Long[] roleIds) + { + return toAjax(roleService.deleteRoleByIds(roleIds)); + } + + /** + * 获取角色选择框列表 + */ + @PreAuthorize("@ss.hasPermi('system:role:query')") + @GetMapping("/optionselect") + public AjaxResult optionselect() + { + return success(roleService.selectRoleAll()); + } + + /** + * 查询已分配用户角色列表 + */ + @PreAuthorize("@ss.hasPermi('system:role:list')") + @GetMapping("/authUser/allocatedList") + public TableDataInfo allocatedList(SysUser user) + { + startPage(); + List list = userService.selectAllocatedList(user); + return getDataTable(list); + } + + /** + * 查询未分配用户角色列表 + */ + @PreAuthorize("@ss.hasPermi('system:role:list')") + @GetMapping("/authUser/unallocatedList") + public TableDataInfo unallocatedList(SysUser user) + { + startPage(); + List list = userService.selectUnallocatedList(user); + return getDataTable(list); + } + + /** + * 取消授权用户 + */ + @PreAuthorize("@ss.hasPermi('system:role:edit')") + @Log(title = "角色管理", businessType = BusinessType.GRANT) + @PutMapping("/authUser/cancel") + public AjaxResult cancelAuthUser(@RequestBody SysUserRole userRole) + { + return toAjax(roleService.deleteAuthUser(userRole)); + } + + /** + * 批量取消授权用户 + */ + @PreAuthorize("@ss.hasPermi('system:role:edit')") + @Log(title = "角色管理", businessType = BusinessType.GRANT) + @PutMapping("/authUser/cancelAll") + public AjaxResult cancelAuthUserAll(Long roleId, Long[] userIds) + { + return toAjax(roleService.deleteAuthUsers(roleId, userIds)); + } + + /** + * 批量选择用户授权 + */ + @PreAuthorize("@ss.hasPermi('system:role:edit')") + @Log(title = "角色管理", businessType = BusinessType.GRANT) + @PutMapping("/authUser/selectAll") + public AjaxResult selectAuthUserAll(Long roleId, Long[] userIds) + { + roleService.checkRoleDataScope(roleId); + return toAjax(roleService.insertAuthUsers(roleId, userIds)); + } + + /** + * 获取对应角色部门树列表 + */ + @PreAuthorize("@ss.hasPermi('system:role:query')") + @GetMapping(value = "/deptTree/{roleId}") + public AjaxResult deptTree(@PathVariable("roleId") Long roleId) + { + AjaxResult ajax = AjaxResult.success(); + ajax.put("checkedKeys", deptService.selectDeptListByRoleId(roleId)); + ajax.put("depts", deptService.selectDeptTreeList(new SysDept())); + return ajax; + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysUserController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysUserController.java new file mode 100644 index 0000000..d82ce46 --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysUserController.java @@ -0,0 +1,256 @@ +package com.cmvr.web.controller.system; + +import java.util.List; +import java.util.stream.Collectors; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.lang3.ArrayUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; +import com.cmvr.common.annotation.Log; +import com.cmvr.common.core.controller.BaseController; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.core.domain.entity.SysDept; +import com.cmvr.common.core.domain.entity.SysRole; +import com.cmvr.common.core.domain.entity.SysUser; +import com.cmvr.common.core.page.TableDataInfo; +import com.cmvr.common.enums.BusinessType; +import com.cmvr.common.utils.SecurityUtils; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.common.utils.poi.ExcelUtil; +import com.cmvr.system.service.ISysDeptService; +import com.cmvr.system.service.ISysPostService; +import com.cmvr.system.service.ISysRoleService; +import com.cmvr.system.service.ISysUserService; + +/** + * 用户信息 + * + * @author cmvr-iot + */ +@RestController +@RequestMapping("/system/user") +public class SysUserController extends BaseController +{ + @Autowired + private ISysUserService userService; + + @Autowired + private ISysRoleService roleService; + + @Autowired + private ISysDeptService deptService; + + @Autowired + private ISysPostService postService; + + /** + * 获取用户列表 + */ + @PreAuthorize("@ss.hasPermi('system:user:list')") + @GetMapping("/list") + public TableDataInfo list(SysUser user) + { + startPage(); + List list = userService.selectUserList(user); + return getDataTable(list); + } + + @Log(title = "用户管理", businessType = BusinessType.EXPORT) + @PreAuthorize("@ss.hasPermi('system:user:export')") + @PostMapping("/export") + public void export(HttpServletResponse response, SysUser user) + { + List list = userService.selectUserList(user); + ExcelUtil util = new ExcelUtil(SysUser.class); + util.exportExcel(response, list, "用户数据"); + } + + @Log(title = "用户管理", businessType = BusinessType.IMPORT) + @PreAuthorize("@ss.hasPermi('system:user:import')") + @PostMapping("/importData") + public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception + { + ExcelUtil util = new ExcelUtil(SysUser.class); + List userList = util.importExcel(file.getInputStream()); + String operName = getUsername(); + String message = userService.importUser(userList, updateSupport, operName); + return success(message); + } + + @PostMapping("/importTemplate") + public void importTemplate(HttpServletResponse response) + { + ExcelUtil util = new ExcelUtil(SysUser.class); + util.importTemplateExcel(response, "用户数据"); + } + + /** + * 根据用户编号获取详细信息 + */ + @PreAuthorize("@ss.hasPermi('system:user:query')") + @GetMapping(value = { "/", "/{userId}" }) + public AjaxResult getInfo(@PathVariable(value = "userId", required = false) Long userId) + { + AjaxResult ajax = AjaxResult.success(); + if (StringUtils.isNotNull(userId)) + { + userService.checkUserDataScope(userId); + SysUser sysUser = userService.selectUserById(userId); + ajax.put(AjaxResult.DATA_TAG, sysUser); + ajax.put("postIds", postService.selectPostListByUserId(userId)); + ajax.put("roleIds", sysUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList())); + } + List roles = roleService.selectRoleAll(); + ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList())); + ajax.put("posts", postService.selectPostAll()); + return ajax; + } + + /** + * 新增用户 + */ + @PreAuthorize("@ss.hasPermi('system:user:add')") + @Log(title = "用户管理", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@Validated @RequestBody SysUser user) + { + deptService.checkDeptDataScope(user.getDeptId()); + roleService.checkRoleDataScope(user.getRoleIds()); + if (!userService.checkUserNameUnique(user)) + { + return error("新增用户'" + user.getUserName() + "'失败,登录账号已存在"); + } + else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) + { + return error("新增用户'" + user.getUserName() + "'失败,手机号码已存在"); + } + else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) + { + return error("新增用户'" + user.getUserName() + "'失败,邮箱账号已存在"); + } + user.setCreateBy(getUsername()); + user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); + return toAjax(userService.insertUser(user)); + } + + /** + * 修改用户 + */ + @PreAuthorize("@ss.hasPermi('system:user:edit')") + @Log(title = "用户管理", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@Validated @RequestBody SysUser user) + { + userService.checkUserAllowed(user); + userService.checkUserDataScope(user.getUserId()); + deptService.checkDeptDataScope(user.getDeptId()); + roleService.checkRoleDataScope(user.getRoleIds()); + if (!userService.checkUserNameUnique(user)) + { + return error("修改用户'" + user.getUserName() + "'失败,登录账号已存在"); + } + else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) + { + return error("修改用户'" + user.getUserName() + "'失败,手机号码已存在"); + } + else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) + { + return error("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在"); + } + user.setUpdateBy(getUsername()); + return toAjax(userService.updateUser(user)); + } + + /** + * 删除用户 + */ + @PreAuthorize("@ss.hasPermi('system:user:remove')") + @Log(title = "用户管理", businessType = BusinessType.DELETE) + @DeleteMapping("/{userIds}") + public AjaxResult remove(@PathVariable Long[] userIds) + { + if (ArrayUtils.contains(userIds, getUserId())) + { + return error("当前用户不能删除"); + } + return toAjax(userService.deleteUserByIds(userIds)); + } + + /** + * 重置密码 + */ + @PreAuthorize("@ss.hasPermi('system:user:resetPwd')") + @Log(title = "用户管理", businessType = BusinessType.UPDATE) + @PutMapping("/resetPwd") + public AjaxResult resetPwd(@RequestBody SysUser user) + { + userService.checkUserAllowed(user); + userService.checkUserDataScope(user.getUserId()); + user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); + user.setUpdateBy(getUsername()); + return toAjax(userService.resetPwd(user)); + } + + /** + * 状态修改 + */ + @PreAuthorize("@ss.hasPermi('system:user:edit')") + @Log(title = "用户管理", businessType = BusinessType.UPDATE) + @PutMapping("/changeStatus") + public AjaxResult changeStatus(@RequestBody SysUser user) + { + userService.checkUserAllowed(user); + userService.checkUserDataScope(user.getUserId()); + user.setUpdateBy(getUsername()); + return toAjax(userService.updateUserStatus(user)); + } + + /** + * 根据用户编号获取授权角色 + */ + @PreAuthorize("@ss.hasPermi('system:user:query')") + @GetMapping("/authRole/{userId}") + public AjaxResult authRole(@PathVariable("userId") Long userId) + { + AjaxResult ajax = AjaxResult.success(); + SysUser user = userService.selectUserById(userId); + List roles = roleService.selectRolesByUserId(userId); + ajax.put("user", user); + ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList())); + return ajax; + } + + /** + * 用户授权角色 + */ + @PreAuthorize("@ss.hasPermi('system:user:edit')") + @Log(title = "用户管理", businessType = BusinessType.GRANT) + @PutMapping("/authRole") + public AjaxResult insertAuthRole(Long userId, Long[] roleIds) + { + userService.checkUserDataScope(userId); + roleService.checkRoleDataScope(roleIds); + userService.insertUserAuth(userId, roleIds); + return success(); + } + + /** + * 获取部门树列表 + */ + @PreAuthorize("@ss.hasPermi('system:user:list')") + @GetMapping("/deptTree") + public AjaxResult deptTree(SysDept dept) + { + return success(deptService.selectDeptTreeList(dept)); + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysVehOperConfigController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysVehOperConfigController.java new file mode 100644 index 0000000..d906316 --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/system/SysVehOperConfigController.java @@ -0,0 +1,79 @@ +package com.cmvr.web.controller.system; + +import com.cmvr.common.annotation.Log; +import com.cmvr.common.core.controller.BaseController; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.core.page.TableDataInfo; +import com.cmvr.common.enums.BusinessType; +import com.cmvr.system.domain.SysVehOperConfig; +import com.cmvr.system.service.ISysVehOperConfigService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * 车机操作配置 + * + * @author cmvr-iot + */ +@Api(tags = "车机操作配置") +@RestController +@RequestMapping("/system/vehOper") +@RequiredArgsConstructor +public class SysVehOperConfigController extends BaseController { + + private final ISysVehOperConfigService sysVehOperConfigService; + + @ApiOperation("获取车机操作配置列表") + @PreAuthorize("@ss.hasPermi('system:vehOper:list')") + @GetMapping("/list") + public TableDataInfo list(SysVehOperConfig config) { + startPage(); + List list = sysVehOperConfigService.selectSysVehOperConfigList(config); + return getDataTable(list); + } + + @ApiOperation("根据参数编号获取详细信息") + @PreAuthorize("@ss.hasPermi('system:vehOper:query')") + @GetMapping(value = "/{configId}") + public AjaxResult getInfo(@PathVariable Long configId) { + return success(sysVehOperConfigService.selectSysVehOperConfigById(configId)); + } + + + @ApiOperation("新增参数配置") + @PreAuthorize("@ss.hasPermi('system:vehOper:add')") + @Log(title = "参数管理", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@Validated @RequestBody SysVehOperConfig config) { + return toAjax(sysVehOperConfigService.insertVehOperConfig(config)); + } + + @ApiOperation("修改参数配置") + @PreAuthorize("@ss.hasPermi('system:vehOper:edit')") + @Log(title = "参数管理", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@Validated @RequestBody SysVehOperConfig config) { + return toAjax(sysVehOperConfigService.updateVehOperConfig(config)); + } + + @ApiOperation("删除参数配置") + @PreAuthorize("@ss.hasPermi('system:vehOper:remove')") + @Log(title = "参数管理", businessType = BusinessType.DELETE) + @DeleteMapping("/{configIds}") + public AjaxResult remove(@PathVariable Long[] configIds) { + return success(sysVehOperConfigService.deleteVehOperConfigByIds(configIds)); + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/test/TeDetectionItemController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/test/TeDetectionItemController.java new file mode 100644 index 0000000..49948a4 --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/test/TeDetectionItemController.java @@ -0,0 +1,78 @@ +package com.cmvr.web.controller.test; + +import com.cmvr.common.annotation.Log; +import com.cmvr.common.core.controller.BaseController; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.core.page.TableDataInfo; +import com.cmvr.common.enums.BusinessType; +import com.cmvr.common.utils.poi.ExcelUtil; +import com.cmvr.test.model.domain.TeDetectionItem; +import com.cmvr.test.model.vo.TeDetectionItemVO; +import com.cmvr.test.service.ITeDetectionItemService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +@Api(tags = "检测项配置") +@RestController +@RequestMapping("/test/detect") +@RequiredArgsConstructor +public class TeDetectionItemController extends BaseController { + private final ITeDetectionItemService teDetectionItemService; + + @ApiOperation("查询检测项配置列表") + @PreAuthorize("@ss.hasPermi('test:detect:list')") + @GetMapping("/list") + public TableDataInfo list(TeDetectionItem teDetectionItem) { + startPage(); + List list = teDetectionItemService.selectTeDetectionItemList(teDetectionItem); + return getDataTable(list); + } + + @ApiOperation("导出检测项配置列表") + @PreAuthorize("@ss.hasPermi('test:detect:export')") + @Log(title = "检测项配置", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, TeDetectionItem teDetectionItem) { + List list = teDetectionItemService.selectTeDetectionItemList(teDetectionItem); + ExcelUtil util = new ExcelUtil(TeDetectionItemVO.class); + util.exportExcel(response, list, "检测项配置数据"); + } + + @ApiOperation("获取检测项配置详细信息") + @PreAuthorize("@ss.hasPermi('test:detect:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") String id) { + return success(teDetectionItemService.selectTeDetectionItemById(id)); + } + + @ApiOperation("新增检测项配置") + @PreAuthorize("@ss.hasPermi('test:detect:add')") + @Log(title = "检测项配置", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody TeDetectionItem teDetectionItem) { + int rows = teDetectionItemService.insertTeDetectionItem(teDetectionItem); + return toAjax(rows); + } + + @ApiOperation("修改检测项配置") + @PreAuthorize("@ss.hasPermi('test:detect:edit')") + @Log(title = "检测项配置", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody TeDetectionItem teDetectionItem) { + return toAjax(teDetectionItemService.updateTeDetectionItem(teDetectionItem)); + } + + @ApiOperation("删除检测项配置") + @PreAuthorize("@ss.hasPermi('test:detect:remove')") + @Log(title = "检测项配置", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable String[] ids) { + return toAjax(teDetectionItemService.deleteTeDetectionItemByIds(ids)); + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/test/TeFlowController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/test/TeFlowController.java new file mode 100644 index 0000000..a5bd438 --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/test/TeFlowController.java @@ -0,0 +1,89 @@ +package com.cmvr.web.controller.test; + +import com.cmvr.common.core.controller.BaseController; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.test.flow.context.TaskContextManager; +import com.cmvr.test.flow.control.FlowControlService; +import com.cmvr.test.flow.runtime.engine.FlowTaskRuntimeService; +import com.cmvr.test.model.domain.TeDetectionItem; +import com.cmvr.test.model.vo.TeFlowViewVO; +import com.cmvr.test.model.vo.TeTaskExecuteNormalVO; +import com.cmvr.test.model.vo.TeTaskExecuteTrailVO; +import com.cmvr.test.service.ITeDetectionItemService; +import com.cmvr.test.service.ITeNodeInstService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; + +@Api(tags = "流程相关接口服务") +@RestController +@RequestMapping("/flow") +@RequiredArgsConstructor +public class TeFlowController extends BaseController { + + private final ITeDetectionItemService teDetectionItemService; + private final ITeNodeInstService nodeInstService; + private final FlowTaskRuntimeService flowTaskRuntimeService; + private final TaskContextManager taskContextManager; + private final FlowControlService flowControlService; + + @ApiOperation("流程发布") + @PostMapping("/publish") + public AjaxResult publish(@RequestBody TeDetectionItem detectionItem) { + return toAjax(teDetectionItemService.publish(detectionItem.getId())); + } + + @ApiOperation("任务执行入口") + @PostMapping("/execute") + public AjaxResult execute(@Valid @RequestBody TeTaskExecuteNormalVO taskExecuteNormalVO) { + return AjaxResult.success(flowTaskRuntimeService.executeTask(taskExecuteNormalVO)); + } + + @ApiOperation("检测项试运行入口") + @PostMapping("/executeTrial") + public AjaxResult executeTrial(@Valid @RequestBody TeTaskExecuteTrailVO taskExecuteTrailVO) { + return AjaxResult.success(flowTaskRuntimeService.executeTrialTask(taskExecuteTrailVO)); + } + + @ApiOperation("流程可视化") + @PostMapping("/view") + public AjaxResult view(@Valid @RequestBody TeFlowViewVO flowViewVO) { + return AjaxResult.success(nodeInstService.view(flowViewVO)); + } + + @ApiOperation("清理终端") + @GetMapping("/clear") + public AjaxResult clear() { + taskContextManager.clearAll(); + return AjaxResult.success(); + } + + @ApiOperation("终止任务") + @PostMapping("/stop/{instId}") + public AjaxResult stopTask(@PathVariable String instId) { + flowControlService.stop(instId); + return AjaxResult.success(); + } + + @ApiOperation("暂停任务") + @PostMapping("/pause/{instId}") + public AjaxResult pauseTask(@PathVariable String instId) { + flowControlService.pause(instId); + return AjaxResult.success(); + } + + @ApiOperation("恢复任务") + @PostMapping("/resume/{instId}") + public AjaxResult resumeTask(@PathVariable String instId) { + flowControlService.resume(instId); + return AjaxResult.success(); + } +} \ No newline at end of file diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/test/TeTaskConfigInfoController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/test/TeTaskConfigInfoController.java new file mode 100644 index 0000000..029ce02 --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/test/TeTaskConfigInfoController.java @@ -0,0 +1,66 @@ +package com.cmvr.web.controller.test; + +import com.cmvr.common.annotation.Log; +import com.cmvr.common.core.controller.BaseController; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.core.page.TableDataInfo; +import com.cmvr.common.enums.BusinessType; +import com.cmvr.test.model.domain.TeTaskConfigInfo; +import com.cmvr.test.model.vo.TeTaskConfigInfoVO; +import com.cmvr.test.service.ITeTaskConfigInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Api(tags = "任务配置信息") +@RestController +@RequestMapping("/test/config") +@RequiredArgsConstructor +public class TeTaskConfigInfoController extends BaseController { + + private final ITeTaskConfigInfoService teTaskConfigInfoService; + + @ApiOperation("查询任务配置信息列表") + @PreAuthorize("@ss.hasPermi('test:config:list')") + @GetMapping("/list") + public TableDataInfo list(TeTaskConfigInfo teTaskConfigInfo) { + startPage(); + List list = teTaskConfigInfoService.selectTeTaskConfigInfoList(teTaskConfigInfo); + return getDataTable(list); + } + + @ApiOperation("获取任务配置信息详细信息") + @PreAuthorize("@ss.hasPermi('test:config:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") String id) { + return success(teTaskConfigInfoService.selectTeTaskConfigInfoById(id)); + } + + @ApiOperation("新增任务配置信息") + @PreAuthorize("@ss.hasPermi('test:config:add')") + @Log(title = "任务配置信息", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody TeTaskConfigInfo teTaskConfigInfo) { + return toAjax(teTaskConfigInfoService.insertTeTaskConfigInfo(teTaskConfigInfo)); + } + + @ApiOperation("修改任务配置信息") + @PreAuthorize("@ss.hasPermi('test:config:edit')") + @Log(title = "任务配置信息", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody TeTaskConfigInfo teTaskConfigInfo) { + return toAjax(teTaskConfigInfoService.updateTeTaskConfigInfo(teTaskConfigInfo)); + } + + @ApiOperation("删除任务配置信息") + @PreAuthorize("@ss.hasPermi('test:config:remove')") + @Log(title = "任务配置信息", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable String[] ids) { + return toAjax(teTaskConfigInfoService.deleteTeTaskConfigInfoByIds(ids)); + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/test/TeTaskInstController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/test/TeTaskInstController.java new file mode 100644 index 0000000..09ce96a --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/test/TeTaskInstController.java @@ -0,0 +1,35 @@ +package com.cmvr.web.controller.test; + +import com.cmvr.common.core.controller.BaseController; +import com.cmvr.common.core.page.TableDataInfo; +import com.cmvr.test.model.vo.TeQueryTaskInstVO; +import com.cmvr.test.model.vo.TeTaskInstVO; +import com.cmvr.test.service.ITeTaskInstService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@Api(tags = "任务实例") +@RestController +@RequestMapping("/test/inst") +@RequiredArgsConstructor +public class TeTaskInstController extends BaseController { + + private final ITeTaskInstService teTaskInstService; + + @ApiOperation("查询任务实例列表") + @PreAuthorize("@ss.hasPermi('test:inst:list')") + @GetMapping("/list") + public TableDataInfo list(TeQueryTaskInstVO queryTaskInstVO) { + startPage(); + List list = teTaskInstService.selectTeTaskInstList(queryTaskInstVO); + return getDataTable(list); + } + +} \ No newline at end of file diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/test/TeTaskOrchestrationController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/test/TeTaskOrchestrationController.java new file mode 100644 index 0000000..1cb1094 --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/test/TeTaskOrchestrationController.java @@ -0,0 +1,48 @@ +package com.cmvr.web.controller.test; + +import com.cmvr.common.annotation.Log; +import com.cmvr.common.core.controller.BaseController; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.core.page.TableDataInfo; +import com.cmvr.common.enums.BusinessType; +import com.cmvr.test.model.vo.TeQueryTaskOrchestraItemVO; +import com.cmvr.test.model.vo.TeTaskOrchestraVO; +import com.cmvr.test.service.ITeTaskOrchestrationService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import javax.validation.constraints.NotEmpty; +import java.util.List; + +@Api(tags = "任务编排") +@RestController +@RequestMapping("/test/orchestration") +@RequiredArgsConstructor +class TeTaskOrchestrationController extends BaseController { + + private final ITeTaskOrchestrationService teTaskOrchestrationService; + + @ApiOperation("根据任务ID查询检查项编排") + @PreAuthorize("@ss.hasPermi('test:orchestration:query')") + @GetMapping + public TableDataInfo query( + @NotEmpty(message = "任务ID不能为空") + @RequestParam("taskId") String taskId + ) { + startPage(); + List list = teTaskOrchestrationService.queryByTaskId(taskId); + return getDataTable(list); + } + + @ApiOperation("新增任务编排") + @PreAuthorize("@ss.hasPermi('test:orchestration:add')") + @Log(title = "任务编排", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@Valid @RequestBody TeTaskOrchestraVO taskOrchestraVO) { + return toAjax(teTaskOrchestrationService.insertTeTaskOrchestration(taskOrchestraVO)); + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/test/TeTestController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/test/TeTestController.java new file mode 100644 index 0000000..87e6946 --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/test/TeTestController.java @@ -0,0 +1,38 @@ +package com.cmvr.web.controller.test; + + +import com.cmvr.common.core.controller.BaseController; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.llm.model.CarIcon; +import com.cmvr.llm.service.CarPathFinderService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; +import java.util.stream.Collectors; + +@Api(tags = "测试接口") +@RestController +@RequestMapping("/test/test") +@RequiredArgsConstructor +public class TeTestController extends BaseController { + + private final CarPathFinderService carPathFinderService; + + @ApiOperation("查找操作路径") + @GetMapping("/path") + public AjaxResult path( + @RequestParam("manufacturer") String manufacturer, + @RequestParam("vehType") String vehType, + @RequestParam("startUi") String startUi, + @RequestParam("targetFeature") String targetFeature + ) { + List path = carPathFinderService.findPath(manufacturer, vehType, startUi, targetFeature); + return success(path.stream().map(CarIcon::getIconName).collect(Collectors.joining(" -> "))); + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/core/config/SwaggerConfig.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/core/config/SwaggerConfig.java new file mode 100644 index 0000000..529a5ec --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/core/config/SwaggerConfig.java @@ -0,0 +1,125 @@ +package com.cmvr.web.core.config; + +import java.util.ArrayList; +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import com.cmvr.common.config.CmvrIotConfig; +import io.swagger.annotations.ApiOperation; +import io.swagger.models.auth.In; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.service.ApiKey; +import springfox.documentation.service.AuthorizationScope; +import springfox.documentation.service.Contact; +import springfox.documentation.service.SecurityReference; +import springfox.documentation.service.SecurityScheme; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spi.service.contexts.SecurityContext; +import springfox.documentation.spring.web.plugins.Docket; + +/** + * Swagger2的接口配置 + * + * @author cmvr-iot + */ +@Configuration +public class SwaggerConfig +{ + /** 系统基础配置 */ + @Autowired + private CmvrIotConfig cmvrIotConfig; + + /** 是否开启swagger */ + @Value("${swagger.enabled}") + private boolean enabled; + + /** 设置请求的统一前缀 */ + @Value("${swagger.pathMapping}") + private String pathMapping; + + /** + * 创建API + */ + @Bean + public Docket createRestApi() + { + return new Docket(DocumentationType.OAS_30) + // 是否启用Swagger + .enable(enabled) + // 用来创建该API的基本信息,展示在文档的页面中(自定义展示的信息) + .apiInfo(apiInfo()) + // 设置哪些接口暴露给Swagger展示 + .select() + // 扫描所有有注解的api,用这种方式更灵活 + .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) + // 扫描指定包中的swagger注解 +// .apis(RequestHandlerSelectors.basePackage("com.cmvr.project.tool.swagger")) + // 扫描所有 .apis(RequestHandlerSelectors.any()) + .paths(PathSelectors.any()) + .build() + /* 设置安全模式,swagger可以设置访问token */ + .securitySchemes(securitySchemes()) + .securityContexts(securityContexts()) + .pathMapping(pathMapping); + } + + /** + * 安全模式,这里指定token通过Authorization头请求头传递 + */ + private List securitySchemes() + { + List apiKeyList = new ArrayList(); + apiKeyList.add(new ApiKey("Authorization", "Authorization", In.HEADER.toValue())); + return apiKeyList; + } + + /** + * 安全上下文 + */ + private List securityContexts() + { + List securityContexts = new ArrayList<>(); + securityContexts.add( + SecurityContext.builder() + .securityReferences(defaultAuth()) + .operationSelector(o -> o.requestMappingPattern().matches("/.*")) + .build()); + return securityContexts; + } + + /** + * 默认的安全上引用 + */ + private List defaultAuth() + { + AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything"); + AuthorizationScope[] authorizationScopes = new AuthorizationScope[1]; + authorizationScopes[0] = authorizationScope; + List securityReferences = new ArrayList<>(); + securityReferences.add(new SecurityReference("Authorization", authorizationScopes)); + return securityReferences; + } + + /** + * 添加摘要信息 + */ + private ApiInfo apiInfo() + { + // 用ApiInfoBuilder进行定制 + return new ApiInfoBuilder() + // 设置标题 + .title("标题:招商车研物联网平台管理系统_接口文档") + // 描述 + .description("描述:用于管理集团旗下公司的人员信息,具体包括XXX,XXX模块...") + // 作者信息 + .contact(new Contact(cmvrIotConfig.getName(), null, null)) + // 版本 + .version("版本号:" + cmvrIotConfig.getVersion()) + .build(); + } +} diff --git a/cmvr-iot-admin/src/main/resources/META-INF/spring-devtools.properties b/cmvr-iot-admin/src/main/resources/META-INF/spring-devtools.properties new file mode 100644 index 0000000..892a419 --- /dev/null +++ b/cmvr-iot-admin/src/main/resources/META-INF/spring-devtools.properties @@ -0,0 +1 @@ +restart.include.json=/com.alibaba.fastjson2.*.jar diff --git a/cmvr-iot-admin/src/main/resources/application-dev.yml b/cmvr-iot-admin/src/main/resources/application-dev.yml new file mode 100644 index 0000000..c623256 --- /dev/null +++ b/cmvr-iot-admin/src/main/resources/application-dev.yml @@ -0,0 +1,108 @@ +server: + # 服务器的HTTP端口,默认为8080 + port: 13080 +# 数据源配置 +spring: + datasource: + type: com.alibaba.druid.pool.DruidDataSource + driverClassName: com.mysql.cj.jdbc.Driver + druid: + # 主库数据源 + master: + url: jdbc:mysql://192.168.1.100:3306/cmvr-iot-dev?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 + username: cmvr-iot + password: cmvr-iot123456 + # 从库数据源 + slave: + # 从数据源开关/默认关闭 + enabled: false + url: + username: + password: + # 初始连接数 + initialSize: 5 + # 最小连接池数量 + minIdle: 10 + # 最大连接池数量 + maxActive: 20 + # 配置获取连接等待超时的时间 + maxWait: 60000 + # 配置连接超时时间 + connectTimeout: 30000 + # 配置网络超时时间 + socketTimeout: 60000 + # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 + timeBetweenEvictionRunsMillis: 60000 + # 配置一个连接在池中最小生存的时间,单位是毫秒 + minEvictableIdleTimeMillis: 300000 + # 配置一个连接在池中最大生存的时间,单位是毫秒 + maxEvictableIdleTimeMillis: 900000 + # 配置检测连接是否有效 + validationQuery: SELECT 1 FROM DUAL + testWhileIdle: true + testOnBorrow: false + testOnReturn: false + webStatFilter: + enabled: true + statViewServlet: + enabled: true + # 设置白名单,不填则允许所有访问 + allow: + url-pattern: /druid/* + # 控制台管理用户名和密码 + login-username: cmvr-iot + login-password: 123456 + filter: + stat: + enabled: true + # 慢SQL记录 + log-slow-sql: true + slow-sql-millis: 1000 + merge-sql: true + wall: + config: + multi-statement-allow: true + # 服务模块 + devtools: + restart: + # 热部署开关 + enabled: true + # redis 配置 + redis: + # 地址 + host: 192.168.1.100 + # 端口,默认为6379 + port: 6379 + # 数据库索引 + database: 0 + # 密码 + password: cmvr2468 + # 连接超时时间 + timeout: 10s + lettuce: + pool: + # 连接池中的最小空闲连接 + min-idle: 0 + # 连接池中的最大空闲连接 + max-idle: 8 + # 连接池的最大数据库连接数 + max-active: 8 + # #连接池最大阻塞等待时间(使用负值表示没有限制) + max-wait: -1ms + +# Minio配置 +minio: + url: http://192.168.1.100:9000 + accessKey: AKICMVR + secretKey: wJalrXUtnFEMI + bucketName: cmvr-iot + +# gRPC 客户端设置 +grpc: + client: + grpc-server: # 自定义服务名 + address: 'static://10.148.108.100:50051' # 调用 gRPC 的地址 +# address: 'static://10.148.108.100:50051' # 调用 gRPC 的地址 + enableKeepAlive: true + keepAliveWithoutCalls: true + negotiationType: plaintext # 明文传输 \ No newline at end of file diff --git a/cmvr-iot-admin/src/main/resources/application-prod.yml b/cmvr-iot-admin/src/main/resources/application-prod.yml new file mode 100644 index 0000000..c850d0a --- /dev/null +++ b/cmvr-iot-admin/src/main/resources/application-prod.yml @@ -0,0 +1,71 @@ +server: + # 服务器的HTTP端口,默认为8080 + port: 13082 +# 数据源配置 +spring: + datasource: + type: com.alibaba.druid.pool.DruidDataSource + driverClassName: com.mysql.cj.jdbc.Driver + druid: + # 主库数据源 + master: + url: jdbc:mysql://10.148.20.35:3306/cmvr-iot-dev?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 + username: cmvr-iot + password: cmvr-iot123456 + # 从库数据源 + slave: + # 从数据源开关/默认关闭 + enabled: false + url: + username: + password: + # 初始连接数 + initialSize: 5 + # 最小连接池数量 + minIdle: 10 + # 最大连接池数量 + maxActive: 20 + # 配置获取连接等待超时的时间 + maxWait: 60000 + # 配置连接超时时间 + connectTimeout: 30000 + # 配置网络超时时间 + socketTimeout: 60000 + # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 + timeBetweenEvictionRunsMillis: 60000 + # 配置一个连接在池中最小生存的时间,单位是毫秒 + minEvictableIdleTimeMillis: 300000 + # 配置一个连接在池中最大生存的时间,单位是毫秒 + maxEvictableIdleTimeMillis: 900000 + # 配置检测连接是否有效 + validationQuery: SELECT 1 FROM DUAL + testWhileIdle: true + testOnBorrow: false + testOnReturn: false + webStatFilter: + enabled: true + statViewServlet: + enabled: true + # 设置白名单,不填则允许所有访问 + allow: + url-pattern: /druid/* + # 控制台管理用户名和密码 + login-username: cmvr-iot + login-password: 123456 + filter: + stat: + enabled: true + # 慢SQL记录 + log-slow-sql: true + slow-sql-millis: 1000 + merge-sql: true + wall: + config: + multi-statement-allow: true + +# Minio配置 +minio: + url: http://localhost:9000 + accessKey: minioadmin + secretKey: minioadmin + bucketName: ruoyi \ No newline at end of file diff --git a/cmvr-iot-admin/src/main/resources/application-test.yml b/cmvr-iot-admin/src/main/resources/application-test.yml new file mode 100644 index 0000000..2037e71 --- /dev/null +++ b/cmvr-iot-admin/src/main/resources/application-test.yml @@ -0,0 +1,81 @@ +server: + # 服务器的HTTP端口,默认为8080 + port: 13080 +# 数据源配置 +spring: + datasource: + type: com.alibaba.druid.pool.DruidDataSource + driverClassName: com.mysql.cj.jdbc.Driver + druid: + # 主库数据源 + master: + url: jdbc:mysql://10.148.20.35:3306/cmvr-iot-dev?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 + username: cmvr-iot + password: cmvr-iot123456 + # 从库数据源 + slave: + # 从数据源开关/默认关闭 + enabled: false + url: + username: + password: + # 初始连接数 + initialSize: 5 + # 最小连接池数量 + minIdle: 10 + # 最大连接池数量 + maxActive: 20 + # 配置获取连接等待超时的时间 + maxWait: 60000 + # 配置连接超时时间 + connectTimeout: 30000 + # 配置网络超时时间 + socketTimeout: 60000 + # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 + timeBetweenEvictionRunsMillis: 60000 + # 配置一个连接在池中最小生存的时间,单位是毫秒 + minEvictableIdleTimeMillis: 300000 + # 配置一个连接在池中最大生存的时间,单位是毫秒 + maxEvictableIdleTimeMillis: 900000 + # 配置检测连接是否有效 + validationQuery: SELECT 1 FROM DUAL + testWhileIdle: true + testOnBorrow: false + testOnReturn: false + webStatFilter: + enabled: true + statViewServlet: + enabled: true + # 设置白名单,不填则允许所有访问 + allow: + url-pattern: /druid/* + # 控制台管理用户名和密码 + login-username: cmvr-iot + login-password: 123456 + filter: + stat: + enabled: true + # 慢SQL记录 + log-slow-sql: true + slow-sql-millis: 1000 + merge-sql: true + wall: + config: + multi-statement-allow: true + +# Minio配置 +minio: + url: http://10.148.20.35:9000 + accessKey: AKIBSP + secretKey: wJalrXUtnFEMI + bucketName: cmvr-iot + +# gRPC 客户端设置 +grpc: + client: + grpc-server: # 自定义服务名 + address: 'static://10.148.108.100:50051' # 调用 gRPC 的地址 + # address: 'static://10.148.108.100:50051' # 调用 gRPC 的地址 + enableKeepAlive: true + keepAliveWithoutCalls: true + negotiationType: plaintext # 明文传输 \ No newline at end of file diff --git a/cmvr-iot-admin/src/main/resources/application.yml b/cmvr-iot-admin/src/main/resources/application.yml new file mode 100644 index 0000000..e1c4f5d --- /dev/null +++ b/cmvr-iot-admin/src/main/resources/application.yml @@ -0,0 +1,121 @@ +# 项目相关配置 +cmvr-iot: + # 名称 + name: cmvr-iot + # 版本 + version: 1.0.0 + # 版权年份 + copyrightYear: 2025 + # 文件路径 示例( Windows配置D:/cmvr-iot/uploadPath,Linux配置 /home/cmvr-iot/uploadPath) + profile: D:/cmvr-iot/uploadPath + # 获取ip地址开关 + addressEnabled: false + # 验证码类型 math 数字计算 char 字符验证 + captchaType: math + +# 开发环境配置 +server: + servlet: + # 应用的访问路径 + context-path: / + tomcat: + # tomcat的URI编码 + uri-encoding: UTF-8 + # 连接数满后的排队数,默认为100 + accept-count: 1000 + threads: + # tomcat最大线程数,默认为200 + max: 800 + # Tomcat启动初始化的线程数,默认值10 + min-spare: 100 + +# 日志配置 +logging: + level: + com.cmv: debug + org.springframework: warn + +# 用户配置 +user: + password: + # 密码最大错误次数 + maxRetryCount: 5 + # 密码锁定时间(默认10分钟) + lockTime: 10 + +# Spring配置 +spring: + # 资源信息 + messages: + # 国际化资源文件路径 + basename: i18n/messages + profiles: + active: dev + # 文件上传 + servlet: + multipart: + # 单个文件大小 + max-file-size: 10MB + # 设置总上传的文件大小 + max-request-size: 20MB + +# token配置 +token: + # 令牌自定义标识 + header: Authorization + # 令牌密钥 + secret: abcdefghijklmnopqrstuvwxyz + # 令牌有效期(默认30分钟) + expireTime: 2147483647 + +# Mybatis-plus的配置 +mybatis-plus: + # 对应的 XML 文件位置 + mapperLocations: classpath*:mapper/**/*Mapper.xml + # 实体扫描,多个package用逗号或者分号分隔 + typeAliasesPackage: com.cmvr.**.domain + configuration: + # 驼峰命名 + mapUnderscoreToCamelCase: true + # 是否开启缓存 + cacheEnabled: true + # 日志输出 +# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + + +# PageHelper分页插件 +pagehelper: + helperDialect: mysql + supportMethodsArguments: true + params: count=countSql + +# Swagger配置 +swagger: + # 是否开启swagger + enabled: true + # 请求前缀 + pathMapping: / +knife4j: + # 开启屏蔽文档资源 + production: false + # 是否开启Knife4j(swagger 增强版) + enable: true + setting: + language: zh-CN + enableRequestCache: true + +# 防止XSS攻击 +xss: + # 过滤开关 + enabled: true + # 排除链接(多个用逗号分隔) + excludes: /system/notice + # 匹配链接 + urlPatterns: /system/*,/monitor/*,/tool/*,/device/*,/test/*,/api/* + +api: + app-id: d0epfibvo3em6c4iul40 + app-key: d0eqt1kqek3vg7g4ofi0 + speech-to-text-url: https://aiagentplatform.cmft.com/api/proxy/api/v1/run_app_workflow + query-result-url: https://aiagentplatform.cmft.com/api/proxy/api/v1/query_run_app_process + bge-vl: http://192.168.1.8:5000/search_similar diff --git a/cmvr-iot-admin/src/main/resources/banner.txt b/cmvr-iot-admin/src/main/resources/banner.txt new file mode 100644 index 0000000..0d30b39 --- /dev/null +++ b/cmvr-iot-admin/src/main/resources/banner.txt @@ -0,0 +1,3 @@ +Application Version: ${cmvr-iot.version} +Spring Boot Version: ${spring-boot.version} + diff --git a/cmvr-iot-admin/src/main/resources/i18n/messages.properties b/cmvr-iot-admin/src/main/resources/i18n/messages.properties new file mode 100644 index 0000000..93de005 --- /dev/null +++ b/cmvr-iot-admin/src/main/resources/i18n/messages.properties @@ -0,0 +1,38 @@ +#错误消息 +not.null=* 必须填写 +user.jcaptcha.error=验证码错误 +user.jcaptcha.expire=验证码已失效 +user.not.exists=用户不存在/密码错误 +user.password.not.match=用户不存在/密码错误 +user.password.retry.limit.count=密码输入错误{0}次 +user.password.retry.limit.exceed=密码输入错误{0}次,帐户锁定{1}分钟 +user.password.delete=对不起,您的账号已被删除 +user.blocked=用户已封禁,请联系管理员 +role.blocked=角色已封禁,请联系管理员 +login.blocked=很遗憾,访问IP已被列入系统黑名单 +user.logout.success=退出成功 + +length.not.valid=长度必须在{min}到{max}个字符之间 + +user.username.not.valid=* 2到20个汉字、字母、数字或下划线组成,且必须以非数字开头 +user.password.not.valid=* 5-50个字符 + +user.email.not.valid=邮箱格式错误 +user.mobile.phone.number.not.valid=手机号格式错误 +user.login.success=登录成功 +user.register.success=注册成功 +user.notfound=请重新登录 +user.forcelogout=管理员强制退出,请重新登录 +user.unknown.error=未知错误,请重新登录 + +##文件上传消息 +upload.exceed.maxSize=上传的文件大小超出限制的文件大小!
允许的文件最大大小是:{0}MB! +upload.filename.exceed.length=上传的文件名最长{0}个字符 + +##权限 +no.permission=您没有数据的权限,请联系管理员添加权限 [{0}] +no.create.permission=您没有创建数据的权限,请联系管理员添加权限 [{0}] +no.update.permission=您没有修改数据的权限,请联系管理员添加权限 [{0}] +no.delete.permission=您没有删除数据的权限,请联系管理员添加权限 [{0}] +no.export.permission=您没有导出数据的权限,请联系管理员添加权限 [{0}] +no.view.permission=您没有查看数据的权限,请联系管理员添加权限 [{0}] diff --git a/cmvr-iot-admin/src/main/resources/logback.xml b/cmvr-iot-admin/src/main/resources/logback.xml new file mode 100644 index 0000000..4f33d9a --- /dev/null +++ b/cmvr-iot-admin/src/main/resources/logback.xml @@ -0,0 +1,93 @@ + + + + + + + + + + + ${log.pattern} + + + + + + ${log.path}/sys-info.log + + + + ${log.path}/sys-info.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/sys-error.log + + + + ${log.path}/sys-error.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + ERROR + + ACCEPT + + DENY + + + + + + ${log.path}/sys-user.log + + + ${log.path}/sys-user.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cmvr-iot-admin/src/main/resources/mybatis/mybatis-config.xml b/cmvr-iot-admin/src/main/resources/mybatis/mybatis-config.xml new file mode 100644 index 0000000..ac47c03 --- /dev/null +++ b/cmvr-iot-admin/src/main/resources/mybatis/mybatis-config.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/pom.xml b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/pom.xml new file mode 100644 index 0000000..5aec454 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/pom.xml @@ -0,0 +1,60 @@ + + + 4.0.0 + + com.cmvr + cmvr-iot-edge + 3.8.9 + + + cmvr-iot-grpc-client + cmvr-iot gRPC客户端 + + + + com.cmvr + cmvr-iot-grpc-lib + + + + net.devh + grpc-client-spring-boot-starter + ${grpc-client.version} + + + com.google.protobuf + protobuf-java + 3.25.5 + + + + com.cmvr + cmvr-iot-common + + + + com.cmvr + cmvr-iot-system + + + + com.cmvr + cmvr-iot-device + + + + com.cmvr + cmvr-iot-framework + + + + org.bytedeco + javacv-platform + 1.5.9 + + + + + \ No newline at end of file diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/file/ByteArrayMultipartFile.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/file/ByteArrayMultipartFile.java new file mode 100644 index 0000000..814d664 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/file/ByteArrayMultipartFile.java @@ -0,0 +1,66 @@ +package com.cmvr.edge.client.file; + +import org.jetbrains.annotations.NotNull; +import org.springframework.web.multipart.MultipartFile; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; + +public class ByteArrayMultipartFile implements MultipartFile { + private final String name; + private final String originalFilename; + private final String contentType; + private final byte[] content; + + public ByteArrayMultipartFile(String name, String originalFilename, String contentType, byte[] content) { + this.name = name; + this.originalFilename = originalFilename; + this.contentType = contentType; + this.content = content; + } + + @NotNull + @Override + public String getName() { + return name; + } + + @Override + public String getOriginalFilename() { + return originalFilename; + } + + @Override + public String getContentType() { + return contentType; + } + + @Override + public boolean isEmpty() { + return content == null || content.length == 0; + } + + @Override + public long getSize() { + return content.length; + } + + @NotNull + @Override + public byte[] getBytes() { + return content; + } + + @NotNull + @Override + public InputStream getInputStream() { + return new ByteArrayInputStream(content); + } + + @Override + public void transferTo(@NotNull java.io.File dest) throws IOException, IllegalStateException { + try (java.io.FileOutputStream fos = new java.io.FileOutputStream(dest)) { + fos.write(content); + } + } +} \ No newline at end of file diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/manage/GrpcChannelCache.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/manage/GrpcChannelCache.java new file mode 100644 index 0000000..01b0f5d --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/manage/GrpcChannelCache.java @@ -0,0 +1,80 @@ +package com.cmvr.edge.client.manage; + +import io.grpc.ManagedChannel; +import lombok.Getter; + +import java.time.Instant; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Function; + +/** + * gRPC 通道缓存 + */ +public class GrpcChannelCache { + + private final long ttlSeconds; // 通道存活时间(秒) + private final Map channelMap = new ConcurrentHashMap<>(); // 设备 ID -> 通道包装器 + + public GrpcChannelCache(long ttlSeconds) { + this.ttlSeconds = ttlSeconds; + } + + /** + * 获取通道:存在则刷新时间,过期则重建,不存在则创建 + */ + public ManagedChannel get(String terminalId, Function supplier) { + return channelMap.compute(terminalId, (k, v) -> { + if (v == null || v.isExpired(ttlSeconds)) { // 为空或过期时重建 + if (v != null) v.close(); // 关闭旧通道 + return new ChannelWrapper(supplier.apply(terminalId)); // 创建新通道包装器 + } else { + v.refresh(); // 更新最后访问时间 + return v; + } + }).getChannel(); + } + + /** + * 清理所有过期通道 + */ + public void cleanExpiredChannels() { + channelMap.entrySet().removeIf(entry -> { + ChannelWrapper wrapper = entry.getValue(); + if (wrapper.isExpired(ttlSeconds)) { // 检查过期 + wrapper.close(); // 关闭通道 + return true; + } + return false; + }); + } + + /** + * 通道包装器(管理通道生命周期和访问时间) + */ + private static class ChannelWrapper { + @Getter private final ManagedChannel channel; // gRPC 通道 + private volatile Instant lastAccess; // 最后访问时间 + + public ChannelWrapper(ManagedChannel channel) { + this.channel = channel; + this.lastAccess = Instant.now(); // 初始化访问时间 + } + + public void refresh() { + this.lastAccess = Instant.now(); // 更新访问时间 + } + + public boolean isExpired(long ttlSeconds) { + // 当前时间 - TTL 秒 > 最后访问时间则过期 + return Instant.now().minusSeconds(ttlSeconds).isAfter(lastAccess); + } + + public void close() { + try { + channel.shutdownNow(); // 立即关闭通道 + } catch (Exception ignored) { + } + } + } +} \ No newline at end of file diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/manage/GrpcServiceManager.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/manage/GrpcServiceManager.java new file mode 100644 index 0000000..d95242f --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/manage/GrpcServiceManager.java @@ -0,0 +1,118 @@ +package com.cmvr.edge.client.manage; + +import cmvr.api.*; +import cn.hutool.core.util.ObjUtil; +import cn.hutool.core.util.StrUtil; +import com.cmvr.device.domain.DeDeviceTerminalConfig; +import com.cmvr.device.service.IDeDeviceTerminalConfigService; +import io.grpc.ManagedChannel; +import io.grpc.ManagedChannelBuilder; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Service; + +import javax.annotation.PostConstruct; +import java.util.Map; +import java.util.concurrent.*; +import java.util.function.Function; + +/** + * gRPC链接管理 + */ +@Service +@RequiredArgsConstructor +public class GrpcServiceManager { + + private final IDeDeviceTerminalConfigService deviceTerminalConfigService; + + @Value("${grpc.client.grpc-server.address}") + private String DEFAULT_GRPC_ADDRESS; + + // 存储不同 Stub 的工厂 + private final Map, GrpcClientFactory> clientFactories = new ConcurrentHashMap<>(); + + // 带 TTL 的通道缓存 + private final GrpcChannelCache grpcChannelCache = new GrpcChannelCache(3 * 60); // 3分钟过期时间 + + /** + * 初始化注册支持的 gRPC Stub + */ + @PostConstruct + public void init() { + // 注册摄像头服务的 Stub + clientFactories.put(CameraServiceGrpc.CameraServiceBlockingStub.class, new GrpcClientFactory<>(CameraServiceGrpc::newBlockingStub)); + clientFactories.put(CameraServiceGrpc.CameraServiceStub.class, new GrpcClientFactory<>(CameraServiceGrpc::newStub)); + // 注册系统服务的 Stub + clientFactories.put(SystemServiceGrpc.SystemServiceBlockingStub.class, new GrpcClientFactory<>(SystemServiceGrpc::newBlockingStub)); + // 注册扬声器服务的 Stub + clientFactories.put(SpeakerServiceGrpc.SpeakerServiceBlockingStub.class, new GrpcClientFactory<>(SpeakerServiceGrpc::newBlockingStub)); + // 注册麦克风服务的 Stub + clientFactories.put(MicPhoneServiceGrpc.MicPhoneServiceBlockingStub.class, new GrpcClientFactory<>(MicPhoneServiceGrpc::newBlockingStub)); + // 注册机器人头部服务的 Stub + clientFactories.put(BioHeadServiceGrpc.BioHeadServiceBlockingStub.class, new GrpcClientFactory<>(BioHeadServiceGrpc::newBlockingStub)); + // 注册机器人灵巧手服务的 Stub + clientFactories.put(DexHandServiceGrpc.DexHandServiceBlockingStub.class, new GrpcClientFactory<>(DexHandServiceGrpc::newBlockingStub)); + clientFactories.put(DexHandServiceGrpc.DexHandServiceStub.class, new GrpcClientFactory<>(DexHandServiceGrpc::newStub)); + } + + + /** + * 获取 gRPC 客户端 Stub + */ + @SuppressWarnings("unchecked") + public T getGrpcClient(String terminalId, Class serviceClass) { + ManagedChannel channel = grpcChannelCache.get(terminalId, this::createChannel); + GrpcClientFactory factory = (GrpcClientFactory) clientFactories.get(serviceClass); + + if (factory == null) { + throw new IllegalArgumentException("未知的 gRPC 服务类型: " + serviceClass); + } + + return factory.createClient(channel); + } + + /** + * 创建gRPC通道 + */ + private ManagedChannel createChannel(String terminalId) { + String grpcAddress = getGrpcServiceAddress(terminalId); + return ManagedChannelBuilder.forTarget(grpcAddress) + .usePlaintext() + .build(); + } + + /** + * 获取终端地址 + */ + private String getGrpcServiceAddress(String terminalId) { + DeDeviceTerminalConfig terminal = deviceTerminalConfigService.selectDeDeviceTerminalConfigById(terminalId); + if (ObjUtil.isEmpty(terminal)) { + return DEFAULT_GRPC_ADDRESS; + } + return StrUtil.format("static://{}:{}", terminal.getHost(), terminal.getPort()); + } + + /** + * 定期清理过期的通道 + */ + @Scheduled(fixedRate = 2 * 60 * 1000) + public void cleanExpiredChannels() { + grpcChannelCache.cleanExpiredChannels(); + } + + /** + * gRPC客户端工厂类 + */ + private static class GrpcClientFactory { + private final Function factory; + + public GrpcClientFactory(Function factory) { + this.factory = factory; + } + + public T createClient(ManagedChannel channel) { + return factory.apply(channel); + } + } +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/manage/GrpcStreamManager.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/manage/GrpcStreamManager.java new file mode 100644 index 0000000..712cd3e --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/manage/GrpcStreamManager.java @@ -0,0 +1,55 @@ +package com.cmvr.edge.client.manage; + +import io.grpc.stub.StreamObserver; +import java.util.concurrent.ConcurrentHashMap; + +/** + * GRPC流管理器,用于管理GRPC双向流 + * 提供添加、获取和移除流的方法,保证在多线程环境下的安全性 + */ +public class GrpcStreamManager { + // 存储流观察者的并发哈希映射,确保线程安全 + private static final ConcurrentHashMap> observers = new ConcurrentHashMap<>(); + + /** + * 添加或更新指定键的流观察者 + * 如果该键已经存在,则不进行替换 + * + * @param key 流的唯一键 + * @param responseObserver 流的观察者 + */ + public static void addStream(String key, StreamObserver responseObserver) { + observers.putIfAbsent(key, responseObserver); + } + + /** + * 获取指定键的流观察者 + * + * @param key 流的唯一键 + * @return 对应键的流观察者,如果不存在则返回null + */ + public static StreamObserver getStream(String key) { + return observers.get(key); + } + + /** + * 移除指定键的流观察者 + * + * @param key 流的唯一键 + * @return 被移除的流观察者,如果不存在则返回null + */ + public static StreamObserver removeStream(String key) { + return observers.remove(key); + } + + /** + * 检查是否包含指定的键 + * + * @param key 要检查的键 + * @return 如果包含返回true,否则返回false + */ + public static boolean containsKey(String key) { + return observers.containsKey(key); + } + +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/model/biohead/EdgeCommonVO.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/model/biohead/EdgeCommonVO.java new file mode 100644 index 0000000..7ed86c8 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/model/biohead/EdgeCommonVO.java @@ -0,0 +1,16 @@ +package com.cmvr.edge.client.model.biohead; + +import lombok.Data; + +@Data +public class EdgeCommonVO { + /** + * 终端ID + */ + private String terminalId; + + /** + * 设备ID + */ + private String deviceId; +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/model/biohead/EdgeFacialExpressionVO.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/model/biohead/EdgeFacialExpressionVO.java new file mode 100644 index 0000000..bebe6bc --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/model/biohead/EdgeFacialExpressionVO.java @@ -0,0 +1,195 @@ +package com.cmvr.edge.client.model.biohead; + + +import lombok.Data; + + +/** + * 面部表情控制参数定义 + * 包含生物头部机器人面部各部位的运动参数,用于精确控制面部表情 + */ +@Data +public class EdgeFacialExpressionVO extends EdgeCommonVO { + + /** + * 眉毛参数封装 + */ + private Eyebrow eyebrow; + /** + * 眼睑参数封装 + */ + private Eyelid eyelid; + /** + * 眼球参数封装 + */ + private Eyeball eyeball; + /** + * 嘴巴参数封装 + */ + private Mouth mouth; + /** + * 鼻子参数封装 + */ + private Nose nose; + /** + * 左唇角控制参数 + */ + private LeftLip leftLip; + /** + * 右唇角控制参数 + */ + private RightLip rightLip; + + /** + * 下巴参数封装 + */ + private Jaw jaw; + + /** + * 眉毛控制参数 + * 左右眉毛的内外侧垂直位置(0.0-1.0标准化值) + */ + @Data + public static class Eyebrow { + /** + * 左眉外侧垂直位置 + */ + private float leftOutsideY; + /** + * 左眉内侧垂直位置 + */ + private float leftInsideY; + /** + * 右眉外侧垂直位置 + */ + private float rightOutsideY; + /** + * 右眉内侧垂直位置 + */ + private float rightInsideY; + } + + /** + * 眼睑控制参数 + * 左右眼睑的上下位置(0.0-1.0标准化值) + */ + @Data + public static class Eyelid { + /** + * 左上眼睑垂直位置 + */ + private float leftUpperY; + /** + * 左下眼睑垂直位置 + */ + private float leftLowerY; + /** + * 右上眼睑垂直位置 + */ + private float rightUpperY; + /** + * 右下眼睑垂直位置 + */ + private float rightLowerY; + } + + /** + * 眼球控制参数 + * 左右眼球的二维坐标(-1.0到1.0标准化值,中心为0) + */ + @Data + public static class Eyeball { + /** + * 左眼球水平位置 + */ + private float leftX; + /** + * 左眼球垂直位置 + */ + private float leftY; + /** + * 右眼球水平位置 + */ + private float rightX; + /** + * 右眼球垂直位置 + */ + private float rightY; + } + + /** + * 嘴巴控制参数 + * 包含嘴唇整体位置(仅含上唇/下唇 y 坐标) + */ + @Data + public static class Mouth { + /** + * 上唇垂直位置 + */ + private float upperLipY; + /** + * 下唇垂直位置 + */ + private float lowerLipY; + } + + /** + * 鼻子控制参数 + * 鼻子左右侧的垂直位置(0.0-1.0标准化值) + */ + @Data + public static class Nose { + /** + * 鼻子左侧垂直位置 + */ + private float leftY; + /** + * 鼻子右侧垂直位置 + */ + private float rightY; + } + + /** + * 左唇角控制参数 + * 包含上唇、唇角、下唇的坐标点 + */ + @Data + public static class LeftLip { + private float upperX; + private float upperY; + private float cornerX; + private float cornerY; + private float lowerX; + private float lowerY; + } + + /** + * 右唇角控制参数 + * 结构与左唇角对称 + */ + @Data + public static class RightLip { + private float upperX; + private float upperY; + private float cornerX; + private float cornerY; + private float lowerX; + private float lowerY; + } + + /** + * 下巴控制参数 + * 下巴的二维移动坐标(X/Y轴) + */ + @Data + public static class Jaw { + /** + * 下巴水平位置 + */ + private float x; + /** + * 下巴垂直位置 + */ + private float y; + } +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/DeviceListService.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/DeviceListService.java new file mode 100644 index 0000000..d710fc4 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/DeviceListService.java @@ -0,0 +1,2 @@ +package com.cmvr.edge.client.service;public interface DeviceListService { +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/EdgeBioHeadService.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/EdgeBioHeadService.java new file mode 100644 index 0000000..01e60ae --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/EdgeBioHeadService.java @@ -0,0 +1,27 @@ +package com.cmvr.edge.client.service; + +import com.cmvr.edge.client.model.biohead.EdgeCommonVO; +import com.cmvr.edge.client.model.biohead.EdgeFacialExpressionVO; + +/** + * 边缘系统 生物头部机器人服务 + */ +public interface EdgeBioHeadService { + + /** + * 设置面部表情 + */ + public String setExpression(EdgeFacialExpressionVO facialExpressionVo); + + /** + * 获取状态 + */ + public String getSystemStatus(EdgeCommonVO edgeCommonVO); + + + /** + * 紧急停止 + */ + public String emergencyStop(EdgeCommonVO edgeCommonVO); + +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/EdgeCameraService.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/EdgeCameraService.java new file mode 100644 index 0000000..42564f9 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/EdgeCameraService.java @@ -0,0 +1,58 @@ +package com.cmvr.edge.client.service; + +import cmvr.api.CameraCommand; +import io.grpc.stub.StreamObserver; + +/** + * 边缘系统摄像头服务 + */ +public interface EdgeCameraService { + + /** + * 获取相机状态 + */ + public CameraCommand.CameraState status(String terminalId, String deviceId); + + /** + * 校验相机状态 + */ + public boolean checkStatus(String terminalId, String deviceId); + + /** + * 开始相机服务 + */ + public String start(String terminalId, String deviceId); + + /** + * 结束相机服务 + */ + public String stop(String terminalId, String deviceId); + + /** + * 获取相机图片 + */ + public String getRGBImage(String terminalId, String deviceId); + + /** + * 开始录制视频 + */ + public String startRecording(String terminalId, String deviceId); + + /** + * 停止录制视频 + */ + public String stopRecording(String terminalId, String deviceId); + + /** + * 获取相机图片组 + */ + public String getRGBDImages(String terminalId, String deviceId); + + StreamObserver getRGBImageStream(String terminalId, String deviceId); + + void getDepthImageStream(String terminalId, String deviceId); + void getRGBDImagesStream(String terminalId, String deviceId); + + + +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/EdgeDexHandService.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/EdgeDexHandService.java new file mode 100644 index 0000000..08fa7e4 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/EdgeDexHandService.java @@ -0,0 +1,19 @@ +package com.cmvr.edge.client.service; + +import cmvr.api.DexhandCommand; +import io.grpc.stub.StreamObserver; + +/** + * @description: 边缘设备 DexHandService 接口 + */ +public interface EdgeDexHandService { + // 基本控制 + DexhandCommand.DexHandState getStatus(String terminalId, String deviceId); + void setDexHandPos(String terminalId, String deviceId); + void setDexHandAngle(String terminalId, String deviceId, int id, float value) ; + void setDexHandForce(String terminalId, String deviceId) ; + void setDexHandSpeed(String terminalId, String deviceId) ; + void setDexHandPresetAct(String terminalId, String deviceId); + String getSensorData(String terminalId, String deviceId) ; + StreamObserver getSensorDataStream(String terminalId, String deviceId) ; +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/EdgeMicrophoneService.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/EdgeMicrophoneService.java new file mode 100644 index 0000000..f1cd75d --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/EdgeMicrophoneService.java @@ -0,0 +1,84 @@ +package com.cmvr.edge.client.service; + +import cmvr.api.MicrophoneCommand; + +/** + * 边缘麦克风服务接口 + * 定义了与边缘麦克风进行交互的所有方法 + * 包括获取状态、录音控制、音量控制等功能 + */ +public interface EdgeMicrophoneService { + /** + * 获取麦克风当前状态 + * 通过gRPC调用获取麦克风的运行状态,包括是否正在录音、音量等信息 + * + * @param terminalId 终端设备ID + * @param deviceId 设备ID + * @return MicState 返回麦克风的当前状态 + * @throws RuntimeException 当gRPC调用失败时抛出异常 + */ + MicrophoneCommand.GetMicStateCommand.Feedback getStatus(String terminalId, String deviceId); + + /** + * 开始录音 + * 通过gRPC调用开始录音,将录音保存到指定路径 + * + * @param terminalId 终端设备ID + * @param deviceId 设备ID + * @param filePath 录音文件的保存路径 + * @throws RuntimeException 当gRPC调用失败时抛出异常 + */ + void startRecord(String terminalId, String deviceId, String filePath); + + /** + * 停止录音 + * 通过gRPC调用停止麦克风的当前录音 + * + * @param terminalId 终端设备ID + * @param deviceId 设备ID + * @throws RuntimeException 当gRPC调用失败时抛出异常 + */ + void stopRecord(String terminalId, String deviceId); + + /** + * 暂停录音 + * 通过gRPC调用暂停麦克风的当前录音 + * + * @param terminalId 终端设备ID + * @param deviceId 设备ID + * @throws RuntimeException 当gRPC调用失败时抛出异常 + */ + void pauseRecord(String terminalId, String deviceId); + + /** + * 恢复录音 + * 通过gRPC调用恢复麦克风之前暂停的录音 + * + * @param terminalId 终端设备ID + * @param deviceId 设备ID + * @throws RuntimeException 当gRPC调用失败时抛出异常 + */ + void resumeRecord(String terminalId, String deviceId); + + /** + * 设置麦克风音量 + * 通过gRPC调用设置麦克风的音量大小 + * + * @param terminalId 终端设备ID + * @param deviceId 设备ID + * @param volume 音量大小(0-100) + * @throws RuntimeException 当gRPC调用失败时抛出异常 + */ + void setVolume(String terminalId, String deviceId, int volume); + + /** + * 获取当前音量 + * 通过gRPC调用获取麦克风的当前音量大小 + * + * @param terminalId 终端设备ID + * @param deviceId 设备ID + * @return int 返回当前音量大小(0-100) + * @throws RuntimeException 当gRPC调用失败时抛出异常 + */ + int getVolume(String terminalId, String deviceId); +} \ No newline at end of file diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/EdgeSpeakerService.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/EdgeSpeakerService.java new file mode 100644 index 0000000..c68d976 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/EdgeSpeakerService.java @@ -0,0 +1,94 @@ +package com.cmvr.edge.client.service; + +import cmvr.api.SpeakerCommand; + +import java.util.List; + +/** + * 边缘扬声器服务接口 + * 定义了与边缘扬声器进行交互的所有方法 + * 包括获取状态、播放控制、音量控制等功能 + */ +public interface EdgeSpeakerService { + /** + * 获取扬声器当前状态 + * 通过gRPC调用获取扬声器的运行状态,包括是否正在播放、音量等信息 + * + * @param terminalId 终端设备ID + * @param deviceId 设备ID + * @return SpeakerState 返回扬声器的当前状态 + * @throws RuntimeException 当gRPC调用失败时抛出异常 + */ + SpeakerCommand.GetSpeakerStateCommand.Feedback getStatus(String terminalId, String deviceId); + + /** + * 播放音频文件 + * 通过gRPC调用播放指定路径的音频文件 + * + * @param terminalId 终端设备ID + * @param deviceId 设备ID + * @param audioPath 音频文件的路径 + * @throws RuntimeException 当gRPC调用失败时抛出异常 + */ + void playAudio(String terminalId, String deviceId, String audioPath); + + /** + * 停止当前播放 + * 通过gRPC调用停止扬声器的当前播放 + * + * @param terminalId 终端设备ID + * @param deviceId 设备ID + * @throws RuntimeException 当gRPC调用失败时抛出异常 + */ + void stopPlayback(String terminalId, String deviceId); + + /** + * 暂停当前播放 + * 通过gRPC调用暂停扬声器的当前播放 + * + * @param terminalId 终端设备ID + * @param deviceId 设备ID + * @throws RuntimeException 当gRPC调用失败时抛出异常 + */ + void pausePlayback(String terminalId, String deviceId); + + /** + * 恢复暂停的播放 + * 通过gRPC调用恢复扬声器之前暂停的播放 + * + * @param terminalId 终端设备ID + * @param deviceId 设备ID + * @throws RuntimeException 当gRPC调用失败时抛出异常 + */ + void resumePlayback(String terminalId, String deviceId); + + /** + * 设置扬声器音量 + * 通过gRPC调用设置扬声器的音量大小 + * + * @param terminalId 终端设备ID + * @param deviceId 设备ID + * @param volume 音量大小(0-100) + * @throws RuntimeException 当gRPC调用失败时抛出异常 + */ + void setVolume(String terminalId, String deviceId, int volume); + + /** + * 获取当前音量 + * 通过gRPC调用获取扬声器的当前音量大小 + * + * @param terminalId 终端设备ID + * @param deviceId 设备ID + * @return int 返回当前音量大小(0-100) + * @throws RuntimeException 当gRPC调用失败时抛出异常 + */ + int getVolume(String terminalId, String deviceId); + + /** + * 获取所有音频文件 + * 通过http获取所有音频文件列表 + * + * @return String[] 返回音频文件列表 + */ + List getAll(); +} \ No newline at end of file diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/EdgeStreamService.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/EdgeStreamService.java new file mode 100644 index 0000000..526ed79 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/EdgeStreamService.java @@ -0,0 +1,3 @@ +package com.cmvr.edge.client.service; +// 标记接口,无需定义具体方法 +public interface EdgeStreamService { } diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/EdgeSystemService.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/EdgeSystemService.java new file mode 100644 index 0000000..d53956a --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/EdgeSystemService.java @@ -0,0 +1,21 @@ +package com.cmvr.edge.client.service; + +import cmvr.api.SystemCommand; +import com.cmvr.device.domain.DeDeviceRegistration; +import com.cmvr.device.domain.vo.Device; + +import java.util.List; + +/** + * 边缘系统服务接口 + */ +public interface EdgeSystemService { + /** + * 获取系统状态 + * @return 系统状态信息,包含CPU使用率、内存使用情况、磁盘使用情况和设备列表 + */ + SystemCommand.GetSystemStatusCommand.Feedback getSystemStatus(String terminalId); + + + public List deviceList(String terminalId); +} \ No newline at end of file diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/impl/EdgeBioHeadServiceImpl.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/impl/EdgeBioHeadServiceImpl.java new file mode 100644 index 0000000..e61bad8 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/impl/EdgeBioHeadServiceImpl.java @@ -0,0 +1,141 @@ +package com.cmvr.edge.client.service.impl; + +import cmvr.api.BioHeadServiceGrpc; +import cmvr.api.BioheadCommand; +import cmvr.api.Common; +import com.alibaba.fastjson2.JSON; +import com.cmvr.edge.client.manage.GrpcServiceManager; +import com.cmvr.edge.client.model.biohead.EdgeCommonVO; +import com.cmvr.edge.client.model.biohead.EdgeFacialExpressionVO; +import com.cmvr.edge.client.service.EdgeBioHeadService; +import com.cmvr.edge.client.utils.EdgeCommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +@Slf4j +@Service +@RequiredArgsConstructor +public class EdgeBioHeadServiceImpl implements EdgeBioHeadService { + + private final GrpcServiceManager grpcServiceManager; + + @Override + public String setExpression(EdgeFacialExpressionVO facialExpressionVo) { + String terminalId = facialExpressionVo.getTerminalId(); + String deviceId = facialExpressionVo.getDeviceId(); + BioHeadServiceGrpc.BioHeadServiceBlockingStub stub = grpcServiceManager.getGrpcClient(terminalId, BioHeadServiceGrpc.BioHeadServiceBlockingStub.class); + + // 请求头 + Common.CommandHeader.Request header = EdgeCommonUtil.buildRequest(deviceId); + + // 映射面部表情参数 + BioheadCommand.FacialExpression.Builder expressionBuilder = BioheadCommand.FacialExpression.newBuilder(); + + // 映射 Eyebrow + EdgeFacialExpressionVO.Eyebrow eyebrow = facialExpressionVo.getEyebrow(); + if (eyebrow != null) { + expressionBuilder.setEyebrow( + BioheadCommand.FacialExpression.Eyebrow.newBuilder() + .setLeftOutsideY(eyebrow.getLeftOutsideY()) + .setLeftInsideY(eyebrow.getLeftInsideY()) + .setRightOutsideY(eyebrow.getRightOutsideY()) + .setRightInsideY(eyebrow.getRightInsideY()) + .build() + ); + } + + // 映射 Eyelid + EdgeFacialExpressionVO.Eyelid eyelid = facialExpressionVo.getEyelid(); + if (eyelid != null) { + expressionBuilder.setEyelid(BioheadCommand.FacialExpression.Eyelid.newBuilder() + .setLeftUpperY(eyelid.getLeftUpperY()) + .setLeftLowerY(eyelid.getLeftLowerY()) + .setRightUpperY(eyelid.getRightUpperY()) + .setRightLowerY(eyelid.getRightLowerY()) + .build() + ); + } + + // 映射 Eyeball + EdgeFacialExpressionVO.Eyeball eyeball = facialExpressionVo.getEyeball(); + if (eyeball != null) { + expressionBuilder.setEyeball(BioheadCommand.FacialExpression.Eyeball.newBuilder() + .setLeftX(eyeball.getLeftX()) + .setLeftY(eyeball.getLeftY()) + .setRightX(eyeball.getRightX()) + .setRightY(eyeball.getRightY()).build()); + } + + // 映射 Mouth + EdgeFacialExpressionVO.Mouth mouth = facialExpressionVo.getMouth(); + if (mouth != null) { + expressionBuilder.setMouth(BioheadCommand.FacialExpression.Mouth.newBuilder() + .setUpperLipY(mouth.getUpperLipY()) + .setLowerLipY(mouth.getLowerLipY()) + .build() + ); + } + + // 映射 Nose + EdgeFacialExpressionVO.Nose nose = facialExpressionVo.getNose(); + if (nose != null) { + expressionBuilder.setNose(BioheadCommand.FacialExpression.Nose.newBuilder() + .setLeftY(nose.getLeftY()) + .setRightY(nose.getRightY()) + .build() + ); + } + + // 映射 Jaw + EdgeFacialExpressionVO.Jaw jaw = facialExpressionVo.getJaw(); + if (jaw != null) { + expressionBuilder.setJaw(BioheadCommand.FacialExpression.Jaw.newBuilder() + .setX(jaw.getX()) + .setY(jaw.getY()) + .build() + ); + } + + // 构造完整请求 + BioheadCommand.SetFacialExpression.Request request = BioheadCommand.SetFacialExpression.Request.newBuilder() + .setHeader(header) + .setExpression(expressionBuilder.build()) + .build(); + + BioheadCommand.SetFacialExpression.Feedback feedback = stub.setExpression(request); + return JSON.toJSONString(feedback.getHeader()); + } + + @Override + public String getSystemStatus(EdgeCommonVO edgeCommonVO) { + String terminalId = edgeCommonVO.getTerminalId(); + String deviceId = edgeCommonVO.getDeviceId(); + BioHeadServiceGrpc.BioHeadServiceBlockingStub stub = grpcServiceManager.getGrpcClient(terminalId, BioHeadServiceGrpc.BioHeadServiceBlockingStub.class); + + // 请求头 + Common.CommandHeader.Request header = EdgeCommonUtil.buildRequest(deviceId); + + BioheadCommand.GetStatus.Request request = BioheadCommand.GetStatus.Request.newBuilder() + .setHeader(header) + .build(); + BioheadCommand.GetStatus.Feedback feedback = stub.getSystemStatus(request); + return JSON.toJSONString(feedback.getHeader()); + } + + @Override + public String emergencyStop(EdgeCommonVO edgeCommonVO) { + String terminalId = edgeCommonVO.getTerminalId(); + String deviceId = edgeCommonVO.getDeviceId(); + BioHeadServiceGrpc.BioHeadServiceBlockingStub stub = grpcServiceManager.getGrpcClient(terminalId, BioHeadServiceGrpc.BioHeadServiceBlockingStub.class); + + // 请求头 + Common.CommandHeader.Request header = EdgeCommonUtil.buildRequest(deviceId); + + BioheadCommand.EmergencyStop.Request request = BioheadCommand.EmergencyStop.Request.newBuilder() + .setHeader(header) + .build(); + BioheadCommand.EmergencyStop.Feedback feedback = stub.emergencyStop(request); + return JSON.toJSONString(feedback.getHeader()); + } +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/impl/EdgeCameraServiceImpl.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/impl/EdgeCameraServiceImpl.java new file mode 100644 index 0000000..52aa16d --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/impl/EdgeCameraServiceImpl.java @@ -0,0 +1,378 @@ +package com.cmvr.edge.client.service.impl; + +import cmvr.api.CameraCommand; +import cmvr.api.CameraServiceGrpc; +import cmvr.api.Common; +import cn.hutool.core.io.FileUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson2.JSON; +import com.cmvr.common.enums.FileType; +import com.cmvr.common.exception.GlobalException; +import com.cmvr.edge.client.file.ByteArrayMultipartFile; +import com.cmvr.edge.client.manage.GrpcServiceManager; +import com.cmvr.edge.client.service.EdgeCameraService; +import com.cmvr.edge.client.service.EdgeStreamService; +import com.cmvr.edge.client.utils.H265DecoderUtil; +import com.cmvr.framework.websocket.service.MessagePushService; +import com.cmvr.system.service.ISysFileService; +import com.google.protobuf.ByteString; +import com.google.protobuf.Timestamp; +import io.grpc.stub.StreamObserver; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.MediaType; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import javax.imageio.ImageIO; +import java.awt.*; +import java.awt.color.ColorSpace; +import java.awt.image.BufferedImage; +import java.awt.image.ColorModel; +import java.awt.image.ComponentColorModel; +import java.awt.image.DataBuffer; +import java.awt.image.DataBufferByte; +import java.awt.image.Raster; +import java.awt.image.WritableRaster; +import java.io.ByteArrayOutputStream; +import java.io.DataOutputStream; +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.Base64; +import java.util.List; + + +@Slf4j +@Service +@RequiredArgsConstructor +public class EdgeCameraServiceImpl implements EdgeCameraService, EdgeStreamService { + + private final GrpcServiceManager grpcServiceManager; + private final ISysFileService sysFileService; + + private final MessagePushService messagePushService; + + @Override + public CameraCommand.CameraState status(String terminalId, String deviceId) { + CameraServiceGrpc.CameraServiceBlockingStub stub = grpcServiceManager.getGrpcClient(terminalId, CameraServiceGrpc.CameraServiceBlockingStub.class); + CameraCommand.GetCameraStateCommand.Request request = CameraCommand.GetCameraStateCommand.Request.newBuilder() + .setHeader(buildRequest(deviceId)) + .build(); + return executeGrpcCall(() -> stub.getStatus(request)).getState(); + } + + @Override + public boolean checkStatus(String terminalId, String deviceId) { + CameraCommand.CameraState state = status(terminalId, deviceId); + if (state.getIsError()) { + throw new GlobalException("Camera is in error state"); + } + return state.getIsOpened() && state.getIsStreaming(); + } + + @Override + public String start(String terminalId, String deviceId) { + CameraServiceGrpc.CameraServiceBlockingStub stub = grpcServiceManager.getGrpcClient(terminalId, CameraServiceGrpc.CameraServiceBlockingStub.class); + CameraCommand.StartCameraCommand.Request request = CameraCommand.StartCameraCommand.Request.newBuilder() + .setHeader(buildRequest(deviceId)) + .build(); + Common.CommandHeader.Feedback header = executeGrpcCall(() -> stub.startCamera(request)).getHeader(); + return JSON.toJSONString(header); + } + + @Override + public String stop(String terminalId, String deviceId) { + CameraServiceGrpc.CameraServiceBlockingStub stub = grpcServiceManager.getGrpcClient(terminalId, CameraServiceGrpc.CameraServiceBlockingStub.class); + CameraCommand.StopCameraCommand.Request request = CameraCommand.StopCameraCommand.Request.newBuilder() + .setHeader(buildRequest(deviceId)) + .build(); + Common.CommandHeader.Feedback header = executeGrpcCall(() -> stub.stopCamera(request)).getHeader(); + return JSON.toJSONString(header); + } + + @Override + public String getRGBImage(String terminalId, String deviceId) { + + if (!checkStatus(terminalId, deviceId)) { + start(terminalId, deviceId); + } + CameraServiceGrpc.CameraServiceBlockingStub stub = grpcServiceManager.getGrpcClient(terminalId, CameraServiceGrpc.CameraServiceBlockingStub.class); + CameraCommand.GetRGBImageCommand.Request request = CameraCommand.GetRGBImageCommand.Request.newBuilder() + .setHeader(buildRequest(deviceId)) + .build(); + CameraCommand.GetRGBImageCommand.Feedback feedback = executeGrpcCall(() -> stub.getRGBImage(request)); + CameraCommand.FrameData frame = feedback.getColorFrame(); + if (!feedback.hasColorFrame() || frame.getWidth() <= 0 || frame.getHeight() <= 0) { + throw new GlobalException("响应图片数据无效"); + } + String filePath = saveImage(frame.getData(), frame.getWidth(), frame.getHeight()); + try { + MultipartFile file = convertFileToMultipartFile(filePath); + return sysFileService.uploadFile(file, FileType.IMAGE.code()); + } catch (IOException e) { + throw new GlobalException("图片上传失败: " + e.getMessage()); + } finally { + deleteTempFile(filePath); +// todo 暂时不关闭摄像头 +// stop(terminalId, deviceId); + } + } + + @Override + public String startRecording(String terminalId, String deviceId) { + if (!checkStatus(terminalId, deviceId)) { + start(terminalId, deviceId); + } + CameraServiceGrpc.CameraServiceBlockingStub stub = grpcServiceManager.getGrpcClient(terminalId, CameraServiceGrpc.CameraServiceBlockingStub.class); + String videoPath = StrUtil.format("{}/{}_{}.mp4", "/home/share/assets/video", deviceId, System.currentTimeMillis()); + + CameraCommand.StartCameraRecordingCommand.Request request = CameraCommand.StartCameraRecordingCommand.Request.newBuilder() + .setHeader(buildRequest(deviceId)) + .setVideoPath(videoPath) + .build(); + executeGrpcCall(() -> stub.startRecording(request)); + return videoPath; + } + + @Override + public String stopRecording(String terminalId, String deviceId) { + CameraServiceGrpc.CameraServiceBlockingStub stub = grpcServiceManager.getGrpcClient(terminalId, CameraServiceGrpc.CameraServiceBlockingStub.class); + CameraCommand.StopCameraRecordingCommand.Request request = CameraCommand.StopCameraRecordingCommand.Request.newBuilder() + .setHeader(buildRequest(deviceId)) + .build(); + Common.CommandHeader.Feedback header = executeGrpcCall(() -> stub.stopRecording(request)).getHeader(); + return JSON.toJSONString(header); + } + + @Override + public String getRGBDImages(String terminalId, String deviceId) { + if (!checkStatus(terminalId, deviceId)) { + start(terminalId, deviceId); + } + + CameraServiceGrpc.CameraServiceBlockingStub stub = grpcServiceManager.getGrpcClient(terminalId, CameraServiceGrpc.CameraServiceBlockingStub.class); + CameraCommand.GetRGBDImagesCommand.Request request = CameraCommand.GetRGBDImagesCommand.Request.newBuilder() + .setHeader(buildRequest(deviceId)) + .build(); + CameraCommand.GetRGBDImagesCommand.Feedback feedback = executeGrpcCall(() -> stub.getRGBDImages(request)); + + return JSON.toJSONString(feedback); + } + + // 缓冲区和收集状态 + private final List framesBuffer = new ArrayList<>(); + private boolean isCollectingFrames = false; + + @Override + public StreamObserver getRGBImageStream(String terminalId, String deviceId) { + if (!checkStatus(terminalId, deviceId)) { + start(terminalId, deviceId); + } + CameraServiceGrpc.CameraServiceStub stub = grpcServiceManager.getGrpcClient(terminalId, CameraServiceGrpc.CameraServiceStub.class); + // 创建StreamObserver来处理响应 + StreamObserver responseObserver = new StreamObserver() { + @Override + public void onNext(CameraCommand.GetRGBImageStreamCommand.Feedback value) { + CameraCommand.FrameData frame = value.getColorFrame(); + byte[] frameData = frame.getData().toByteArray(); + + if (frame.getIsKeyFrame()) { // I帧 + if (isCollectingFrames) { + // 处理之前的缓冲区数据 + String videoBase64 = H265DecoderUtil.convertH265FramesToVideo(framesBuffer); + if (videoBase64 != null) { + messagePushService.pushToChannel( + "edgeCameraServiceImpl/getRGBImageStream/" + terminalId + "/" + deviceId, + videoBase64 + ); + } + // 重置缓冲区 + framesBuffer.clear(); + } + // 开始新收集段 + framesBuffer.add(frameData); + isCollectingFrames = true; + } else { + // 非I帧且正在收集时加入缓冲区 + if (isCollectingFrames) { + framesBuffer.add(frameData); + } + } + } + + @Override + public void onError(Throwable t) { + // 记录详细的错误信息 + log.error("Error occurred in getRGBImageStream for terminalId: {}, deviceId: {}. Error: {}", terminalId, deviceId, t.getMessage(), t); + // 推送错误信息 + messagePushService.pushToChannel("edgeCameraServiceImpl/getRGBImageStream/" + terminalId + "/" + deviceId, "500"); + } + + @Override + public void onCompleted() { + // 流结束 + System.out.println("Stream completed."); + } + }; + // 创建StreamObserver来发送请求 + StreamObserver requestObserver = stub.getRGBImageStream(responseObserver); + + // 构建请求并发送 + CameraCommand.GetRGBImageStreamCommand.Request request = CameraCommand.GetRGBImageStreamCommand.Request.newBuilder() + .setHeader(buildRequest(deviceId)) + .setEof(false) + .build(); + + requestObserver.onNext(request); + return requestObserver; + + } + + @Override + public void getDepthImageStream(String terminalId, String deviceId) { + + } + + @Override + public void getRGBDImagesStream(String terminalId, String deviceId) { + + } + + private static Common.CommandHeader.Request buildRequest(String deviceId) { + return Common.CommandHeader.Request.newBuilder() + .setDeviceId(deviceId) + .setTimestamp( + Timestamp.newBuilder() + .setSeconds(System.currentTimeMillis() / 1000) + .build() + ) + .build(); + } + + @FunctionalInterface + private interface GrpcCall { + T call() throws Exception; + } + + private T executeGrpcCall(GrpcCall call) { + try { + return call.call(); + } catch (Exception e) { + throw new GlobalException("gRPC 调用失败: " + e.getMessage()); + } + } + + private String rgbToBase64Bmp(byte[] rgbData, int width, int height) throws IOException { + int rowSize = (width * 3 + 3) & ~3; // BMP 行对齐 + int imageSize = rowSize * height; + int fileSize = 54 + imageSize; + + ByteArrayOutputStream baos = new ByteArrayOutputStream(fileSize); + DataOutputStream dos = new DataOutputStream(baos); + + // BMP Header + dos.writeBytes("BM"); + dos.writeInt(Integer.reverseBytes(fileSize)); + dos.writeInt(0); + dos.writeInt(Integer.reverseBytes(54)); + + // DIB Header + dos.writeInt(Integer.reverseBytes(40)); + dos.writeInt(Integer.reverseBytes(width)); + dos.writeInt(Integer.reverseBytes(height)); + dos.writeShort(Short.reverseBytes((short) 1)); + dos.writeShort(Short.reverseBytes((short) 24)); + dos.writeInt(0); + dos.writeInt(Integer.reverseBytes(imageSize)); + dos.writeInt(0); + dos.writeInt(0); + dos.writeInt(0); + dos.writeInt(0); + + // Pixel Data (BMP 是 BGR 顺序,从下往上存储) + for (int y = height - 1; y >= 0; y--) { + int rowStart = y * width * 3; + for (int x = 0; x < width; x++) { + int pixelStart = rowStart + x * 3; + dos.write(rgbData[pixelStart + 0]); // B + dos.write(rgbData[pixelStart + 1]); // G + dos.write(rgbData[pixelStart + 2]); // R + } + // 行填充 + for (int i = width * 3; i < rowSize; i++) { + dos.write(0); + } + } + + byte[] bmpBytes = baos.toByteArray(); + return Base64.getEncoder().encodeToString(bmpBytes); + } + + /** + * 临时保存图片 + */ + private String saveImage(ByteString pixelData, int width, int height) { + File tempDir = new File(System.getProperty("java.io.tmpdir")); + FileUtil.mkdir(tempDir); + + // 生成唯一文件名(时间戳) + String fileName = System.currentTimeMillis() + ".jpg"; + String filePath = Paths.get(tempDir.getAbsolutePath(), fileName).toString(); + try { + byte[] pixels = pixelData.toByteArray(); + + // 每个像素 3 字节(R, G, B),按行排列 + DataBuffer buffer = new DataBufferByte(pixels, pixels.length); + + // 每像素 3 字节,每行 stride 是 3 * width + WritableRaster raster = Raster.createInterleavedRaster( + buffer, width, height, 3 * width, 3, + new int[]{2, 1, 0}, null + ); + + ColorModel colorModel = new ComponentColorModel( + ColorSpace.getInstance(ColorSpace.CS_sRGB), + false, false, + Transparency.OPAQUE, + DataBuffer.TYPE_BYTE + ); + + BufferedImage image = new BufferedImage(colorModel, raster, false, null); + File output = new File(filePath); + ImageIO.write(image, "jpg", output); + } catch (IOException e) { + throw new GlobalException(e.getMessage()); + } + return filePath; + } + + /** + * 将本地文件转换为 MultipartFile + */ + private MultipartFile convertFileToMultipartFile(String filePath) throws IOException { + File file = new File(filePath); + byte[] content = Files.readAllBytes(file.toPath()); + + return new ByteArrayMultipartFile( + file.getName(), + file.getName(), + MediaType.IMAGE_JPEG_VALUE, + content + ); + } + + /** + * 删除临时文件 + */ + private void deleteTempFile(String filePath) { + if (StrUtil.isNotEmpty(filePath)) { + File file = new File(filePath); + if (FileUtil.exist(file) && !FileUtil.del(file)) { + log.warn("临时文件删除失败, 路径:{}", filePath); + } + } + } +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/impl/EdgeDexHandServiceImpl.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/impl/EdgeDexHandServiceImpl.java new file mode 100644 index 0000000..8fae70a --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/impl/EdgeDexHandServiceImpl.java @@ -0,0 +1,125 @@ +package com.cmvr.edge.client.service.impl; + +import cmvr.api.DexHandServiceGrpc; +import cmvr.api.DexhandCommand; +import com.alibaba.fastjson2.JSON; +import com.cmvr.common.exception.GlobalException; +import com.cmvr.edge.client.manage.GrpcServiceManager; +import com.cmvr.edge.client.service.EdgeDexHandService; +import com.cmvr.edge.client.service.EdgeStreamService; +import com.cmvr.edge.client.utils.EdgeCommonUtil; +import com.cmvr.framework.websocket.service.MessagePushService; +import io.grpc.stub.StreamObserver; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +@Slf4j +@Service +@RequiredArgsConstructor +public class EdgeDexHandServiceImpl implements EdgeDexHandService, EdgeStreamService { + + private final GrpcServiceManager grpcServiceManager; + + private final MessagePushService messagePushService; + + @Override + public DexhandCommand.DexHandState getStatus(String terminalId, String deviceId) { + DexHandServiceGrpc.DexHandServiceBlockingStub stub = grpcServiceManager.getGrpcClient(terminalId, DexHandServiceGrpc.DexHandServiceBlockingStub.class); + DexhandCommand.GetDexHandStateCommand.Request request = DexhandCommand.GetDexHandStateCommand.Request.newBuilder() + .setHeader(EdgeCommonUtil.buildRequest(deviceId)) + .build(); + return executeGrpcCall(() -> stub.getStatus(request)).getState(); + } + + @Override + public void setDexHandPos(String terminalId, String deviceId) { + + } + + @Override + public void setDexHandAngle(String terminalId, String deviceId, int id, float value) { + DexHandServiceGrpc.DexHandServiceBlockingStub stub = grpcServiceManager.getGrpcClient(terminalId, DexHandServiceGrpc.DexHandServiceBlockingStub.class); + DexhandCommand.FreedomValue.Builder builder = DexhandCommand.FreedomValue.newBuilder(); + builder.setId(id); + builder.setValue(value); + DexhandCommand.SetDexHandAnglesCommand.Request request = DexhandCommand.SetDexHandAnglesCommand.Request.newBuilder() + .setHeader(EdgeCommonUtil.buildRequest(deviceId)) + .addValues(builder.build()) + .build(); + executeGrpcCall(() -> stub.setDexHandAngle(request)); + } + + @Override + public void setDexHandForce(String terminalId, String deviceId) { + + } + + @Override + public void setDexHandSpeed(String terminalId, String deviceId) { + + } + + @Override + public void setDexHandPresetAct(String terminalId, String deviceId) { + + } + + @Override + public String getSensorData(String terminalId, String deviceId) { + DexHandServiceGrpc.DexHandServiceBlockingStub stub = grpcServiceManager.getGrpcClient(terminalId, DexHandServiceGrpc.DexHandServiceBlockingStub.class); + DexhandCommand.GetSensorDataCommand.Request request = DexhandCommand.GetSensorDataCommand.Request.newBuilder() + .setHeader(EdgeCommonUtil.buildRequest(deviceId)) + .build(); + DexhandCommand.GetSensorDataCommand.Feedback feedback = executeGrpcCall(() -> stub.getSensorData(request)); + return JSON.toJSONString(feedback); + } + + @Override + public StreamObserver getSensorDataStream(String terminalId, String deviceId) { + DexHandServiceGrpc.DexHandServiceStub stub = grpcServiceManager.getGrpcClient(terminalId, DexHandServiceGrpc.DexHandServiceStub.class); + StreamObserver responseObserver = new StreamObserver() { + @Override + public void onNext(DexhandCommand.GetSensorDataStreamCommand.Feedback value) { + // 例如,将传感器数据转换为JSON字符串 + String playLoad = JSON.toJSONString(value.getSensorList()); + messagePushService.pushToChannel("edgeDexHandServiceImpl/getSensorDataStream/" + terminalId + "/" + deviceId, playLoad); + } + + @Override + public void onError(Throwable t) { + // 处理错误 + System.err.println("Error: " + t.getMessage()); + } + + @Override + public void onCompleted() { + // 流结束 + System.out.println("Stream completed."); + } + }; + // 创建StreamObserver来发送请求 + StreamObserver requestObserver = stub.getSensorDataStream(responseObserver); + // 构建请求并发送 + DexhandCommand.GetSensorDataStreamCommand.Request request = DexhandCommand.GetSensorDataStreamCommand.Request.newBuilder() + .setHeader(EdgeCommonUtil.buildRequest(deviceId)) + .build(); + requestObserver.onNext(request); + return requestObserver; + + } + + @FunctionalInterface + private interface GrpcCall { + T call() throws Exception; + } + + private T executeGrpcCall(EdgeDexHandServiceImpl.GrpcCall call) { + try { + return call.call(); + } catch (Exception e) { + throw new GlobalException("gRPC 调用失败: " + e.getMessage()); + } + } + +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/impl/EdgeMicrophoneServiceImpl.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/impl/EdgeMicrophoneServiceImpl.java new file mode 100644 index 0000000..1ef979b --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/impl/EdgeMicrophoneServiceImpl.java @@ -0,0 +1,240 @@ +package com.cmvr.edge.client.service.impl; + +import cmvr.api.Common; +import cmvr.api.MicrophoneCommand; +import cmvr.api.MicPhoneServiceGrpc; +import com.cmvr.edge.client.manage.GrpcServiceManager; +import com.cmvr.edge.client.service.EdgeMicrophoneService; +import io.grpc.ManagedChannel; +import lombok.RequiredArgsConstructor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import com.google.protobuf.Timestamp; + +/** + * 边缘麦克风服务实现类 + * 用于与边缘麦克风进行gRPC通信,控制麦克风录音和状态 + * 实现了EdgeMicrophoneService接口,提供了麦克风控制的所有基本功能 + */ +@Service +@RequiredArgsConstructor +public class EdgeMicrophoneServiceImpl implements EdgeMicrophoneService { + /** + * 日志记录器 + * 用于记录服务运行过程中的各种状态和错误信息 + */ + private static final Logger logger = LoggerFactory.getLogger(EdgeMicrophoneServiceImpl.class); + + /** + * gRPC服务管理器 + * 用于管理和获取gRPC客户端连接 + */ + private final GrpcServiceManager grpcServiceManager; + + /** + * 构建请求头 + */ + private static Common.CommandHeader.Request buildRequest(String deviceId) { + return Common.CommandHeader.Request.newBuilder() + .setDeviceId(deviceId) + .setTimestamp( + Timestamp.newBuilder() + .setSeconds(System.currentTimeMillis() / 1000) + .build() + ) + .build(); + } + + /** + * 获取麦克风当前状态 + * 通过gRPC调用获取麦克风的运行状态,包括是否正在录音、音量等信息 + * + * @param terminalId 终端设备ID + * @param deviceId 设备ID + * @return MicState 返回麦克风的当前状态 + * @throws RuntimeException 当gRPC调用失败时抛出异常 + */ + @Override + public MicrophoneCommand.GetMicStateCommand.Feedback getStatus(String terminalId, String deviceId) { + try { + MicPhoneServiceGrpc.MicPhoneServiceBlockingStub stub = grpcServiceManager.getGrpcClient(terminalId, MicPhoneServiceGrpc.MicPhoneServiceBlockingStub.class); + MicrophoneCommand.GetMicStateCommand.Request request = MicrophoneCommand.GetMicStateCommand.Request.newBuilder() + .setHeader(buildRequest(deviceId)) + .build(); + // 直接返回完整的 Feedback + return stub.getStatus(request); + } catch (Exception e) { + logger.error("获取麦克风状态失败", e); + throw new RuntimeException("获取麦克风状态失败", e); + } + } + + /** + * 开始录音 + * 通过gRPC调用开始录音,将录音保存到指定路径 + * + * @param terminalId 终端设备ID + * @param deviceId 设备ID + * @param filePath 录音文件的保存路径 + * @throws RuntimeException 当gRPC调用失败时抛出异常 + */ + @Override + public void startRecord(String terminalId, String deviceId, String filePath) { + try { + // 获取gRPC客户端存根 + MicPhoneServiceGrpc.MicPhoneServiceBlockingStub stub = grpcServiceManager.getGrpcClient(terminalId, MicPhoneServiceGrpc.MicPhoneServiceBlockingStub.class); + + // 构建请求消息 + MicrophoneCommand.StartMicRecordingCommand.Request request = MicrophoneCommand.StartMicRecordingCommand.Request.newBuilder() + .setHeader(buildRequest(deviceId)) + .setFilePath(filePath) + .build(); + + // 发送请求 + stub.startRecord(request); + } catch (Exception e) { + logger.error("开始录音失败", e); + throw new RuntimeException("开始录音失败", e); + } + } + + /** + * 停止录音 + * 通过gRPC调用停止麦克风的当前录音 + * + * @param terminalId 终端设备ID + * @param deviceId 设备ID + * @throws RuntimeException 当gRPC调用失败时抛出异常 + */ + @Override + public void stopRecord(String terminalId, String deviceId) { + try { + // 获取gRPC客户端存根 + MicPhoneServiceGrpc.MicPhoneServiceBlockingStub stub = grpcServiceManager.getGrpcClient(terminalId, MicPhoneServiceGrpc.MicPhoneServiceBlockingStub.class); + + // 构建请求消息 + MicrophoneCommand.StopMicRecordingCommand.Request request = MicrophoneCommand.StopMicRecordingCommand.Request.newBuilder() + .setHeader(buildRequest(deviceId)) + .build(); + + // 发送请求 + stub.stopRecord(request); + } catch (Exception e) { + logger.error("停止录音失败", e); + throw new RuntimeException("停止录音失败", e); + } + } + + /** + * 暂停录音 + * 通过gRPC调用暂停麦克风的当前录音 + * + * @param terminalId 终端设备ID + * @param deviceId 设备ID + * @throws RuntimeException 当gRPC调用失败时抛出异常 + */ + @Override + public void pauseRecord(String terminalId, String deviceId) { + try { + // 获取gRPC客户端存根 + MicPhoneServiceGrpc.MicPhoneServiceBlockingStub stub = grpcServiceManager.getGrpcClient(terminalId, MicPhoneServiceGrpc.MicPhoneServiceBlockingStub.class); + + // 构建请求消息 + MicrophoneCommand.PauseMicRecordingCommand.Request request = MicrophoneCommand.PauseMicRecordingCommand.Request.newBuilder() + .setHeader(buildRequest(deviceId)) + .build(); + + // 发送请求 + stub.pauseRecord(request); + } catch (Exception e) { + logger.error("暂停录音失败", e); + throw new RuntimeException("暂停录音失败", e); + } + } + + /** + * 恢复录音 + * 通过gRPC调用恢复麦克风之前暂停的录音 + * + * @param terminalId 终端设备ID + * @param deviceId 设备ID + * @throws RuntimeException 当gRPC调用失败时抛出异常 + */ + @Override + public void resumeRecord(String terminalId, String deviceId) { + try { + // 获取gRPC客户端存根 + MicPhoneServiceGrpc.MicPhoneServiceBlockingStub stub = grpcServiceManager.getGrpcClient(terminalId, MicPhoneServiceGrpc.MicPhoneServiceBlockingStub.class); + + // 构建请求消息 + MicrophoneCommand.ResumeMicRecordingCommand.Request request = MicrophoneCommand.ResumeMicRecordingCommand.Request.newBuilder() + .setHeader(buildRequest(deviceId)) + .build(); + + // 发送请求 + stub.resumeRecord(request); + } catch (Exception e) { + logger.error("恢复录音失败", e); + throw new RuntimeException("恢复录音失败", e); + } + } + + /** + * 设置麦克风音量 + * 通过gRPC调用设置麦克风的音量大小 + * + * @param terminalId 终端设备ID + * @param deviceId 设备ID + * @param volume 音量大小(0-100) + * @throws RuntimeException 当gRPC调用失败时抛出异常 + */ + @Override + public void setVolume(String terminalId, String deviceId, int volume) { + try { + // 获取gRPC客户端存根 + MicPhoneServiceGrpc.MicPhoneServiceBlockingStub stub = grpcServiceManager.getGrpcClient(terminalId, MicPhoneServiceGrpc.MicPhoneServiceBlockingStub.class); + + // 构建请求消息 + MicrophoneCommand.SetMicPhoneVolumeCommand.Request request = MicrophoneCommand.SetMicPhoneVolumeCommand.Request.newBuilder() + .setHeader(buildRequest(deviceId)) + .setVolume(volume) + .build(); + + // 发送请求 + stub.setVolume(request); + } catch (Exception e) { + logger.error("设置麦克风音量失败", e); + throw new RuntimeException("设置麦克风音量失败", e); + } + } + + /** + * 获取当前音量 + * 通过gRPC调用获取麦克风的当前音量大小 + * + * @param terminalId 终端设备ID + * @param deviceId 设备ID + * @return int 返回当前音量大小(0-100) + * @throws RuntimeException 当gRPC调用失败时抛出异常 + */ + @Override + public int getVolume(String terminalId, String deviceId) { + try { + // 获取gRPC客户端存根 + MicPhoneServiceGrpc.MicPhoneServiceBlockingStub stub = grpcServiceManager.getGrpcClient(terminalId, MicPhoneServiceGrpc.MicPhoneServiceBlockingStub.class); + + // 构建请求消息 + MicrophoneCommand.GetMicPhoneVolumeCommand.Request request = MicrophoneCommand.GetMicPhoneVolumeCommand.Request.newBuilder() + .setHeader(buildRequest(deviceId)) + .build(); + + // 发送请求并获取响应 + MicrophoneCommand.GetMicPhoneVolumeCommand.Feedback response = stub.getVolume(request); + return response.getVolume(); + } catch (Exception e) { + logger.error("获取麦克风音量失败", e); + throw new RuntimeException("获取麦克风音量失败", e); + } + } +} \ No newline at end of file diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/impl/EdgeSpeakerServiceImpl.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/impl/EdgeSpeakerServiceImpl.java new file mode 100644 index 0000000..05f2508 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/impl/EdgeSpeakerServiceImpl.java @@ -0,0 +1,261 @@ +package com.cmvr.edge.client.service.impl; + +import cmvr.api.Common; +import cmvr.api.SpeakerCommand; +import cmvr.api.SpeakerServiceGrpc; +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.cmvr.edge.client.manage.GrpcServiceManager; +import com.cmvr.edge.client.service.EdgeSpeakerService; +import com.google.protobuf.Timestamp; +import lombok.RequiredArgsConstructor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 边缘扬声器服务实现类 + * 用于与边缘扬声器进行gRPC通信,控制扬声器播放和状态 + * 实现了EdgeSpeakerService接口,提供了扬声器控制的所有基本功能 + */ +@Service +@RequiredArgsConstructor +public class EdgeSpeakerServiceImpl implements EdgeSpeakerService { + /** + * 日志记录器 + * 用于记录服务运行过程中的各种状态和错误信息 + */ + private static final Logger logger = LoggerFactory.getLogger(EdgeSpeakerServiceImpl.class); + + /** + * gRPC服务管理器 + * 用于管理和获取gRPC客户端连接 + */ + private final GrpcServiceManager grpcServiceManager; + + /** + * 构建请求头 + */ + private static Common.CommandHeader.Request buildRequest(String deviceId) { + return Common.CommandHeader.Request.newBuilder() + .setDeviceId(deviceId) + .setTimestamp( + Timestamp.newBuilder() + .setSeconds(System.currentTimeMillis() / 1000) + .build() + ) + .build(); + } + + /** + * 获取扬声器当前状态 + * 通过gRPC调用获取扬声器的运行状态,包括是否正在播放、音量等信息 + * + * @param terminalId 终端设备ID + * @param deviceId 设备ID + * @return SpeakerState 返回扬声器的当前状态 + * @throws RuntimeException 当gRPC调用失败时抛出异常 + */ + @Override + public SpeakerCommand.GetSpeakerStateCommand.Feedback getStatus(String terminalId, String deviceId) { + try { + SpeakerServiceGrpc.SpeakerServiceBlockingStub stub = grpcServiceManager.getGrpcClient(terminalId, SpeakerServiceGrpc.SpeakerServiceBlockingStub.class); + SpeakerCommand.GetSpeakerStateCommand.Request request = SpeakerCommand.GetSpeakerStateCommand.Request.newBuilder() + .setHeader(buildRequest(deviceId)) + .build(); + // 直接返回完整的 Feedback + return stub.getStatus(request); + } catch (Exception e) { + logger.error("获取扬声器状态失败", e); + throw new RuntimeException("获取扬声器状态失败", e); + } + } + + /** + * 播放音频文件 + * 通过gRPC调用播放指定路径的音频文件 + * + * @param terminalId 终端设备ID + * @param deviceId 设备ID + * @param audioPath 音频文件的路径 + * @throws RuntimeException 当gRPC调用失败时抛出异常 + */ + @Override + public void playAudio(String terminalId, String deviceId, String audioPath) { + try { + // 获取gRPC客户端存根 + SpeakerServiceGrpc.SpeakerServiceBlockingStub stub = grpcServiceManager.getGrpcClient(terminalId, SpeakerServiceGrpc.SpeakerServiceBlockingStub.class); + + // 构建请求消息 + SpeakerCommand.PlayAudioCommand.Request request = SpeakerCommand.PlayAudioCommand.Request.newBuilder() + .setHeader(buildRequest(deviceId)) + .setAudioPath(audioPath) + .build(); + + // 发送请求 + SpeakerCommand.PlayAudioCommand.Feedback feedback = stub.playAudio(request); + if (!feedback.getHeader().getSuccess()) { + throw new RuntimeException((feedback.getHeader().getErrorMessage())); + } + } catch (Exception e) { + logger.error("播放音频失败", e); + throw new RuntimeException("播放音频失败", e); + } + } + + /** + * 停止当前播放 + * 通过gRPC调用停止扬声器的当前播放 + * + * @param terminalId 终端设备ID + * @param deviceId 设备ID + * @throws RuntimeException 当gRPC调用失败时抛出异常 + */ + @Override + public void stopPlayback(String terminalId, String deviceId) { + try { + // 获取gRPC客户端存根 + SpeakerServiceGrpc.SpeakerServiceBlockingStub stub = grpcServiceManager.getGrpcClient(terminalId, SpeakerServiceGrpc.SpeakerServiceBlockingStub.class); + + // 构建请求消息 + SpeakerCommand.StopSpeakerCommand.Request request = SpeakerCommand.StopSpeakerCommand.Request.newBuilder() + .setHeader(buildRequest(deviceId)) + .build(); + + // 发送请求 + stub.stopPlayback(request); + } catch (Exception e) { + logger.error("停止播放失败", e); + throw new RuntimeException("停止播放失败", e); + } + } + + /** + * 暂停当前播放 + * 通过gRPC调用暂停扬声器的当前播放 + * + * @param terminalId 终端设备ID + * @param deviceId 设备ID + * @throws RuntimeException 当gRPC调用失败时抛出异常 + */ + @Override + public void pausePlayback(String terminalId, String deviceId) { + try { + // 获取gRPC客户端存根 + SpeakerServiceGrpc.SpeakerServiceBlockingStub stub = grpcServiceManager.getGrpcClient(terminalId, SpeakerServiceGrpc.SpeakerServiceBlockingStub.class); + + // 构建请求消息 + SpeakerCommand.PauseSpeakerCommand.Request request = SpeakerCommand.PauseSpeakerCommand.Request.newBuilder() + .setHeader(buildRequest(deviceId)) + .build(); + + // 发送请求 + stub.pausePlayback(request); + } catch (Exception e) { + logger.error("暂停播放失败", e); + throw new RuntimeException("暂停播放失败", e); + } + } + + /** + * 恢复暂停的播放 + * 通过gRPC调用恢复扬声器之前暂停的播放 + * + * @param terminalId 终端设备ID + * @param deviceId 设备ID + * @throws RuntimeException 当gRPC调用失败时抛出异常 + */ + @Override + public void resumePlayback(String terminalId, String deviceId) { + try { + // 获取gRPC客户端存根 + SpeakerServiceGrpc.SpeakerServiceBlockingStub stub = grpcServiceManager.getGrpcClient(terminalId, SpeakerServiceGrpc.SpeakerServiceBlockingStub.class); + + // 构建请求消息 + SpeakerCommand.ResumeSpeakerCommand.Request request = SpeakerCommand.ResumeSpeakerCommand.Request.newBuilder() + .setHeader(buildRequest(deviceId)) + .build(); + + // 发送请求 + stub.resumePlayback(request); + } catch (Exception e) { + logger.error("恢复播放失败", e); + throw new RuntimeException("恢复播放失败", e); + } + } + + /** + * 设置扬声器音量 + * 通过gRPC调用设置扬声器的音量大小 + * + * @param terminalId 终端设备ID + * @param deviceId 设备ID + * @param volume 音量大小(0-100) + * @throws RuntimeException 当gRPC调用失败时抛出异常 + */ + @Override + public void setVolume(String terminalId, String deviceId, int volume) { + try { + // 获取gRPC客户端存根 + SpeakerServiceGrpc.SpeakerServiceBlockingStub stub = grpcServiceManager.getGrpcClient(terminalId, SpeakerServiceGrpc.SpeakerServiceBlockingStub.class); + + // 构建请求消息 + SpeakerCommand.SetSpeakerVolumeCommand.Request request = SpeakerCommand.SetSpeakerVolumeCommand.Request.newBuilder() + .setHeader(buildRequest(deviceId)) + .setVolume(volume) + .build(); + + // 发送请求 + stub.setVolume(request); + } catch (Exception e) { + logger.error("设置音量失败", e); + throw new RuntimeException("设置音量失败", e); + } + } + + /** + * 获取当前音量 + * 通过gRPC调用获取扬声器的当前音量大小 + * + * @param terminalId 终端设备ID + * @param deviceId 设备ID + * @return int 返回当前音量大小(0-100) + * @throws RuntimeException 当gRPC调用失败时抛出异常 + */ + @Override + public int getVolume(String terminalId, String deviceId) { + try { + // 获取gRPC客户端存根 + SpeakerServiceGrpc.SpeakerServiceBlockingStub stub = grpcServiceManager.getGrpcClient(terminalId, SpeakerServiceGrpc.SpeakerServiceBlockingStub.class); + + // 构建请求消息 + SpeakerCommand.GetSpeakerVolumeCommand.Request request = SpeakerCommand.GetSpeakerVolumeCommand.Request.newBuilder() + .setHeader(buildRequest(deviceId)) + .build(); + + // 发送请求并获取响应 + SpeakerCommand.GetSpeakerVolumeCommand.Feedback response = stub.getVolume(request); + return response.getVolume(); + } catch (Exception e) { + logger.error("获取音量失败", e); + throw new RuntimeException("获取音量失败", e); + } + } + + @Override + public List getAll() { + // 获取文件名 + String url = "http://10.148.108.162:8981/files/"; + HttpResponse response = HttpRequest.get(url) + .timeout(5000) + .execute().charset("UTF-8"); + String body = response.body(); + JSONObject object = JSON.parseObject(body); + + return object.getList("files", String.class); + } +} \ No newline at end of file diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/impl/EdgeSystemServiceImpl.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/impl/EdgeSystemServiceImpl.java new file mode 100644 index 0000000..25c4ebb --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/impl/EdgeSystemServiceImpl.java @@ -0,0 +1,114 @@ +package com.cmvr.edge.client.service.impl; + +import cmvr.api.SystemCommand; +import cmvr.api.SystemServiceGrpc; +import com.cmvr.device.domain.DeDeviceRegistration; +import com.cmvr.device.domain.vo.Device; +import com.cmvr.edge.client.manage.GrpcServiceManager; +import com.cmvr.edge.client.service.EdgeSystemService; +import io.grpc.ManagedChannel; +import lombok.RequiredArgsConstructor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; + +/** + * 边缘系统服务实现类 + * 用于与边缘系统进行gRPC通信,获取系统状态信息 + */ +@Service +@RequiredArgsConstructor +public class EdgeSystemServiceImpl implements EdgeSystemService { + /** + * 日志记录器 + */ + private static final Logger logger = LoggerFactory.getLogger(EdgeSystemServiceImpl.class); + + private final GrpcServiceManager grpcServiceManager; + + + public List deviceList(String terminalId){ + + try { + //调用接口获取返回值对象 + SystemCommand.GetSystemStatusCommand.Feedback response=getSystemStatus(terminalId); + + // 获取设备列表 + List deviceList = response.getDeviceListList(); + + // 如果设备列表不为空,则处理设备信息 + if (!deviceList.isEmpty()) { + // 创建Device对象列表,用于存储转换后的设备信息 + List devices = new ArrayList<>(); + + // 遍历设备列表,将每个设备信息转换为Device对象 + for (SystemCommand.DeviceList device : deviceList) { + DeDeviceRegistration d=new DeDeviceRegistration(); + // 设置设备ID + d.setDeviceCode(device.getDeviceId()); + // 设置设备类型,将枚举类型转换为字符串 + d.setDeviceModel(device.getDeviceType().name()); + // 设置设备的终端ID + d.setIdDeDeviceTerminalConfig(terminalId); + + devices.add(d); + } + + // 记录获取到的设备数量 + logger.info("获取到设备列表,数量:{}", devices.size()); + return devices; + } + + // 如果响应为空或设备列表为空,记录错误信息 + logger.error("获取系统状态失败: {}", response != null ? + (response.getHeader() != null ? response.getHeader().getErrorMessage() : "响应头为空") : "响应为空"); + return null; + + }catch (Exception e){ + // 捕获并记录调用过程中的异常 + logger.error("调用系统状态接口异常", e); + return null; + } + } + + + + /** + * 获取系统状态信息 + * 包括CPU使用率、内存使用情况、磁盘使用情况和设备列表等信息 + * + * @return 系统状态信息,如果获取失败则返回null + */ + @Override + public SystemCommand.GetSystemStatusCommand.Feedback getSystemStatus(String terminalId) { + try { + // 创建gRPC阻塞式存根,用于调用服务端方法 + SystemServiceGrpc.SystemServiceBlockingStub stub = grpcServiceManager.getGrpcClient( + terminalId, + SystemServiceGrpc.SystemServiceBlockingStub.class); + + // 构建请求对象,由于是获取系统状态,请求参数为空 + SystemCommand.GetSystemStatusCommand.Request request = SystemCommand.GetSystemStatusCommand.Request.newBuilder().build(); + + // 调用服务端方法获取系统状态 + SystemCommand.GetSystemStatusCommand.Feedback response = stub.getSystemStatus(request); + + // 检查响应是否有效 + if (response != null) { + + return response; + } + + // 如果响应为空或设备列表为空,记录错误信息 + logger.error("获取系统状态失败: {}", response != null ? + (response.getHeader() != null ? response.getHeader().getErrorMessage() : "响应头为空") : "响应为空"); + return null; + } catch (Exception e) { + // 捕获并记录调用过程中的异常 + logger.error("调用系统状态接口异常", e); + return null; + } + } +} \ No newline at end of file diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/impl/GrpcClientServiceImpl.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/impl/GrpcClientServiceImpl.java new file mode 100644 index 0000000..8a8f48a --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/impl/GrpcClientServiceImpl.java @@ -0,0 +1,71 @@ +package com.cmvr.edge.client.service.impl; + +import com.cmvr.edge.client.manage.GrpcStreamManager; +import com.cmvr.edge.client.service.EdgeStreamService; +import com.cmvr.framework.websocket.service.GrpcClientService; +import io.grpc.Status; +import io.grpc.stub.StreamObserver; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.lang.reflect.Method; +import java.util.Map; + +/** + * grpc客户端服务实现类 + * 统一调度grpc流式接口 + */ +@Service +public class GrpcClientServiceImpl implements GrpcClientService { + + private static final Logger log = LoggerFactory.getLogger(GrpcClientServiceImpl.class); + + /** + * 所有流式服务 + */ + private final Map serviceMap; + + @Autowired + public GrpcClientServiceImpl(Map serviceMap) { + this.serviceMap = serviceMap; + } + + @Override + public void send(boolean isStart, String terminalId, String deviceId, String service, String method) { + try { + // 从 Map 中获取服务实例 + EdgeStreamService serviceInstance = serviceMap.get(service); + if (serviceInstance == null) { + throw new IllegalArgumentException("未知的service: " + service); + } + + // 构造流键 + String key = terminalId + deviceId + service + method; + + if (isStart) { + // 通过反射调用指定方法 + Method streamMethod = serviceInstance.getClass().getMethod(method, String.class, String.class); + StreamObserver streamObserver = (StreamObserver) streamMethod.invoke(serviceInstance, terminalId, deviceId); + if (streamObserver != null) { + GrpcStreamManager.addStream(key, streamObserver); + } + } else { + if (!GrpcStreamManager.containsKey(key)) { + return; + } + // 移除并关闭流 + StreamObserver streamObserver = GrpcStreamManager.removeStream(key); + try { + streamObserver.onError(Status.CANCELLED.withDescription("流需要关闭").asException()); + log.info("流关闭: {}", key); + } catch (Exception e) { + log.info("流结束"); + } + } + } catch (Exception e) { + log.error("调用服务失败{}", e.getMessage(), e); + } + } +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/utils/EdgeCommonUtil.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/utils/EdgeCommonUtil.java new file mode 100644 index 0000000..cb03ac8 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/utils/EdgeCommonUtil.java @@ -0,0 +1,27 @@ +package com.cmvr.edge.client.utils; + +import cmvr.api.Common; +import com.google.protobuf.Timestamp; + +/** + * 边缘系统通用工具类 + */ +public class EdgeCommonUtil { + + /** + * 构建边缘系统请求头 + * + * @param deviceId 设备ID + * @return 边缘系统服务请求头对象 + */ + public static Common.CommandHeader.Request buildRequest(String deviceId) { + return Common.CommandHeader.Request.newBuilder() + .setDeviceId(deviceId) + .setTimestamp( + Timestamp.newBuilder() + .setSeconds(System.currentTimeMillis() / 1000) + .build() + ) + .build(); + } +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/utils/H265DecoderUtil.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/utils/H265DecoderUtil.java new file mode 100644 index 0000000..a20f79d --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/utils/H265DecoderUtil.java @@ -0,0 +1,264 @@ +package com.cmvr.edge.client.utils; + +import org.bytedeco.ffmpeg.global.avcodec; +import org.bytedeco.javacv.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.imageio.ImageIO; +import java.awt.image.BufferedImage; +import java.io.*; +import java.nio.file.Files; +import java.util.Base64; +import java.util.List; +import java.util.concurrent.atomic.AtomicBoolean; + +public class H265DecoderUtil { + private static final Logger logger = LoggerFactory.getLogger(H265DecoderUtil.class); + private static final int PIPE_BUFFER_SIZE = 1024 * 1024; // 1MB 缓冲区 + private static final int GRABBER_TIMEOUT = 500_000; // 500ms 超时 + + private static volatile FFmpegFrameGrabber grabber; + private static volatile PipedInputStream pipedInputStream; + private static volatile PipedOutputStream pipedOutputStream; + private static volatile Thread grabberThread; + private static final AtomicBoolean isDecoderReady = new AtomicBoolean(false); + private static final Object initLock = new Object(); + + static { + initializeDecoder(); + } + + private static void initializeDecoder() { + synchronized (initLock) { + if (isDecoderReady.get()) { + logger.info("Decoder already initialized"); + return; + } + + try { + logger.info("Initializing decoder..."); + + // 1. 初始化管道流(增大缓冲区防止阻塞) + pipedInputStream = new PipedInputStream(PIPE_BUFFER_SIZE); + pipedOutputStream = new PipedOutputStream(pipedInputStream); + + // 2. 配置 FFmpeg 抓取器 + grabber = new FFmpegFrameGrabber(pipedInputStream); + grabber.setFormat("hevc"); + grabber.setVideoOption("threads", "4"); // 多线程解码 + grabber.setOption("probesize", "32"); // 减少探测数据量 + grabber.setOption("analyzeduration", "200000"); // 200ms 分析时长 + grabber.setOption("timeout", String.valueOf(GRABBER_TIMEOUT)); + + // 3. 启动独立线程运行 FFmpeg + grabberThread = new Thread(() -> { + try { + logger.info("Starting FFmpeg grabber..."); + grabber.startUnsafe(); + isDecoderReady.set(true); + logger.info("FFmpeg grabber started successfully"); + } catch (FrameGrabber.Exception e) { + logger.error("FFmpeg start failed", e); + isDecoderReady.set(false); + } + }); + grabberThread.setDaemon(true); // 设为守护线程 + grabberThread.start(); + + // 4. 等待初始化完成 + int retry = 0; + while (!isDecoderReady.get() && retry++ < 5) { + try { + Thread.sleep(200); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + } + +// if (!isDecoderReady.get()) { +// throw new IllegalStateException("Failed to initialize FFmpeg grabber"); +// } + + } catch (IOException e) { + logger.error("Decoder initialization failed", e); + cleanup(); + throw new RuntimeException("H265 decoder init failed", e); + } + } + } + + public static String decodeToBase64Image(byte[] h265Data) { + if (h265Data == null || h265Data.length == 0) { + logger.warn("Empty H265 data received"); + return null; + } + + if (!isDecoderReady.get()) { + logger.error("Decoder not ready, reinitializing..."); + synchronized (initLock) { + cleanup(); + initializeDecoder(); + } + if (!isDecoderReady.get()) { + return null; + } + } + + try { + // 1. 写入数据(非阻塞) + pipedOutputStream.write(h265Data); + pipedOutputStream.flush(); + + // 2. 抓取帧(带超时) + Frame frame = null; + int retry = 0; + while (frame == null && retry++ < 3) { + try { + frame = grabber.grab(); + if (frame == null) { + logger.debug("Frame grab timeout, retrying..."); + Thread.sleep(50); + } + } catch (FrameGrabber.Exception e) { + logger.warn("Frame grab error", e); + if (e.getMessage().contains("Input/output error")) { + resetDecoder(); + } + } + } + + if (frame == null || frame.image == null) { + logger.warn("Failed to grab valid frame after retries"); + return null; + } + + // 3. 转换为 Base64 + Java2DFrameConverter converter = new Java2DFrameConverter(); + BufferedImage image = converter.convert(frame); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + ImageIO.write(image, "jpg", baos); + return Base64.getEncoder().encodeToString(baos.toByteArray()); + + } catch (Exception e) { + logger.error("Decoding failed", e); + return null; + } + } + + private static void resetDecoder() { + synchronized (initLock) { + cleanup(); + initializeDecoder(); + } + } + + private static void cleanup() { + try { + if (grabber != null) { + grabber.stop(); + grabber.close(); + } + if (pipedOutputStream != null) { + pipedOutputStream.close(); + } + if (pipedInputStream != null) { + pipedInputStream.close(); + } + if (grabberThread != null && grabberThread.isAlive()) { + grabberThread.interrupt(); + } + } catch (Exception e) { + logger.warn("Cleanup error", e); + } finally { + grabber = null; + pipedInputStream = null; + pipedOutputStream = null; + grabberThread = null; + isDecoderReady.set(false); + } + } + + private static boolean isIFrame(byte[] data) { + // H.265 NAL 单元类型检测(简化版) + if (data.length < 4 || data[0] != 0 || data[1] != 0 || data[2] != 1) { + return false; + } + int nalType = (data[3] & 0x7E) >> 1; + return nalType >= 0x20 && nalType <= 0x23; // VPS/SPS/PPS/IDR + } + + + /** + * 将H.265帧流转换为MP4视频并编码为Base64 + */ + public static String convertH265FramesToVideo(List frames) { + try { + // 1. 合并帧数据 + ByteArrayOutputStream combinedStream = new ByteArrayOutputStream(); + for (byte[] frame : frames) { + combinedStream.write(frame); + } + byte[] h265Data = combinedStream.toByteArray(); + + // 2. 开启FFmpeg日志(关键调试步骤) +// FFmpegLogCallback.set(); + + // 3. 创建管道流(线程安全传输) + PipedInputStream pipedInputStream = new PipedInputStream(2 * 1024 * 1024); + PipedOutputStream pipedOutputStream = new PipedOutputStream(pipedInputStream); + + // 4. 启动写线程(将H.265数据写入管道) + Thread writerThread = new Thread(() -> { + try { + pipedOutputStream.write(h265Data); + pipedOutputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + }); + writerThread.start(); + + // 5. 初始化抓取器(解析H.265流) + FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(pipedInputStream); + grabber.setFormat("hevc"); // 强制指定H.265格式 + grabber.setOption("loglevel","quiet"); + grabber.start(); + + // 6. 初始化录制器(输出到临时文件) + File tempFile = File.createTempFile("temp_video", ".mp4"); + FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(tempFile, grabber.getImageWidth(), grabber.getImageHeight()); + recorder.setFormat("mp4"); // 输出MP4格式 + + // 关键参数配置(避免默认值失效) + recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264); // 使用H.264编码(兼容性更好) + recorder.setFrameRate(grabber.getFrameRate()); // 匹配输入帧率 + recorder.setVideoBitrate(8000000); // 设置合理比特率(如8Mbps) + recorder.setGopSize(30); // GOP大小(关键帧间隔) + recorder.setOption("loglevel","quiet"); + recorder.start(); // 启动录制器 + + // 7. 逐帧录制 + Frame frame; + while ((frame = grabber.grab()) != null) { + recorder.record(frame); + } + + // 8. 停止资源 + recorder.stop(); + grabber.stop(); + + // 9. 读取临时文件为Base64 + byte[] mp4Data = Files.readAllBytes(tempFile.toPath()); + String base64String = Base64.getEncoder().encodeToString(mp4Data); + + // 10. 清理临时文件 + tempFile.delete(); + + return base64String; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } +} \ No newline at end of file diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/pom.xml b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/pom.xml new file mode 100644 index 0000000..b94de6f --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/pom.xml @@ -0,0 +1,88 @@ + + + 4.0.0 + + com.cmvr + cmvr-iot-edge + 3.8.9 + + + cmvr-iot-grpc-lib + cmvr-iot gRPC 公共 proto 生成库 + + + + io.grpc + grpc-netty-shaded + ${grpc.version} + + + io.grpc + grpc-protobuf + ${grpc.version} + + + io.grpc + grpc-stub + ${grpc.version} + + + com.google.protobuf + protobuf-java + 3.25.5 + + + + + org.apache.tomcat + annotations-api + 6.0.53 + provided + + + + + + + kr.motd.maven + os-maven-plugin + 1.7.1 + + + + + org.xolstice.maven.plugins + protobuf-maven-plugin + 0.6.1 + + com.google.protobuf:protoc:3.21.7:exe:${os.detected.classifier} + grpc-java + io.grpc:protoc-gen-grpc-java:1.52.0:exe:${os.detected.classifier} + + ${basedir}/src/main/java + + false + + + + + compile + compile-custom + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 8 + 8 + + + + + + \ No newline at end of file diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/BioHeadServiceGrpc.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/BioHeadServiceGrpc.java new file mode 100644 index 0000000..0e465bd --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/BioHeadServiceGrpc.java @@ -0,0 +1,533 @@ +package cmvr.api; + +import static io.grpc.MethodDescriptor.generateFullMethodName; + +/** + *
+ * 生物头部机器人服务接口
+ * 
+ */ +@javax.annotation.Generated( + value = "by gRPC proto compiler (version 1.52.0)", + comments = "Source: cmvr/api/biohead_service.proto") +@io.grpc.stub.annotations.GrpcGenerated +public final class BioHeadServiceGrpc { + + private BioHeadServiceGrpc() {} + + public static final String SERVICE_NAME = "cmvr.api.BioHeadService"; + + // Static method descriptors that strictly reflect the proto. + private static volatile io.grpc.MethodDescriptor getSetExpressionMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "SetExpression", + requestType = cmvr.api.BioheadCommand.SetFacialExpression.Request.class, + responseType = cmvr.api.BioheadCommand.SetFacialExpression.Feedback.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getSetExpressionMethod() { + io.grpc.MethodDescriptor getSetExpressionMethod; + if ((getSetExpressionMethod = BioHeadServiceGrpc.getSetExpressionMethod) == null) { + synchronized (BioHeadServiceGrpc.class) { + if ((getSetExpressionMethod = BioHeadServiceGrpc.getSetExpressionMethod) == null) { + BioHeadServiceGrpc.getSetExpressionMethod = getSetExpressionMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "SetExpression")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.BioheadCommand.SetFacialExpression.Request.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.BioheadCommand.SetFacialExpression.Feedback.getDefaultInstance())) + .setSchemaDescriptor(new BioHeadServiceMethodDescriptorSupplier("SetExpression")) + .build(); + } + } + } + return getSetExpressionMethod; + } + + private static volatile io.grpc.MethodDescriptor getStreamExpressionMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "StreamExpression", + requestType = cmvr.api.BioheadCommand.StreamFacialExpression.Request.class, + responseType = cmvr.api.BioheadCommand.StreamFacialExpression.Feedback.class, + methodType = io.grpc.MethodDescriptor.MethodType.BIDI_STREAMING) + public static io.grpc.MethodDescriptor getStreamExpressionMethod() { + io.grpc.MethodDescriptor getStreamExpressionMethod; + if ((getStreamExpressionMethod = BioHeadServiceGrpc.getStreamExpressionMethod) == null) { + synchronized (BioHeadServiceGrpc.class) { + if ((getStreamExpressionMethod = BioHeadServiceGrpc.getStreamExpressionMethod) == null) { + BioHeadServiceGrpc.getStreamExpressionMethod = getStreamExpressionMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.BIDI_STREAMING) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "StreamExpression")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.BioheadCommand.StreamFacialExpression.Request.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.BioheadCommand.StreamFacialExpression.Feedback.getDefaultInstance())) + .setSchemaDescriptor(new BioHeadServiceMethodDescriptorSupplier("StreamExpression")) + .build(); + } + } + } + return getStreamExpressionMethod; + } + + private static volatile io.grpc.MethodDescriptor getGetSystemStatusMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "GetSystemStatus", + requestType = cmvr.api.BioheadCommand.GetStatus.Request.class, + responseType = cmvr.api.BioheadCommand.GetStatus.Feedback.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getGetSystemStatusMethod() { + io.grpc.MethodDescriptor getGetSystemStatusMethod; + if ((getGetSystemStatusMethod = BioHeadServiceGrpc.getGetSystemStatusMethod) == null) { + synchronized (BioHeadServiceGrpc.class) { + if ((getGetSystemStatusMethod = BioHeadServiceGrpc.getGetSystemStatusMethod) == null) { + BioHeadServiceGrpc.getGetSystemStatusMethod = getGetSystemStatusMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetSystemStatus")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.BioheadCommand.GetStatus.Request.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.BioheadCommand.GetStatus.Feedback.getDefaultInstance())) + .setSchemaDescriptor(new BioHeadServiceMethodDescriptorSupplier("GetSystemStatus")) + .build(); + } + } + } + return getGetSystemStatusMethod; + } + + private static volatile io.grpc.MethodDescriptor getEmergencyStopMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "EmergencyStop", + requestType = cmvr.api.BioheadCommand.EmergencyStop.Request.class, + responseType = cmvr.api.BioheadCommand.EmergencyStop.Feedback.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getEmergencyStopMethod() { + io.grpc.MethodDescriptor getEmergencyStopMethod; + if ((getEmergencyStopMethod = BioHeadServiceGrpc.getEmergencyStopMethod) == null) { + synchronized (BioHeadServiceGrpc.class) { + if ((getEmergencyStopMethod = BioHeadServiceGrpc.getEmergencyStopMethod) == null) { + BioHeadServiceGrpc.getEmergencyStopMethod = getEmergencyStopMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "EmergencyStop")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.BioheadCommand.EmergencyStop.Request.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.BioheadCommand.EmergencyStop.Feedback.getDefaultInstance())) + .setSchemaDescriptor(new BioHeadServiceMethodDescriptorSupplier("EmergencyStop")) + .build(); + } + } + } + return getEmergencyStopMethod; + } + + /** + * Creates a new async stub that supports all call types for the service + */ + public static BioHeadServiceStub newStub(io.grpc.Channel channel) { + io.grpc.stub.AbstractStub.StubFactory factory = + new io.grpc.stub.AbstractStub.StubFactory() { + @java.lang.Override + public BioHeadServiceStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new BioHeadServiceStub(channel, callOptions); + } + }; + return BioHeadServiceStub.newStub(factory, channel); + } + + /** + * Creates a new blocking-style stub that supports unary and streaming output calls on the service + */ + public static BioHeadServiceBlockingStub newBlockingStub( + io.grpc.Channel channel) { + io.grpc.stub.AbstractStub.StubFactory factory = + new io.grpc.stub.AbstractStub.StubFactory() { + @java.lang.Override + public BioHeadServiceBlockingStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new BioHeadServiceBlockingStub(channel, callOptions); + } + }; + return BioHeadServiceBlockingStub.newStub(factory, channel); + } + + /** + * Creates a new ListenableFuture-style stub that supports unary calls on the service + */ + public static BioHeadServiceFutureStub newFutureStub( + io.grpc.Channel channel) { + io.grpc.stub.AbstractStub.StubFactory factory = + new io.grpc.stub.AbstractStub.StubFactory() { + @java.lang.Override + public BioHeadServiceFutureStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new BioHeadServiceFutureStub(channel, callOptions); + } + }; + return BioHeadServiceFutureStub.newStub(factory, channel); + } + + /** + *
+   * 生物头部机器人服务接口
+   * 
+ */ + public static abstract class BioHeadServiceImplBase implements io.grpc.BindableService { + + /** + *
+     * 设置面部表情
+     * 
+ */ + public void setExpression(cmvr.api.BioheadCommand.SetFacialExpression.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetExpressionMethod(), responseObserver); + } + + /** + */ + public io.grpc.stub.StreamObserver streamExpression( + io.grpc.stub.StreamObserver responseObserver) { + return io.grpc.stub.ServerCalls.asyncUnimplementedStreamingCall(getStreamExpressionMethod(), responseObserver); + } + + /** + *
+     * 获取状态
+     * 
+ */ + public void getSystemStatus(cmvr.api.BioheadCommand.GetStatus.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetSystemStatusMethod(), responseObserver); + } + + /** + *
+     * 紧急停止
+     * 
+ */ + public void emergencyStop(cmvr.api.BioheadCommand.EmergencyStop.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getEmergencyStopMethod(), responseObserver); + } + + @java.lang.Override public final io.grpc.ServerServiceDefinition bindService() { + return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()) + .addMethod( + getSetExpressionMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + cmvr.api.BioheadCommand.SetFacialExpression.Request, + cmvr.api.BioheadCommand.SetFacialExpression.Feedback>( + this, METHODID_SET_EXPRESSION))) + .addMethod( + getStreamExpressionMethod(), + io.grpc.stub.ServerCalls.asyncBidiStreamingCall( + new MethodHandlers< + cmvr.api.BioheadCommand.StreamFacialExpression.Request, + cmvr.api.BioheadCommand.StreamFacialExpression.Feedback>( + this, METHODID_STREAM_EXPRESSION))) + .addMethod( + getGetSystemStatusMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + cmvr.api.BioheadCommand.GetStatus.Request, + cmvr.api.BioheadCommand.GetStatus.Feedback>( + this, METHODID_GET_SYSTEM_STATUS))) + .addMethod( + getEmergencyStopMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + cmvr.api.BioheadCommand.EmergencyStop.Request, + cmvr.api.BioheadCommand.EmergencyStop.Feedback>( + this, METHODID_EMERGENCY_STOP))) + .build(); + } + } + + /** + *
+   * 生物头部机器人服务接口
+   * 
+ */ + public static final class BioHeadServiceStub extends io.grpc.stub.AbstractAsyncStub { + private BioHeadServiceStub( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + super(channel, callOptions); + } + + @java.lang.Override + protected BioHeadServiceStub build( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new BioHeadServiceStub(channel, callOptions); + } + + /** + *
+     * 设置面部表情
+     * 
+ */ + public void setExpression(cmvr.api.BioheadCommand.SetFacialExpression.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getSetExpressionMethod(), getCallOptions()), request, responseObserver); + } + + /** + */ + public io.grpc.stub.StreamObserver streamExpression( + io.grpc.stub.StreamObserver responseObserver) { + return io.grpc.stub.ClientCalls.asyncBidiStreamingCall( + getChannel().newCall(getStreamExpressionMethod(), getCallOptions()), responseObserver); + } + + /** + *
+     * 获取状态
+     * 
+ */ + public void getSystemStatus(cmvr.api.BioheadCommand.GetStatus.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getGetSystemStatusMethod(), getCallOptions()), request, responseObserver); + } + + /** + *
+     * 紧急停止
+     * 
+ */ + public void emergencyStop(cmvr.api.BioheadCommand.EmergencyStop.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getEmergencyStopMethod(), getCallOptions()), request, responseObserver); + } + } + + /** + *
+   * 生物头部机器人服务接口
+   * 
+ */ + public static final class BioHeadServiceBlockingStub extends io.grpc.stub.AbstractBlockingStub { + private BioHeadServiceBlockingStub( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + super(channel, callOptions); + } + + @java.lang.Override + protected BioHeadServiceBlockingStub build( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new BioHeadServiceBlockingStub(channel, callOptions); + } + + /** + *
+     * 设置面部表情
+     * 
+ */ + public cmvr.api.BioheadCommand.SetFacialExpression.Feedback setExpression(cmvr.api.BioheadCommand.SetFacialExpression.Request request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getSetExpressionMethod(), getCallOptions(), request); + } + + /** + *
+     * 获取状态
+     * 
+ */ + public cmvr.api.BioheadCommand.GetStatus.Feedback getSystemStatus(cmvr.api.BioheadCommand.GetStatus.Request request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getGetSystemStatusMethod(), getCallOptions(), request); + } + + /** + *
+     * 紧急停止
+     * 
+ */ + public cmvr.api.BioheadCommand.EmergencyStop.Feedback emergencyStop(cmvr.api.BioheadCommand.EmergencyStop.Request request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getEmergencyStopMethod(), getCallOptions(), request); + } + } + + /** + *
+   * 生物头部机器人服务接口
+   * 
+ */ + public static final class BioHeadServiceFutureStub extends io.grpc.stub.AbstractFutureStub { + private BioHeadServiceFutureStub( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + super(channel, callOptions); + } + + @java.lang.Override + protected BioHeadServiceFutureStub build( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new BioHeadServiceFutureStub(channel, callOptions); + } + + /** + *
+     * 设置面部表情
+     * 
+ */ + public com.google.common.util.concurrent.ListenableFuture setExpression( + cmvr.api.BioheadCommand.SetFacialExpression.Request request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getSetExpressionMethod(), getCallOptions()), request); + } + + /** + *
+     * 获取状态
+     * 
+ */ + public com.google.common.util.concurrent.ListenableFuture getSystemStatus( + cmvr.api.BioheadCommand.GetStatus.Request request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getGetSystemStatusMethod(), getCallOptions()), request); + } + + /** + *
+     * 紧急停止
+     * 
+ */ + public com.google.common.util.concurrent.ListenableFuture emergencyStop( + cmvr.api.BioheadCommand.EmergencyStop.Request request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getEmergencyStopMethod(), getCallOptions()), request); + } + } + + private static final int METHODID_SET_EXPRESSION = 0; + private static final int METHODID_GET_SYSTEM_STATUS = 1; + private static final int METHODID_EMERGENCY_STOP = 2; + private static final int METHODID_STREAM_EXPRESSION = 3; + + private static final class MethodHandlers implements + io.grpc.stub.ServerCalls.UnaryMethod, + io.grpc.stub.ServerCalls.ServerStreamingMethod, + io.grpc.stub.ServerCalls.ClientStreamingMethod, + io.grpc.stub.ServerCalls.BidiStreamingMethod { + private final BioHeadServiceImplBase serviceImpl; + private final int methodId; + + MethodHandlers(BioHeadServiceImplBase serviceImpl, int methodId) { + this.serviceImpl = serviceImpl; + this.methodId = methodId; + } + + @java.lang.Override + @java.lang.SuppressWarnings("unchecked") + public void invoke(Req request, io.grpc.stub.StreamObserver responseObserver) { + switch (methodId) { + case METHODID_SET_EXPRESSION: + serviceImpl.setExpression((cmvr.api.BioheadCommand.SetFacialExpression.Request) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; + case METHODID_GET_SYSTEM_STATUS: + serviceImpl.getSystemStatus((cmvr.api.BioheadCommand.GetStatus.Request) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; + case METHODID_EMERGENCY_STOP: + serviceImpl.emergencyStop((cmvr.api.BioheadCommand.EmergencyStop.Request) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; + default: + throw new AssertionError(); + } + } + + @java.lang.Override + @java.lang.SuppressWarnings("unchecked") + public io.grpc.stub.StreamObserver invoke( + io.grpc.stub.StreamObserver responseObserver) { + switch (methodId) { + case METHODID_STREAM_EXPRESSION: + return (io.grpc.stub.StreamObserver) serviceImpl.streamExpression( + (io.grpc.stub.StreamObserver) responseObserver); + default: + throw new AssertionError(); + } + } + } + + private static abstract class BioHeadServiceBaseDescriptorSupplier + implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier { + BioHeadServiceBaseDescriptorSupplier() {} + + @java.lang.Override + public com.google.protobuf.Descriptors.FileDescriptor getFileDescriptor() { + return cmvr.api.BioheadService.getDescriptor(); + } + + @java.lang.Override + public com.google.protobuf.Descriptors.ServiceDescriptor getServiceDescriptor() { + return getFileDescriptor().findServiceByName("BioHeadService"); + } + } + + private static final class BioHeadServiceFileDescriptorSupplier + extends BioHeadServiceBaseDescriptorSupplier { + BioHeadServiceFileDescriptorSupplier() {} + } + + private static final class BioHeadServiceMethodDescriptorSupplier + extends BioHeadServiceBaseDescriptorSupplier + implements io.grpc.protobuf.ProtoMethodDescriptorSupplier { + private final String methodName; + + BioHeadServiceMethodDescriptorSupplier(String methodName) { + this.methodName = methodName; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.MethodDescriptor getMethodDescriptor() { + return getServiceDescriptor().findMethodByName(methodName); + } + } + + private static volatile io.grpc.ServiceDescriptor serviceDescriptor; + + public static io.grpc.ServiceDescriptor getServiceDescriptor() { + io.grpc.ServiceDescriptor result = serviceDescriptor; + if (result == null) { + synchronized (BioHeadServiceGrpc.class) { + result = serviceDescriptor; + if (result == null) { + serviceDescriptor = result = io.grpc.ServiceDescriptor.newBuilder(SERVICE_NAME) + .setSchemaDescriptor(new BioHeadServiceFileDescriptorSupplier()) + .addMethod(getSetExpressionMethod()) + .addMethod(getStreamExpressionMethod()) + .addMethod(getGetSystemStatusMethod()) + .addMethod(getEmergencyStopMethod()) + .build(); + } + } + } + return result; + } +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/BioheadCommand.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/BioheadCommand.java new file mode 100644 index 0000000..d0452a9 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/BioheadCommand.java @@ -0,0 +1,18045 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: cmvr/api/biohead_command.proto + +package cmvr.api; + +public final class BioheadCommand { + private BioheadCommand() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistryLite registry) { + } + + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + registerAllExtensions( + (com.google.protobuf.ExtensionRegistryLite) registry); + } + public interface FacialExpressionOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.FacialExpression) + com.google.protobuf.MessageOrBuilder { + + /** + *
+     * 眉毛参数封装
+     * 
+ * + * .cmvr.api.FacialExpression.Eyebrow eyebrow = 3; + * @return Whether the eyebrow field is set. + */ + boolean hasEyebrow(); + /** + *
+     * 眉毛参数封装
+     * 
+ * + * .cmvr.api.FacialExpression.Eyebrow eyebrow = 3; + * @return The eyebrow. + */ + cmvr.api.BioheadCommand.FacialExpression.Eyebrow getEyebrow(); + /** + *
+     * 眉毛参数封装
+     * 
+ * + * .cmvr.api.FacialExpression.Eyebrow eyebrow = 3; + */ + cmvr.api.BioheadCommand.FacialExpression.EyebrowOrBuilder getEyebrowOrBuilder(); + + /** + *
+     * 眼睑参数封装
+     * 
+ * + * .cmvr.api.FacialExpression.Eyelid eyelid = 4; + * @return Whether the eyelid field is set. + */ + boolean hasEyelid(); + /** + *
+     * 眼睑参数封装
+     * 
+ * + * .cmvr.api.FacialExpression.Eyelid eyelid = 4; + * @return The eyelid. + */ + cmvr.api.BioheadCommand.FacialExpression.Eyelid getEyelid(); + /** + *
+     * 眼睑参数封装
+     * 
+ * + * .cmvr.api.FacialExpression.Eyelid eyelid = 4; + */ + cmvr.api.BioheadCommand.FacialExpression.EyelidOrBuilder getEyelidOrBuilder(); + + /** + *
+     * 眼球参数封装
+     * 
+ * + * .cmvr.api.FacialExpression.Eyeball eyeball = 5; + * @return Whether the eyeball field is set. + */ + boolean hasEyeball(); + /** + *
+     * 眼球参数封装
+     * 
+ * + * .cmvr.api.FacialExpression.Eyeball eyeball = 5; + * @return The eyeball. + */ + cmvr.api.BioheadCommand.FacialExpression.Eyeball getEyeball(); + /** + *
+     * 眼球参数封装
+     * 
+ * + * .cmvr.api.FacialExpression.Eyeball eyeball = 5; + */ + cmvr.api.BioheadCommand.FacialExpression.EyeballOrBuilder getEyeballOrBuilder(); + + /** + *
+     * 鼻子参数封装
+     * 
+ * + * .cmvr.api.FacialExpression.Nose nose = 6; + * @return Whether the nose field is set. + */ + boolean hasNose(); + /** + *
+     * 鼻子参数封装
+     * 
+ * + * .cmvr.api.FacialExpression.Nose nose = 6; + * @return The nose. + */ + cmvr.api.BioheadCommand.FacialExpression.Nose getNose(); + /** + *
+     * 鼻子参数封装
+     * 
+ * + * .cmvr.api.FacialExpression.Nose nose = 6; + */ + cmvr.api.BioheadCommand.FacialExpression.NoseOrBuilder getNoseOrBuilder(); + + /** + *
+     * 嘴巴参数封装
+     * 
+ * + * .cmvr.api.FacialExpression.Mouth mouth = 7; + * @return Whether the mouth field is set. + */ + boolean hasMouth(); + /** + *
+     * 嘴巴参数封装
+     * 
+ * + * .cmvr.api.FacialExpression.Mouth mouth = 7; + * @return The mouth. + */ + cmvr.api.BioheadCommand.FacialExpression.Mouth getMouth(); + /** + *
+     * 嘴巴参数封装
+     * 
+ * + * .cmvr.api.FacialExpression.Mouth mouth = 7; + */ + cmvr.api.BioheadCommand.FacialExpression.MouthOrBuilder getMouthOrBuilder(); + + /** + *
+     * 下巴参数封装
+     * 
+ * + * .cmvr.api.FacialExpression.Jaw jaw = 8; + * @return Whether the jaw field is set. + */ + boolean hasJaw(); + /** + *
+     * 下巴参数封装
+     * 
+ * + * .cmvr.api.FacialExpression.Jaw jaw = 8; + * @return The jaw. + */ + cmvr.api.BioheadCommand.FacialExpression.Jaw getJaw(); + /** + *
+     * 下巴参数封装
+     * 
+ * + * .cmvr.api.FacialExpression.Jaw jaw = 8; + */ + cmvr.api.BioheadCommand.FacialExpression.JawOrBuilder getJawOrBuilder(); + } + /** + *
+   **
+   * 面部表情控制参数定义
+   * 包含生物头部机器人面部各部位的运动参数,用于精确控制面部表情
+   * 
+ * + * Protobuf type {@code cmvr.api.FacialExpression} + */ + public static final class FacialExpression extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.FacialExpression) + FacialExpressionOrBuilder { + private static final long serialVersionUID = 0L; + // Use FacialExpression.newBuilder() to construct. + private FacialExpression(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private FacialExpression() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new FacialExpression(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.BioheadCommand.FacialExpression.class, cmvr.api.BioheadCommand.FacialExpression.Builder.class); + } + + public interface EyebrowOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.FacialExpression.Eyebrow) + com.google.protobuf.MessageOrBuilder { + + /** + *
+       * 左眉外侧垂直位置
+       * 
+ * + * float left_outside_y = 1; + * @return The leftOutsideY. + */ + float getLeftOutsideY(); + + /** + *
+       * 左眉内侧垂直位置
+       * 
+ * + * float left_inside_y = 2; + * @return The leftInsideY. + */ + float getLeftInsideY(); + + /** + *
+       * 右眉外侧垂直位置
+       * 
+ * + * float right_outside_y = 3; + * @return The rightOutsideY. + */ + float getRightOutsideY(); + + /** + *
+       * 右眉内侧垂直位置
+       * 
+ * + * float right_inside_y = 4; + * @return The rightInsideY. + */ + float getRightInsideY(); + } + /** + *
+     **
+     * 眉毛控制参数
+     * 左右眉毛的内外侧垂直位置(0.0-1.0标准化值)
+     * 
+ * + * Protobuf type {@code cmvr.api.FacialExpression.Eyebrow} + */ + public static final class Eyebrow extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.FacialExpression.Eyebrow) + EyebrowOrBuilder { + private static final long serialVersionUID = 0L; + // Use Eyebrow.newBuilder() to construct. + private Eyebrow(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Eyebrow() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Eyebrow(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_Eyebrow_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_Eyebrow_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.BioheadCommand.FacialExpression.Eyebrow.class, cmvr.api.BioheadCommand.FacialExpression.Eyebrow.Builder.class); + } + + public static final int LEFT_OUTSIDE_Y_FIELD_NUMBER = 1; + private float leftOutsideY_; + /** + *
+       * 左眉外侧垂直位置
+       * 
+ * + * float left_outside_y = 1; + * @return The leftOutsideY. + */ + @java.lang.Override + public float getLeftOutsideY() { + return leftOutsideY_; + } + + public static final int LEFT_INSIDE_Y_FIELD_NUMBER = 2; + private float leftInsideY_; + /** + *
+       * 左眉内侧垂直位置
+       * 
+ * + * float left_inside_y = 2; + * @return The leftInsideY. + */ + @java.lang.Override + public float getLeftInsideY() { + return leftInsideY_; + } + + public static final int RIGHT_OUTSIDE_Y_FIELD_NUMBER = 3; + private float rightOutsideY_; + /** + *
+       * 右眉外侧垂直位置
+       * 
+ * + * float right_outside_y = 3; + * @return The rightOutsideY. + */ + @java.lang.Override + public float getRightOutsideY() { + return rightOutsideY_; + } + + public static final int RIGHT_INSIDE_Y_FIELD_NUMBER = 4; + private float rightInsideY_; + /** + *
+       * 右眉内侧垂直位置
+       * 
+ * + * float right_inside_y = 4; + * @return The rightInsideY. + */ + @java.lang.Override + public float getRightInsideY() { + return rightInsideY_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (java.lang.Float.floatToRawIntBits(leftOutsideY_) != 0) { + output.writeFloat(1, leftOutsideY_); + } + if (java.lang.Float.floatToRawIntBits(leftInsideY_) != 0) { + output.writeFloat(2, leftInsideY_); + } + if (java.lang.Float.floatToRawIntBits(rightOutsideY_) != 0) { + output.writeFloat(3, rightOutsideY_); + } + if (java.lang.Float.floatToRawIntBits(rightInsideY_) != 0) { + output.writeFloat(4, rightInsideY_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (java.lang.Float.floatToRawIntBits(leftOutsideY_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(1, leftOutsideY_); + } + if (java.lang.Float.floatToRawIntBits(leftInsideY_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(2, leftInsideY_); + } + if (java.lang.Float.floatToRawIntBits(rightOutsideY_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(3, rightOutsideY_); + } + if (java.lang.Float.floatToRawIntBits(rightInsideY_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(4, rightInsideY_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.BioheadCommand.FacialExpression.Eyebrow)) { + return super.equals(obj); + } + cmvr.api.BioheadCommand.FacialExpression.Eyebrow other = (cmvr.api.BioheadCommand.FacialExpression.Eyebrow) obj; + + if (java.lang.Float.floatToIntBits(getLeftOutsideY()) + != java.lang.Float.floatToIntBits( + other.getLeftOutsideY())) return false; + if (java.lang.Float.floatToIntBits(getLeftInsideY()) + != java.lang.Float.floatToIntBits( + other.getLeftInsideY())) return false; + if (java.lang.Float.floatToIntBits(getRightOutsideY()) + != java.lang.Float.floatToIntBits( + other.getRightOutsideY())) return false; + if (java.lang.Float.floatToIntBits(getRightInsideY()) + != java.lang.Float.floatToIntBits( + other.getRightInsideY())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + LEFT_OUTSIDE_Y_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getLeftOutsideY()); + hash = (37 * hash) + LEFT_INSIDE_Y_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getLeftInsideY()); + hash = (37 * hash) + RIGHT_OUTSIDE_Y_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getRightOutsideY()); + hash = (37 * hash) + RIGHT_INSIDE_Y_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getRightInsideY()); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.BioheadCommand.FacialExpression.Eyebrow parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.FacialExpression.Eyebrow parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression.Eyebrow parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.FacialExpression.Eyebrow parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression.Eyebrow parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.FacialExpression.Eyebrow parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression.Eyebrow parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.FacialExpression.Eyebrow parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression.Eyebrow parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.FacialExpression.Eyebrow parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression.Eyebrow parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.FacialExpression.Eyebrow parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.BioheadCommand.FacialExpression.Eyebrow prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+       **
+       * 眉毛控制参数
+       * 左右眉毛的内外侧垂直位置(0.0-1.0标准化值)
+       * 
+ * + * Protobuf type {@code cmvr.api.FacialExpression.Eyebrow} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.FacialExpression.Eyebrow) + cmvr.api.BioheadCommand.FacialExpression.EyebrowOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_Eyebrow_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_Eyebrow_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.BioheadCommand.FacialExpression.Eyebrow.class, cmvr.api.BioheadCommand.FacialExpression.Eyebrow.Builder.class); + } + + // Construct using cmvr.api.BioheadCommand.FacialExpression.Eyebrow.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + leftOutsideY_ = 0F; + + leftInsideY_ = 0F; + + rightOutsideY_ = 0F; + + rightInsideY_ = 0F; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_Eyebrow_descriptor; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.Eyebrow getDefaultInstanceForType() { + return cmvr.api.BioheadCommand.FacialExpression.Eyebrow.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.Eyebrow build() { + cmvr.api.BioheadCommand.FacialExpression.Eyebrow result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.Eyebrow buildPartial() { + cmvr.api.BioheadCommand.FacialExpression.Eyebrow result = new cmvr.api.BioheadCommand.FacialExpression.Eyebrow(this); + result.leftOutsideY_ = leftOutsideY_; + result.leftInsideY_ = leftInsideY_; + result.rightOutsideY_ = rightOutsideY_; + result.rightInsideY_ = rightInsideY_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.BioheadCommand.FacialExpression.Eyebrow) { + return mergeFrom((cmvr.api.BioheadCommand.FacialExpression.Eyebrow)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.BioheadCommand.FacialExpression.Eyebrow other) { + if (other == cmvr.api.BioheadCommand.FacialExpression.Eyebrow.getDefaultInstance()) return this; + if (other.getLeftOutsideY() != 0F) { + setLeftOutsideY(other.getLeftOutsideY()); + } + if (other.getLeftInsideY() != 0F) { + setLeftInsideY(other.getLeftInsideY()); + } + if (other.getRightOutsideY() != 0F) { + setRightOutsideY(other.getRightOutsideY()); + } + if (other.getRightInsideY() != 0F) { + setRightInsideY(other.getRightInsideY()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 13: { + leftOutsideY_ = input.readFloat(); + + break; + } // case 13 + case 21: { + leftInsideY_ = input.readFloat(); + + break; + } // case 21 + case 29: { + rightOutsideY_ = input.readFloat(); + + break; + } // case 29 + case 37: { + rightInsideY_ = input.readFloat(); + + break; + } // case 37 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private float leftOutsideY_ ; + /** + *
+         * 左眉外侧垂直位置
+         * 
+ * + * float left_outside_y = 1; + * @return The leftOutsideY. + */ + @java.lang.Override + public float getLeftOutsideY() { + return leftOutsideY_; + } + /** + *
+         * 左眉外侧垂直位置
+         * 
+ * + * float left_outside_y = 1; + * @param value The leftOutsideY to set. + * @return This builder for chaining. + */ + public Builder setLeftOutsideY(float value) { + + leftOutsideY_ = value; + onChanged(); + return this; + } + /** + *
+         * 左眉外侧垂直位置
+         * 
+ * + * float left_outside_y = 1; + * @return This builder for chaining. + */ + public Builder clearLeftOutsideY() { + + leftOutsideY_ = 0F; + onChanged(); + return this; + } + + private float leftInsideY_ ; + /** + *
+         * 左眉内侧垂直位置
+         * 
+ * + * float left_inside_y = 2; + * @return The leftInsideY. + */ + @java.lang.Override + public float getLeftInsideY() { + return leftInsideY_; + } + /** + *
+         * 左眉内侧垂直位置
+         * 
+ * + * float left_inside_y = 2; + * @param value The leftInsideY to set. + * @return This builder for chaining. + */ + public Builder setLeftInsideY(float value) { + + leftInsideY_ = value; + onChanged(); + return this; + } + /** + *
+         * 左眉内侧垂直位置
+         * 
+ * + * float left_inside_y = 2; + * @return This builder for chaining. + */ + public Builder clearLeftInsideY() { + + leftInsideY_ = 0F; + onChanged(); + return this; + } + + private float rightOutsideY_ ; + /** + *
+         * 右眉外侧垂直位置
+         * 
+ * + * float right_outside_y = 3; + * @return The rightOutsideY. + */ + @java.lang.Override + public float getRightOutsideY() { + return rightOutsideY_; + } + /** + *
+         * 右眉外侧垂直位置
+         * 
+ * + * float right_outside_y = 3; + * @param value The rightOutsideY to set. + * @return This builder for chaining. + */ + public Builder setRightOutsideY(float value) { + + rightOutsideY_ = value; + onChanged(); + return this; + } + /** + *
+         * 右眉外侧垂直位置
+         * 
+ * + * float right_outside_y = 3; + * @return This builder for chaining. + */ + public Builder clearRightOutsideY() { + + rightOutsideY_ = 0F; + onChanged(); + return this; + } + + private float rightInsideY_ ; + /** + *
+         * 右眉内侧垂直位置
+         * 
+ * + * float right_inside_y = 4; + * @return The rightInsideY. + */ + @java.lang.Override + public float getRightInsideY() { + return rightInsideY_; + } + /** + *
+         * 右眉内侧垂直位置
+         * 
+ * + * float right_inside_y = 4; + * @param value The rightInsideY to set. + * @return This builder for chaining. + */ + public Builder setRightInsideY(float value) { + + rightInsideY_ = value; + onChanged(); + return this; + } + /** + *
+         * 右眉内侧垂直位置
+         * 
+ * + * float right_inside_y = 4; + * @return This builder for chaining. + */ + public Builder clearRightInsideY() { + + rightInsideY_ = 0F; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.FacialExpression.Eyebrow) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.FacialExpression.Eyebrow) + private static final cmvr.api.BioheadCommand.FacialExpression.Eyebrow DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.BioheadCommand.FacialExpression.Eyebrow(); + } + + public static cmvr.api.BioheadCommand.FacialExpression.Eyebrow getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Eyebrow parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.Eyebrow getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface EyelidOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.FacialExpression.Eyelid) + com.google.protobuf.MessageOrBuilder { + + /** + *
+       * 左上眼睑垂直位置
+       * 
+ * + * float left_upper_y = 1; + * @return The leftUpperY. + */ + float getLeftUpperY(); + + /** + *
+       * 左下眼睑垂直位置
+       * 
+ * + * float left_lower_y = 2; + * @return The leftLowerY. + */ + float getLeftLowerY(); + + /** + *
+       * 右上眼睑垂直位置
+       * 
+ * + * float right_upper_y = 3; + * @return The rightUpperY. + */ + float getRightUpperY(); + + /** + *
+       * 右下眼睑垂直位置
+       * 
+ * + * float right_lower_y = 4; + * @return The rightLowerY. + */ + float getRightLowerY(); + } + /** + *
+     **
+     * 眼睑控制参数
+     * 左右眼睑的上下位置(0.0-1.0标准化值)
+     * 
+ * + * Protobuf type {@code cmvr.api.FacialExpression.Eyelid} + */ + public static final class Eyelid extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.FacialExpression.Eyelid) + EyelidOrBuilder { + private static final long serialVersionUID = 0L; + // Use Eyelid.newBuilder() to construct. + private Eyelid(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Eyelid() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Eyelid(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_Eyelid_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_Eyelid_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.BioheadCommand.FacialExpression.Eyelid.class, cmvr.api.BioheadCommand.FacialExpression.Eyelid.Builder.class); + } + + public static final int LEFT_UPPER_Y_FIELD_NUMBER = 1; + private float leftUpperY_; + /** + *
+       * 左上眼睑垂直位置
+       * 
+ * + * float left_upper_y = 1; + * @return The leftUpperY. + */ + @java.lang.Override + public float getLeftUpperY() { + return leftUpperY_; + } + + public static final int LEFT_LOWER_Y_FIELD_NUMBER = 2; + private float leftLowerY_; + /** + *
+       * 左下眼睑垂直位置
+       * 
+ * + * float left_lower_y = 2; + * @return The leftLowerY. + */ + @java.lang.Override + public float getLeftLowerY() { + return leftLowerY_; + } + + public static final int RIGHT_UPPER_Y_FIELD_NUMBER = 3; + private float rightUpperY_; + /** + *
+       * 右上眼睑垂直位置
+       * 
+ * + * float right_upper_y = 3; + * @return The rightUpperY. + */ + @java.lang.Override + public float getRightUpperY() { + return rightUpperY_; + } + + public static final int RIGHT_LOWER_Y_FIELD_NUMBER = 4; + private float rightLowerY_; + /** + *
+       * 右下眼睑垂直位置
+       * 
+ * + * float right_lower_y = 4; + * @return The rightLowerY. + */ + @java.lang.Override + public float getRightLowerY() { + return rightLowerY_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (java.lang.Float.floatToRawIntBits(leftUpperY_) != 0) { + output.writeFloat(1, leftUpperY_); + } + if (java.lang.Float.floatToRawIntBits(leftLowerY_) != 0) { + output.writeFloat(2, leftLowerY_); + } + if (java.lang.Float.floatToRawIntBits(rightUpperY_) != 0) { + output.writeFloat(3, rightUpperY_); + } + if (java.lang.Float.floatToRawIntBits(rightLowerY_) != 0) { + output.writeFloat(4, rightLowerY_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (java.lang.Float.floatToRawIntBits(leftUpperY_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(1, leftUpperY_); + } + if (java.lang.Float.floatToRawIntBits(leftLowerY_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(2, leftLowerY_); + } + if (java.lang.Float.floatToRawIntBits(rightUpperY_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(3, rightUpperY_); + } + if (java.lang.Float.floatToRawIntBits(rightLowerY_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(4, rightLowerY_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.BioheadCommand.FacialExpression.Eyelid)) { + return super.equals(obj); + } + cmvr.api.BioheadCommand.FacialExpression.Eyelid other = (cmvr.api.BioheadCommand.FacialExpression.Eyelid) obj; + + if (java.lang.Float.floatToIntBits(getLeftUpperY()) + != java.lang.Float.floatToIntBits( + other.getLeftUpperY())) return false; + if (java.lang.Float.floatToIntBits(getLeftLowerY()) + != java.lang.Float.floatToIntBits( + other.getLeftLowerY())) return false; + if (java.lang.Float.floatToIntBits(getRightUpperY()) + != java.lang.Float.floatToIntBits( + other.getRightUpperY())) return false; + if (java.lang.Float.floatToIntBits(getRightLowerY()) + != java.lang.Float.floatToIntBits( + other.getRightLowerY())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + LEFT_UPPER_Y_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getLeftUpperY()); + hash = (37 * hash) + LEFT_LOWER_Y_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getLeftLowerY()); + hash = (37 * hash) + RIGHT_UPPER_Y_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getRightUpperY()); + hash = (37 * hash) + RIGHT_LOWER_Y_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getRightLowerY()); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.BioheadCommand.FacialExpression.Eyelid parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.FacialExpression.Eyelid parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression.Eyelid parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.FacialExpression.Eyelid parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression.Eyelid parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.FacialExpression.Eyelid parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression.Eyelid parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.FacialExpression.Eyelid parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression.Eyelid parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.FacialExpression.Eyelid parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression.Eyelid parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.FacialExpression.Eyelid parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.BioheadCommand.FacialExpression.Eyelid prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+       **
+       * 眼睑控制参数
+       * 左右眼睑的上下位置(0.0-1.0标准化值)
+       * 
+ * + * Protobuf type {@code cmvr.api.FacialExpression.Eyelid} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.FacialExpression.Eyelid) + cmvr.api.BioheadCommand.FacialExpression.EyelidOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_Eyelid_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_Eyelid_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.BioheadCommand.FacialExpression.Eyelid.class, cmvr.api.BioheadCommand.FacialExpression.Eyelid.Builder.class); + } + + // Construct using cmvr.api.BioheadCommand.FacialExpression.Eyelid.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + leftUpperY_ = 0F; + + leftLowerY_ = 0F; + + rightUpperY_ = 0F; + + rightLowerY_ = 0F; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_Eyelid_descriptor; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.Eyelid getDefaultInstanceForType() { + return cmvr.api.BioheadCommand.FacialExpression.Eyelid.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.Eyelid build() { + cmvr.api.BioheadCommand.FacialExpression.Eyelid result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.Eyelid buildPartial() { + cmvr.api.BioheadCommand.FacialExpression.Eyelid result = new cmvr.api.BioheadCommand.FacialExpression.Eyelid(this); + result.leftUpperY_ = leftUpperY_; + result.leftLowerY_ = leftLowerY_; + result.rightUpperY_ = rightUpperY_; + result.rightLowerY_ = rightLowerY_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.BioheadCommand.FacialExpression.Eyelid) { + return mergeFrom((cmvr.api.BioheadCommand.FacialExpression.Eyelid)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.BioheadCommand.FacialExpression.Eyelid other) { + if (other == cmvr.api.BioheadCommand.FacialExpression.Eyelid.getDefaultInstance()) return this; + if (other.getLeftUpperY() != 0F) { + setLeftUpperY(other.getLeftUpperY()); + } + if (other.getLeftLowerY() != 0F) { + setLeftLowerY(other.getLeftLowerY()); + } + if (other.getRightUpperY() != 0F) { + setRightUpperY(other.getRightUpperY()); + } + if (other.getRightLowerY() != 0F) { + setRightLowerY(other.getRightLowerY()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 13: { + leftUpperY_ = input.readFloat(); + + break; + } // case 13 + case 21: { + leftLowerY_ = input.readFloat(); + + break; + } // case 21 + case 29: { + rightUpperY_ = input.readFloat(); + + break; + } // case 29 + case 37: { + rightLowerY_ = input.readFloat(); + + break; + } // case 37 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private float leftUpperY_ ; + /** + *
+         * 左上眼睑垂直位置
+         * 
+ * + * float left_upper_y = 1; + * @return The leftUpperY. + */ + @java.lang.Override + public float getLeftUpperY() { + return leftUpperY_; + } + /** + *
+         * 左上眼睑垂直位置
+         * 
+ * + * float left_upper_y = 1; + * @param value The leftUpperY to set. + * @return This builder for chaining. + */ + public Builder setLeftUpperY(float value) { + + leftUpperY_ = value; + onChanged(); + return this; + } + /** + *
+         * 左上眼睑垂直位置
+         * 
+ * + * float left_upper_y = 1; + * @return This builder for chaining. + */ + public Builder clearLeftUpperY() { + + leftUpperY_ = 0F; + onChanged(); + return this; + } + + private float leftLowerY_ ; + /** + *
+         * 左下眼睑垂直位置
+         * 
+ * + * float left_lower_y = 2; + * @return The leftLowerY. + */ + @java.lang.Override + public float getLeftLowerY() { + return leftLowerY_; + } + /** + *
+         * 左下眼睑垂直位置
+         * 
+ * + * float left_lower_y = 2; + * @param value The leftLowerY to set. + * @return This builder for chaining. + */ + public Builder setLeftLowerY(float value) { + + leftLowerY_ = value; + onChanged(); + return this; + } + /** + *
+         * 左下眼睑垂直位置
+         * 
+ * + * float left_lower_y = 2; + * @return This builder for chaining. + */ + public Builder clearLeftLowerY() { + + leftLowerY_ = 0F; + onChanged(); + return this; + } + + private float rightUpperY_ ; + /** + *
+         * 右上眼睑垂直位置
+         * 
+ * + * float right_upper_y = 3; + * @return The rightUpperY. + */ + @java.lang.Override + public float getRightUpperY() { + return rightUpperY_; + } + /** + *
+         * 右上眼睑垂直位置
+         * 
+ * + * float right_upper_y = 3; + * @param value The rightUpperY to set. + * @return This builder for chaining. + */ + public Builder setRightUpperY(float value) { + + rightUpperY_ = value; + onChanged(); + return this; + } + /** + *
+         * 右上眼睑垂直位置
+         * 
+ * + * float right_upper_y = 3; + * @return This builder for chaining. + */ + public Builder clearRightUpperY() { + + rightUpperY_ = 0F; + onChanged(); + return this; + } + + private float rightLowerY_ ; + /** + *
+         * 右下眼睑垂直位置
+         * 
+ * + * float right_lower_y = 4; + * @return The rightLowerY. + */ + @java.lang.Override + public float getRightLowerY() { + return rightLowerY_; + } + /** + *
+         * 右下眼睑垂直位置
+         * 
+ * + * float right_lower_y = 4; + * @param value The rightLowerY to set. + * @return This builder for chaining. + */ + public Builder setRightLowerY(float value) { + + rightLowerY_ = value; + onChanged(); + return this; + } + /** + *
+         * 右下眼睑垂直位置
+         * 
+ * + * float right_lower_y = 4; + * @return This builder for chaining. + */ + public Builder clearRightLowerY() { + + rightLowerY_ = 0F; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.FacialExpression.Eyelid) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.FacialExpression.Eyelid) + private static final cmvr.api.BioheadCommand.FacialExpression.Eyelid DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.BioheadCommand.FacialExpression.Eyelid(); + } + + public static cmvr.api.BioheadCommand.FacialExpression.Eyelid getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Eyelid parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.Eyelid getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface EyeballOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.FacialExpression.Eyeball) + com.google.protobuf.MessageOrBuilder { + + /** + *
+       * 左眼球水平位置
+       * 
+ * + * float left_x = 1; + * @return The leftX. + */ + float getLeftX(); + + /** + *
+       * 左眼球垂直位置
+       * 
+ * + * float left_y = 2; + * @return The leftY. + */ + float getLeftY(); + + /** + *
+       * 右眼球水平位置
+       * 
+ * + * float right_x = 3; + * @return The rightX. + */ + float getRightX(); + + /** + *
+       * 右眼球垂直位置
+       * 
+ * + * float right_y = 4; + * @return The rightY. + */ + float getRightY(); + } + /** + *
+     **
+     * 眼球控制参数
+     * 左右眼球的二维坐标(-1.0到1.0标准化值,中心为0)
+     * 
+ * + * Protobuf type {@code cmvr.api.FacialExpression.Eyeball} + */ + public static final class Eyeball extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.FacialExpression.Eyeball) + EyeballOrBuilder { + private static final long serialVersionUID = 0L; + // Use Eyeball.newBuilder() to construct. + private Eyeball(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Eyeball() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Eyeball(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_Eyeball_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_Eyeball_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.BioheadCommand.FacialExpression.Eyeball.class, cmvr.api.BioheadCommand.FacialExpression.Eyeball.Builder.class); + } + + public static final int LEFT_X_FIELD_NUMBER = 1; + private float leftX_; + /** + *
+       * 左眼球水平位置
+       * 
+ * + * float left_x = 1; + * @return The leftX. + */ + @java.lang.Override + public float getLeftX() { + return leftX_; + } + + public static final int LEFT_Y_FIELD_NUMBER = 2; + private float leftY_; + /** + *
+       * 左眼球垂直位置
+       * 
+ * + * float left_y = 2; + * @return The leftY. + */ + @java.lang.Override + public float getLeftY() { + return leftY_; + } + + public static final int RIGHT_X_FIELD_NUMBER = 3; + private float rightX_; + /** + *
+       * 右眼球水平位置
+       * 
+ * + * float right_x = 3; + * @return The rightX. + */ + @java.lang.Override + public float getRightX() { + return rightX_; + } + + public static final int RIGHT_Y_FIELD_NUMBER = 4; + private float rightY_; + /** + *
+       * 右眼球垂直位置
+       * 
+ * + * float right_y = 4; + * @return The rightY. + */ + @java.lang.Override + public float getRightY() { + return rightY_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (java.lang.Float.floatToRawIntBits(leftX_) != 0) { + output.writeFloat(1, leftX_); + } + if (java.lang.Float.floatToRawIntBits(leftY_) != 0) { + output.writeFloat(2, leftY_); + } + if (java.lang.Float.floatToRawIntBits(rightX_) != 0) { + output.writeFloat(3, rightX_); + } + if (java.lang.Float.floatToRawIntBits(rightY_) != 0) { + output.writeFloat(4, rightY_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (java.lang.Float.floatToRawIntBits(leftX_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(1, leftX_); + } + if (java.lang.Float.floatToRawIntBits(leftY_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(2, leftY_); + } + if (java.lang.Float.floatToRawIntBits(rightX_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(3, rightX_); + } + if (java.lang.Float.floatToRawIntBits(rightY_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(4, rightY_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.BioheadCommand.FacialExpression.Eyeball)) { + return super.equals(obj); + } + cmvr.api.BioheadCommand.FacialExpression.Eyeball other = (cmvr.api.BioheadCommand.FacialExpression.Eyeball) obj; + + if (java.lang.Float.floatToIntBits(getLeftX()) + != java.lang.Float.floatToIntBits( + other.getLeftX())) return false; + if (java.lang.Float.floatToIntBits(getLeftY()) + != java.lang.Float.floatToIntBits( + other.getLeftY())) return false; + if (java.lang.Float.floatToIntBits(getRightX()) + != java.lang.Float.floatToIntBits( + other.getRightX())) return false; + if (java.lang.Float.floatToIntBits(getRightY()) + != java.lang.Float.floatToIntBits( + other.getRightY())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + LEFT_X_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getLeftX()); + hash = (37 * hash) + LEFT_Y_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getLeftY()); + hash = (37 * hash) + RIGHT_X_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getRightX()); + hash = (37 * hash) + RIGHT_Y_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getRightY()); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.BioheadCommand.FacialExpression.Eyeball parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.FacialExpression.Eyeball parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression.Eyeball parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.FacialExpression.Eyeball parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression.Eyeball parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.FacialExpression.Eyeball parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression.Eyeball parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.FacialExpression.Eyeball parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression.Eyeball parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.FacialExpression.Eyeball parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression.Eyeball parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.FacialExpression.Eyeball parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.BioheadCommand.FacialExpression.Eyeball prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+       **
+       * 眼球控制参数
+       * 左右眼球的二维坐标(-1.0到1.0标准化值,中心为0)
+       * 
+ * + * Protobuf type {@code cmvr.api.FacialExpression.Eyeball} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.FacialExpression.Eyeball) + cmvr.api.BioheadCommand.FacialExpression.EyeballOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_Eyeball_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_Eyeball_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.BioheadCommand.FacialExpression.Eyeball.class, cmvr.api.BioheadCommand.FacialExpression.Eyeball.Builder.class); + } + + // Construct using cmvr.api.BioheadCommand.FacialExpression.Eyeball.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + leftX_ = 0F; + + leftY_ = 0F; + + rightX_ = 0F; + + rightY_ = 0F; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_Eyeball_descriptor; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.Eyeball getDefaultInstanceForType() { + return cmvr.api.BioheadCommand.FacialExpression.Eyeball.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.Eyeball build() { + cmvr.api.BioheadCommand.FacialExpression.Eyeball result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.Eyeball buildPartial() { + cmvr.api.BioheadCommand.FacialExpression.Eyeball result = new cmvr.api.BioheadCommand.FacialExpression.Eyeball(this); + result.leftX_ = leftX_; + result.leftY_ = leftY_; + result.rightX_ = rightX_; + result.rightY_ = rightY_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.BioheadCommand.FacialExpression.Eyeball) { + return mergeFrom((cmvr.api.BioheadCommand.FacialExpression.Eyeball)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.BioheadCommand.FacialExpression.Eyeball other) { + if (other == cmvr.api.BioheadCommand.FacialExpression.Eyeball.getDefaultInstance()) return this; + if (other.getLeftX() != 0F) { + setLeftX(other.getLeftX()); + } + if (other.getLeftY() != 0F) { + setLeftY(other.getLeftY()); + } + if (other.getRightX() != 0F) { + setRightX(other.getRightX()); + } + if (other.getRightY() != 0F) { + setRightY(other.getRightY()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 13: { + leftX_ = input.readFloat(); + + break; + } // case 13 + case 21: { + leftY_ = input.readFloat(); + + break; + } // case 21 + case 29: { + rightX_ = input.readFloat(); + + break; + } // case 29 + case 37: { + rightY_ = input.readFloat(); + + break; + } // case 37 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private float leftX_ ; + /** + *
+         * 左眼球水平位置
+         * 
+ * + * float left_x = 1; + * @return The leftX. + */ + @java.lang.Override + public float getLeftX() { + return leftX_; + } + /** + *
+         * 左眼球水平位置
+         * 
+ * + * float left_x = 1; + * @param value The leftX to set. + * @return This builder for chaining. + */ + public Builder setLeftX(float value) { + + leftX_ = value; + onChanged(); + return this; + } + /** + *
+         * 左眼球水平位置
+         * 
+ * + * float left_x = 1; + * @return This builder for chaining. + */ + public Builder clearLeftX() { + + leftX_ = 0F; + onChanged(); + return this; + } + + private float leftY_ ; + /** + *
+         * 左眼球垂直位置
+         * 
+ * + * float left_y = 2; + * @return The leftY. + */ + @java.lang.Override + public float getLeftY() { + return leftY_; + } + /** + *
+         * 左眼球垂直位置
+         * 
+ * + * float left_y = 2; + * @param value The leftY to set. + * @return This builder for chaining. + */ + public Builder setLeftY(float value) { + + leftY_ = value; + onChanged(); + return this; + } + /** + *
+         * 左眼球垂直位置
+         * 
+ * + * float left_y = 2; + * @return This builder for chaining. + */ + public Builder clearLeftY() { + + leftY_ = 0F; + onChanged(); + return this; + } + + private float rightX_ ; + /** + *
+         * 右眼球水平位置
+         * 
+ * + * float right_x = 3; + * @return The rightX. + */ + @java.lang.Override + public float getRightX() { + return rightX_; + } + /** + *
+         * 右眼球水平位置
+         * 
+ * + * float right_x = 3; + * @param value The rightX to set. + * @return This builder for chaining. + */ + public Builder setRightX(float value) { + + rightX_ = value; + onChanged(); + return this; + } + /** + *
+         * 右眼球水平位置
+         * 
+ * + * float right_x = 3; + * @return This builder for chaining. + */ + public Builder clearRightX() { + + rightX_ = 0F; + onChanged(); + return this; + } + + private float rightY_ ; + /** + *
+         * 右眼球垂直位置
+         * 
+ * + * float right_y = 4; + * @return The rightY. + */ + @java.lang.Override + public float getRightY() { + return rightY_; + } + /** + *
+         * 右眼球垂直位置
+         * 
+ * + * float right_y = 4; + * @param value The rightY to set. + * @return This builder for chaining. + */ + public Builder setRightY(float value) { + + rightY_ = value; + onChanged(); + return this; + } + /** + *
+         * 右眼球垂直位置
+         * 
+ * + * float right_y = 4; + * @return This builder for chaining. + */ + public Builder clearRightY() { + + rightY_ = 0F; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.FacialExpression.Eyeball) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.FacialExpression.Eyeball) + private static final cmvr.api.BioheadCommand.FacialExpression.Eyeball DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.BioheadCommand.FacialExpression.Eyeball(); + } + + public static cmvr.api.BioheadCommand.FacialExpression.Eyeball getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Eyeball parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.Eyeball getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface NoseOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.FacialExpression.Nose) + com.google.protobuf.MessageOrBuilder { + + /** + *
+       * 鼻子左侧垂直位置
+       * 
+ * + * float left_y = 1; + * @return The leftY. + */ + float getLeftY(); + + /** + *
+       * 鼻子右侧垂直位置
+       * 
+ * + * float right_y = 2; + * @return The rightY. + */ + float getRightY(); + } + /** + *
+     **
+     * 鼻子控制参数
+     * 鼻子左右侧的垂直位置(0.0-1.0标准化值)
+     * 
+ * + * Protobuf type {@code cmvr.api.FacialExpression.Nose} + */ + public static final class Nose extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.FacialExpression.Nose) + NoseOrBuilder { + private static final long serialVersionUID = 0L; + // Use Nose.newBuilder() to construct. + private Nose(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Nose() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Nose(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_Nose_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_Nose_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.BioheadCommand.FacialExpression.Nose.class, cmvr.api.BioheadCommand.FacialExpression.Nose.Builder.class); + } + + public static final int LEFT_Y_FIELD_NUMBER = 1; + private float leftY_; + /** + *
+       * 鼻子左侧垂直位置
+       * 
+ * + * float left_y = 1; + * @return The leftY. + */ + @java.lang.Override + public float getLeftY() { + return leftY_; + } + + public static final int RIGHT_Y_FIELD_NUMBER = 2; + private float rightY_; + /** + *
+       * 鼻子右侧垂直位置
+       * 
+ * + * float right_y = 2; + * @return The rightY. + */ + @java.lang.Override + public float getRightY() { + return rightY_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (java.lang.Float.floatToRawIntBits(leftY_) != 0) { + output.writeFloat(1, leftY_); + } + if (java.lang.Float.floatToRawIntBits(rightY_) != 0) { + output.writeFloat(2, rightY_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (java.lang.Float.floatToRawIntBits(leftY_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(1, leftY_); + } + if (java.lang.Float.floatToRawIntBits(rightY_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(2, rightY_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.BioheadCommand.FacialExpression.Nose)) { + return super.equals(obj); + } + cmvr.api.BioheadCommand.FacialExpression.Nose other = (cmvr.api.BioheadCommand.FacialExpression.Nose) obj; + + if (java.lang.Float.floatToIntBits(getLeftY()) + != java.lang.Float.floatToIntBits( + other.getLeftY())) return false; + if (java.lang.Float.floatToIntBits(getRightY()) + != java.lang.Float.floatToIntBits( + other.getRightY())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + LEFT_Y_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getLeftY()); + hash = (37 * hash) + RIGHT_Y_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getRightY()); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.BioheadCommand.FacialExpression.Nose parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.FacialExpression.Nose parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression.Nose parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.FacialExpression.Nose parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression.Nose parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.FacialExpression.Nose parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression.Nose parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.FacialExpression.Nose parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression.Nose parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.FacialExpression.Nose parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression.Nose parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.FacialExpression.Nose parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.BioheadCommand.FacialExpression.Nose prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+       **
+       * 鼻子控制参数
+       * 鼻子左右侧的垂直位置(0.0-1.0标准化值)
+       * 
+ * + * Protobuf type {@code cmvr.api.FacialExpression.Nose} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.FacialExpression.Nose) + cmvr.api.BioheadCommand.FacialExpression.NoseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_Nose_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_Nose_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.BioheadCommand.FacialExpression.Nose.class, cmvr.api.BioheadCommand.FacialExpression.Nose.Builder.class); + } + + // Construct using cmvr.api.BioheadCommand.FacialExpression.Nose.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + leftY_ = 0F; + + rightY_ = 0F; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_Nose_descriptor; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.Nose getDefaultInstanceForType() { + return cmvr.api.BioheadCommand.FacialExpression.Nose.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.Nose build() { + cmvr.api.BioheadCommand.FacialExpression.Nose result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.Nose buildPartial() { + cmvr.api.BioheadCommand.FacialExpression.Nose result = new cmvr.api.BioheadCommand.FacialExpression.Nose(this); + result.leftY_ = leftY_; + result.rightY_ = rightY_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.BioheadCommand.FacialExpression.Nose) { + return mergeFrom((cmvr.api.BioheadCommand.FacialExpression.Nose)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.BioheadCommand.FacialExpression.Nose other) { + if (other == cmvr.api.BioheadCommand.FacialExpression.Nose.getDefaultInstance()) return this; + if (other.getLeftY() != 0F) { + setLeftY(other.getLeftY()); + } + if (other.getRightY() != 0F) { + setRightY(other.getRightY()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 13: { + leftY_ = input.readFloat(); + + break; + } // case 13 + case 21: { + rightY_ = input.readFloat(); + + break; + } // case 21 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private float leftY_ ; + /** + *
+         * 鼻子左侧垂直位置
+         * 
+ * + * float left_y = 1; + * @return The leftY. + */ + @java.lang.Override + public float getLeftY() { + return leftY_; + } + /** + *
+         * 鼻子左侧垂直位置
+         * 
+ * + * float left_y = 1; + * @param value The leftY to set. + * @return This builder for chaining. + */ + public Builder setLeftY(float value) { + + leftY_ = value; + onChanged(); + return this; + } + /** + *
+         * 鼻子左侧垂直位置
+         * 
+ * + * float left_y = 1; + * @return This builder for chaining. + */ + public Builder clearLeftY() { + + leftY_ = 0F; + onChanged(); + return this; + } + + private float rightY_ ; + /** + *
+         * 鼻子右侧垂直位置
+         * 
+ * + * float right_y = 2; + * @return The rightY. + */ + @java.lang.Override + public float getRightY() { + return rightY_; + } + /** + *
+         * 鼻子右侧垂直位置
+         * 
+ * + * float right_y = 2; + * @param value The rightY to set. + * @return This builder for chaining. + */ + public Builder setRightY(float value) { + + rightY_ = value; + onChanged(); + return this; + } + /** + *
+         * 鼻子右侧垂直位置
+         * 
+ * + * float right_y = 2; + * @return This builder for chaining. + */ + public Builder clearRightY() { + + rightY_ = 0F; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.FacialExpression.Nose) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.FacialExpression.Nose) + private static final cmvr.api.BioheadCommand.FacialExpression.Nose DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.BioheadCommand.FacialExpression.Nose(); + } + + public static cmvr.api.BioheadCommand.FacialExpression.Nose getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Nose parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.Nose getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface MouthOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.FacialExpression.Mouth) + com.google.protobuf.MessageOrBuilder { + + /** + *
+       * 上唇垂直位置
+       * 
+ * + * float upper_lip_y = 1; + * @return The upperLipY. + */ + float getUpperLipY(); + + /** + *
+       * 上唇前后位置(Z轴)
+       * 
+ * + * float upper_lip_z = 2; + * @return The upperLipZ. + */ + float getUpperLipZ(); + + /** + *
+       * 下唇垂直位置
+       * 
+ * + * float lower_lip_y = 3; + * @return The lowerLipY. + */ + float getLowerLipY(); + + /** + *
+       * 下唇前后位置(Z轴)
+       * 
+ * + * float lower_lip_z = 4; + * @return The lowerLipZ. + */ + float getLowerLipZ(); + + /** + *
+       * 左唇角参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Mouth.LeftLip left_lip = 5; + * @return Whether the leftLip field is set. + */ + boolean hasLeftLip(); + /** + *
+       * 左唇角参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Mouth.LeftLip left_lip = 5; + * @return The leftLip. + */ + cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip getLeftLip(); + /** + *
+       * 左唇角参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Mouth.LeftLip left_lip = 5; + */ + cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLipOrBuilder getLeftLipOrBuilder(); + + /** + *
+       * 右唇角参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Mouth.RightLip right_lip = 6; + * @return Whether the rightLip field is set. + */ + boolean hasRightLip(); + /** + *
+       * 右唇角参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Mouth.RightLip right_lip = 6; + * @return The rightLip. + */ + cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip getRightLip(); + /** + *
+       * 右唇角参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Mouth.RightLip right_lip = 6; + */ + cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLipOrBuilder getRightLipOrBuilder(); + } + /** + *
+     **
+     * 嘴巴控制参数
+     * 包含嘴唇整体位置和左右唇角细节
+     * 
+ * + * Protobuf type {@code cmvr.api.FacialExpression.Mouth} + */ + public static final class Mouth extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.FacialExpression.Mouth) + MouthOrBuilder { + private static final long serialVersionUID = 0L; + // Use Mouth.newBuilder() to construct. + private Mouth(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Mouth() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Mouth(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_Mouth_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_Mouth_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.BioheadCommand.FacialExpression.Mouth.class, cmvr.api.BioheadCommand.FacialExpression.Mouth.Builder.class); + } + + public interface LeftLipOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.FacialExpression.Mouth.LeftLip) + com.google.protobuf.MessageOrBuilder { + + /** + *
+         * 左上唇水平位置
+         * 
+ * + * float upper_x = 1; + * @return The upperX. + */ + float getUpperX(); + + /** + *
+         * 左上唇垂直位置
+         * 
+ * + * float upper_y = 2; + * @return The upperY. + */ + float getUpperY(); + + /** + *
+         * 左唇角水平位置
+         * 
+ * + * float corner_x = 3; + * @return The cornerX. + */ + float getCornerX(); + + /** + *
+         * 左唇角垂直位置
+         * 
+ * + * float corner_y = 4; + * @return The cornerY. + */ + float getCornerY(); + + /** + *
+         * 左下唇水平位置
+         * 
+ * + * float lower_x = 5; + * @return The lowerX. + */ + float getLowerX(); + + /** + *
+         * 左下唇垂直位置
+         * 
+ * + * float lower_y = 6; + * @return The lowerY. + */ + float getLowerY(); + } + /** + *
+       **
+       * 左唇角控制参数
+       * 包含上唇、唇角、下唇的坐标点
+       * 
+ * + * Protobuf type {@code cmvr.api.FacialExpression.Mouth.LeftLip} + */ + public static final class LeftLip extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.FacialExpression.Mouth.LeftLip) + LeftLipOrBuilder { + private static final long serialVersionUID = 0L; + // Use LeftLip.newBuilder() to construct. + private LeftLip(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private LeftLip() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new LeftLip(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_Mouth_LeftLip_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_Mouth_LeftLip_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip.class, cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip.Builder.class); + } + + public static final int UPPER_X_FIELD_NUMBER = 1; + private float upperX_; + /** + *
+         * 左上唇水平位置
+         * 
+ * + * float upper_x = 1; + * @return The upperX. + */ + @java.lang.Override + public float getUpperX() { + return upperX_; + } + + public static final int UPPER_Y_FIELD_NUMBER = 2; + private float upperY_; + /** + *
+         * 左上唇垂直位置
+         * 
+ * + * float upper_y = 2; + * @return The upperY. + */ + @java.lang.Override + public float getUpperY() { + return upperY_; + } + + public static final int CORNER_X_FIELD_NUMBER = 3; + private float cornerX_; + /** + *
+         * 左唇角水平位置
+         * 
+ * + * float corner_x = 3; + * @return The cornerX. + */ + @java.lang.Override + public float getCornerX() { + return cornerX_; + } + + public static final int CORNER_Y_FIELD_NUMBER = 4; + private float cornerY_; + /** + *
+         * 左唇角垂直位置
+         * 
+ * + * float corner_y = 4; + * @return The cornerY. + */ + @java.lang.Override + public float getCornerY() { + return cornerY_; + } + + public static final int LOWER_X_FIELD_NUMBER = 5; + private float lowerX_; + /** + *
+         * 左下唇水平位置
+         * 
+ * + * float lower_x = 5; + * @return The lowerX. + */ + @java.lang.Override + public float getLowerX() { + return lowerX_; + } + + public static final int LOWER_Y_FIELD_NUMBER = 6; + private float lowerY_; + /** + *
+         * 左下唇垂直位置
+         * 
+ * + * float lower_y = 6; + * @return The lowerY. + */ + @java.lang.Override + public float getLowerY() { + return lowerY_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (java.lang.Float.floatToRawIntBits(upperX_) != 0) { + output.writeFloat(1, upperX_); + } + if (java.lang.Float.floatToRawIntBits(upperY_) != 0) { + output.writeFloat(2, upperY_); + } + if (java.lang.Float.floatToRawIntBits(cornerX_) != 0) { + output.writeFloat(3, cornerX_); + } + if (java.lang.Float.floatToRawIntBits(cornerY_) != 0) { + output.writeFloat(4, cornerY_); + } + if (java.lang.Float.floatToRawIntBits(lowerX_) != 0) { + output.writeFloat(5, lowerX_); + } + if (java.lang.Float.floatToRawIntBits(lowerY_) != 0) { + output.writeFloat(6, lowerY_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (java.lang.Float.floatToRawIntBits(upperX_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(1, upperX_); + } + if (java.lang.Float.floatToRawIntBits(upperY_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(2, upperY_); + } + if (java.lang.Float.floatToRawIntBits(cornerX_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(3, cornerX_); + } + if (java.lang.Float.floatToRawIntBits(cornerY_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(4, cornerY_); + } + if (java.lang.Float.floatToRawIntBits(lowerX_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(5, lowerX_); + } + if (java.lang.Float.floatToRawIntBits(lowerY_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(6, lowerY_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip)) { + return super.equals(obj); + } + cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip other = (cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip) obj; + + if (java.lang.Float.floatToIntBits(getUpperX()) + != java.lang.Float.floatToIntBits( + other.getUpperX())) return false; + if (java.lang.Float.floatToIntBits(getUpperY()) + != java.lang.Float.floatToIntBits( + other.getUpperY())) return false; + if (java.lang.Float.floatToIntBits(getCornerX()) + != java.lang.Float.floatToIntBits( + other.getCornerX())) return false; + if (java.lang.Float.floatToIntBits(getCornerY()) + != java.lang.Float.floatToIntBits( + other.getCornerY())) return false; + if (java.lang.Float.floatToIntBits(getLowerX()) + != java.lang.Float.floatToIntBits( + other.getLowerX())) return false; + if (java.lang.Float.floatToIntBits(getLowerY()) + != java.lang.Float.floatToIntBits( + other.getLowerY())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + UPPER_X_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getUpperX()); + hash = (37 * hash) + UPPER_Y_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getUpperY()); + hash = (37 * hash) + CORNER_X_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getCornerX()); + hash = (37 * hash) + CORNER_Y_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getCornerY()); + hash = (37 * hash) + LOWER_X_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getLowerX()); + hash = (37 * hash) + LOWER_Y_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getLowerY()); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+         **
+         * 左唇角控制参数
+         * 包含上唇、唇角、下唇的坐标点
+         * 
+ * + * Protobuf type {@code cmvr.api.FacialExpression.Mouth.LeftLip} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.FacialExpression.Mouth.LeftLip) + cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLipOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_Mouth_LeftLip_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_Mouth_LeftLip_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip.class, cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip.Builder.class); + } + + // Construct using cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + upperX_ = 0F; + + upperY_ = 0F; + + cornerX_ = 0F; + + cornerY_ = 0F; + + lowerX_ = 0F; + + lowerY_ = 0F; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_Mouth_LeftLip_descriptor; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip getDefaultInstanceForType() { + return cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip build() { + cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip buildPartial() { + cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip result = new cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip(this); + result.upperX_ = upperX_; + result.upperY_ = upperY_; + result.cornerX_ = cornerX_; + result.cornerY_ = cornerY_; + result.lowerX_ = lowerX_; + result.lowerY_ = lowerY_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip) { + return mergeFrom((cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip other) { + if (other == cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip.getDefaultInstance()) return this; + if (other.getUpperX() != 0F) { + setUpperX(other.getUpperX()); + } + if (other.getUpperY() != 0F) { + setUpperY(other.getUpperY()); + } + if (other.getCornerX() != 0F) { + setCornerX(other.getCornerX()); + } + if (other.getCornerY() != 0F) { + setCornerY(other.getCornerY()); + } + if (other.getLowerX() != 0F) { + setLowerX(other.getLowerX()); + } + if (other.getLowerY() != 0F) { + setLowerY(other.getLowerY()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 13: { + upperX_ = input.readFloat(); + + break; + } // case 13 + case 21: { + upperY_ = input.readFloat(); + + break; + } // case 21 + case 29: { + cornerX_ = input.readFloat(); + + break; + } // case 29 + case 37: { + cornerY_ = input.readFloat(); + + break; + } // case 37 + case 45: { + lowerX_ = input.readFloat(); + + break; + } // case 45 + case 53: { + lowerY_ = input.readFloat(); + + break; + } // case 53 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private float upperX_ ; + /** + *
+           * 左上唇水平位置
+           * 
+ * + * float upper_x = 1; + * @return The upperX. + */ + @java.lang.Override + public float getUpperX() { + return upperX_; + } + /** + *
+           * 左上唇水平位置
+           * 
+ * + * float upper_x = 1; + * @param value The upperX to set. + * @return This builder for chaining. + */ + public Builder setUpperX(float value) { + + upperX_ = value; + onChanged(); + return this; + } + /** + *
+           * 左上唇水平位置
+           * 
+ * + * float upper_x = 1; + * @return This builder for chaining. + */ + public Builder clearUpperX() { + + upperX_ = 0F; + onChanged(); + return this; + } + + private float upperY_ ; + /** + *
+           * 左上唇垂直位置
+           * 
+ * + * float upper_y = 2; + * @return The upperY. + */ + @java.lang.Override + public float getUpperY() { + return upperY_; + } + /** + *
+           * 左上唇垂直位置
+           * 
+ * + * float upper_y = 2; + * @param value The upperY to set. + * @return This builder for chaining. + */ + public Builder setUpperY(float value) { + + upperY_ = value; + onChanged(); + return this; + } + /** + *
+           * 左上唇垂直位置
+           * 
+ * + * float upper_y = 2; + * @return This builder for chaining. + */ + public Builder clearUpperY() { + + upperY_ = 0F; + onChanged(); + return this; + } + + private float cornerX_ ; + /** + *
+           * 左唇角水平位置
+           * 
+ * + * float corner_x = 3; + * @return The cornerX. + */ + @java.lang.Override + public float getCornerX() { + return cornerX_; + } + /** + *
+           * 左唇角水平位置
+           * 
+ * + * float corner_x = 3; + * @param value The cornerX to set. + * @return This builder for chaining. + */ + public Builder setCornerX(float value) { + + cornerX_ = value; + onChanged(); + return this; + } + /** + *
+           * 左唇角水平位置
+           * 
+ * + * float corner_x = 3; + * @return This builder for chaining. + */ + public Builder clearCornerX() { + + cornerX_ = 0F; + onChanged(); + return this; + } + + private float cornerY_ ; + /** + *
+           * 左唇角垂直位置
+           * 
+ * + * float corner_y = 4; + * @return The cornerY. + */ + @java.lang.Override + public float getCornerY() { + return cornerY_; + } + /** + *
+           * 左唇角垂直位置
+           * 
+ * + * float corner_y = 4; + * @param value The cornerY to set. + * @return This builder for chaining. + */ + public Builder setCornerY(float value) { + + cornerY_ = value; + onChanged(); + return this; + } + /** + *
+           * 左唇角垂直位置
+           * 
+ * + * float corner_y = 4; + * @return This builder for chaining. + */ + public Builder clearCornerY() { + + cornerY_ = 0F; + onChanged(); + return this; + } + + private float lowerX_ ; + /** + *
+           * 左下唇水平位置
+           * 
+ * + * float lower_x = 5; + * @return The lowerX. + */ + @java.lang.Override + public float getLowerX() { + return lowerX_; + } + /** + *
+           * 左下唇水平位置
+           * 
+ * + * float lower_x = 5; + * @param value The lowerX to set. + * @return This builder for chaining. + */ + public Builder setLowerX(float value) { + + lowerX_ = value; + onChanged(); + return this; + } + /** + *
+           * 左下唇水平位置
+           * 
+ * + * float lower_x = 5; + * @return This builder for chaining. + */ + public Builder clearLowerX() { + + lowerX_ = 0F; + onChanged(); + return this; + } + + private float lowerY_ ; + /** + *
+           * 左下唇垂直位置
+           * 
+ * + * float lower_y = 6; + * @return The lowerY. + */ + @java.lang.Override + public float getLowerY() { + return lowerY_; + } + /** + *
+           * 左下唇垂直位置
+           * 
+ * + * float lower_y = 6; + * @param value The lowerY to set. + * @return This builder for chaining. + */ + public Builder setLowerY(float value) { + + lowerY_ = value; + onChanged(); + return this; + } + /** + *
+           * 左下唇垂直位置
+           * 
+ * + * float lower_y = 6; + * @return This builder for chaining. + */ + public Builder clearLowerY() { + + lowerY_ = 0F; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.FacialExpression.Mouth.LeftLip) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.FacialExpression.Mouth.LeftLip) + private static final cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip(); + } + + public static cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public LeftLip parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface RightLipOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.FacialExpression.Mouth.RightLip) + com.google.protobuf.MessageOrBuilder { + + /** + *
+         * 右上唇水平位置
+         * 
+ * + * float upper_x = 1; + * @return The upperX. + */ + float getUpperX(); + + /** + *
+         * 右上唇垂直位置
+         * 
+ * + * float upper_y = 2; + * @return The upperY. + */ + float getUpperY(); + + /** + *
+         * 右唇角水平位置
+         * 
+ * + * float corner_x = 3; + * @return The cornerX. + */ + float getCornerX(); + + /** + *
+         * 右唇角垂直位置
+         * 
+ * + * float corner_y = 4; + * @return The cornerY. + */ + float getCornerY(); + + /** + *
+         * 右下唇水平位置
+         * 
+ * + * float lower_x = 5; + * @return The lowerX. + */ + float getLowerX(); + + /** + *
+         * 右下唇垂直位置
+         * 
+ * + * float lower_y = 6; + * @return The lowerY. + */ + float getLowerY(); + } + /** + *
+       **
+       * 右唇角控制参数
+       * 结构与左唇角对称
+       * 
+ * + * Protobuf type {@code cmvr.api.FacialExpression.Mouth.RightLip} + */ + public static final class RightLip extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.FacialExpression.Mouth.RightLip) + RightLipOrBuilder { + private static final long serialVersionUID = 0L; + // Use RightLip.newBuilder() to construct. + private RightLip(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private RightLip() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new RightLip(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_Mouth_RightLip_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_Mouth_RightLip_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip.class, cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip.Builder.class); + } + + public static final int UPPER_X_FIELD_NUMBER = 1; + private float upperX_; + /** + *
+         * 右上唇水平位置
+         * 
+ * + * float upper_x = 1; + * @return The upperX. + */ + @java.lang.Override + public float getUpperX() { + return upperX_; + } + + public static final int UPPER_Y_FIELD_NUMBER = 2; + private float upperY_; + /** + *
+         * 右上唇垂直位置
+         * 
+ * + * float upper_y = 2; + * @return The upperY. + */ + @java.lang.Override + public float getUpperY() { + return upperY_; + } + + public static final int CORNER_X_FIELD_NUMBER = 3; + private float cornerX_; + /** + *
+         * 右唇角水平位置
+         * 
+ * + * float corner_x = 3; + * @return The cornerX. + */ + @java.lang.Override + public float getCornerX() { + return cornerX_; + } + + public static final int CORNER_Y_FIELD_NUMBER = 4; + private float cornerY_; + /** + *
+         * 右唇角垂直位置
+         * 
+ * + * float corner_y = 4; + * @return The cornerY. + */ + @java.lang.Override + public float getCornerY() { + return cornerY_; + } + + public static final int LOWER_X_FIELD_NUMBER = 5; + private float lowerX_; + /** + *
+         * 右下唇水平位置
+         * 
+ * + * float lower_x = 5; + * @return The lowerX. + */ + @java.lang.Override + public float getLowerX() { + return lowerX_; + } + + public static final int LOWER_Y_FIELD_NUMBER = 6; + private float lowerY_; + /** + *
+         * 右下唇垂直位置
+         * 
+ * + * float lower_y = 6; + * @return The lowerY. + */ + @java.lang.Override + public float getLowerY() { + return lowerY_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (java.lang.Float.floatToRawIntBits(upperX_) != 0) { + output.writeFloat(1, upperX_); + } + if (java.lang.Float.floatToRawIntBits(upperY_) != 0) { + output.writeFloat(2, upperY_); + } + if (java.lang.Float.floatToRawIntBits(cornerX_) != 0) { + output.writeFloat(3, cornerX_); + } + if (java.lang.Float.floatToRawIntBits(cornerY_) != 0) { + output.writeFloat(4, cornerY_); + } + if (java.lang.Float.floatToRawIntBits(lowerX_) != 0) { + output.writeFloat(5, lowerX_); + } + if (java.lang.Float.floatToRawIntBits(lowerY_) != 0) { + output.writeFloat(6, lowerY_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (java.lang.Float.floatToRawIntBits(upperX_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(1, upperX_); + } + if (java.lang.Float.floatToRawIntBits(upperY_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(2, upperY_); + } + if (java.lang.Float.floatToRawIntBits(cornerX_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(3, cornerX_); + } + if (java.lang.Float.floatToRawIntBits(cornerY_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(4, cornerY_); + } + if (java.lang.Float.floatToRawIntBits(lowerX_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(5, lowerX_); + } + if (java.lang.Float.floatToRawIntBits(lowerY_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(6, lowerY_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip)) { + return super.equals(obj); + } + cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip other = (cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip) obj; + + if (java.lang.Float.floatToIntBits(getUpperX()) + != java.lang.Float.floatToIntBits( + other.getUpperX())) return false; + if (java.lang.Float.floatToIntBits(getUpperY()) + != java.lang.Float.floatToIntBits( + other.getUpperY())) return false; + if (java.lang.Float.floatToIntBits(getCornerX()) + != java.lang.Float.floatToIntBits( + other.getCornerX())) return false; + if (java.lang.Float.floatToIntBits(getCornerY()) + != java.lang.Float.floatToIntBits( + other.getCornerY())) return false; + if (java.lang.Float.floatToIntBits(getLowerX()) + != java.lang.Float.floatToIntBits( + other.getLowerX())) return false; + if (java.lang.Float.floatToIntBits(getLowerY()) + != java.lang.Float.floatToIntBits( + other.getLowerY())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + UPPER_X_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getUpperX()); + hash = (37 * hash) + UPPER_Y_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getUpperY()); + hash = (37 * hash) + CORNER_X_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getCornerX()); + hash = (37 * hash) + CORNER_Y_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getCornerY()); + hash = (37 * hash) + LOWER_X_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getLowerX()); + hash = (37 * hash) + LOWER_Y_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getLowerY()); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+         **
+         * 右唇角控制参数
+         * 结构与左唇角对称
+         * 
+ * + * Protobuf type {@code cmvr.api.FacialExpression.Mouth.RightLip} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.FacialExpression.Mouth.RightLip) + cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLipOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_Mouth_RightLip_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_Mouth_RightLip_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip.class, cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip.Builder.class); + } + + // Construct using cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + upperX_ = 0F; + + upperY_ = 0F; + + cornerX_ = 0F; + + cornerY_ = 0F; + + lowerX_ = 0F; + + lowerY_ = 0F; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_Mouth_RightLip_descriptor; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip getDefaultInstanceForType() { + return cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip build() { + cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip buildPartial() { + cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip result = new cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip(this); + result.upperX_ = upperX_; + result.upperY_ = upperY_; + result.cornerX_ = cornerX_; + result.cornerY_ = cornerY_; + result.lowerX_ = lowerX_; + result.lowerY_ = lowerY_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip) { + return mergeFrom((cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip other) { + if (other == cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip.getDefaultInstance()) return this; + if (other.getUpperX() != 0F) { + setUpperX(other.getUpperX()); + } + if (other.getUpperY() != 0F) { + setUpperY(other.getUpperY()); + } + if (other.getCornerX() != 0F) { + setCornerX(other.getCornerX()); + } + if (other.getCornerY() != 0F) { + setCornerY(other.getCornerY()); + } + if (other.getLowerX() != 0F) { + setLowerX(other.getLowerX()); + } + if (other.getLowerY() != 0F) { + setLowerY(other.getLowerY()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 13: { + upperX_ = input.readFloat(); + + break; + } // case 13 + case 21: { + upperY_ = input.readFloat(); + + break; + } // case 21 + case 29: { + cornerX_ = input.readFloat(); + + break; + } // case 29 + case 37: { + cornerY_ = input.readFloat(); + + break; + } // case 37 + case 45: { + lowerX_ = input.readFloat(); + + break; + } // case 45 + case 53: { + lowerY_ = input.readFloat(); + + break; + } // case 53 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private float upperX_ ; + /** + *
+           * 右上唇水平位置
+           * 
+ * + * float upper_x = 1; + * @return The upperX. + */ + @java.lang.Override + public float getUpperX() { + return upperX_; + } + /** + *
+           * 右上唇水平位置
+           * 
+ * + * float upper_x = 1; + * @param value The upperX to set. + * @return This builder for chaining. + */ + public Builder setUpperX(float value) { + + upperX_ = value; + onChanged(); + return this; + } + /** + *
+           * 右上唇水平位置
+           * 
+ * + * float upper_x = 1; + * @return This builder for chaining. + */ + public Builder clearUpperX() { + + upperX_ = 0F; + onChanged(); + return this; + } + + private float upperY_ ; + /** + *
+           * 右上唇垂直位置
+           * 
+ * + * float upper_y = 2; + * @return The upperY. + */ + @java.lang.Override + public float getUpperY() { + return upperY_; + } + /** + *
+           * 右上唇垂直位置
+           * 
+ * + * float upper_y = 2; + * @param value The upperY to set. + * @return This builder for chaining. + */ + public Builder setUpperY(float value) { + + upperY_ = value; + onChanged(); + return this; + } + /** + *
+           * 右上唇垂直位置
+           * 
+ * + * float upper_y = 2; + * @return This builder for chaining. + */ + public Builder clearUpperY() { + + upperY_ = 0F; + onChanged(); + return this; + } + + private float cornerX_ ; + /** + *
+           * 右唇角水平位置
+           * 
+ * + * float corner_x = 3; + * @return The cornerX. + */ + @java.lang.Override + public float getCornerX() { + return cornerX_; + } + /** + *
+           * 右唇角水平位置
+           * 
+ * + * float corner_x = 3; + * @param value The cornerX to set. + * @return This builder for chaining. + */ + public Builder setCornerX(float value) { + + cornerX_ = value; + onChanged(); + return this; + } + /** + *
+           * 右唇角水平位置
+           * 
+ * + * float corner_x = 3; + * @return This builder for chaining. + */ + public Builder clearCornerX() { + + cornerX_ = 0F; + onChanged(); + return this; + } + + private float cornerY_ ; + /** + *
+           * 右唇角垂直位置
+           * 
+ * + * float corner_y = 4; + * @return The cornerY. + */ + @java.lang.Override + public float getCornerY() { + return cornerY_; + } + /** + *
+           * 右唇角垂直位置
+           * 
+ * + * float corner_y = 4; + * @param value The cornerY to set. + * @return This builder for chaining. + */ + public Builder setCornerY(float value) { + + cornerY_ = value; + onChanged(); + return this; + } + /** + *
+           * 右唇角垂直位置
+           * 
+ * + * float corner_y = 4; + * @return This builder for chaining. + */ + public Builder clearCornerY() { + + cornerY_ = 0F; + onChanged(); + return this; + } + + private float lowerX_ ; + /** + *
+           * 右下唇水平位置
+           * 
+ * + * float lower_x = 5; + * @return The lowerX. + */ + @java.lang.Override + public float getLowerX() { + return lowerX_; + } + /** + *
+           * 右下唇水平位置
+           * 
+ * + * float lower_x = 5; + * @param value The lowerX to set. + * @return This builder for chaining. + */ + public Builder setLowerX(float value) { + + lowerX_ = value; + onChanged(); + return this; + } + /** + *
+           * 右下唇水平位置
+           * 
+ * + * float lower_x = 5; + * @return This builder for chaining. + */ + public Builder clearLowerX() { + + lowerX_ = 0F; + onChanged(); + return this; + } + + private float lowerY_ ; + /** + *
+           * 右下唇垂直位置
+           * 
+ * + * float lower_y = 6; + * @return The lowerY. + */ + @java.lang.Override + public float getLowerY() { + return lowerY_; + } + /** + *
+           * 右下唇垂直位置
+           * 
+ * + * float lower_y = 6; + * @param value The lowerY to set. + * @return This builder for chaining. + */ + public Builder setLowerY(float value) { + + lowerY_ = value; + onChanged(); + return this; + } + /** + *
+           * 右下唇垂直位置
+           * 
+ * + * float lower_y = 6; + * @return This builder for chaining. + */ + public Builder clearLowerY() { + + lowerY_ = 0F; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.FacialExpression.Mouth.RightLip) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.FacialExpression.Mouth.RightLip) + private static final cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip(); + } + + public static cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public RightLip parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public static final int UPPER_LIP_Y_FIELD_NUMBER = 1; + private float upperLipY_; + /** + *
+       * 上唇垂直位置
+       * 
+ * + * float upper_lip_y = 1; + * @return The upperLipY. + */ + @java.lang.Override + public float getUpperLipY() { + return upperLipY_; + } + + public static final int UPPER_LIP_Z_FIELD_NUMBER = 2; + private float upperLipZ_; + /** + *
+       * 上唇前后位置(Z轴)
+       * 
+ * + * float upper_lip_z = 2; + * @return The upperLipZ. + */ + @java.lang.Override + public float getUpperLipZ() { + return upperLipZ_; + } + + public static final int LOWER_LIP_Y_FIELD_NUMBER = 3; + private float lowerLipY_; + /** + *
+       * 下唇垂直位置
+       * 
+ * + * float lower_lip_y = 3; + * @return The lowerLipY. + */ + @java.lang.Override + public float getLowerLipY() { + return lowerLipY_; + } + + public static final int LOWER_LIP_Z_FIELD_NUMBER = 4; + private float lowerLipZ_; + /** + *
+       * 下唇前后位置(Z轴)
+       * 
+ * + * float lower_lip_z = 4; + * @return The lowerLipZ. + */ + @java.lang.Override + public float getLowerLipZ() { + return lowerLipZ_; + } + + public static final int LEFT_LIP_FIELD_NUMBER = 5; + private cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip leftLip_; + /** + *
+       * 左唇角参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Mouth.LeftLip left_lip = 5; + * @return Whether the leftLip field is set. + */ + @java.lang.Override + public boolean hasLeftLip() { + return leftLip_ != null; + } + /** + *
+       * 左唇角参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Mouth.LeftLip left_lip = 5; + * @return The leftLip. + */ + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip getLeftLip() { + return leftLip_ == null ? cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip.getDefaultInstance() : leftLip_; + } + /** + *
+       * 左唇角参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Mouth.LeftLip left_lip = 5; + */ + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLipOrBuilder getLeftLipOrBuilder() { + return getLeftLip(); + } + + public static final int RIGHT_LIP_FIELD_NUMBER = 6; + private cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip rightLip_; + /** + *
+       * 右唇角参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Mouth.RightLip right_lip = 6; + * @return Whether the rightLip field is set. + */ + @java.lang.Override + public boolean hasRightLip() { + return rightLip_ != null; + } + /** + *
+       * 右唇角参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Mouth.RightLip right_lip = 6; + * @return The rightLip. + */ + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip getRightLip() { + return rightLip_ == null ? cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip.getDefaultInstance() : rightLip_; + } + /** + *
+       * 右唇角参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Mouth.RightLip right_lip = 6; + */ + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLipOrBuilder getRightLipOrBuilder() { + return getRightLip(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (java.lang.Float.floatToRawIntBits(upperLipY_) != 0) { + output.writeFloat(1, upperLipY_); + } + if (java.lang.Float.floatToRawIntBits(upperLipZ_) != 0) { + output.writeFloat(2, upperLipZ_); + } + if (java.lang.Float.floatToRawIntBits(lowerLipY_) != 0) { + output.writeFloat(3, lowerLipY_); + } + if (java.lang.Float.floatToRawIntBits(lowerLipZ_) != 0) { + output.writeFloat(4, lowerLipZ_); + } + if (leftLip_ != null) { + output.writeMessage(5, getLeftLip()); + } + if (rightLip_ != null) { + output.writeMessage(6, getRightLip()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (java.lang.Float.floatToRawIntBits(upperLipY_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(1, upperLipY_); + } + if (java.lang.Float.floatToRawIntBits(upperLipZ_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(2, upperLipZ_); + } + if (java.lang.Float.floatToRawIntBits(lowerLipY_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(3, lowerLipY_); + } + if (java.lang.Float.floatToRawIntBits(lowerLipZ_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(4, lowerLipZ_); + } + if (leftLip_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(5, getLeftLip()); + } + if (rightLip_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(6, getRightLip()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.BioheadCommand.FacialExpression.Mouth)) { + return super.equals(obj); + } + cmvr.api.BioheadCommand.FacialExpression.Mouth other = (cmvr.api.BioheadCommand.FacialExpression.Mouth) obj; + + if (java.lang.Float.floatToIntBits(getUpperLipY()) + != java.lang.Float.floatToIntBits( + other.getUpperLipY())) return false; + if (java.lang.Float.floatToIntBits(getUpperLipZ()) + != java.lang.Float.floatToIntBits( + other.getUpperLipZ())) return false; + if (java.lang.Float.floatToIntBits(getLowerLipY()) + != java.lang.Float.floatToIntBits( + other.getLowerLipY())) return false; + if (java.lang.Float.floatToIntBits(getLowerLipZ()) + != java.lang.Float.floatToIntBits( + other.getLowerLipZ())) return false; + if (hasLeftLip() != other.hasLeftLip()) return false; + if (hasLeftLip()) { + if (!getLeftLip() + .equals(other.getLeftLip())) return false; + } + if (hasRightLip() != other.hasRightLip()) return false; + if (hasRightLip()) { + if (!getRightLip() + .equals(other.getRightLip())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + UPPER_LIP_Y_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getUpperLipY()); + hash = (37 * hash) + UPPER_LIP_Z_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getUpperLipZ()); + hash = (37 * hash) + LOWER_LIP_Y_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getLowerLipY()); + hash = (37 * hash) + LOWER_LIP_Z_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getLowerLipZ()); + if (hasLeftLip()) { + hash = (37 * hash) + LEFT_LIP_FIELD_NUMBER; + hash = (53 * hash) + getLeftLip().hashCode(); + } + if (hasRightLip()) { + hash = (37 * hash) + RIGHT_LIP_FIELD_NUMBER; + hash = (53 * hash) + getRightLip().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.BioheadCommand.FacialExpression.Mouth parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.FacialExpression.Mouth parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression.Mouth parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.FacialExpression.Mouth parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression.Mouth parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.FacialExpression.Mouth parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression.Mouth parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.FacialExpression.Mouth parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression.Mouth parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.FacialExpression.Mouth parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression.Mouth parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.FacialExpression.Mouth parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.BioheadCommand.FacialExpression.Mouth prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+       **
+       * 嘴巴控制参数
+       * 包含嘴唇整体位置和左右唇角细节
+       * 
+ * + * Protobuf type {@code cmvr.api.FacialExpression.Mouth} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.FacialExpression.Mouth) + cmvr.api.BioheadCommand.FacialExpression.MouthOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_Mouth_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_Mouth_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.BioheadCommand.FacialExpression.Mouth.class, cmvr.api.BioheadCommand.FacialExpression.Mouth.Builder.class); + } + + // Construct using cmvr.api.BioheadCommand.FacialExpression.Mouth.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + upperLipY_ = 0F; + + upperLipZ_ = 0F; + + lowerLipY_ = 0F; + + lowerLipZ_ = 0F; + + if (leftLipBuilder_ == null) { + leftLip_ = null; + } else { + leftLip_ = null; + leftLipBuilder_ = null; + } + if (rightLipBuilder_ == null) { + rightLip_ = null; + } else { + rightLip_ = null; + rightLipBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_Mouth_descriptor; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.Mouth getDefaultInstanceForType() { + return cmvr.api.BioheadCommand.FacialExpression.Mouth.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.Mouth build() { + cmvr.api.BioheadCommand.FacialExpression.Mouth result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.Mouth buildPartial() { + cmvr.api.BioheadCommand.FacialExpression.Mouth result = new cmvr.api.BioheadCommand.FacialExpression.Mouth(this); + result.upperLipY_ = upperLipY_; + result.upperLipZ_ = upperLipZ_; + result.lowerLipY_ = lowerLipY_; + result.lowerLipZ_ = lowerLipZ_; + if (leftLipBuilder_ == null) { + result.leftLip_ = leftLip_; + } else { + result.leftLip_ = leftLipBuilder_.build(); + } + if (rightLipBuilder_ == null) { + result.rightLip_ = rightLip_; + } else { + result.rightLip_ = rightLipBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.BioheadCommand.FacialExpression.Mouth) { + return mergeFrom((cmvr.api.BioheadCommand.FacialExpression.Mouth)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.BioheadCommand.FacialExpression.Mouth other) { + if (other == cmvr.api.BioheadCommand.FacialExpression.Mouth.getDefaultInstance()) return this; + if (other.getUpperLipY() != 0F) { + setUpperLipY(other.getUpperLipY()); + } + if (other.getUpperLipZ() != 0F) { + setUpperLipZ(other.getUpperLipZ()); + } + if (other.getLowerLipY() != 0F) { + setLowerLipY(other.getLowerLipY()); + } + if (other.getLowerLipZ() != 0F) { + setLowerLipZ(other.getLowerLipZ()); + } + if (other.hasLeftLip()) { + mergeLeftLip(other.getLeftLip()); + } + if (other.hasRightLip()) { + mergeRightLip(other.getRightLip()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 13: { + upperLipY_ = input.readFloat(); + + break; + } // case 13 + case 21: { + upperLipZ_ = input.readFloat(); + + break; + } // case 21 + case 29: { + lowerLipY_ = input.readFloat(); + + break; + } // case 29 + case 37: { + lowerLipZ_ = input.readFloat(); + + break; + } // case 37 + case 42: { + input.readMessage( + getLeftLipFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 42 + case 50: { + input.readMessage( + getRightLipFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 50 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private float upperLipY_ ; + /** + *
+         * 上唇垂直位置
+         * 
+ * + * float upper_lip_y = 1; + * @return The upperLipY. + */ + @java.lang.Override + public float getUpperLipY() { + return upperLipY_; + } + /** + *
+         * 上唇垂直位置
+         * 
+ * + * float upper_lip_y = 1; + * @param value The upperLipY to set. + * @return This builder for chaining. + */ + public Builder setUpperLipY(float value) { + + upperLipY_ = value; + onChanged(); + return this; + } + /** + *
+         * 上唇垂直位置
+         * 
+ * + * float upper_lip_y = 1; + * @return This builder for chaining. + */ + public Builder clearUpperLipY() { + + upperLipY_ = 0F; + onChanged(); + return this; + } + + private float upperLipZ_ ; + /** + *
+         * 上唇前后位置(Z轴)
+         * 
+ * + * float upper_lip_z = 2; + * @return The upperLipZ. + */ + @java.lang.Override + public float getUpperLipZ() { + return upperLipZ_; + } + /** + *
+         * 上唇前后位置(Z轴)
+         * 
+ * + * float upper_lip_z = 2; + * @param value The upperLipZ to set. + * @return This builder for chaining. + */ + public Builder setUpperLipZ(float value) { + + upperLipZ_ = value; + onChanged(); + return this; + } + /** + *
+         * 上唇前后位置(Z轴)
+         * 
+ * + * float upper_lip_z = 2; + * @return This builder for chaining. + */ + public Builder clearUpperLipZ() { + + upperLipZ_ = 0F; + onChanged(); + return this; + } + + private float lowerLipY_ ; + /** + *
+         * 下唇垂直位置
+         * 
+ * + * float lower_lip_y = 3; + * @return The lowerLipY. + */ + @java.lang.Override + public float getLowerLipY() { + return lowerLipY_; + } + /** + *
+         * 下唇垂直位置
+         * 
+ * + * float lower_lip_y = 3; + * @param value The lowerLipY to set. + * @return This builder for chaining. + */ + public Builder setLowerLipY(float value) { + + lowerLipY_ = value; + onChanged(); + return this; + } + /** + *
+         * 下唇垂直位置
+         * 
+ * + * float lower_lip_y = 3; + * @return This builder for chaining. + */ + public Builder clearLowerLipY() { + + lowerLipY_ = 0F; + onChanged(); + return this; + } + + private float lowerLipZ_ ; + /** + *
+         * 下唇前后位置(Z轴)
+         * 
+ * + * float lower_lip_z = 4; + * @return The lowerLipZ. + */ + @java.lang.Override + public float getLowerLipZ() { + return lowerLipZ_; + } + /** + *
+         * 下唇前后位置(Z轴)
+         * 
+ * + * float lower_lip_z = 4; + * @param value The lowerLipZ to set. + * @return This builder for chaining. + */ + public Builder setLowerLipZ(float value) { + + lowerLipZ_ = value; + onChanged(); + return this; + } + /** + *
+         * 下唇前后位置(Z轴)
+         * 
+ * + * float lower_lip_z = 4; + * @return This builder for chaining. + */ + public Builder clearLowerLipZ() { + + lowerLipZ_ = 0F; + onChanged(); + return this; + } + + private cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip leftLip_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip, cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip.Builder, cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLipOrBuilder> leftLipBuilder_; + /** + *
+         * 左唇角参数封装
+         * 
+ * + * .cmvr.api.FacialExpression.Mouth.LeftLip left_lip = 5; + * @return Whether the leftLip field is set. + */ + public boolean hasLeftLip() { + return leftLipBuilder_ != null || leftLip_ != null; + } + /** + *
+         * 左唇角参数封装
+         * 
+ * + * .cmvr.api.FacialExpression.Mouth.LeftLip left_lip = 5; + * @return The leftLip. + */ + public cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip getLeftLip() { + if (leftLipBuilder_ == null) { + return leftLip_ == null ? cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip.getDefaultInstance() : leftLip_; + } else { + return leftLipBuilder_.getMessage(); + } + } + /** + *
+         * 左唇角参数封装
+         * 
+ * + * .cmvr.api.FacialExpression.Mouth.LeftLip left_lip = 5; + */ + public Builder setLeftLip(cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip value) { + if (leftLipBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + leftLip_ = value; + onChanged(); + } else { + leftLipBuilder_.setMessage(value); + } + + return this; + } + /** + *
+         * 左唇角参数封装
+         * 
+ * + * .cmvr.api.FacialExpression.Mouth.LeftLip left_lip = 5; + */ + public Builder setLeftLip( + cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip.Builder builderForValue) { + if (leftLipBuilder_ == null) { + leftLip_ = builderForValue.build(); + onChanged(); + } else { + leftLipBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+         * 左唇角参数封装
+         * 
+ * + * .cmvr.api.FacialExpression.Mouth.LeftLip left_lip = 5; + */ + public Builder mergeLeftLip(cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip value) { + if (leftLipBuilder_ == null) { + if (leftLip_ != null) { + leftLip_ = + cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip.newBuilder(leftLip_).mergeFrom(value).buildPartial(); + } else { + leftLip_ = value; + } + onChanged(); + } else { + leftLipBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+         * 左唇角参数封装
+         * 
+ * + * .cmvr.api.FacialExpression.Mouth.LeftLip left_lip = 5; + */ + public Builder clearLeftLip() { + if (leftLipBuilder_ == null) { + leftLip_ = null; + onChanged(); + } else { + leftLip_ = null; + leftLipBuilder_ = null; + } + + return this; + } + /** + *
+         * 左唇角参数封装
+         * 
+ * + * .cmvr.api.FacialExpression.Mouth.LeftLip left_lip = 5; + */ + public cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip.Builder getLeftLipBuilder() { + + onChanged(); + return getLeftLipFieldBuilder().getBuilder(); + } + /** + *
+         * 左唇角参数封装
+         * 
+ * + * .cmvr.api.FacialExpression.Mouth.LeftLip left_lip = 5; + */ + public cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLipOrBuilder getLeftLipOrBuilder() { + if (leftLipBuilder_ != null) { + return leftLipBuilder_.getMessageOrBuilder(); + } else { + return leftLip_ == null ? + cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip.getDefaultInstance() : leftLip_; + } + } + /** + *
+         * 左唇角参数封装
+         * 
+ * + * .cmvr.api.FacialExpression.Mouth.LeftLip left_lip = 5; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip, cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip.Builder, cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLipOrBuilder> + getLeftLipFieldBuilder() { + if (leftLipBuilder_ == null) { + leftLipBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip, cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLip.Builder, cmvr.api.BioheadCommand.FacialExpression.Mouth.LeftLipOrBuilder>( + getLeftLip(), + getParentForChildren(), + isClean()); + leftLip_ = null; + } + return leftLipBuilder_; + } + + private cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip rightLip_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip, cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip.Builder, cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLipOrBuilder> rightLipBuilder_; + /** + *
+         * 右唇角参数封装
+         * 
+ * + * .cmvr.api.FacialExpression.Mouth.RightLip right_lip = 6; + * @return Whether the rightLip field is set. + */ + public boolean hasRightLip() { + return rightLipBuilder_ != null || rightLip_ != null; + } + /** + *
+         * 右唇角参数封装
+         * 
+ * + * .cmvr.api.FacialExpression.Mouth.RightLip right_lip = 6; + * @return The rightLip. + */ + public cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip getRightLip() { + if (rightLipBuilder_ == null) { + return rightLip_ == null ? cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip.getDefaultInstance() : rightLip_; + } else { + return rightLipBuilder_.getMessage(); + } + } + /** + *
+         * 右唇角参数封装
+         * 
+ * + * .cmvr.api.FacialExpression.Mouth.RightLip right_lip = 6; + */ + public Builder setRightLip(cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip value) { + if (rightLipBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + rightLip_ = value; + onChanged(); + } else { + rightLipBuilder_.setMessage(value); + } + + return this; + } + /** + *
+         * 右唇角参数封装
+         * 
+ * + * .cmvr.api.FacialExpression.Mouth.RightLip right_lip = 6; + */ + public Builder setRightLip( + cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip.Builder builderForValue) { + if (rightLipBuilder_ == null) { + rightLip_ = builderForValue.build(); + onChanged(); + } else { + rightLipBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+         * 右唇角参数封装
+         * 
+ * + * .cmvr.api.FacialExpression.Mouth.RightLip right_lip = 6; + */ + public Builder mergeRightLip(cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip value) { + if (rightLipBuilder_ == null) { + if (rightLip_ != null) { + rightLip_ = + cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip.newBuilder(rightLip_).mergeFrom(value).buildPartial(); + } else { + rightLip_ = value; + } + onChanged(); + } else { + rightLipBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+         * 右唇角参数封装
+         * 
+ * + * .cmvr.api.FacialExpression.Mouth.RightLip right_lip = 6; + */ + public Builder clearRightLip() { + if (rightLipBuilder_ == null) { + rightLip_ = null; + onChanged(); + } else { + rightLip_ = null; + rightLipBuilder_ = null; + } + + return this; + } + /** + *
+         * 右唇角参数封装
+         * 
+ * + * .cmvr.api.FacialExpression.Mouth.RightLip right_lip = 6; + */ + public cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip.Builder getRightLipBuilder() { + + onChanged(); + return getRightLipFieldBuilder().getBuilder(); + } + /** + *
+         * 右唇角参数封装
+         * 
+ * + * .cmvr.api.FacialExpression.Mouth.RightLip right_lip = 6; + */ + public cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLipOrBuilder getRightLipOrBuilder() { + if (rightLipBuilder_ != null) { + return rightLipBuilder_.getMessageOrBuilder(); + } else { + return rightLip_ == null ? + cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip.getDefaultInstance() : rightLip_; + } + } + /** + *
+         * 右唇角参数封装
+         * 
+ * + * .cmvr.api.FacialExpression.Mouth.RightLip right_lip = 6; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip, cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip.Builder, cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLipOrBuilder> + getRightLipFieldBuilder() { + if (rightLipBuilder_ == null) { + rightLipBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip, cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLip.Builder, cmvr.api.BioheadCommand.FacialExpression.Mouth.RightLipOrBuilder>( + getRightLip(), + getParentForChildren(), + isClean()); + rightLip_ = null; + } + return rightLipBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.FacialExpression.Mouth) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.FacialExpression.Mouth) + private static final cmvr.api.BioheadCommand.FacialExpression.Mouth DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.BioheadCommand.FacialExpression.Mouth(); + } + + public static cmvr.api.BioheadCommand.FacialExpression.Mouth getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Mouth parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.Mouth getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface JawOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.FacialExpression.Jaw) + com.google.protobuf.MessageOrBuilder { + + /** + *
+       * 下巴水平位置
+       * 
+ * + * float x = 1; + * @return The x. + */ + float getX(); + + /** + *
+       * 下巴垂直位置
+       * 
+ * + * float y = 2; + * @return The y. + */ + float getY(); + } + /** + *
+     **
+     * 下巴控制参数
+     * 下巴的二维移动坐标(X/Y轴)
+     * 
+ * + * Protobuf type {@code cmvr.api.FacialExpression.Jaw} + */ + public static final class Jaw extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.FacialExpression.Jaw) + JawOrBuilder { + private static final long serialVersionUID = 0L; + // Use Jaw.newBuilder() to construct. + private Jaw(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Jaw() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Jaw(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_Jaw_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_Jaw_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.BioheadCommand.FacialExpression.Jaw.class, cmvr.api.BioheadCommand.FacialExpression.Jaw.Builder.class); + } + + public static final int X_FIELD_NUMBER = 1; + private float x_; + /** + *
+       * 下巴水平位置
+       * 
+ * + * float x = 1; + * @return The x. + */ + @java.lang.Override + public float getX() { + return x_; + } + + public static final int Y_FIELD_NUMBER = 2; + private float y_; + /** + *
+       * 下巴垂直位置
+       * 
+ * + * float y = 2; + * @return The y. + */ + @java.lang.Override + public float getY() { + return y_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (java.lang.Float.floatToRawIntBits(x_) != 0) { + output.writeFloat(1, x_); + } + if (java.lang.Float.floatToRawIntBits(y_) != 0) { + output.writeFloat(2, y_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (java.lang.Float.floatToRawIntBits(x_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(1, x_); + } + if (java.lang.Float.floatToRawIntBits(y_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(2, y_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.BioheadCommand.FacialExpression.Jaw)) { + return super.equals(obj); + } + cmvr.api.BioheadCommand.FacialExpression.Jaw other = (cmvr.api.BioheadCommand.FacialExpression.Jaw) obj; + + if (java.lang.Float.floatToIntBits(getX()) + != java.lang.Float.floatToIntBits( + other.getX())) return false; + if (java.lang.Float.floatToIntBits(getY()) + != java.lang.Float.floatToIntBits( + other.getY())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + X_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getX()); + hash = (37 * hash) + Y_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getY()); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.BioheadCommand.FacialExpression.Jaw parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.FacialExpression.Jaw parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression.Jaw parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.FacialExpression.Jaw parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression.Jaw parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.FacialExpression.Jaw parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression.Jaw parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.FacialExpression.Jaw parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression.Jaw parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.FacialExpression.Jaw parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression.Jaw parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.FacialExpression.Jaw parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.BioheadCommand.FacialExpression.Jaw prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+       **
+       * 下巴控制参数
+       * 下巴的二维移动坐标(X/Y轴)
+       * 
+ * + * Protobuf type {@code cmvr.api.FacialExpression.Jaw} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.FacialExpression.Jaw) + cmvr.api.BioheadCommand.FacialExpression.JawOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_Jaw_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_Jaw_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.BioheadCommand.FacialExpression.Jaw.class, cmvr.api.BioheadCommand.FacialExpression.Jaw.Builder.class); + } + + // Construct using cmvr.api.BioheadCommand.FacialExpression.Jaw.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + x_ = 0F; + + y_ = 0F; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_Jaw_descriptor; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.Jaw getDefaultInstanceForType() { + return cmvr.api.BioheadCommand.FacialExpression.Jaw.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.Jaw build() { + cmvr.api.BioheadCommand.FacialExpression.Jaw result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.Jaw buildPartial() { + cmvr.api.BioheadCommand.FacialExpression.Jaw result = new cmvr.api.BioheadCommand.FacialExpression.Jaw(this); + result.x_ = x_; + result.y_ = y_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.BioheadCommand.FacialExpression.Jaw) { + return mergeFrom((cmvr.api.BioheadCommand.FacialExpression.Jaw)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.BioheadCommand.FacialExpression.Jaw other) { + if (other == cmvr.api.BioheadCommand.FacialExpression.Jaw.getDefaultInstance()) return this; + if (other.getX() != 0F) { + setX(other.getX()); + } + if (other.getY() != 0F) { + setY(other.getY()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 13: { + x_ = input.readFloat(); + + break; + } // case 13 + case 21: { + y_ = input.readFloat(); + + break; + } // case 21 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private float x_ ; + /** + *
+         * 下巴水平位置
+         * 
+ * + * float x = 1; + * @return The x. + */ + @java.lang.Override + public float getX() { + return x_; + } + /** + *
+         * 下巴水平位置
+         * 
+ * + * float x = 1; + * @param value The x to set. + * @return This builder for chaining. + */ + public Builder setX(float value) { + + x_ = value; + onChanged(); + return this; + } + /** + *
+         * 下巴水平位置
+         * 
+ * + * float x = 1; + * @return This builder for chaining. + */ + public Builder clearX() { + + x_ = 0F; + onChanged(); + return this; + } + + private float y_ ; + /** + *
+         * 下巴垂直位置
+         * 
+ * + * float y = 2; + * @return The y. + */ + @java.lang.Override + public float getY() { + return y_; + } + /** + *
+         * 下巴垂直位置
+         * 
+ * + * float y = 2; + * @param value The y to set. + * @return This builder for chaining. + */ + public Builder setY(float value) { + + y_ = value; + onChanged(); + return this; + } + /** + *
+         * 下巴垂直位置
+         * 
+ * + * float y = 2; + * @return This builder for chaining. + */ + public Builder clearY() { + + y_ = 0F; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.FacialExpression.Jaw) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.FacialExpression.Jaw) + private static final cmvr.api.BioheadCommand.FacialExpression.Jaw DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.BioheadCommand.FacialExpression.Jaw(); + } + + public static cmvr.api.BioheadCommand.FacialExpression.Jaw getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Jaw parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.Jaw getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public static final int EYEBROW_FIELD_NUMBER = 3; + private cmvr.api.BioheadCommand.FacialExpression.Eyebrow eyebrow_; + /** + *
+     * 眉毛参数封装
+     * 
+ * + * .cmvr.api.FacialExpression.Eyebrow eyebrow = 3; + * @return Whether the eyebrow field is set. + */ + @java.lang.Override + public boolean hasEyebrow() { + return eyebrow_ != null; + } + /** + *
+     * 眉毛参数封装
+     * 
+ * + * .cmvr.api.FacialExpression.Eyebrow eyebrow = 3; + * @return The eyebrow. + */ + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.Eyebrow getEyebrow() { + return eyebrow_ == null ? cmvr.api.BioheadCommand.FacialExpression.Eyebrow.getDefaultInstance() : eyebrow_; + } + /** + *
+     * 眉毛参数封装
+     * 
+ * + * .cmvr.api.FacialExpression.Eyebrow eyebrow = 3; + */ + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.EyebrowOrBuilder getEyebrowOrBuilder() { + return getEyebrow(); + } + + public static final int EYELID_FIELD_NUMBER = 4; + private cmvr.api.BioheadCommand.FacialExpression.Eyelid eyelid_; + /** + *
+     * 眼睑参数封装
+     * 
+ * + * .cmvr.api.FacialExpression.Eyelid eyelid = 4; + * @return Whether the eyelid field is set. + */ + @java.lang.Override + public boolean hasEyelid() { + return eyelid_ != null; + } + /** + *
+     * 眼睑参数封装
+     * 
+ * + * .cmvr.api.FacialExpression.Eyelid eyelid = 4; + * @return The eyelid. + */ + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.Eyelid getEyelid() { + return eyelid_ == null ? cmvr.api.BioheadCommand.FacialExpression.Eyelid.getDefaultInstance() : eyelid_; + } + /** + *
+     * 眼睑参数封装
+     * 
+ * + * .cmvr.api.FacialExpression.Eyelid eyelid = 4; + */ + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.EyelidOrBuilder getEyelidOrBuilder() { + return getEyelid(); + } + + public static final int EYEBALL_FIELD_NUMBER = 5; + private cmvr.api.BioheadCommand.FacialExpression.Eyeball eyeball_; + /** + *
+     * 眼球参数封装
+     * 
+ * + * .cmvr.api.FacialExpression.Eyeball eyeball = 5; + * @return Whether the eyeball field is set. + */ + @java.lang.Override + public boolean hasEyeball() { + return eyeball_ != null; + } + /** + *
+     * 眼球参数封装
+     * 
+ * + * .cmvr.api.FacialExpression.Eyeball eyeball = 5; + * @return The eyeball. + */ + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.Eyeball getEyeball() { + return eyeball_ == null ? cmvr.api.BioheadCommand.FacialExpression.Eyeball.getDefaultInstance() : eyeball_; + } + /** + *
+     * 眼球参数封装
+     * 
+ * + * .cmvr.api.FacialExpression.Eyeball eyeball = 5; + */ + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.EyeballOrBuilder getEyeballOrBuilder() { + return getEyeball(); + } + + public static final int NOSE_FIELD_NUMBER = 6; + private cmvr.api.BioheadCommand.FacialExpression.Nose nose_; + /** + *
+     * 鼻子参数封装
+     * 
+ * + * .cmvr.api.FacialExpression.Nose nose = 6; + * @return Whether the nose field is set. + */ + @java.lang.Override + public boolean hasNose() { + return nose_ != null; + } + /** + *
+     * 鼻子参数封装
+     * 
+ * + * .cmvr.api.FacialExpression.Nose nose = 6; + * @return The nose. + */ + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.Nose getNose() { + return nose_ == null ? cmvr.api.BioheadCommand.FacialExpression.Nose.getDefaultInstance() : nose_; + } + /** + *
+     * 鼻子参数封装
+     * 
+ * + * .cmvr.api.FacialExpression.Nose nose = 6; + */ + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.NoseOrBuilder getNoseOrBuilder() { + return getNose(); + } + + public static final int MOUTH_FIELD_NUMBER = 7; + private cmvr.api.BioheadCommand.FacialExpression.Mouth mouth_; + /** + *
+     * 嘴巴参数封装
+     * 
+ * + * .cmvr.api.FacialExpression.Mouth mouth = 7; + * @return Whether the mouth field is set. + */ + @java.lang.Override + public boolean hasMouth() { + return mouth_ != null; + } + /** + *
+     * 嘴巴参数封装
+     * 
+ * + * .cmvr.api.FacialExpression.Mouth mouth = 7; + * @return The mouth. + */ + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.Mouth getMouth() { + return mouth_ == null ? cmvr.api.BioheadCommand.FacialExpression.Mouth.getDefaultInstance() : mouth_; + } + /** + *
+     * 嘴巴参数封装
+     * 
+ * + * .cmvr.api.FacialExpression.Mouth mouth = 7; + */ + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.MouthOrBuilder getMouthOrBuilder() { + return getMouth(); + } + + public static final int JAW_FIELD_NUMBER = 8; + private cmvr.api.BioheadCommand.FacialExpression.Jaw jaw_; + /** + *
+     * 下巴参数封装
+     * 
+ * + * .cmvr.api.FacialExpression.Jaw jaw = 8; + * @return Whether the jaw field is set. + */ + @java.lang.Override + public boolean hasJaw() { + return jaw_ != null; + } + /** + *
+     * 下巴参数封装
+     * 
+ * + * .cmvr.api.FacialExpression.Jaw jaw = 8; + * @return The jaw. + */ + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.Jaw getJaw() { + return jaw_ == null ? cmvr.api.BioheadCommand.FacialExpression.Jaw.getDefaultInstance() : jaw_; + } + /** + *
+     * 下巴参数封装
+     * 
+ * + * .cmvr.api.FacialExpression.Jaw jaw = 8; + */ + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression.JawOrBuilder getJawOrBuilder() { + return getJaw(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (eyebrow_ != null) { + output.writeMessage(3, getEyebrow()); + } + if (eyelid_ != null) { + output.writeMessage(4, getEyelid()); + } + if (eyeball_ != null) { + output.writeMessage(5, getEyeball()); + } + if (nose_ != null) { + output.writeMessage(6, getNose()); + } + if (mouth_ != null) { + output.writeMessage(7, getMouth()); + } + if (jaw_ != null) { + output.writeMessage(8, getJaw()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (eyebrow_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(3, getEyebrow()); + } + if (eyelid_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(4, getEyelid()); + } + if (eyeball_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(5, getEyeball()); + } + if (nose_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(6, getNose()); + } + if (mouth_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(7, getMouth()); + } + if (jaw_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(8, getJaw()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.BioheadCommand.FacialExpression)) { + return super.equals(obj); + } + cmvr.api.BioheadCommand.FacialExpression other = (cmvr.api.BioheadCommand.FacialExpression) obj; + + if (hasEyebrow() != other.hasEyebrow()) return false; + if (hasEyebrow()) { + if (!getEyebrow() + .equals(other.getEyebrow())) return false; + } + if (hasEyelid() != other.hasEyelid()) return false; + if (hasEyelid()) { + if (!getEyelid() + .equals(other.getEyelid())) return false; + } + if (hasEyeball() != other.hasEyeball()) return false; + if (hasEyeball()) { + if (!getEyeball() + .equals(other.getEyeball())) return false; + } + if (hasNose() != other.hasNose()) return false; + if (hasNose()) { + if (!getNose() + .equals(other.getNose())) return false; + } + if (hasMouth() != other.hasMouth()) return false; + if (hasMouth()) { + if (!getMouth() + .equals(other.getMouth())) return false; + } + if (hasJaw() != other.hasJaw()) return false; + if (hasJaw()) { + if (!getJaw() + .equals(other.getJaw())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasEyebrow()) { + hash = (37 * hash) + EYEBROW_FIELD_NUMBER; + hash = (53 * hash) + getEyebrow().hashCode(); + } + if (hasEyelid()) { + hash = (37 * hash) + EYELID_FIELD_NUMBER; + hash = (53 * hash) + getEyelid().hashCode(); + } + if (hasEyeball()) { + hash = (37 * hash) + EYEBALL_FIELD_NUMBER; + hash = (53 * hash) + getEyeball().hashCode(); + } + if (hasNose()) { + hash = (37 * hash) + NOSE_FIELD_NUMBER; + hash = (53 * hash) + getNose().hashCode(); + } + if (hasMouth()) { + hash = (37 * hash) + MOUTH_FIELD_NUMBER; + hash = (53 * hash) + getMouth().hashCode(); + } + if (hasJaw()) { + hash = (37 * hash) + JAW_FIELD_NUMBER; + hash = (53 * hash) + getJaw().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.BioheadCommand.FacialExpression parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.FacialExpression parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.FacialExpression parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.FacialExpression parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.FacialExpression parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.FacialExpression parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.BioheadCommand.FacialExpression parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.FacialExpression parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.BioheadCommand.FacialExpression prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     **
+     * 面部表情控制参数定义
+     * 包含生物头部机器人面部各部位的运动参数,用于精确控制面部表情
+     * 
+ * + * Protobuf type {@code cmvr.api.FacialExpression} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.FacialExpression) + cmvr.api.BioheadCommand.FacialExpressionOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.BioheadCommand.FacialExpression.class, cmvr.api.BioheadCommand.FacialExpression.Builder.class); + } + + // Construct using cmvr.api.BioheadCommand.FacialExpression.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (eyebrowBuilder_ == null) { + eyebrow_ = null; + } else { + eyebrow_ = null; + eyebrowBuilder_ = null; + } + if (eyelidBuilder_ == null) { + eyelid_ = null; + } else { + eyelid_ = null; + eyelidBuilder_ = null; + } + if (eyeballBuilder_ == null) { + eyeball_ = null; + } else { + eyeball_ = null; + eyeballBuilder_ = null; + } + if (noseBuilder_ == null) { + nose_ = null; + } else { + nose_ = null; + noseBuilder_ = null; + } + if (mouthBuilder_ == null) { + mouth_ = null; + } else { + mouth_ = null; + mouthBuilder_ = null; + } + if (jawBuilder_ == null) { + jaw_ = null; + } else { + jaw_ = null; + jawBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_FacialExpression_descriptor; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression getDefaultInstanceForType() { + return cmvr.api.BioheadCommand.FacialExpression.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression build() { + cmvr.api.BioheadCommand.FacialExpression result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression buildPartial() { + cmvr.api.BioheadCommand.FacialExpression result = new cmvr.api.BioheadCommand.FacialExpression(this); + if (eyebrowBuilder_ == null) { + result.eyebrow_ = eyebrow_; + } else { + result.eyebrow_ = eyebrowBuilder_.build(); + } + if (eyelidBuilder_ == null) { + result.eyelid_ = eyelid_; + } else { + result.eyelid_ = eyelidBuilder_.build(); + } + if (eyeballBuilder_ == null) { + result.eyeball_ = eyeball_; + } else { + result.eyeball_ = eyeballBuilder_.build(); + } + if (noseBuilder_ == null) { + result.nose_ = nose_; + } else { + result.nose_ = noseBuilder_.build(); + } + if (mouthBuilder_ == null) { + result.mouth_ = mouth_; + } else { + result.mouth_ = mouthBuilder_.build(); + } + if (jawBuilder_ == null) { + result.jaw_ = jaw_; + } else { + result.jaw_ = jawBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.BioheadCommand.FacialExpression) { + return mergeFrom((cmvr.api.BioheadCommand.FacialExpression)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.BioheadCommand.FacialExpression other) { + if (other == cmvr.api.BioheadCommand.FacialExpression.getDefaultInstance()) return this; + if (other.hasEyebrow()) { + mergeEyebrow(other.getEyebrow()); + } + if (other.hasEyelid()) { + mergeEyelid(other.getEyelid()); + } + if (other.hasEyeball()) { + mergeEyeball(other.getEyeball()); + } + if (other.hasNose()) { + mergeNose(other.getNose()); + } + if (other.hasMouth()) { + mergeMouth(other.getMouth()); + } + if (other.hasJaw()) { + mergeJaw(other.getJaw()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 26: { + input.readMessage( + getEyebrowFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 26 + case 34: { + input.readMessage( + getEyelidFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 34 + case 42: { + input.readMessage( + getEyeballFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 42 + case 50: { + input.readMessage( + getNoseFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 50 + case 58: { + input.readMessage( + getMouthFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 58 + case 66: { + input.readMessage( + getJawFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 66 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.BioheadCommand.FacialExpression.Eyebrow eyebrow_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.BioheadCommand.FacialExpression.Eyebrow, cmvr.api.BioheadCommand.FacialExpression.Eyebrow.Builder, cmvr.api.BioheadCommand.FacialExpression.EyebrowOrBuilder> eyebrowBuilder_; + /** + *
+       * 眉毛参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Eyebrow eyebrow = 3; + * @return Whether the eyebrow field is set. + */ + public boolean hasEyebrow() { + return eyebrowBuilder_ != null || eyebrow_ != null; + } + /** + *
+       * 眉毛参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Eyebrow eyebrow = 3; + * @return The eyebrow. + */ + public cmvr.api.BioheadCommand.FacialExpression.Eyebrow getEyebrow() { + if (eyebrowBuilder_ == null) { + return eyebrow_ == null ? cmvr.api.BioheadCommand.FacialExpression.Eyebrow.getDefaultInstance() : eyebrow_; + } else { + return eyebrowBuilder_.getMessage(); + } + } + /** + *
+       * 眉毛参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Eyebrow eyebrow = 3; + */ + public Builder setEyebrow(cmvr.api.BioheadCommand.FacialExpression.Eyebrow value) { + if (eyebrowBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + eyebrow_ = value; + onChanged(); + } else { + eyebrowBuilder_.setMessage(value); + } + + return this; + } + /** + *
+       * 眉毛参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Eyebrow eyebrow = 3; + */ + public Builder setEyebrow( + cmvr.api.BioheadCommand.FacialExpression.Eyebrow.Builder builderForValue) { + if (eyebrowBuilder_ == null) { + eyebrow_ = builderForValue.build(); + onChanged(); + } else { + eyebrowBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+       * 眉毛参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Eyebrow eyebrow = 3; + */ + public Builder mergeEyebrow(cmvr.api.BioheadCommand.FacialExpression.Eyebrow value) { + if (eyebrowBuilder_ == null) { + if (eyebrow_ != null) { + eyebrow_ = + cmvr.api.BioheadCommand.FacialExpression.Eyebrow.newBuilder(eyebrow_).mergeFrom(value).buildPartial(); + } else { + eyebrow_ = value; + } + onChanged(); + } else { + eyebrowBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+       * 眉毛参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Eyebrow eyebrow = 3; + */ + public Builder clearEyebrow() { + if (eyebrowBuilder_ == null) { + eyebrow_ = null; + onChanged(); + } else { + eyebrow_ = null; + eyebrowBuilder_ = null; + } + + return this; + } + /** + *
+       * 眉毛参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Eyebrow eyebrow = 3; + */ + public cmvr.api.BioheadCommand.FacialExpression.Eyebrow.Builder getEyebrowBuilder() { + + onChanged(); + return getEyebrowFieldBuilder().getBuilder(); + } + /** + *
+       * 眉毛参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Eyebrow eyebrow = 3; + */ + public cmvr.api.BioheadCommand.FacialExpression.EyebrowOrBuilder getEyebrowOrBuilder() { + if (eyebrowBuilder_ != null) { + return eyebrowBuilder_.getMessageOrBuilder(); + } else { + return eyebrow_ == null ? + cmvr.api.BioheadCommand.FacialExpression.Eyebrow.getDefaultInstance() : eyebrow_; + } + } + /** + *
+       * 眉毛参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Eyebrow eyebrow = 3; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.BioheadCommand.FacialExpression.Eyebrow, cmvr.api.BioheadCommand.FacialExpression.Eyebrow.Builder, cmvr.api.BioheadCommand.FacialExpression.EyebrowOrBuilder> + getEyebrowFieldBuilder() { + if (eyebrowBuilder_ == null) { + eyebrowBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.BioheadCommand.FacialExpression.Eyebrow, cmvr.api.BioheadCommand.FacialExpression.Eyebrow.Builder, cmvr.api.BioheadCommand.FacialExpression.EyebrowOrBuilder>( + getEyebrow(), + getParentForChildren(), + isClean()); + eyebrow_ = null; + } + return eyebrowBuilder_; + } + + private cmvr.api.BioheadCommand.FacialExpression.Eyelid eyelid_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.BioheadCommand.FacialExpression.Eyelid, cmvr.api.BioheadCommand.FacialExpression.Eyelid.Builder, cmvr.api.BioheadCommand.FacialExpression.EyelidOrBuilder> eyelidBuilder_; + /** + *
+       * 眼睑参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Eyelid eyelid = 4; + * @return Whether the eyelid field is set. + */ + public boolean hasEyelid() { + return eyelidBuilder_ != null || eyelid_ != null; + } + /** + *
+       * 眼睑参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Eyelid eyelid = 4; + * @return The eyelid. + */ + public cmvr.api.BioheadCommand.FacialExpression.Eyelid getEyelid() { + if (eyelidBuilder_ == null) { + return eyelid_ == null ? cmvr.api.BioheadCommand.FacialExpression.Eyelid.getDefaultInstance() : eyelid_; + } else { + return eyelidBuilder_.getMessage(); + } + } + /** + *
+       * 眼睑参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Eyelid eyelid = 4; + */ + public Builder setEyelid(cmvr.api.BioheadCommand.FacialExpression.Eyelid value) { + if (eyelidBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + eyelid_ = value; + onChanged(); + } else { + eyelidBuilder_.setMessage(value); + } + + return this; + } + /** + *
+       * 眼睑参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Eyelid eyelid = 4; + */ + public Builder setEyelid( + cmvr.api.BioheadCommand.FacialExpression.Eyelid.Builder builderForValue) { + if (eyelidBuilder_ == null) { + eyelid_ = builderForValue.build(); + onChanged(); + } else { + eyelidBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+       * 眼睑参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Eyelid eyelid = 4; + */ + public Builder mergeEyelid(cmvr.api.BioheadCommand.FacialExpression.Eyelid value) { + if (eyelidBuilder_ == null) { + if (eyelid_ != null) { + eyelid_ = + cmvr.api.BioheadCommand.FacialExpression.Eyelid.newBuilder(eyelid_).mergeFrom(value).buildPartial(); + } else { + eyelid_ = value; + } + onChanged(); + } else { + eyelidBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+       * 眼睑参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Eyelid eyelid = 4; + */ + public Builder clearEyelid() { + if (eyelidBuilder_ == null) { + eyelid_ = null; + onChanged(); + } else { + eyelid_ = null; + eyelidBuilder_ = null; + } + + return this; + } + /** + *
+       * 眼睑参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Eyelid eyelid = 4; + */ + public cmvr.api.BioheadCommand.FacialExpression.Eyelid.Builder getEyelidBuilder() { + + onChanged(); + return getEyelidFieldBuilder().getBuilder(); + } + /** + *
+       * 眼睑参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Eyelid eyelid = 4; + */ + public cmvr.api.BioheadCommand.FacialExpression.EyelidOrBuilder getEyelidOrBuilder() { + if (eyelidBuilder_ != null) { + return eyelidBuilder_.getMessageOrBuilder(); + } else { + return eyelid_ == null ? + cmvr.api.BioheadCommand.FacialExpression.Eyelid.getDefaultInstance() : eyelid_; + } + } + /** + *
+       * 眼睑参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Eyelid eyelid = 4; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.BioheadCommand.FacialExpression.Eyelid, cmvr.api.BioheadCommand.FacialExpression.Eyelid.Builder, cmvr.api.BioheadCommand.FacialExpression.EyelidOrBuilder> + getEyelidFieldBuilder() { + if (eyelidBuilder_ == null) { + eyelidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.BioheadCommand.FacialExpression.Eyelid, cmvr.api.BioheadCommand.FacialExpression.Eyelid.Builder, cmvr.api.BioheadCommand.FacialExpression.EyelidOrBuilder>( + getEyelid(), + getParentForChildren(), + isClean()); + eyelid_ = null; + } + return eyelidBuilder_; + } + + private cmvr.api.BioheadCommand.FacialExpression.Eyeball eyeball_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.BioheadCommand.FacialExpression.Eyeball, cmvr.api.BioheadCommand.FacialExpression.Eyeball.Builder, cmvr.api.BioheadCommand.FacialExpression.EyeballOrBuilder> eyeballBuilder_; + /** + *
+       * 眼球参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Eyeball eyeball = 5; + * @return Whether the eyeball field is set. + */ + public boolean hasEyeball() { + return eyeballBuilder_ != null || eyeball_ != null; + } + /** + *
+       * 眼球参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Eyeball eyeball = 5; + * @return The eyeball. + */ + public cmvr.api.BioheadCommand.FacialExpression.Eyeball getEyeball() { + if (eyeballBuilder_ == null) { + return eyeball_ == null ? cmvr.api.BioheadCommand.FacialExpression.Eyeball.getDefaultInstance() : eyeball_; + } else { + return eyeballBuilder_.getMessage(); + } + } + /** + *
+       * 眼球参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Eyeball eyeball = 5; + */ + public Builder setEyeball(cmvr.api.BioheadCommand.FacialExpression.Eyeball value) { + if (eyeballBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + eyeball_ = value; + onChanged(); + } else { + eyeballBuilder_.setMessage(value); + } + + return this; + } + /** + *
+       * 眼球参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Eyeball eyeball = 5; + */ + public Builder setEyeball( + cmvr.api.BioheadCommand.FacialExpression.Eyeball.Builder builderForValue) { + if (eyeballBuilder_ == null) { + eyeball_ = builderForValue.build(); + onChanged(); + } else { + eyeballBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+       * 眼球参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Eyeball eyeball = 5; + */ + public Builder mergeEyeball(cmvr.api.BioheadCommand.FacialExpression.Eyeball value) { + if (eyeballBuilder_ == null) { + if (eyeball_ != null) { + eyeball_ = + cmvr.api.BioheadCommand.FacialExpression.Eyeball.newBuilder(eyeball_).mergeFrom(value).buildPartial(); + } else { + eyeball_ = value; + } + onChanged(); + } else { + eyeballBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+       * 眼球参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Eyeball eyeball = 5; + */ + public Builder clearEyeball() { + if (eyeballBuilder_ == null) { + eyeball_ = null; + onChanged(); + } else { + eyeball_ = null; + eyeballBuilder_ = null; + } + + return this; + } + /** + *
+       * 眼球参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Eyeball eyeball = 5; + */ + public cmvr.api.BioheadCommand.FacialExpression.Eyeball.Builder getEyeballBuilder() { + + onChanged(); + return getEyeballFieldBuilder().getBuilder(); + } + /** + *
+       * 眼球参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Eyeball eyeball = 5; + */ + public cmvr.api.BioheadCommand.FacialExpression.EyeballOrBuilder getEyeballOrBuilder() { + if (eyeballBuilder_ != null) { + return eyeballBuilder_.getMessageOrBuilder(); + } else { + return eyeball_ == null ? + cmvr.api.BioheadCommand.FacialExpression.Eyeball.getDefaultInstance() : eyeball_; + } + } + /** + *
+       * 眼球参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Eyeball eyeball = 5; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.BioheadCommand.FacialExpression.Eyeball, cmvr.api.BioheadCommand.FacialExpression.Eyeball.Builder, cmvr.api.BioheadCommand.FacialExpression.EyeballOrBuilder> + getEyeballFieldBuilder() { + if (eyeballBuilder_ == null) { + eyeballBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.BioheadCommand.FacialExpression.Eyeball, cmvr.api.BioheadCommand.FacialExpression.Eyeball.Builder, cmvr.api.BioheadCommand.FacialExpression.EyeballOrBuilder>( + getEyeball(), + getParentForChildren(), + isClean()); + eyeball_ = null; + } + return eyeballBuilder_; + } + + private cmvr.api.BioheadCommand.FacialExpression.Nose nose_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.BioheadCommand.FacialExpression.Nose, cmvr.api.BioheadCommand.FacialExpression.Nose.Builder, cmvr.api.BioheadCommand.FacialExpression.NoseOrBuilder> noseBuilder_; + /** + *
+       * 鼻子参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Nose nose = 6; + * @return Whether the nose field is set. + */ + public boolean hasNose() { + return noseBuilder_ != null || nose_ != null; + } + /** + *
+       * 鼻子参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Nose nose = 6; + * @return The nose. + */ + public cmvr.api.BioheadCommand.FacialExpression.Nose getNose() { + if (noseBuilder_ == null) { + return nose_ == null ? cmvr.api.BioheadCommand.FacialExpression.Nose.getDefaultInstance() : nose_; + } else { + return noseBuilder_.getMessage(); + } + } + /** + *
+       * 鼻子参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Nose nose = 6; + */ + public Builder setNose(cmvr.api.BioheadCommand.FacialExpression.Nose value) { + if (noseBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + nose_ = value; + onChanged(); + } else { + noseBuilder_.setMessage(value); + } + + return this; + } + /** + *
+       * 鼻子参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Nose nose = 6; + */ + public Builder setNose( + cmvr.api.BioheadCommand.FacialExpression.Nose.Builder builderForValue) { + if (noseBuilder_ == null) { + nose_ = builderForValue.build(); + onChanged(); + } else { + noseBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+       * 鼻子参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Nose nose = 6; + */ + public Builder mergeNose(cmvr.api.BioheadCommand.FacialExpression.Nose value) { + if (noseBuilder_ == null) { + if (nose_ != null) { + nose_ = + cmvr.api.BioheadCommand.FacialExpression.Nose.newBuilder(nose_).mergeFrom(value).buildPartial(); + } else { + nose_ = value; + } + onChanged(); + } else { + noseBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+       * 鼻子参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Nose nose = 6; + */ + public Builder clearNose() { + if (noseBuilder_ == null) { + nose_ = null; + onChanged(); + } else { + nose_ = null; + noseBuilder_ = null; + } + + return this; + } + /** + *
+       * 鼻子参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Nose nose = 6; + */ + public cmvr.api.BioheadCommand.FacialExpression.Nose.Builder getNoseBuilder() { + + onChanged(); + return getNoseFieldBuilder().getBuilder(); + } + /** + *
+       * 鼻子参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Nose nose = 6; + */ + public cmvr.api.BioheadCommand.FacialExpression.NoseOrBuilder getNoseOrBuilder() { + if (noseBuilder_ != null) { + return noseBuilder_.getMessageOrBuilder(); + } else { + return nose_ == null ? + cmvr.api.BioheadCommand.FacialExpression.Nose.getDefaultInstance() : nose_; + } + } + /** + *
+       * 鼻子参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Nose nose = 6; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.BioheadCommand.FacialExpression.Nose, cmvr.api.BioheadCommand.FacialExpression.Nose.Builder, cmvr.api.BioheadCommand.FacialExpression.NoseOrBuilder> + getNoseFieldBuilder() { + if (noseBuilder_ == null) { + noseBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.BioheadCommand.FacialExpression.Nose, cmvr.api.BioheadCommand.FacialExpression.Nose.Builder, cmvr.api.BioheadCommand.FacialExpression.NoseOrBuilder>( + getNose(), + getParentForChildren(), + isClean()); + nose_ = null; + } + return noseBuilder_; + } + + private cmvr.api.BioheadCommand.FacialExpression.Mouth mouth_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.BioheadCommand.FacialExpression.Mouth, cmvr.api.BioheadCommand.FacialExpression.Mouth.Builder, cmvr.api.BioheadCommand.FacialExpression.MouthOrBuilder> mouthBuilder_; + /** + *
+       * 嘴巴参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Mouth mouth = 7; + * @return Whether the mouth field is set. + */ + public boolean hasMouth() { + return mouthBuilder_ != null || mouth_ != null; + } + /** + *
+       * 嘴巴参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Mouth mouth = 7; + * @return The mouth. + */ + public cmvr.api.BioheadCommand.FacialExpression.Mouth getMouth() { + if (mouthBuilder_ == null) { + return mouth_ == null ? cmvr.api.BioheadCommand.FacialExpression.Mouth.getDefaultInstance() : mouth_; + } else { + return mouthBuilder_.getMessage(); + } + } + /** + *
+       * 嘴巴参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Mouth mouth = 7; + */ + public Builder setMouth(cmvr.api.BioheadCommand.FacialExpression.Mouth value) { + if (mouthBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + mouth_ = value; + onChanged(); + } else { + mouthBuilder_.setMessage(value); + } + + return this; + } + /** + *
+       * 嘴巴参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Mouth mouth = 7; + */ + public Builder setMouth( + cmvr.api.BioheadCommand.FacialExpression.Mouth.Builder builderForValue) { + if (mouthBuilder_ == null) { + mouth_ = builderForValue.build(); + onChanged(); + } else { + mouthBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+       * 嘴巴参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Mouth mouth = 7; + */ + public Builder mergeMouth(cmvr.api.BioheadCommand.FacialExpression.Mouth value) { + if (mouthBuilder_ == null) { + if (mouth_ != null) { + mouth_ = + cmvr.api.BioheadCommand.FacialExpression.Mouth.newBuilder(mouth_).mergeFrom(value).buildPartial(); + } else { + mouth_ = value; + } + onChanged(); + } else { + mouthBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+       * 嘴巴参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Mouth mouth = 7; + */ + public Builder clearMouth() { + if (mouthBuilder_ == null) { + mouth_ = null; + onChanged(); + } else { + mouth_ = null; + mouthBuilder_ = null; + } + + return this; + } + /** + *
+       * 嘴巴参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Mouth mouth = 7; + */ + public cmvr.api.BioheadCommand.FacialExpression.Mouth.Builder getMouthBuilder() { + + onChanged(); + return getMouthFieldBuilder().getBuilder(); + } + /** + *
+       * 嘴巴参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Mouth mouth = 7; + */ + public cmvr.api.BioheadCommand.FacialExpression.MouthOrBuilder getMouthOrBuilder() { + if (mouthBuilder_ != null) { + return mouthBuilder_.getMessageOrBuilder(); + } else { + return mouth_ == null ? + cmvr.api.BioheadCommand.FacialExpression.Mouth.getDefaultInstance() : mouth_; + } + } + /** + *
+       * 嘴巴参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Mouth mouth = 7; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.BioheadCommand.FacialExpression.Mouth, cmvr.api.BioheadCommand.FacialExpression.Mouth.Builder, cmvr.api.BioheadCommand.FacialExpression.MouthOrBuilder> + getMouthFieldBuilder() { + if (mouthBuilder_ == null) { + mouthBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.BioheadCommand.FacialExpression.Mouth, cmvr.api.BioheadCommand.FacialExpression.Mouth.Builder, cmvr.api.BioheadCommand.FacialExpression.MouthOrBuilder>( + getMouth(), + getParentForChildren(), + isClean()); + mouth_ = null; + } + return mouthBuilder_; + } + + private cmvr.api.BioheadCommand.FacialExpression.Jaw jaw_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.BioheadCommand.FacialExpression.Jaw, cmvr.api.BioheadCommand.FacialExpression.Jaw.Builder, cmvr.api.BioheadCommand.FacialExpression.JawOrBuilder> jawBuilder_; + /** + *
+       * 下巴参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Jaw jaw = 8; + * @return Whether the jaw field is set. + */ + public boolean hasJaw() { + return jawBuilder_ != null || jaw_ != null; + } + /** + *
+       * 下巴参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Jaw jaw = 8; + * @return The jaw. + */ + public cmvr.api.BioheadCommand.FacialExpression.Jaw getJaw() { + if (jawBuilder_ == null) { + return jaw_ == null ? cmvr.api.BioheadCommand.FacialExpression.Jaw.getDefaultInstance() : jaw_; + } else { + return jawBuilder_.getMessage(); + } + } + /** + *
+       * 下巴参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Jaw jaw = 8; + */ + public Builder setJaw(cmvr.api.BioheadCommand.FacialExpression.Jaw value) { + if (jawBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + jaw_ = value; + onChanged(); + } else { + jawBuilder_.setMessage(value); + } + + return this; + } + /** + *
+       * 下巴参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Jaw jaw = 8; + */ + public Builder setJaw( + cmvr.api.BioheadCommand.FacialExpression.Jaw.Builder builderForValue) { + if (jawBuilder_ == null) { + jaw_ = builderForValue.build(); + onChanged(); + } else { + jawBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+       * 下巴参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Jaw jaw = 8; + */ + public Builder mergeJaw(cmvr.api.BioheadCommand.FacialExpression.Jaw value) { + if (jawBuilder_ == null) { + if (jaw_ != null) { + jaw_ = + cmvr.api.BioheadCommand.FacialExpression.Jaw.newBuilder(jaw_).mergeFrom(value).buildPartial(); + } else { + jaw_ = value; + } + onChanged(); + } else { + jawBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+       * 下巴参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Jaw jaw = 8; + */ + public Builder clearJaw() { + if (jawBuilder_ == null) { + jaw_ = null; + onChanged(); + } else { + jaw_ = null; + jawBuilder_ = null; + } + + return this; + } + /** + *
+       * 下巴参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Jaw jaw = 8; + */ + public cmvr.api.BioheadCommand.FacialExpression.Jaw.Builder getJawBuilder() { + + onChanged(); + return getJawFieldBuilder().getBuilder(); + } + /** + *
+       * 下巴参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Jaw jaw = 8; + */ + public cmvr.api.BioheadCommand.FacialExpression.JawOrBuilder getJawOrBuilder() { + if (jawBuilder_ != null) { + return jawBuilder_.getMessageOrBuilder(); + } else { + return jaw_ == null ? + cmvr.api.BioheadCommand.FacialExpression.Jaw.getDefaultInstance() : jaw_; + } + } + /** + *
+       * 下巴参数封装
+       * 
+ * + * .cmvr.api.FacialExpression.Jaw jaw = 8; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.BioheadCommand.FacialExpression.Jaw, cmvr.api.BioheadCommand.FacialExpression.Jaw.Builder, cmvr.api.BioheadCommand.FacialExpression.JawOrBuilder> + getJawFieldBuilder() { + if (jawBuilder_ == null) { + jawBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.BioheadCommand.FacialExpression.Jaw, cmvr.api.BioheadCommand.FacialExpression.Jaw.Builder, cmvr.api.BioheadCommand.FacialExpression.JawOrBuilder>( + getJaw(), + getParentForChildren(), + isClean()); + jaw_ = null; + } + return jawBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.FacialExpression) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.FacialExpression) + private static final cmvr.api.BioheadCommand.FacialExpression DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.BioheadCommand.FacialExpression(); + } + + public static cmvr.api.BioheadCommand.FacialExpression getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public FacialExpression parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface SetFacialExpressionOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.SetFacialExpression) + com.google.protobuf.MessageOrBuilder { + } + /** + *
+   **
+   * 设置面部表情命令(集成通用命令头)
+   * 用于单次设置生物头部的面部表情
+   * 
+ * + * Protobuf type {@code cmvr.api.SetFacialExpression} + */ + public static final class SetFacialExpression extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.SetFacialExpression) + SetFacialExpressionOrBuilder { + private static final long serialVersionUID = 0L; + // Use SetFacialExpression.newBuilder() to construct. + private SetFacialExpression(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private SetFacialExpression() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new SetFacialExpression(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_SetFacialExpression_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_SetFacialExpression_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.BioheadCommand.SetFacialExpression.class, cmvr.api.BioheadCommand.SetFacialExpression.Builder.class); + } + + public interface RequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.SetFacialExpression.Request) + com.google.protobuf.MessageOrBuilder { + + /** + *
+       * 通用命令头,包含设备ID和时间戳
+       * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + *
+       * 通用命令头,包含设备ID和时间戳
+       * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Request getHeader(); + /** + *
+       * 通用命令头,包含设备ID和时间戳
+       * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder(); + + /** + *
+       * 具体面部表情参数
+       * 
+ * + * .cmvr.api.FacialExpression expression = 2; + * @return Whether the expression field is set. + */ + boolean hasExpression(); + /** + *
+       * 具体面部表情参数
+       * 
+ * + * .cmvr.api.FacialExpression expression = 2; + * @return The expression. + */ + cmvr.api.BioheadCommand.FacialExpression getExpression(); + /** + *
+       * 具体面部表情参数
+       * 
+ * + * .cmvr.api.FacialExpression expression = 2; + */ + cmvr.api.BioheadCommand.FacialExpressionOrBuilder getExpressionOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.SetFacialExpression.Request} + */ + public static final class Request extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.SetFacialExpression.Request) + RequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use Request.newBuilder() to construct. + private Request(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Request() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Request(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_SetFacialExpression_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_SetFacialExpression_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.BioheadCommand.SetFacialExpression.Request.class, cmvr.api.BioheadCommand.SetFacialExpression.Request.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Request header_; + /** + *
+       * 通用命令头,包含设备ID和时间戳
+       * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + *
+       * 通用命令头,包含设备ID和时间戳
+       * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + /** + *
+       * 通用命令头,包含设备ID和时间戳
+       * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + public static final int EXPRESSION_FIELD_NUMBER = 2; + private cmvr.api.BioheadCommand.FacialExpression expression_; + /** + *
+       * 具体面部表情参数
+       * 
+ * + * .cmvr.api.FacialExpression expression = 2; + * @return Whether the expression field is set. + */ + @java.lang.Override + public boolean hasExpression() { + return expression_ != null; + } + /** + *
+       * 具体面部表情参数
+       * 
+ * + * .cmvr.api.FacialExpression expression = 2; + * @return The expression. + */ + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression getExpression() { + return expression_ == null ? cmvr.api.BioheadCommand.FacialExpression.getDefaultInstance() : expression_; + } + /** + *
+       * 具体面部表情参数
+       * 
+ * + * .cmvr.api.FacialExpression expression = 2; + */ + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpressionOrBuilder getExpressionOrBuilder() { + return getExpression(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + if (expression_ != null) { + output.writeMessage(2, getExpression()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + if (expression_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, getExpression()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.BioheadCommand.SetFacialExpression.Request)) { + return super.equals(obj); + } + cmvr.api.BioheadCommand.SetFacialExpression.Request other = (cmvr.api.BioheadCommand.SetFacialExpression.Request) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (hasExpression() != other.hasExpression()) return false; + if (hasExpression()) { + if (!getExpression() + .equals(other.getExpression())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + if (hasExpression()) { + hash = (37 * hash) + EXPRESSION_FIELD_NUMBER; + hash = (53 * hash) + getExpression().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.BioheadCommand.SetFacialExpression.Request parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.SetFacialExpression.Request parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.SetFacialExpression.Request parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.SetFacialExpression.Request parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.SetFacialExpression.Request parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.SetFacialExpression.Request parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.SetFacialExpression.Request parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.SetFacialExpression.Request parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.BioheadCommand.SetFacialExpression.Request parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.SetFacialExpression.Request parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.BioheadCommand.SetFacialExpression.Request parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.SetFacialExpression.Request parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.BioheadCommand.SetFacialExpression.Request prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.SetFacialExpression.Request} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.SetFacialExpression.Request) + cmvr.api.BioheadCommand.SetFacialExpression.RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_SetFacialExpression_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_SetFacialExpression_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.BioheadCommand.SetFacialExpression.Request.class, cmvr.api.BioheadCommand.SetFacialExpression.Request.Builder.class); + } + + // Construct using cmvr.api.BioheadCommand.SetFacialExpression.Request.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + if (expressionBuilder_ == null) { + expression_ = null; + } else { + expression_ = null; + expressionBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_SetFacialExpression_Request_descriptor; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.SetFacialExpression.Request getDefaultInstanceForType() { + return cmvr.api.BioheadCommand.SetFacialExpression.Request.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.BioheadCommand.SetFacialExpression.Request build() { + cmvr.api.BioheadCommand.SetFacialExpression.Request result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.SetFacialExpression.Request buildPartial() { + cmvr.api.BioheadCommand.SetFacialExpression.Request result = new cmvr.api.BioheadCommand.SetFacialExpression.Request(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + if (expressionBuilder_ == null) { + result.expression_ = expression_; + } else { + result.expression_ = expressionBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.BioheadCommand.SetFacialExpression.Request) { + return mergeFrom((cmvr.api.BioheadCommand.SetFacialExpression.Request)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.BioheadCommand.SetFacialExpression.Request other) { + if (other == cmvr.api.BioheadCommand.SetFacialExpression.Request.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + if (other.hasExpression()) { + mergeExpression(other.getExpression()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + case 18: { + input.readMessage( + getExpressionFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 18 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Request header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> headerBuilder_; + /** + *
+         * 通用命令头,包含设备ID和时间戳
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + *
+         * 通用命令头,包含设备ID和时间戳
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Request getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + *
+         * 通用命令头,包含设备ID和时间戳
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + *
+         * 通用命令头,包含设备ID和时间戳
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Request.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+         * 通用命令头,包含设备ID和时间戳
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Request.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+         * 通用命令头,包含设备ID和时间戳
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + *
+         * 通用命令头,包含设备ID和时间戳
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.Request.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + *
+         * 通用命令头,包含设备ID和时间戳
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + } + /** + *
+         * 通用命令头,包含设备ID和时间戳
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + + private cmvr.api.BioheadCommand.FacialExpression expression_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.BioheadCommand.FacialExpression, cmvr.api.BioheadCommand.FacialExpression.Builder, cmvr.api.BioheadCommand.FacialExpressionOrBuilder> expressionBuilder_; + /** + *
+         * 具体面部表情参数
+         * 
+ * + * .cmvr.api.FacialExpression expression = 2; + * @return Whether the expression field is set. + */ + public boolean hasExpression() { + return expressionBuilder_ != null || expression_ != null; + } + /** + *
+         * 具体面部表情参数
+         * 
+ * + * .cmvr.api.FacialExpression expression = 2; + * @return The expression. + */ + public cmvr.api.BioheadCommand.FacialExpression getExpression() { + if (expressionBuilder_ == null) { + return expression_ == null ? cmvr.api.BioheadCommand.FacialExpression.getDefaultInstance() : expression_; + } else { + return expressionBuilder_.getMessage(); + } + } + /** + *
+         * 具体面部表情参数
+         * 
+ * + * .cmvr.api.FacialExpression expression = 2; + */ + public Builder setExpression(cmvr.api.BioheadCommand.FacialExpression value) { + if (expressionBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + expression_ = value; + onChanged(); + } else { + expressionBuilder_.setMessage(value); + } + + return this; + } + /** + *
+         * 具体面部表情参数
+         * 
+ * + * .cmvr.api.FacialExpression expression = 2; + */ + public Builder setExpression( + cmvr.api.BioheadCommand.FacialExpression.Builder builderForValue) { + if (expressionBuilder_ == null) { + expression_ = builderForValue.build(); + onChanged(); + } else { + expressionBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+         * 具体面部表情参数
+         * 
+ * + * .cmvr.api.FacialExpression expression = 2; + */ + public Builder mergeExpression(cmvr.api.BioheadCommand.FacialExpression value) { + if (expressionBuilder_ == null) { + if (expression_ != null) { + expression_ = + cmvr.api.BioheadCommand.FacialExpression.newBuilder(expression_).mergeFrom(value).buildPartial(); + } else { + expression_ = value; + } + onChanged(); + } else { + expressionBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+         * 具体面部表情参数
+         * 
+ * + * .cmvr.api.FacialExpression expression = 2; + */ + public Builder clearExpression() { + if (expressionBuilder_ == null) { + expression_ = null; + onChanged(); + } else { + expression_ = null; + expressionBuilder_ = null; + } + + return this; + } + /** + *
+         * 具体面部表情参数
+         * 
+ * + * .cmvr.api.FacialExpression expression = 2; + */ + public cmvr.api.BioheadCommand.FacialExpression.Builder getExpressionBuilder() { + + onChanged(); + return getExpressionFieldBuilder().getBuilder(); + } + /** + *
+         * 具体面部表情参数
+         * 
+ * + * .cmvr.api.FacialExpression expression = 2; + */ + public cmvr.api.BioheadCommand.FacialExpressionOrBuilder getExpressionOrBuilder() { + if (expressionBuilder_ != null) { + return expressionBuilder_.getMessageOrBuilder(); + } else { + return expression_ == null ? + cmvr.api.BioheadCommand.FacialExpression.getDefaultInstance() : expression_; + } + } + /** + *
+         * 具体面部表情参数
+         * 
+ * + * .cmvr.api.FacialExpression expression = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.BioheadCommand.FacialExpression, cmvr.api.BioheadCommand.FacialExpression.Builder, cmvr.api.BioheadCommand.FacialExpressionOrBuilder> + getExpressionFieldBuilder() { + if (expressionBuilder_ == null) { + expressionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.BioheadCommand.FacialExpression, cmvr.api.BioheadCommand.FacialExpression.Builder, cmvr.api.BioheadCommand.FacialExpressionOrBuilder>( + getExpression(), + getParentForChildren(), + isClean()); + expression_ = null; + } + return expressionBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.SetFacialExpression.Request) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.SetFacialExpression.Request) + private static final cmvr.api.BioheadCommand.SetFacialExpression.Request DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.BioheadCommand.SetFacialExpression.Request(); + } + + public static cmvr.api.BioheadCommand.SetFacialExpression.Request getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.SetFacialExpression.Request getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface FeedbackOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.SetFacialExpression.Feedback) + com.google.protobuf.MessageOrBuilder { + + /** + *
+       * 通用反馈头,包含操作状态和时间戳
+       * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + *
+       * 通用反馈头,包含操作状态和时间戳
+       * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Feedback getHeader(); + /** + *
+       * 通用反馈头,包含操作状态和时间戳
+       * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder(); + + /** + *
+       * 表情执行任务ID
+       * 
+ * + * string execution_id = 2; + * @return The executionId. + */ + java.lang.String getExecutionId(); + /** + *
+       * 表情执行任务ID
+       * 
+ * + * string execution_id = 2; + * @return The bytes for executionId. + */ + com.google.protobuf.ByteString + getExecutionIdBytes(); + + /** + *
+       * 表情执行耗时(毫秒)
+       * 
+ * + * float execution_time_ms = 3; + * @return The executionTimeMs. + */ + float getExecutionTimeMs(); + } + /** + * Protobuf type {@code cmvr.api.SetFacialExpression.Feedback} + */ + public static final class Feedback extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.SetFacialExpression.Feedback) + FeedbackOrBuilder { + private static final long serialVersionUID = 0L; + // Use Feedback.newBuilder() to construct. + private Feedback(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Feedback() { + executionId_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Feedback(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_SetFacialExpression_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_SetFacialExpression_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.BioheadCommand.SetFacialExpression.Feedback.class, cmvr.api.BioheadCommand.SetFacialExpression.Feedback.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Feedback header_; + /** + *
+       * 通用反馈头,包含操作状态和时间戳
+       * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + *
+       * 通用反馈头,包含操作状态和时间戳
+       * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + /** + *
+       * 通用反馈头,包含操作状态和时间戳
+       * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + public static final int EXECUTION_ID_FIELD_NUMBER = 2; + private volatile java.lang.Object executionId_; + /** + *
+       * 表情执行任务ID
+       * 
+ * + * string execution_id = 2; + * @return The executionId. + */ + @java.lang.Override + public java.lang.String getExecutionId() { + java.lang.Object ref = executionId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + executionId_ = s; + return s; + } + } + /** + *
+       * 表情执行任务ID
+       * 
+ * + * string execution_id = 2; + * @return The bytes for executionId. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getExecutionIdBytes() { + java.lang.Object ref = executionId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + executionId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int EXECUTION_TIME_MS_FIELD_NUMBER = 3; + private float executionTimeMs_; + /** + *
+       * 表情执行耗时(毫秒)
+       * 
+ * + * float execution_time_ms = 3; + * @return The executionTimeMs. + */ + @java.lang.Override + public float getExecutionTimeMs() { + return executionTimeMs_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(executionId_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, executionId_); + } + if (java.lang.Float.floatToRawIntBits(executionTimeMs_) != 0) { + output.writeFloat(3, executionTimeMs_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(executionId_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, executionId_); + } + if (java.lang.Float.floatToRawIntBits(executionTimeMs_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(3, executionTimeMs_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.BioheadCommand.SetFacialExpression.Feedback)) { + return super.equals(obj); + } + cmvr.api.BioheadCommand.SetFacialExpression.Feedback other = (cmvr.api.BioheadCommand.SetFacialExpression.Feedback) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getExecutionId() + .equals(other.getExecutionId())) return false; + if (java.lang.Float.floatToIntBits(getExecutionTimeMs()) + != java.lang.Float.floatToIntBits( + other.getExecutionTimeMs())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (37 * hash) + EXECUTION_ID_FIELD_NUMBER; + hash = (53 * hash) + getExecutionId().hashCode(); + hash = (37 * hash) + EXECUTION_TIME_MS_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getExecutionTimeMs()); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.BioheadCommand.SetFacialExpression.Feedback parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.SetFacialExpression.Feedback parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.SetFacialExpression.Feedback parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.SetFacialExpression.Feedback parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.SetFacialExpression.Feedback parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.SetFacialExpression.Feedback parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.SetFacialExpression.Feedback parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.SetFacialExpression.Feedback parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.BioheadCommand.SetFacialExpression.Feedback parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.SetFacialExpression.Feedback parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.BioheadCommand.SetFacialExpression.Feedback parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.SetFacialExpression.Feedback parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.BioheadCommand.SetFacialExpression.Feedback prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.SetFacialExpression.Feedback} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.SetFacialExpression.Feedback) + cmvr.api.BioheadCommand.SetFacialExpression.FeedbackOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_SetFacialExpression_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_SetFacialExpression_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.BioheadCommand.SetFacialExpression.Feedback.class, cmvr.api.BioheadCommand.SetFacialExpression.Feedback.Builder.class); + } + + // Construct using cmvr.api.BioheadCommand.SetFacialExpression.Feedback.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + executionId_ = ""; + + executionTimeMs_ = 0F; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_SetFacialExpression_Feedback_descriptor; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.SetFacialExpression.Feedback getDefaultInstanceForType() { + return cmvr.api.BioheadCommand.SetFacialExpression.Feedback.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.BioheadCommand.SetFacialExpression.Feedback build() { + cmvr.api.BioheadCommand.SetFacialExpression.Feedback result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.SetFacialExpression.Feedback buildPartial() { + cmvr.api.BioheadCommand.SetFacialExpression.Feedback result = new cmvr.api.BioheadCommand.SetFacialExpression.Feedback(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + result.executionId_ = executionId_; + result.executionTimeMs_ = executionTimeMs_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.BioheadCommand.SetFacialExpression.Feedback) { + return mergeFrom((cmvr.api.BioheadCommand.SetFacialExpression.Feedback)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.BioheadCommand.SetFacialExpression.Feedback other) { + if (other == cmvr.api.BioheadCommand.SetFacialExpression.Feedback.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + if (!other.getExecutionId().isEmpty()) { + executionId_ = other.executionId_; + onChanged(); + } + if (other.getExecutionTimeMs() != 0F) { + setExecutionTimeMs(other.getExecutionTimeMs()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + case 18: { + executionId_ = input.readStringRequireUtf8(); + + break; + } // case 18 + case 29: { + executionTimeMs_ = input.readFloat(); + + break; + } // case 29 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Feedback header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> headerBuilder_; + /** + *
+         * 通用反馈头,包含操作状态和时间戳
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + *
+         * 通用反馈头,包含操作状态和时间戳
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + *
+         * 通用反馈头,包含操作状态和时间戳
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + *
+         * 通用反馈头,包含操作状态和时间戳
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Feedback.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+         * 通用反馈头,包含操作状态和时间戳
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Feedback.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+         * 通用反馈头,包含操作状态和时间戳
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + *
+         * 通用反馈头,包含操作状态和时间戳
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.Feedback.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + *
+         * 通用反馈头,包含操作状态和时间戳
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + } + /** + *
+         * 通用反馈头,包含操作状态和时间戳
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + + private java.lang.Object executionId_ = ""; + /** + *
+         * 表情执行任务ID
+         * 
+ * + * string execution_id = 2; + * @return The executionId. + */ + public java.lang.String getExecutionId() { + java.lang.Object ref = executionId_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + executionId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+         * 表情执行任务ID
+         * 
+ * + * string execution_id = 2; + * @return The bytes for executionId. + */ + public com.google.protobuf.ByteString + getExecutionIdBytes() { + java.lang.Object ref = executionId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + executionId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+         * 表情执行任务ID
+         * 
+ * + * string execution_id = 2; + * @param value The executionId to set. + * @return This builder for chaining. + */ + public Builder setExecutionId( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + executionId_ = value; + onChanged(); + return this; + } + /** + *
+         * 表情执行任务ID
+         * 
+ * + * string execution_id = 2; + * @return This builder for chaining. + */ + public Builder clearExecutionId() { + + executionId_ = getDefaultInstance().getExecutionId(); + onChanged(); + return this; + } + /** + *
+         * 表情执行任务ID
+         * 
+ * + * string execution_id = 2; + * @param value The bytes for executionId to set. + * @return This builder for chaining. + */ + public Builder setExecutionIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + executionId_ = value; + onChanged(); + return this; + } + + private float executionTimeMs_ ; + /** + *
+         * 表情执行耗时(毫秒)
+         * 
+ * + * float execution_time_ms = 3; + * @return The executionTimeMs. + */ + @java.lang.Override + public float getExecutionTimeMs() { + return executionTimeMs_; + } + /** + *
+         * 表情执行耗时(毫秒)
+         * 
+ * + * float execution_time_ms = 3; + * @param value The executionTimeMs to set. + * @return This builder for chaining. + */ + public Builder setExecutionTimeMs(float value) { + + executionTimeMs_ = value; + onChanged(); + return this; + } + /** + *
+         * 表情执行耗时(毫秒)
+         * 
+ * + * float execution_time_ms = 3; + * @return This builder for chaining. + */ + public Builder clearExecutionTimeMs() { + + executionTimeMs_ = 0F; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.SetFacialExpression.Feedback) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.SetFacialExpression.Feedback) + private static final cmvr.api.BioheadCommand.SetFacialExpression.Feedback DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.BioheadCommand.SetFacialExpression.Feedback(); + } + + public static cmvr.api.BioheadCommand.SetFacialExpression.Feedback getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Feedback parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.SetFacialExpression.Feedback getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.BioheadCommand.SetFacialExpression)) { + return super.equals(obj); + } + cmvr.api.BioheadCommand.SetFacialExpression other = (cmvr.api.BioheadCommand.SetFacialExpression) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.BioheadCommand.SetFacialExpression parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.SetFacialExpression parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.SetFacialExpression parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.SetFacialExpression parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.SetFacialExpression parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.SetFacialExpression parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.SetFacialExpression parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.SetFacialExpression parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.BioheadCommand.SetFacialExpression parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.SetFacialExpression parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.BioheadCommand.SetFacialExpression parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.SetFacialExpression parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.BioheadCommand.SetFacialExpression prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     **
+     * 设置面部表情命令(集成通用命令头)
+     * 用于单次设置生物头部的面部表情
+     * 
+ * + * Protobuf type {@code cmvr.api.SetFacialExpression} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.SetFacialExpression) + cmvr.api.BioheadCommand.SetFacialExpressionOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_SetFacialExpression_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_SetFacialExpression_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.BioheadCommand.SetFacialExpression.class, cmvr.api.BioheadCommand.SetFacialExpression.Builder.class); + } + + // Construct using cmvr.api.BioheadCommand.SetFacialExpression.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_SetFacialExpression_descriptor; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.SetFacialExpression getDefaultInstanceForType() { + return cmvr.api.BioheadCommand.SetFacialExpression.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.BioheadCommand.SetFacialExpression build() { + cmvr.api.BioheadCommand.SetFacialExpression result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.SetFacialExpression buildPartial() { + cmvr.api.BioheadCommand.SetFacialExpression result = new cmvr.api.BioheadCommand.SetFacialExpression(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.BioheadCommand.SetFacialExpression) { + return mergeFrom((cmvr.api.BioheadCommand.SetFacialExpression)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.BioheadCommand.SetFacialExpression other) { + if (other == cmvr.api.BioheadCommand.SetFacialExpression.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.SetFacialExpression) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.SetFacialExpression) + private static final cmvr.api.BioheadCommand.SetFacialExpression DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.BioheadCommand.SetFacialExpression(); + } + + public static cmvr.api.BioheadCommand.SetFacialExpression getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public SetFacialExpression parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.SetFacialExpression getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface StreamFacialExpressionOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.StreamFacialExpression) + com.google.protobuf.MessageOrBuilder { + } + /** + *
+   **
+   * 流式面部表情命令(集成通用命令头)
+   * 用于连续发送多个面部表情,实现表情动画效果
+   * 
+ * + * Protobuf type {@code cmvr.api.StreamFacialExpression} + */ + public static final class StreamFacialExpression extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.StreamFacialExpression) + StreamFacialExpressionOrBuilder { + private static final long serialVersionUID = 0L; + // Use StreamFacialExpression.newBuilder() to construct. + private StreamFacialExpression(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private StreamFacialExpression() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new StreamFacialExpression(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_StreamFacialExpression_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_StreamFacialExpression_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.BioheadCommand.StreamFacialExpression.class, cmvr.api.BioheadCommand.StreamFacialExpression.Builder.class); + } + + public interface RequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.StreamFacialExpression.Request) + com.google.protobuf.MessageOrBuilder { + + /** + *
+       * 通用命令头
+       * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + *
+       * 通用命令头
+       * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Request getHeader(); + /** + *
+       * 通用命令头
+       * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder(); + + /** + *
+       * 执行
+       * 
+ * + * .cmvr.api.FacialExpression expr = 2; + * @return Whether the expr field is set. + */ + boolean hasExpr(); + /** + *
+       * 执行
+       * 
+ * + * .cmvr.api.FacialExpression expr = 2; + * @return The expr. + */ + cmvr.api.BioheadCommand.FacialExpression getExpr(); + /** + *
+       * 执行
+       * 
+ * + * .cmvr.api.FacialExpression expr = 2; + */ + cmvr.api.BioheadCommand.FacialExpressionOrBuilder getExprOrBuilder(); + + /** + *
+       * 标记是否为流结束
+       * 
+ * + * bool eof = 3; + * @return The eof. + */ + boolean getEof(); + } + /** + * Protobuf type {@code cmvr.api.StreamFacialExpression.Request} + */ + public static final class Request extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.StreamFacialExpression.Request) + RequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use Request.newBuilder() to construct. + private Request(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Request() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Request(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_StreamFacialExpression_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_StreamFacialExpression_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.BioheadCommand.StreamFacialExpression.Request.class, cmvr.api.BioheadCommand.StreamFacialExpression.Request.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Request header_; + /** + *
+       * 通用命令头
+       * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + *
+       * 通用命令头
+       * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + /** + *
+       * 通用命令头
+       * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + public static final int EXPR_FIELD_NUMBER = 2; + private cmvr.api.BioheadCommand.FacialExpression expr_; + /** + *
+       * 执行
+       * 
+ * + * .cmvr.api.FacialExpression expr = 2; + * @return Whether the expr field is set. + */ + @java.lang.Override + public boolean hasExpr() { + return expr_ != null; + } + /** + *
+       * 执行
+       * 
+ * + * .cmvr.api.FacialExpression expr = 2; + * @return The expr. + */ + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression getExpr() { + return expr_ == null ? cmvr.api.BioheadCommand.FacialExpression.getDefaultInstance() : expr_; + } + /** + *
+       * 执行
+       * 
+ * + * .cmvr.api.FacialExpression expr = 2; + */ + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpressionOrBuilder getExprOrBuilder() { + return getExpr(); + } + + public static final int EOF_FIELD_NUMBER = 3; + private boolean eof_; + /** + *
+       * 标记是否为流结束
+       * 
+ * + * bool eof = 3; + * @return The eof. + */ + @java.lang.Override + public boolean getEof() { + return eof_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + if (expr_ != null) { + output.writeMessage(2, getExpr()); + } + if (eof_ != false) { + output.writeBool(3, eof_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + if (expr_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, getExpr()); + } + if (eof_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(3, eof_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.BioheadCommand.StreamFacialExpression.Request)) { + return super.equals(obj); + } + cmvr.api.BioheadCommand.StreamFacialExpression.Request other = (cmvr.api.BioheadCommand.StreamFacialExpression.Request) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (hasExpr() != other.hasExpr()) return false; + if (hasExpr()) { + if (!getExpr() + .equals(other.getExpr())) return false; + } + if (getEof() + != other.getEof()) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + if (hasExpr()) { + hash = (37 * hash) + EXPR_FIELD_NUMBER; + hash = (53 * hash) + getExpr().hashCode(); + } + hash = (37 * hash) + EOF_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getEof()); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.BioheadCommand.StreamFacialExpression.Request parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.StreamFacialExpression.Request parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.StreamFacialExpression.Request parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.StreamFacialExpression.Request parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.StreamFacialExpression.Request parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.StreamFacialExpression.Request parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.StreamFacialExpression.Request parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.StreamFacialExpression.Request parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.BioheadCommand.StreamFacialExpression.Request parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.StreamFacialExpression.Request parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.BioheadCommand.StreamFacialExpression.Request parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.StreamFacialExpression.Request parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.BioheadCommand.StreamFacialExpression.Request prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.StreamFacialExpression.Request} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.StreamFacialExpression.Request) + cmvr.api.BioheadCommand.StreamFacialExpression.RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_StreamFacialExpression_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_StreamFacialExpression_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.BioheadCommand.StreamFacialExpression.Request.class, cmvr.api.BioheadCommand.StreamFacialExpression.Request.Builder.class); + } + + // Construct using cmvr.api.BioheadCommand.StreamFacialExpression.Request.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + if (exprBuilder_ == null) { + expr_ = null; + } else { + expr_ = null; + exprBuilder_ = null; + } + eof_ = false; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_StreamFacialExpression_Request_descriptor; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.StreamFacialExpression.Request getDefaultInstanceForType() { + return cmvr.api.BioheadCommand.StreamFacialExpression.Request.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.BioheadCommand.StreamFacialExpression.Request build() { + cmvr.api.BioheadCommand.StreamFacialExpression.Request result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.StreamFacialExpression.Request buildPartial() { + cmvr.api.BioheadCommand.StreamFacialExpression.Request result = new cmvr.api.BioheadCommand.StreamFacialExpression.Request(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + if (exprBuilder_ == null) { + result.expr_ = expr_; + } else { + result.expr_ = exprBuilder_.build(); + } + result.eof_ = eof_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.BioheadCommand.StreamFacialExpression.Request) { + return mergeFrom((cmvr.api.BioheadCommand.StreamFacialExpression.Request)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.BioheadCommand.StreamFacialExpression.Request other) { + if (other == cmvr.api.BioheadCommand.StreamFacialExpression.Request.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + if (other.hasExpr()) { + mergeExpr(other.getExpr()); + } + if (other.getEof() != false) { + setEof(other.getEof()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + case 18: { + input.readMessage( + getExprFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 18 + case 24: { + eof_ = input.readBool(); + + break; + } // case 24 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Request header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> headerBuilder_; + /** + *
+         * 通用命令头
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + *
+         * 通用命令头
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Request getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + *
+         * 通用命令头
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + *
+         * 通用命令头
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Request.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+         * 通用命令头
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Request.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+         * 通用命令头
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + *
+         * 通用命令头
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.Request.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + *
+         * 通用命令头
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + } + /** + *
+         * 通用命令头
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + + private cmvr.api.BioheadCommand.FacialExpression expr_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.BioheadCommand.FacialExpression, cmvr.api.BioheadCommand.FacialExpression.Builder, cmvr.api.BioheadCommand.FacialExpressionOrBuilder> exprBuilder_; + /** + *
+         * 执行
+         * 
+ * + * .cmvr.api.FacialExpression expr = 2; + * @return Whether the expr field is set. + */ + public boolean hasExpr() { + return exprBuilder_ != null || expr_ != null; + } + /** + *
+         * 执行
+         * 
+ * + * .cmvr.api.FacialExpression expr = 2; + * @return The expr. + */ + public cmvr.api.BioheadCommand.FacialExpression getExpr() { + if (exprBuilder_ == null) { + return expr_ == null ? cmvr.api.BioheadCommand.FacialExpression.getDefaultInstance() : expr_; + } else { + return exprBuilder_.getMessage(); + } + } + /** + *
+         * 执行
+         * 
+ * + * .cmvr.api.FacialExpression expr = 2; + */ + public Builder setExpr(cmvr.api.BioheadCommand.FacialExpression value) { + if (exprBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + expr_ = value; + onChanged(); + } else { + exprBuilder_.setMessage(value); + } + + return this; + } + /** + *
+         * 执行
+         * 
+ * + * .cmvr.api.FacialExpression expr = 2; + */ + public Builder setExpr( + cmvr.api.BioheadCommand.FacialExpression.Builder builderForValue) { + if (exprBuilder_ == null) { + expr_ = builderForValue.build(); + onChanged(); + } else { + exprBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+         * 执行
+         * 
+ * + * .cmvr.api.FacialExpression expr = 2; + */ + public Builder mergeExpr(cmvr.api.BioheadCommand.FacialExpression value) { + if (exprBuilder_ == null) { + if (expr_ != null) { + expr_ = + cmvr.api.BioheadCommand.FacialExpression.newBuilder(expr_).mergeFrom(value).buildPartial(); + } else { + expr_ = value; + } + onChanged(); + } else { + exprBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+         * 执行
+         * 
+ * + * .cmvr.api.FacialExpression expr = 2; + */ + public Builder clearExpr() { + if (exprBuilder_ == null) { + expr_ = null; + onChanged(); + } else { + expr_ = null; + exprBuilder_ = null; + } + + return this; + } + /** + *
+         * 执行
+         * 
+ * + * .cmvr.api.FacialExpression expr = 2; + */ + public cmvr.api.BioheadCommand.FacialExpression.Builder getExprBuilder() { + + onChanged(); + return getExprFieldBuilder().getBuilder(); + } + /** + *
+         * 执行
+         * 
+ * + * .cmvr.api.FacialExpression expr = 2; + */ + public cmvr.api.BioheadCommand.FacialExpressionOrBuilder getExprOrBuilder() { + if (exprBuilder_ != null) { + return exprBuilder_.getMessageOrBuilder(); + } else { + return expr_ == null ? + cmvr.api.BioheadCommand.FacialExpression.getDefaultInstance() : expr_; + } + } + /** + *
+         * 执行
+         * 
+ * + * .cmvr.api.FacialExpression expr = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.BioheadCommand.FacialExpression, cmvr.api.BioheadCommand.FacialExpression.Builder, cmvr.api.BioheadCommand.FacialExpressionOrBuilder> + getExprFieldBuilder() { + if (exprBuilder_ == null) { + exprBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.BioheadCommand.FacialExpression, cmvr.api.BioheadCommand.FacialExpression.Builder, cmvr.api.BioheadCommand.FacialExpressionOrBuilder>( + getExpr(), + getParentForChildren(), + isClean()); + expr_ = null; + } + return exprBuilder_; + } + + private boolean eof_ ; + /** + *
+         * 标记是否为流结束
+         * 
+ * + * bool eof = 3; + * @return The eof. + */ + @java.lang.Override + public boolean getEof() { + return eof_; + } + /** + *
+         * 标记是否为流结束
+         * 
+ * + * bool eof = 3; + * @param value The eof to set. + * @return This builder for chaining. + */ + public Builder setEof(boolean value) { + + eof_ = value; + onChanged(); + return this; + } + /** + *
+         * 标记是否为流结束
+         * 
+ * + * bool eof = 3; + * @return This builder for chaining. + */ + public Builder clearEof() { + + eof_ = false; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.StreamFacialExpression.Request) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.StreamFacialExpression.Request) + private static final cmvr.api.BioheadCommand.StreamFacialExpression.Request DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.BioheadCommand.StreamFacialExpression.Request(); + } + + public static cmvr.api.BioheadCommand.StreamFacialExpression.Request getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.StreamFacialExpression.Request getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface FeedbackOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.StreamFacialExpression.Feedback) + com.google.protobuf.MessageOrBuilder { + + /** + *
+       * 通用反馈头
+       * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + *
+       * 通用反馈头
+       * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Feedback getHeader(); + /** + *
+       * 通用反馈头
+       * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder(); + + /** + *
+       * 执行误差
+       * 
+ * + * .cmvr.api.FacialExpression expr_diff = 2; + * @return Whether the exprDiff field is set. + */ + boolean hasExprDiff(); + /** + *
+       * 执行误差
+       * 
+ * + * .cmvr.api.FacialExpression expr_diff = 2; + * @return The exprDiff. + */ + cmvr.api.BioheadCommand.FacialExpression getExprDiff(); + /** + *
+       * 执行误差
+       * 
+ * + * .cmvr.api.FacialExpression expr_diff = 2; + */ + cmvr.api.BioheadCommand.FacialExpressionOrBuilder getExprDiffOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.StreamFacialExpression.Feedback} + */ + public static final class Feedback extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.StreamFacialExpression.Feedback) + FeedbackOrBuilder { + private static final long serialVersionUID = 0L; + // Use Feedback.newBuilder() to construct. + private Feedback(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Feedback() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Feedback(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_StreamFacialExpression_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_StreamFacialExpression_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.BioheadCommand.StreamFacialExpression.Feedback.class, cmvr.api.BioheadCommand.StreamFacialExpression.Feedback.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Feedback header_; + /** + *
+       * 通用反馈头
+       * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + *
+       * 通用反馈头
+       * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + /** + *
+       * 通用反馈头
+       * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + public static final int EXPR_DIFF_FIELD_NUMBER = 2; + private cmvr.api.BioheadCommand.FacialExpression exprDiff_; + /** + *
+       * 执行误差
+       * 
+ * + * .cmvr.api.FacialExpression expr_diff = 2; + * @return Whether the exprDiff field is set. + */ + @java.lang.Override + public boolean hasExprDiff() { + return exprDiff_ != null; + } + /** + *
+       * 执行误差
+       * 
+ * + * .cmvr.api.FacialExpression expr_diff = 2; + * @return The exprDiff. + */ + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpression getExprDiff() { + return exprDiff_ == null ? cmvr.api.BioheadCommand.FacialExpression.getDefaultInstance() : exprDiff_; + } + /** + *
+       * 执行误差
+       * 
+ * + * .cmvr.api.FacialExpression expr_diff = 2; + */ + @java.lang.Override + public cmvr.api.BioheadCommand.FacialExpressionOrBuilder getExprDiffOrBuilder() { + return getExprDiff(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + if (exprDiff_ != null) { + output.writeMessage(2, getExprDiff()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + if (exprDiff_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, getExprDiff()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.BioheadCommand.StreamFacialExpression.Feedback)) { + return super.equals(obj); + } + cmvr.api.BioheadCommand.StreamFacialExpression.Feedback other = (cmvr.api.BioheadCommand.StreamFacialExpression.Feedback) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (hasExprDiff() != other.hasExprDiff()) return false; + if (hasExprDiff()) { + if (!getExprDiff() + .equals(other.getExprDiff())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + if (hasExprDiff()) { + hash = (37 * hash) + EXPR_DIFF_FIELD_NUMBER; + hash = (53 * hash) + getExprDiff().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.BioheadCommand.StreamFacialExpression.Feedback parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.StreamFacialExpression.Feedback parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.StreamFacialExpression.Feedback parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.StreamFacialExpression.Feedback parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.StreamFacialExpression.Feedback parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.StreamFacialExpression.Feedback parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.StreamFacialExpression.Feedback parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.StreamFacialExpression.Feedback parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.BioheadCommand.StreamFacialExpression.Feedback parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.StreamFacialExpression.Feedback parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.BioheadCommand.StreamFacialExpression.Feedback parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.StreamFacialExpression.Feedback parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.BioheadCommand.StreamFacialExpression.Feedback prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.StreamFacialExpression.Feedback} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.StreamFacialExpression.Feedback) + cmvr.api.BioheadCommand.StreamFacialExpression.FeedbackOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_StreamFacialExpression_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_StreamFacialExpression_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.BioheadCommand.StreamFacialExpression.Feedback.class, cmvr.api.BioheadCommand.StreamFacialExpression.Feedback.Builder.class); + } + + // Construct using cmvr.api.BioheadCommand.StreamFacialExpression.Feedback.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + if (exprDiffBuilder_ == null) { + exprDiff_ = null; + } else { + exprDiff_ = null; + exprDiffBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_StreamFacialExpression_Feedback_descriptor; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.StreamFacialExpression.Feedback getDefaultInstanceForType() { + return cmvr.api.BioheadCommand.StreamFacialExpression.Feedback.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.BioheadCommand.StreamFacialExpression.Feedback build() { + cmvr.api.BioheadCommand.StreamFacialExpression.Feedback result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.StreamFacialExpression.Feedback buildPartial() { + cmvr.api.BioheadCommand.StreamFacialExpression.Feedback result = new cmvr.api.BioheadCommand.StreamFacialExpression.Feedback(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + if (exprDiffBuilder_ == null) { + result.exprDiff_ = exprDiff_; + } else { + result.exprDiff_ = exprDiffBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.BioheadCommand.StreamFacialExpression.Feedback) { + return mergeFrom((cmvr.api.BioheadCommand.StreamFacialExpression.Feedback)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.BioheadCommand.StreamFacialExpression.Feedback other) { + if (other == cmvr.api.BioheadCommand.StreamFacialExpression.Feedback.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + if (other.hasExprDiff()) { + mergeExprDiff(other.getExprDiff()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + case 18: { + input.readMessage( + getExprDiffFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 18 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Feedback header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> headerBuilder_; + /** + *
+         * 通用反馈头
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + *
+         * 通用反馈头
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + *
+         * 通用反馈头
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + *
+         * 通用反馈头
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Feedback.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+         * 通用反馈头
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Feedback.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+         * 通用反馈头
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + *
+         * 通用反馈头
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.Feedback.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + *
+         * 通用反馈头
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + } + /** + *
+         * 通用反馈头
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + + private cmvr.api.BioheadCommand.FacialExpression exprDiff_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.BioheadCommand.FacialExpression, cmvr.api.BioheadCommand.FacialExpression.Builder, cmvr.api.BioheadCommand.FacialExpressionOrBuilder> exprDiffBuilder_; + /** + *
+         * 执行误差
+         * 
+ * + * .cmvr.api.FacialExpression expr_diff = 2; + * @return Whether the exprDiff field is set. + */ + public boolean hasExprDiff() { + return exprDiffBuilder_ != null || exprDiff_ != null; + } + /** + *
+         * 执行误差
+         * 
+ * + * .cmvr.api.FacialExpression expr_diff = 2; + * @return The exprDiff. + */ + public cmvr.api.BioheadCommand.FacialExpression getExprDiff() { + if (exprDiffBuilder_ == null) { + return exprDiff_ == null ? cmvr.api.BioheadCommand.FacialExpression.getDefaultInstance() : exprDiff_; + } else { + return exprDiffBuilder_.getMessage(); + } + } + /** + *
+         * 执行误差
+         * 
+ * + * .cmvr.api.FacialExpression expr_diff = 2; + */ + public Builder setExprDiff(cmvr.api.BioheadCommand.FacialExpression value) { + if (exprDiffBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + exprDiff_ = value; + onChanged(); + } else { + exprDiffBuilder_.setMessage(value); + } + + return this; + } + /** + *
+         * 执行误差
+         * 
+ * + * .cmvr.api.FacialExpression expr_diff = 2; + */ + public Builder setExprDiff( + cmvr.api.BioheadCommand.FacialExpression.Builder builderForValue) { + if (exprDiffBuilder_ == null) { + exprDiff_ = builderForValue.build(); + onChanged(); + } else { + exprDiffBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+         * 执行误差
+         * 
+ * + * .cmvr.api.FacialExpression expr_diff = 2; + */ + public Builder mergeExprDiff(cmvr.api.BioheadCommand.FacialExpression value) { + if (exprDiffBuilder_ == null) { + if (exprDiff_ != null) { + exprDiff_ = + cmvr.api.BioheadCommand.FacialExpression.newBuilder(exprDiff_).mergeFrom(value).buildPartial(); + } else { + exprDiff_ = value; + } + onChanged(); + } else { + exprDiffBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+         * 执行误差
+         * 
+ * + * .cmvr.api.FacialExpression expr_diff = 2; + */ + public Builder clearExprDiff() { + if (exprDiffBuilder_ == null) { + exprDiff_ = null; + onChanged(); + } else { + exprDiff_ = null; + exprDiffBuilder_ = null; + } + + return this; + } + /** + *
+         * 执行误差
+         * 
+ * + * .cmvr.api.FacialExpression expr_diff = 2; + */ + public cmvr.api.BioheadCommand.FacialExpression.Builder getExprDiffBuilder() { + + onChanged(); + return getExprDiffFieldBuilder().getBuilder(); + } + /** + *
+         * 执行误差
+         * 
+ * + * .cmvr.api.FacialExpression expr_diff = 2; + */ + public cmvr.api.BioheadCommand.FacialExpressionOrBuilder getExprDiffOrBuilder() { + if (exprDiffBuilder_ != null) { + return exprDiffBuilder_.getMessageOrBuilder(); + } else { + return exprDiff_ == null ? + cmvr.api.BioheadCommand.FacialExpression.getDefaultInstance() : exprDiff_; + } + } + /** + *
+         * 执行误差
+         * 
+ * + * .cmvr.api.FacialExpression expr_diff = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.BioheadCommand.FacialExpression, cmvr.api.BioheadCommand.FacialExpression.Builder, cmvr.api.BioheadCommand.FacialExpressionOrBuilder> + getExprDiffFieldBuilder() { + if (exprDiffBuilder_ == null) { + exprDiffBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.BioheadCommand.FacialExpression, cmvr.api.BioheadCommand.FacialExpression.Builder, cmvr.api.BioheadCommand.FacialExpressionOrBuilder>( + getExprDiff(), + getParentForChildren(), + isClean()); + exprDiff_ = null; + } + return exprDiffBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.StreamFacialExpression.Feedback) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.StreamFacialExpression.Feedback) + private static final cmvr.api.BioheadCommand.StreamFacialExpression.Feedback DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.BioheadCommand.StreamFacialExpression.Feedback(); + } + + public static cmvr.api.BioheadCommand.StreamFacialExpression.Feedback getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Feedback parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.StreamFacialExpression.Feedback getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.BioheadCommand.StreamFacialExpression)) { + return super.equals(obj); + } + cmvr.api.BioheadCommand.StreamFacialExpression other = (cmvr.api.BioheadCommand.StreamFacialExpression) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.BioheadCommand.StreamFacialExpression parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.StreamFacialExpression parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.StreamFacialExpression parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.StreamFacialExpression parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.StreamFacialExpression parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.StreamFacialExpression parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.StreamFacialExpression parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.StreamFacialExpression parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.BioheadCommand.StreamFacialExpression parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.StreamFacialExpression parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.BioheadCommand.StreamFacialExpression parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.StreamFacialExpression parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.BioheadCommand.StreamFacialExpression prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     **
+     * 流式面部表情命令(集成通用命令头)
+     * 用于连续发送多个面部表情,实现表情动画效果
+     * 
+ * + * Protobuf type {@code cmvr.api.StreamFacialExpression} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.StreamFacialExpression) + cmvr.api.BioheadCommand.StreamFacialExpressionOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_StreamFacialExpression_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_StreamFacialExpression_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.BioheadCommand.StreamFacialExpression.class, cmvr.api.BioheadCommand.StreamFacialExpression.Builder.class); + } + + // Construct using cmvr.api.BioheadCommand.StreamFacialExpression.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_StreamFacialExpression_descriptor; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.StreamFacialExpression getDefaultInstanceForType() { + return cmvr.api.BioheadCommand.StreamFacialExpression.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.BioheadCommand.StreamFacialExpression build() { + cmvr.api.BioheadCommand.StreamFacialExpression result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.StreamFacialExpression buildPartial() { + cmvr.api.BioheadCommand.StreamFacialExpression result = new cmvr.api.BioheadCommand.StreamFacialExpression(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.BioheadCommand.StreamFacialExpression) { + return mergeFrom((cmvr.api.BioheadCommand.StreamFacialExpression)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.BioheadCommand.StreamFacialExpression other) { + if (other == cmvr.api.BioheadCommand.StreamFacialExpression.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.StreamFacialExpression) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.StreamFacialExpression) + private static final cmvr.api.BioheadCommand.StreamFacialExpression DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.BioheadCommand.StreamFacialExpression(); + } + + public static cmvr.api.BioheadCommand.StreamFacialExpression getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public StreamFacialExpression parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.StreamFacialExpression getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface GetStatusOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetStatus) + com.google.protobuf.MessageOrBuilder { + } + /** + *
+   **
+   * 获取生物头部状态命令(集成通用命令头)
+   * 用于查询当前头部各部位的状态和位置
+   * 
+ * + * Protobuf type {@code cmvr.api.GetStatus} + */ + public static final class GetStatus extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetStatus) + GetStatusOrBuilder { + private static final long serialVersionUID = 0L; + // Use GetStatus.newBuilder() to construct. + private GetStatus(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private GetStatus() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new GetStatus(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_GetStatus_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_GetStatus_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.BioheadCommand.GetStatus.class, cmvr.api.BioheadCommand.GetStatus.Builder.class); + } + + public interface RequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetStatus.Request) + com.google.protobuf.MessageOrBuilder { + + /** + *
+       * 通用命令头
+       * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + *
+       * 通用命令头
+       * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Request getHeader(); + /** + *
+       * 通用命令头
+       * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.GetStatus.Request} + */ + public static final class Request extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetStatus.Request) + RequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use Request.newBuilder() to construct. + private Request(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Request() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Request(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_GetStatus_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_GetStatus_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.BioheadCommand.GetStatus.Request.class, cmvr.api.BioheadCommand.GetStatus.Request.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Request header_; + /** + *
+       * 通用命令头
+       * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + *
+       * 通用命令头
+       * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + /** + *
+       * 通用命令头
+       * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.BioheadCommand.GetStatus.Request)) { + return super.equals(obj); + } + cmvr.api.BioheadCommand.GetStatus.Request other = (cmvr.api.BioheadCommand.GetStatus.Request) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.BioheadCommand.GetStatus.Request parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.GetStatus.Request parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.GetStatus.Request parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.GetStatus.Request parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.GetStatus.Request parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.GetStatus.Request parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.GetStatus.Request parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.GetStatus.Request parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.BioheadCommand.GetStatus.Request parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.GetStatus.Request parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.BioheadCommand.GetStatus.Request parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.GetStatus.Request parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.BioheadCommand.GetStatus.Request prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetStatus.Request} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetStatus.Request) + cmvr.api.BioheadCommand.GetStatus.RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_GetStatus_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_GetStatus_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.BioheadCommand.GetStatus.Request.class, cmvr.api.BioheadCommand.GetStatus.Request.Builder.class); + } + + // Construct using cmvr.api.BioheadCommand.GetStatus.Request.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_GetStatus_Request_descriptor; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.GetStatus.Request getDefaultInstanceForType() { + return cmvr.api.BioheadCommand.GetStatus.Request.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.BioheadCommand.GetStatus.Request build() { + cmvr.api.BioheadCommand.GetStatus.Request result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.GetStatus.Request buildPartial() { + cmvr.api.BioheadCommand.GetStatus.Request result = new cmvr.api.BioheadCommand.GetStatus.Request(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.BioheadCommand.GetStatus.Request) { + return mergeFrom((cmvr.api.BioheadCommand.GetStatus.Request)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.BioheadCommand.GetStatus.Request other) { + if (other == cmvr.api.BioheadCommand.GetStatus.Request.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Request header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> headerBuilder_; + /** + *
+         * 通用命令头
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + *
+         * 通用命令头
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Request getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + *
+         * 通用命令头
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + *
+         * 通用命令头
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Request.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+         * 通用命令头
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Request.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+         * 通用命令头
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + *
+         * 通用命令头
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.Request.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + *
+         * 通用命令头
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + } + /** + *
+         * 通用命令头
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetStatus.Request) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetStatus.Request) + private static final cmvr.api.BioheadCommand.GetStatus.Request DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.BioheadCommand.GetStatus.Request(); + } + + public static cmvr.api.BioheadCommand.GetStatus.Request getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.GetStatus.Request getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface FeedbackOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetStatus.Feedback) + com.google.protobuf.MessageOrBuilder { + + /** + *
+       * 通用反馈头
+       * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + *
+       * 通用反馈头
+       * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Feedback getHeader(); + /** + *
+       * 通用反馈头
+       * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder(); + + /** + *
+       * 是否有部位在移动
+       * 
+ * + * bool is_moving = 2; + * @return The isMoving. + */ + boolean getIsMoving(); + + /** + *
+       * 上一次请求的ID
+       * 
+ * + * string last_request_id = 3; + * @return The lastRequestId. + */ + java.lang.String getLastRequestId(); + /** + *
+       * 上一次请求的ID
+       * 
+ * + * string last_request_id = 3; + * @return The bytes for lastRequestId. + */ + com.google.protobuf.ByteString + getLastRequestIdBytes(); + + /** + *
+       * 当前各部位位置参数
+       * 
+ * + * repeated float current_positions = 4; + * @return A list containing the currentPositions. + */ + java.util.List getCurrentPositionsList(); + /** + *
+       * 当前各部位位置参数
+       * 
+ * + * repeated float current_positions = 4; + * @return The count of currentPositions. + */ + int getCurrentPositionsCount(); + /** + *
+       * 当前各部位位置参数
+       * 
+ * + * repeated float current_positions = 4; + * @param index The index of the element to return. + * @return The currentPositions at the given index. + */ + float getCurrentPositions(int index); + + /** + *
+       * 相机是否在录制
+       * 
+ * + * bool camera_recording = 5; + * @return The cameraRecording. + */ + boolean getCameraRecording(); + + /** + *
+       * 活跃录制任务的ID
+       * 
+ * + * string active_recording_id = 6; + * @return The activeRecordingId. + */ + java.lang.String getActiveRecordingId(); + /** + *
+       * 活跃录制任务的ID
+       * 
+ * + * string active_recording_id = 6; + * @return The bytes for activeRecordingId. + */ + com.google.protobuf.ByteString + getActiveRecordingIdBytes(); + } + /** + * Protobuf type {@code cmvr.api.GetStatus.Feedback} + */ + public static final class Feedback extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetStatus.Feedback) + FeedbackOrBuilder { + private static final long serialVersionUID = 0L; + // Use Feedback.newBuilder() to construct. + private Feedback(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Feedback() { + lastRequestId_ = ""; + currentPositions_ = emptyFloatList(); + activeRecordingId_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Feedback(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_GetStatus_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_GetStatus_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.BioheadCommand.GetStatus.Feedback.class, cmvr.api.BioheadCommand.GetStatus.Feedback.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Feedback header_; + /** + *
+       * 通用反馈头
+       * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + *
+       * 通用反馈头
+       * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + /** + *
+       * 通用反馈头
+       * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + public static final int IS_MOVING_FIELD_NUMBER = 2; + private boolean isMoving_; + /** + *
+       * 是否有部位在移动
+       * 
+ * + * bool is_moving = 2; + * @return The isMoving. + */ + @java.lang.Override + public boolean getIsMoving() { + return isMoving_; + } + + public static final int LAST_REQUEST_ID_FIELD_NUMBER = 3; + private volatile java.lang.Object lastRequestId_; + /** + *
+       * 上一次请求的ID
+       * 
+ * + * string last_request_id = 3; + * @return The lastRequestId. + */ + @java.lang.Override + public java.lang.String getLastRequestId() { + java.lang.Object ref = lastRequestId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + lastRequestId_ = s; + return s; + } + } + /** + *
+       * 上一次请求的ID
+       * 
+ * + * string last_request_id = 3; + * @return The bytes for lastRequestId. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getLastRequestIdBytes() { + java.lang.Object ref = lastRequestId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + lastRequestId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int CURRENT_POSITIONS_FIELD_NUMBER = 4; + private com.google.protobuf.Internal.FloatList currentPositions_; + /** + *
+       * 当前各部位位置参数
+       * 
+ * + * repeated float current_positions = 4; + * @return A list containing the currentPositions. + */ + @java.lang.Override + public java.util.List + getCurrentPositionsList() { + return currentPositions_; + } + /** + *
+       * 当前各部位位置参数
+       * 
+ * + * repeated float current_positions = 4; + * @return The count of currentPositions. + */ + public int getCurrentPositionsCount() { + return currentPositions_.size(); + } + /** + *
+       * 当前各部位位置参数
+       * 
+ * + * repeated float current_positions = 4; + * @param index The index of the element to return. + * @return The currentPositions at the given index. + */ + public float getCurrentPositions(int index) { + return currentPositions_.getFloat(index); + } + private int currentPositionsMemoizedSerializedSize = -1; + + public static final int CAMERA_RECORDING_FIELD_NUMBER = 5; + private boolean cameraRecording_; + /** + *
+       * 相机是否在录制
+       * 
+ * + * bool camera_recording = 5; + * @return The cameraRecording. + */ + @java.lang.Override + public boolean getCameraRecording() { + return cameraRecording_; + } + + public static final int ACTIVE_RECORDING_ID_FIELD_NUMBER = 6; + private volatile java.lang.Object activeRecordingId_; + /** + *
+       * 活跃录制任务的ID
+       * 
+ * + * string active_recording_id = 6; + * @return The activeRecordingId. + */ + @java.lang.Override + public java.lang.String getActiveRecordingId() { + java.lang.Object ref = activeRecordingId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + activeRecordingId_ = s; + return s; + } + } + /** + *
+       * 活跃录制任务的ID
+       * 
+ * + * string active_recording_id = 6; + * @return The bytes for activeRecordingId. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getActiveRecordingIdBytes() { + java.lang.Object ref = activeRecordingId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + activeRecordingId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + if (isMoving_ != false) { + output.writeBool(2, isMoving_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(lastRequestId_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 3, lastRequestId_); + } + if (getCurrentPositionsList().size() > 0) { + output.writeUInt32NoTag(34); + output.writeUInt32NoTag(currentPositionsMemoizedSerializedSize); + } + for (int i = 0; i < currentPositions_.size(); i++) { + output.writeFloatNoTag(currentPositions_.getFloat(i)); + } + if (cameraRecording_ != false) { + output.writeBool(5, cameraRecording_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(activeRecordingId_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 6, activeRecordingId_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + if (isMoving_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(2, isMoving_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(lastRequestId_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, lastRequestId_); + } + { + int dataSize = 0; + dataSize = 4 * getCurrentPositionsList().size(); + size += dataSize; + if (!getCurrentPositionsList().isEmpty()) { + size += 1; + size += com.google.protobuf.CodedOutputStream + .computeInt32SizeNoTag(dataSize); + } + currentPositionsMemoizedSerializedSize = dataSize; + } + if (cameraRecording_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(5, cameraRecording_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(activeRecordingId_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, activeRecordingId_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.BioheadCommand.GetStatus.Feedback)) { + return super.equals(obj); + } + cmvr.api.BioheadCommand.GetStatus.Feedback other = (cmvr.api.BioheadCommand.GetStatus.Feedback) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (getIsMoving() + != other.getIsMoving()) return false; + if (!getLastRequestId() + .equals(other.getLastRequestId())) return false; + if (!getCurrentPositionsList() + .equals(other.getCurrentPositionsList())) return false; + if (getCameraRecording() + != other.getCameraRecording()) return false; + if (!getActiveRecordingId() + .equals(other.getActiveRecordingId())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (37 * hash) + IS_MOVING_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getIsMoving()); + hash = (37 * hash) + LAST_REQUEST_ID_FIELD_NUMBER; + hash = (53 * hash) + getLastRequestId().hashCode(); + if (getCurrentPositionsCount() > 0) { + hash = (37 * hash) + CURRENT_POSITIONS_FIELD_NUMBER; + hash = (53 * hash) + getCurrentPositionsList().hashCode(); + } + hash = (37 * hash) + CAMERA_RECORDING_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getCameraRecording()); + hash = (37 * hash) + ACTIVE_RECORDING_ID_FIELD_NUMBER; + hash = (53 * hash) + getActiveRecordingId().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.BioheadCommand.GetStatus.Feedback parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.GetStatus.Feedback parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.GetStatus.Feedback parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.GetStatus.Feedback parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.GetStatus.Feedback parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.GetStatus.Feedback parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.GetStatus.Feedback parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.GetStatus.Feedback parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.BioheadCommand.GetStatus.Feedback parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.GetStatus.Feedback parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.BioheadCommand.GetStatus.Feedback parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.GetStatus.Feedback parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.BioheadCommand.GetStatus.Feedback prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetStatus.Feedback} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetStatus.Feedback) + cmvr.api.BioheadCommand.GetStatus.FeedbackOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_GetStatus_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_GetStatus_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.BioheadCommand.GetStatus.Feedback.class, cmvr.api.BioheadCommand.GetStatus.Feedback.Builder.class); + } + + // Construct using cmvr.api.BioheadCommand.GetStatus.Feedback.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + isMoving_ = false; + + lastRequestId_ = ""; + + currentPositions_ = emptyFloatList(); + bitField0_ = (bitField0_ & ~0x00000001); + cameraRecording_ = false; + + activeRecordingId_ = ""; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_GetStatus_Feedback_descriptor; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.GetStatus.Feedback getDefaultInstanceForType() { + return cmvr.api.BioheadCommand.GetStatus.Feedback.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.BioheadCommand.GetStatus.Feedback build() { + cmvr.api.BioheadCommand.GetStatus.Feedback result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.GetStatus.Feedback buildPartial() { + cmvr.api.BioheadCommand.GetStatus.Feedback result = new cmvr.api.BioheadCommand.GetStatus.Feedback(this); + int from_bitField0_ = bitField0_; + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + result.isMoving_ = isMoving_; + result.lastRequestId_ = lastRequestId_; + if (((bitField0_ & 0x00000001) != 0)) { + currentPositions_.makeImmutable(); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.currentPositions_ = currentPositions_; + result.cameraRecording_ = cameraRecording_; + result.activeRecordingId_ = activeRecordingId_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.BioheadCommand.GetStatus.Feedback) { + return mergeFrom((cmvr.api.BioheadCommand.GetStatus.Feedback)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.BioheadCommand.GetStatus.Feedback other) { + if (other == cmvr.api.BioheadCommand.GetStatus.Feedback.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + if (other.getIsMoving() != false) { + setIsMoving(other.getIsMoving()); + } + if (!other.getLastRequestId().isEmpty()) { + lastRequestId_ = other.lastRequestId_; + onChanged(); + } + if (!other.currentPositions_.isEmpty()) { + if (currentPositions_.isEmpty()) { + currentPositions_ = other.currentPositions_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureCurrentPositionsIsMutable(); + currentPositions_.addAll(other.currentPositions_); + } + onChanged(); + } + if (other.getCameraRecording() != false) { + setCameraRecording(other.getCameraRecording()); + } + if (!other.getActiveRecordingId().isEmpty()) { + activeRecordingId_ = other.activeRecordingId_; + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + case 16: { + isMoving_ = input.readBool(); + + break; + } // case 16 + case 26: { + lastRequestId_ = input.readStringRequireUtf8(); + + break; + } // case 26 + case 37: { + float v = input.readFloat(); + ensureCurrentPositionsIsMutable(); + currentPositions_.addFloat(v); + break; + } // case 37 + case 34: { + int length = input.readRawVarint32(); + int limit = input.pushLimit(length); + ensureCurrentPositionsIsMutable(); + while (input.getBytesUntilLimit() > 0) { + currentPositions_.addFloat(input.readFloat()); + } + input.popLimit(limit); + break; + } // case 34 + case 40: { + cameraRecording_ = input.readBool(); + + break; + } // case 40 + case 50: { + activeRecordingId_ = input.readStringRequireUtf8(); + + break; + } // case 50 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private cmvr.api.Common.CommandHeader.Feedback header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> headerBuilder_; + /** + *
+         * 通用反馈头
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + *
+         * 通用反馈头
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + *
+         * 通用反馈头
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + *
+         * 通用反馈头
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Feedback.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+         * 通用反馈头
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Feedback.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+         * 通用反馈头
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + *
+         * 通用反馈头
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.Feedback.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + *
+         * 通用反馈头
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + } + /** + *
+         * 通用反馈头
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + + private boolean isMoving_ ; + /** + *
+         * 是否有部位在移动
+         * 
+ * + * bool is_moving = 2; + * @return The isMoving. + */ + @java.lang.Override + public boolean getIsMoving() { + return isMoving_; + } + /** + *
+         * 是否有部位在移动
+         * 
+ * + * bool is_moving = 2; + * @param value The isMoving to set. + * @return This builder for chaining. + */ + public Builder setIsMoving(boolean value) { + + isMoving_ = value; + onChanged(); + return this; + } + /** + *
+         * 是否有部位在移动
+         * 
+ * + * bool is_moving = 2; + * @return This builder for chaining. + */ + public Builder clearIsMoving() { + + isMoving_ = false; + onChanged(); + return this; + } + + private java.lang.Object lastRequestId_ = ""; + /** + *
+         * 上一次请求的ID
+         * 
+ * + * string last_request_id = 3; + * @return The lastRequestId. + */ + public java.lang.String getLastRequestId() { + java.lang.Object ref = lastRequestId_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + lastRequestId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+         * 上一次请求的ID
+         * 
+ * + * string last_request_id = 3; + * @return The bytes for lastRequestId. + */ + public com.google.protobuf.ByteString + getLastRequestIdBytes() { + java.lang.Object ref = lastRequestId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + lastRequestId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+         * 上一次请求的ID
+         * 
+ * + * string last_request_id = 3; + * @param value The lastRequestId to set. + * @return This builder for chaining. + */ + public Builder setLastRequestId( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + lastRequestId_ = value; + onChanged(); + return this; + } + /** + *
+         * 上一次请求的ID
+         * 
+ * + * string last_request_id = 3; + * @return This builder for chaining. + */ + public Builder clearLastRequestId() { + + lastRequestId_ = getDefaultInstance().getLastRequestId(); + onChanged(); + return this; + } + /** + *
+         * 上一次请求的ID
+         * 
+ * + * string last_request_id = 3; + * @param value The bytes for lastRequestId to set. + * @return This builder for chaining. + */ + public Builder setLastRequestIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + lastRequestId_ = value; + onChanged(); + return this; + } + + private com.google.protobuf.Internal.FloatList currentPositions_ = emptyFloatList(); + private void ensureCurrentPositionsIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + currentPositions_ = mutableCopy(currentPositions_); + bitField0_ |= 0x00000001; + } + } + /** + *
+         * 当前各部位位置参数
+         * 
+ * + * repeated float current_positions = 4; + * @return A list containing the currentPositions. + */ + public java.util.List + getCurrentPositionsList() { + return ((bitField0_ & 0x00000001) != 0) ? + java.util.Collections.unmodifiableList(currentPositions_) : currentPositions_; + } + /** + *
+         * 当前各部位位置参数
+         * 
+ * + * repeated float current_positions = 4; + * @return The count of currentPositions. + */ + public int getCurrentPositionsCount() { + return currentPositions_.size(); + } + /** + *
+         * 当前各部位位置参数
+         * 
+ * + * repeated float current_positions = 4; + * @param index The index of the element to return. + * @return The currentPositions at the given index. + */ + public float getCurrentPositions(int index) { + return currentPositions_.getFloat(index); + } + /** + *
+         * 当前各部位位置参数
+         * 
+ * + * repeated float current_positions = 4; + * @param index The index to set the value at. + * @param value The currentPositions to set. + * @return This builder for chaining. + */ + public Builder setCurrentPositions( + int index, float value) { + ensureCurrentPositionsIsMutable(); + currentPositions_.setFloat(index, value); + onChanged(); + return this; + } + /** + *
+         * 当前各部位位置参数
+         * 
+ * + * repeated float current_positions = 4; + * @param value The currentPositions to add. + * @return This builder for chaining. + */ + public Builder addCurrentPositions(float value) { + ensureCurrentPositionsIsMutable(); + currentPositions_.addFloat(value); + onChanged(); + return this; + } + /** + *
+         * 当前各部位位置参数
+         * 
+ * + * repeated float current_positions = 4; + * @param values The currentPositions to add. + * @return This builder for chaining. + */ + public Builder addAllCurrentPositions( + java.lang.Iterable values) { + ensureCurrentPositionsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, currentPositions_); + onChanged(); + return this; + } + /** + *
+         * 当前各部位位置参数
+         * 
+ * + * repeated float current_positions = 4; + * @return This builder for chaining. + */ + public Builder clearCurrentPositions() { + currentPositions_ = emptyFloatList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + + private boolean cameraRecording_ ; + /** + *
+         * 相机是否在录制
+         * 
+ * + * bool camera_recording = 5; + * @return The cameraRecording. + */ + @java.lang.Override + public boolean getCameraRecording() { + return cameraRecording_; + } + /** + *
+         * 相机是否在录制
+         * 
+ * + * bool camera_recording = 5; + * @param value The cameraRecording to set. + * @return This builder for chaining. + */ + public Builder setCameraRecording(boolean value) { + + cameraRecording_ = value; + onChanged(); + return this; + } + /** + *
+         * 相机是否在录制
+         * 
+ * + * bool camera_recording = 5; + * @return This builder for chaining. + */ + public Builder clearCameraRecording() { + + cameraRecording_ = false; + onChanged(); + return this; + } + + private java.lang.Object activeRecordingId_ = ""; + /** + *
+         * 活跃录制任务的ID
+         * 
+ * + * string active_recording_id = 6; + * @return The activeRecordingId. + */ + public java.lang.String getActiveRecordingId() { + java.lang.Object ref = activeRecordingId_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + activeRecordingId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+         * 活跃录制任务的ID
+         * 
+ * + * string active_recording_id = 6; + * @return The bytes for activeRecordingId. + */ + public com.google.protobuf.ByteString + getActiveRecordingIdBytes() { + java.lang.Object ref = activeRecordingId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + activeRecordingId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+         * 活跃录制任务的ID
+         * 
+ * + * string active_recording_id = 6; + * @param value The activeRecordingId to set. + * @return This builder for chaining. + */ + public Builder setActiveRecordingId( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + activeRecordingId_ = value; + onChanged(); + return this; + } + /** + *
+         * 活跃录制任务的ID
+         * 
+ * + * string active_recording_id = 6; + * @return This builder for chaining. + */ + public Builder clearActiveRecordingId() { + + activeRecordingId_ = getDefaultInstance().getActiveRecordingId(); + onChanged(); + return this; + } + /** + *
+         * 活跃录制任务的ID
+         * 
+ * + * string active_recording_id = 6; + * @param value The bytes for activeRecordingId to set. + * @return This builder for chaining. + */ + public Builder setActiveRecordingIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + activeRecordingId_ = value; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetStatus.Feedback) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetStatus.Feedback) + private static final cmvr.api.BioheadCommand.GetStatus.Feedback DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.BioheadCommand.GetStatus.Feedback(); + } + + public static cmvr.api.BioheadCommand.GetStatus.Feedback getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Feedback parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.GetStatus.Feedback getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.BioheadCommand.GetStatus)) { + return super.equals(obj); + } + cmvr.api.BioheadCommand.GetStatus other = (cmvr.api.BioheadCommand.GetStatus) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.BioheadCommand.GetStatus parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.GetStatus parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.GetStatus parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.GetStatus parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.GetStatus parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.GetStatus parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.GetStatus parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.GetStatus parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.BioheadCommand.GetStatus parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.GetStatus parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.BioheadCommand.GetStatus parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.GetStatus parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.BioheadCommand.GetStatus prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     **
+     * 获取生物头部状态命令(集成通用命令头)
+     * 用于查询当前头部各部位的状态和位置
+     * 
+ * + * Protobuf type {@code cmvr.api.GetStatus} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetStatus) + cmvr.api.BioheadCommand.GetStatusOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_GetStatus_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_GetStatus_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.BioheadCommand.GetStatus.class, cmvr.api.BioheadCommand.GetStatus.Builder.class); + } + + // Construct using cmvr.api.BioheadCommand.GetStatus.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_GetStatus_descriptor; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.GetStatus getDefaultInstanceForType() { + return cmvr.api.BioheadCommand.GetStatus.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.BioheadCommand.GetStatus build() { + cmvr.api.BioheadCommand.GetStatus result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.GetStatus buildPartial() { + cmvr.api.BioheadCommand.GetStatus result = new cmvr.api.BioheadCommand.GetStatus(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.BioheadCommand.GetStatus) { + return mergeFrom((cmvr.api.BioheadCommand.GetStatus)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.BioheadCommand.GetStatus other) { + if (other == cmvr.api.BioheadCommand.GetStatus.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetStatus) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetStatus) + private static final cmvr.api.BioheadCommand.GetStatus DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.BioheadCommand.GetStatus(); + } + + public static cmvr.api.BioheadCommand.GetStatus getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public GetStatus parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.GetStatus getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface EmergencyStopOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.EmergencyStop) + com.google.protobuf.MessageOrBuilder { + } + /** + *
+   **
+   * 紧急停止命令(集成通用命令头)
+   * 用于立即停止所有面部动作
+   * 
+ * + * Protobuf type {@code cmvr.api.EmergencyStop} + */ + public static final class EmergencyStop extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.EmergencyStop) + EmergencyStopOrBuilder { + private static final long serialVersionUID = 0L; + // Use EmergencyStop.newBuilder() to construct. + private EmergencyStop(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private EmergencyStop() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new EmergencyStop(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_EmergencyStop_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_EmergencyStop_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.BioheadCommand.EmergencyStop.class, cmvr.api.BioheadCommand.EmergencyStop.Builder.class); + } + + public interface RequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.EmergencyStop.Request) + com.google.protobuf.MessageOrBuilder { + + /** + *
+       * 通用命令头
+       * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + *
+       * 通用命令头
+       * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Request getHeader(); + /** + *
+       * 通用命令头
+       * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.EmergencyStop.Request} + */ + public static final class Request extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.EmergencyStop.Request) + RequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use Request.newBuilder() to construct. + private Request(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Request() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Request(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_EmergencyStop_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_EmergencyStop_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.BioheadCommand.EmergencyStop.Request.class, cmvr.api.BioheadCommand.EmergencyStop.Request.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Request header_; + /** + *
+       * 通用命令头
+       * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + *
+       * 通用命令头
+       * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + /** + *
+       * 通用命令头
+       * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.BioheadCommand.EmergencyStop.Request)) { + return super.equals(obj); + } + cmvr.api.BioheadCommand.EmergencyStop.Request other = (cmvr.api.BioheadCommand.EmergencyStop.Request) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.BioheadCommand.EmergencyStop.Request parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.EmergencyStop.Request parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.EmergencyStop.Request parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.EmergencyStop.Request parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.EmergencyStop.Request parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.EmergencyStop.Request parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.EmergencyStop.Request parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.EmergencyStop.Request parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.BioheadCommand.EmergencyStop.Request parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.EmergencyStop.Request parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.BioheadCommand.EmergencyStop.Request parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.EmergencyStop.Request parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.BioheadCommand.EmergencyStop.Request prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.EmergencyStop.Request} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.EmergencyStop.Request) + cmvr.api.BioheadCommand.EmergencyStop.RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_EmergencyStop_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_EmergencyStop_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.BioheadCommand.EmergencyStop.Request.class, cmvr.api.BioheadCommand.EmergencyStop.Request.Builder.class); + } + + // Construct using cmvr.api.BioheadCommand.EmergencyStop.Request.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_EmergencyStop_Request_descriptor; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.EmergencyStop.Request getDefaultInstanceForType() { + return cmvr.api.BioheadCommand.EmergencyStop.Request.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.BioheadCommand.EmergencyStop.Request build() { + cmvr.api.BioheadCommand.EmergencyStop.Request result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.EmergencyStop.Request buildPartial() { + cmvr.api.BioheadCommand.EmergencyStop.Request result = new cmvr.api.BioheadCommand.EmergencyStop.Request(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.BioheadCommand.EmergencyStop.Request) { + return mergeFrom((cmvr.api.BioheadCommand.EmergencyStop.Request)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.BioheadCommand.EmergencyStop.Request other) { + if (other == cmvr.api.BioheadCommand.EmergencyStop.Request.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Request header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> headerBuilder_; + /** + *
+         * 通用命令头
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + *
+         * 通用命令头
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Request getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + *
+         * 通用命令头
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + *
+         * 通用命令头
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Request.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+         * 通用命令头
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Request.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+         * 通用命令头
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + *
+         * 通用命令头
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.Request.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + *
+         * 通用命令头
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + } + /** + *
+         * 通用命令头
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.EmergencyStop.Request) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.EmergencyStop.Request) + private static final cmvr.api.BioheadCommand.EmergencyStop.Request DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.BioheadCommand.EmergencyStop.Request(); + } + + public static cmvr.api.BioheadCommand.EmergencyStop.Request getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.EmergencyStop.Request getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface FeedbackOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.EmergencyStop.Feedback) + com.google.protobuf.MessageOrBuilder { + + /** + *
+       * 通用反馈头
+       * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + *
+       * 通用反馈头
+       * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Feedback getHeader(); + /** + *
+       * 通用反馈头
+       * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder(); + + /** + *
+       * 已停止的进程列表
+       * 
+ * + * string stopped_processes = 2; + * @return The stoppedProcesses. + */ + java.lang.String getStoppedProcesses(); + /** + *
+       * 已停止的进程列表
+       * 
+ * + * string stopped_processes = 2; + * @return The bytes for stoppedProcesses. + */ + com.google.protobuf.ByteString + getStoppedProcessesBytes(); + } + /** + * Protobuf type {@code cmvr.api.EmergencyStop.Feedback} + */ + public static final class Feedback extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.EmergencyStop.Feedback) + FeedbackOrBuilder { + private static final long serialVersionUID = 0L; + // Use Feedback.newBuilder() to construct. + private Feedback(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Feedback() { + stoppedProcesses_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Feedback(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_EmergencyStop_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_EmergencyStop_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.BioheadCommand.EmergencyStop.Feedback.class, cmvr.api.BioheadCommand.EmergencyStop.Feedback.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Feedback header_; + /** + *
+       * 通用反馈头
+       * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + *
+       * 通用反馈头
+       * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + /** + *
+       * 通用反馈头
+       * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + public static final int STOPPED_PROCESSES_FIELD_NUMBER = 2; + private volatile java.lang.Object stoppedProcesses_; + /** + *
+       * 已停止的进程列表
+       * 
+ * + * string stopped_processes = 2; + * @return The stoppedProcesses. + */ + @java.lang.Override + public java.lang.String getStoppedProcesses() { + java.lang.Object ref = stoppedProcesses_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + stoppedProcesses_ = s; + return s; + } + } + /** + *
+       * 已停止的进程列表
+       * 
+ * + * string stopped_processes = 2; + * @return The bytes for stoppedProcesses. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getStoppedProcessesBytes() { + java.lang.Object ref = stoppedProcesses_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + stoppedProcesses_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(stoppedProcesses_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, stoppedProcesses_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(stoppedProcesses_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, stoppedProcesses_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.BioheadCommand.EmergencyStop.Feedback)) { + return super.equals(obj); + } + cmvr.api.BioheadCommand.EmergencyStop.Feedback other = (cmvr.api.BioheadCommand.EmergencyStop.Feedback) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getStoppedProcesses() + .equals(other.getStoppedProcesses())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (37 * hash) + STOPPED_PROCESSES_FIELD_NUMBER; + hash = (53 * hash) + getStoppedProcesses().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.BioheadCommand.EmergencyStop.Feedback parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.EmergencyStop.Feedback parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.EmergencyStop.Feedback parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.EmergencyStop.Feedback parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.EmergencyStop.Feedback parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.EmergencyStop.Feedback parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.EmergencyStop.Feedback parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.EmergencyStop.Feedback parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.BioheadCommand.EmergencyStop.Feedback parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.EmergencyStop.Feedback parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.BioheadCommand.EmergencyStop.Feedback parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.EmergencyStop.Feedback parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.BioheadCommand.EmergencyStop.Feedback prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.EmergencyStop.Feedback} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.EmergencyStop.Feedback) + cmvr.api.BioheadCommand.EmergencyStop.FeedbackOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_EmergencyStop_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_EmergencyStop_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.BioheadCommand.EmergencyStop.Feedback.class, cmvr.api.BioheadCommand.EmergencyStop.Feedback.Builder.class); + } + + // Construct using cmvr.api.BioheadCommand.EmergencyStop.Feedback.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + stoppedProcesses_ = ""; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_EmergencyStop_Feedback_descriptor; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.EmergencyStop.Feedback getDefaultInstanceForType() { + return cmvr.api.BioheadCommand.EmergencyStop.Feedback.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.BioheadCommand.EmergencyStop.Feedback build() { + cmvr.api.BioheadCommand.EmergencyStop.Feedback result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.EmergencyStop.Feedback buildPartial() { + cmvr.api.BioheadCommand.EmergencyStop.Feedback result = new cmvr.api.BioheadCommand.EmergencyStop.Feedback(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + result.stoppedProcesses_ = stoppedProcesses_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.BioheadCommand.EmergencyStop.Feedback) { + return mergeFrom((cmvr.api.BioheadCommand.EmergencyStop.Feedback)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.BioheadCommand.EmergencyStop.Feedback other) { + if (other == cmvr.api.BioheadCommand.EmergencyStop.Feedback.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + if (!other.getStoppedProcesses().isEmpty()) { + stoppedProcesses_ = other.stoppedProcesses_; + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + case 18: { + stoppedProcesses_ = input.readStringRequireUtf8(); + + break; + } // case 18 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Feedback header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> headerBuilder_; + /** + *
+         * 通用反馈头
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + *
+         * 通用反馈头
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + *
+         * 通用反馈头
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + *
+         * 通用反馈头
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Feedback.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+         * 通用反馈头
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Feedback.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+         * 通用反馈头
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + *
+         * 通用反馈头
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.Feedback.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + *
+         * 通用反馈头
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + } + /** + *
+         * 通用反馈头
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + + private java.lang.Object stoppedProcesses_ = ""; + /** + *
+         * 已停止的进程列表
+         * 
+ * + * string stopped_processes = 2; + * @return The stoppedProcesses. + */ + public java.lang.String getStoppedProcesses() { + java.lang.Object ref = stoppedProcesses_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + stoppedProcesses_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+         * 已停止的进程列表
+         * 
+ * + * string stopped_processes = 2; + * @return The bytes for stoppedProcesses. + */ + public com.google.protobuf.ByteString + getStoppedProcessesBytes() { + java.lang.Object ref = stoppedProcesses_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + stoppedProcesses_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+         * 已停止的进程列表
+         * 
+ * + * string stopped_processes = 2; + * @param value The stoppedProcesses to set. + * @return This builder for chaining. + */ + public Builder setStoppedProcesses( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + stoppedProcesses_ = value; + onChanged(); + return this; + } + /** + *
+         * 已停止的进程列表
+         * 
+ * + * string stopped_processes = 2; + * @return This builder for chaining. + */ + public Builder clearStoppedProcesses() { + + stoppedProcesses_ = getDefaultInstance().getStoppedProcesses(); + onChanged(); + return this; + } + /** + *
+         * 已停止的进程列表
+         * 
+ * + * string stopped_processes = 2; + * @param value The bytes for stoppedProcesses to set. + * @return This builder for chaining. + */ + public Builder setStoppedProcessesBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + stoppedProcesses_ = value; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.EmergencyStop.Feedback) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.EmergencyStop.Feedback) + private static final cmvr.api.BioheadCommand.EmergencyStop.Feedback DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.BioheadCommand.EmergencyStop.Feedback(); + } + + public static cmvr.api.BioheadCommand.EmergencyStop.Feedback getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Feedback parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.EmergencyStop.Feedback getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.BioheadCommand.EmergencyStop)) { + return super.equals(obj); + } + cmvr.api.BioheadCommand.EmergencyStop other = (cmvr.api.BioheadCommand.EmergencyStop) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.BioheadCommand.EmergencyStop parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.EmergencyStop parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.EmergencyStop parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.EmergencyStop parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.EmergencyStop parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.BioheadCommand.EmergencyStop parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.BioheadCommand.EmergencyStop parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.EmergencyStop parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.BioheadCommand.EmergencyStop parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.EmergencyStop parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.BioheadCommand.EmergencyStop parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.BioheadCommand.EmergencyStop parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.BioheadCommand.EmergencyStop prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     **
+     * 紧急停止命令(集成通用命令头)
+     * 用于立即停止所有面部动作
+     * 
+ * + * Protobuf type {@code cmvr.api.EmergencyStop} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.EmergencyStop) + cmvr.api.BioheadCommand.EmergencyStopOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_EmergencyStop_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_EmergencyStop_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.BioheadCommand.EmergencyStop.class, cmvr.api.BioheadCommand.EmergencyStop.Builder.class); + } + + // Construct using cmvr.api.BioheadCommand.EmergencyStop.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.BioheadCommand.internal_static_cmvr_api_EmergencyStop_descriptor; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.EmergencyStop getDefaultInstanceForType() { + return cmvr.api.BioheadCommand.EmergencyStop.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.BioheadCommand.EmergencyStop build() { + cmvr.api.BioheadCommand.EmergencyStop result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.EmergencyStop buildPartial() { + cmvr.api.BioheadCommand.EmergencyStop result = new cmvr.api.BioheadCommand.EmergencyStop(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.BioheadCommand.EmergencyStop) { + return mergeFrom((cmvr.api.BioheadCommand.EmergencyStop)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.BioheadCommand.EmergencyStop other) { + if (other == cmvr.api.BioheadCommand.EmergencyStop.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.EmergencyStop) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.EmergencyStop) + private static final cmvr.api.BioheadCommand.EmergencyStop DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.BioheadCommand.EmergencyStop(); + } + + public static cmvr.api.BioheadCommand.EmergencyStop getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public EmergencyStop parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.BioheadCommand.EmergencyStop getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_FacialExpression_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_FacialExpression_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_FacialExpression_Eyebrow_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_FacialExpression_Eyebrow_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_FacialExpression_Eyelid_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_FacialExpression_Eyelid_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_FacialExpression_Eyeball_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_FacialExpression_Eyeball_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_FacialExpression_Nose_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_FacialExpression_Nose_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_FacialExpression_Mouth_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_FacialExpression_Mouth_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_FacialExpression_Mouth_LeftLip_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_FacialExpression_Mouth_LeftLip_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_FacialExpression_Mouth_RightLip_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_FacialExpression_Mouth_RightLip_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_FacialExpression_Jaw_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_FacialExpression_Jaw_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_SetFacialExpression_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_SetFacialExpression_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_SetFacialExpression_Request_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_SetFacialExpression_Request_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_SetFacialExpression_Feedback_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_SetFacialExpression_Feedback_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_StreamFacialExpression_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_StreamFacialExpression_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_StreamFacialExpression_Request_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_StreamFacialExpression_Request_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_StreamFacialExpression_Feedback_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_StreamFacialExpression_Feedback_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetStatus_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetStatus_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetStatus_Request_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetStatus_Request_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetStatus_Feedback_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetStatus_Feedback_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_EmergencyStop_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_EmergencyStop_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_EmergencyStop_Request_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_EmergencyStop_Request_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_EmergencyStop_Feedback_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_EmergencyStop_Feedback_fieldAccessorTable; + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n\036cmvr/api/biohead_command.proto\022\010cmvr.a" + + "pi\032\025cmvr/api/common.proto\"\335\010\n\020FacialExpr" + + "ession\0223\n\007eyebrow\030\003 \001(\0132\".cmvr.api.Facia" + + "lExpression.Eyebrow\0221\n\006eyelid\030\004 \001(\0132!.cm" + + "vr.api.FacialExpression.Eyelid\0223\n\007eyebal" + + "l\030\005 \001(\0132\".cmvr.api.FacialExpression.Eyeb" + + "all\022-\n\004nose\030\006 \001(\0132\037.cmvr.api.FacialExpre" + + "ssion.Nose\022/\n\005mouth\030\007 \001(\0132 .cmvr.api.Fac" + + "ialExpression.Mouth\022+\n\003jaw\030\010 \001(\0132\036.cmvr." + + "api.FacialExpression.Jaw\032i\n\007Eyebrow\022\026\n\016l" + + "eft_outside_y\030\001 \001(\002\022\025\n\rleft_inside_y\030\002 \001" + + "(\002\022\027\n\017right_outside_y\030\003 \001(\002\022\026\n\016right_ins" + + "ide_y\030\004 \001(\002\032b\n\006Eyelid\022\024\n\014left_upper_y\030\001 " + + "\001(\002\022\024\n\014left_lower_y\030\002 \001(\002\022\025\n\rright_upper" + + "_y\030\003 \001(\002\022\025\n\rright_lower_y\030\004 \001(\002\032K\n\007Eyeba" + + "ll\022\016\n\006left_x\030\001 \001(\002\022\016\n\006left_y\030\002 \001(\002\022\017\n\007ri" + + "ght_x\030\003 \001(\002\022\017\n\007right_y\030\004 \001(\002\032\'\n\004Nose\022\016\n\006" + + "left_y\030\001 \001(\002\022\017\n\007right_y\030\002 \001(\002\032\274\003\n\005Mouth\022" + + "\023\n\013upper_lip_y\030\001 \001(\002\022\023\n\013upper_lip_z\030\002 \001(" + + "\002\022\023\n\013lower_lip_y\030\003 \001(\002\022\023\n\013lower_lip_z\030\004 " + + "\001(\002\022:\n\010left_lip\030\005 \001(\0132(.cmvr.api.FacialE" + + "xpression.Mouth.LeftLip\022<\n\tright_lip\030\006 \001" + + "(\0132).cmvr.api.FacialExpression.Mouth.Rig" + + "htLip\032q\n\007LeftLip\022\017\n\007upper_x\030\001 \001(\002\022\017\n\007upp" + + "er_y\030\002 \001(\002\022\020\n\010corner_x\030\003 \001(\002\022\020\n\010corner_y" + + "\030\004 \001(\002\022\017\n\007lower_x\030\005 \001(\002\022\017\n\007lower_y\030\006 \001(\002" + + "\032r\n\010RightLip\022\017\n\007upper_x\030\001 \001(\002\022\017\n\007upper_y" + + "\030\002 \001(\002\022\020\n\010corner_x\030\003 \001(\002\022\020\n\010corner_y\030\004 \001" + + "(\002\022\017\n\007lower_x\030\005 \001(\002\022\017\n\007lower_y\030\006 \001(\002\032\033\n\003" + + "Jaw\022\t\n\001x\030\001 \001(\002\022\t\n\001y\030\002 \001(\002\"\360\001\n\023SetFacialE" + + "xpression\032j\n\007Request\022/\n\006header\030\001 \001(\0132\037.c" + + "mvr.api.CommandHeader.Request\022.\n\nexpress" + + "ion\030\002 \001(\0132\032.cmvr.api.FacialExpression\032m\n" + + "\010Feedback\0220\n\006header\030\001 \001(\0132 .cmvr.api.Com" + + "mandHeader.Feedback\022\024\n\014execution_id\030\002 \001(" + + "\t\022\031\n\021execution_time_ms\030\003 \001(\002\"\370\001\n\026StreamF" + + "acialExpression\032q\n\007Request\022/\n\006header\030\001 \001" + + "(\0132\037.cmvr.api.CommandHeader.Request\022(\n\004e" + + "xpr\030\002 \001(\0132\032.cmvr.api.FacialExpression\022\013\n" + + "\003eof\030\003 \001(\010\032k\n\010Feedback\0220\n\006header\030\001 \001(\0132 " + + ".cmvr.api.CommandHeader.Feedback\022-\n\texpr" + + "_diff\030\002 \001(\0132\032.cmvr.api.FacialExpression\"" + + "\204\002\n\tGetStatus\032:\n\007Request\022/\n\006header\030\001 \001(\013" + + "2\037.cmvr.api.CommandHeader.Request\032\272\001\n\010Fe" + + "edback\0220\n\006header\030\001 \001(\0132 .cmvr.api.Comman" + + "dHeader.Feedback\022\021\n\tis_moving\030\002 \001(\010\022\027\n\017l" + + "ast_request_id\030\003 \001(\t\022\031\n\021current_position" + + "s\030\004 \003(\002\022\030\n\020camera_recording\030\005 \001(\010\022\033\n\023act" + + "ive_recording_id\030\006 \001(\t\"\244\001\n\rEmergencyStop" + + "\032:\n\007Request\022/\n\006header\030\001 \001(\0132\037.cmvr.api.C" + + "ommandHeader.Request\032W\n\010Feedback\0220\n\006head" + + "er\030\001 \001(\0132 .cmvr.api.CommandHeader.Feedba" + + "ck\022\031\n\021stopped_processes\030\002 \001(\tb\006proto3" + }; + descriptor = com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + cmvr.api.Common.getDescriptor(), + }); + internal_static_cmvr_api_FacialExpression_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_cmvr_api_FacialExpression_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_FacialExpression_descriptor, + new java.lang.String[] { "Eyebrow", "Eyelid", "Eyeball", "Nose", "Mouth", "Jaw", }); + internal_static_cmvr_api_FacialExpression_Eyebrow_descriptor = + internal_static_cmvr_api_FacialExpression_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_FacialExpression_Eyebrow_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_FacialExpression_Eyebrow_descriptor, + new java.lang.String[] { "LeftOutsideY", "LeftInsideY", "RightOutsideY", "RightInsideY", }); + internal_static_cmvr_api_FacialExpression_Eyelid_descriptor = + internal_static_cmvr_api_FacialExpression_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_FacialExpression_Eyelid_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_FacialExpression_Eyelid_descriptor, + new java.lang.String[] { "LeftUpperY", "LeftLowerY", "RightUpperY", "RightLowerY", }); + internal_static_cmvr_api_FacialExpression_Eyeball_descriptor = + internal_static_cmvr_api_FacialExpression_descriptor.getNestedTypes().get(2); + internal_static_cmvr_api_FacialExpression_Eyeball_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_FacialExpression_Eyeball_descriptor, + new java.lang.String[] { "LeftX", "LeftY", "RightX", "RightY", }); + internal_static_cmvr_api_FacialExpression_Nose_descriptor = + internal_static_cmvr_api_FacialExpression_descriptor.getNestedTypes().get(3); + internal_static_cmvr_api_FacialExpression_Nose_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_FacialExpression_Nose_descriptor, + new java.lang.String[] { "LeftY", "RightY", }); + internal_static_cmvr_api_FacialExpression_Mouth_descriptor = + internal_static_cmvr_api_FacialExpression_descriptor.getNestedTypes().get(4); + internal_static_cmvr_api_FacialExpression_Mouth_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_FacialExpression_Mouth_descriptor, + new java.lang.String[] { "UpperLipY", "UpperLipZ", "LowerLipY", "LowerLipZ", "LeftLip", "RightLip", }); + internal_static_cmvr_api_FacialExpression_Mouth_LeftLip_descriptor = + internal_static_cmvr_api_FacialExpression_Mouth_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_FacialExpression_Mouth_LeftLip_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_FacialExpression_Mouth_LeftLip_descriptor, + new java.lang.String[] { "UpperX", "UpperY", "CornerX", "CornerY", "LowerX", "LowerY", }); + internal_static_cmvr_api_FacialExpression_Mouth_RightLip_descriptor = + internal_static_cmvr_api_FacialExpression_Mouth_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_FacialExpression_Mouth_RightLip_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_FacialExpression_Mouth_RightLip_descriptor, + new java.lang.String[] { "UpperX", "UpperY", "CornerX", "CornerY", "LowerX", "LowerY", }); + internal_static_cmvr_api_FacialExpression_Jaw_descriptor = + internal_static_cmvr_api_FacialExpression_descriptor.getNestedTypes().get(5); + internal_static_cmvr_api_FacialExpression_Jaw_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_FacialExpression_Jaw_descriptor, + new java.lang.String[] { "X", "Y", }); + internal_static_cmvr_api_SetFacialExpression_descriptor = + getDescriptor().getMessageTypes().get(1); + internal_static_cmvr_api_SetFacialExpression_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_SetFacialExpression_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_SetFacialExpression_Request_descriptor = + internal_static_cmvr_api_SetFacialExpression_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_SetFacialExpression_Request_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_SetFacialExpression_Request_descriptor, + new java.lang.String[] { "Header", "Expression", }); + internal_static_cmvr_api_SetFacialExpression_Feedback_descriptor = + internal_static_cmvr_api_SetFacialExpression_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_SetFacialExpression_Feedback_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_SetFacialExpression_Feedback_descriptor, + new java.lang.String[] { "Header", "ExecutionId", "ExecutionTimeMs", }); + internal_static_cmvr_api_StreamFacialExpression_descriptor = + getDescriptor().getMessageTypes().get(2); + internal_static_cmvr_api_StreamFacialExpression_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_StreamFacialExpression_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_StreamFacialExpression_Request_descriptor = + internal_static_cmvr_api_StreamFacialExpression_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_StreamFacialExpression_Request_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_StreamFacialExpression_Request_descriptor, + new java.lang.String[] { "Header", "Expr", "Eof", }); + internal_static_cmvr_api_StreamFacialExpression_Feedback_descriptor = + internal_static_cmvr_api_StreamFacialExpression_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_StreamFacialExpression_Feedback_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_StreamFacialExpression_Feedback_descriptor, + new java.lang.String[] { "Header", "ExprDiff", }); + internal_static_cmvr_api_GetStatus_descriptor = + getDescriptor().getMessageTypes().get(3); + internal_static_cmvr_api_GetStatus_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetStatus_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_GetStatus_Request_descriptor = + internal_static_cmvr_api_GetStatus_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_GetStatus_Request_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetStatus_Request_descriptor, + new java.lang.String[] { "Header", }); + internal_static_cmvr_api_GetStatus_Feedback_descriptor = + internal_static_cmvr_api_GetStatus_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_GetStatus_Feedback_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetStatus_Feedback_descriptor, + new java.lang.String[] { "Header", "IsMoving", "LastRequestId", "CurrentPositions", "CameraRecording", "ActiveRecordingId", }); + internal_static_cmvr_api_EmergencyStop_descriptor = + getDescriptor().getMessageTypes().get(4); + internal_static_cmvr_api_EmergencyStop_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_EmergencyStop_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_EmergencyStop_Request_descriptor = + internal_static_cmvr_api_EmergencyStop_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_EmergencyStop_Request_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_EmergencyStop_Request_descriptor, + new java.lang.String[] { "Header", }); + internal_static_cmvr_api_EmergencyStop_Feedback_descriptor = + internal_static_cmvr_api_EmergencyStop_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_EmergencyStop_Feedback_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_EmergencyStop_Feedback_descriptor, + new java.lang.String[] { "Header", "StoppedProcesses", }); + cmvr.api.Common.getDescriptor(); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/BioheadService.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/BioheadService.java new file mode 100644 index 0000000..270a0a6 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/BioheadService.java @@ -0,0 +1,48 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: cmvr/api/biohead_service.proto + +package cmvr.api; + +public final class BioheadService { + private BioheadService() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistryLite registry) { + } + + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + registerAllExtensions( + (com.google.protobuf.ExtensionRegistryLite) registry); + } + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n\036cmvr/api/biohead_service.proto\022\010cmvr.a" + + "pi\032\036cmvr/api/biohead_command.proto2\207\003\n\016B" + + "ioHeadService\022`\n\rSetExpression\022%.cmvr.ap" + + "i.SetFacialExpression.Request\032&.cmvr.api" + + ".SetFacialExpression.Feedback\"\000\022m\n\020Strea" + + "mExpression\022(.cmvr.api.StreamFacialExpre" + + "ssion.Request\032).cmvr.api.StreamFacialExp" + + "ression.Feedback\"\000(\0010\001\022N\n\017GetSystemStatu" + + "s\022\033.cmvr.api.GetStatus.Request\032\034.cmvr.ap" + + "i.GetStatus.Feedback\"\000\022T\n\rEmergencyStop\022" + + "\037.cmvr.api.EmergencyStop.Request\032 .cmvr." + + "api.EmergencyStop.Feedback\"\000b\006proto3" + }; + descriptor = com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + cmvr.api.BioheadCommand.getDescriptor(), + }); + cmvr.api.BioheadCommand.getDescriptor(); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/CameraCommand.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/CameraCommand.java new file mode 100644 index 0000000..0950bdc --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/CameraCommand.java @@ -0,0 +1,22564 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: cmvr/api/camera_command.proto + +package cmvr.api; + +public final class CameraCommand { + private CameraCommand() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistryLite registry) { + } + + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + registerAllExtensions( + (com.google.protobuf.ExtensionRegistryLite) registry); + } + public interface FrameDataOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.FrameData) + com.google.protobuf.MessageOrBuilder { + + /** + * bytes data = 1; + * @return The data. + */ + com.google.protobuf.ByteString getData(); + + /** + * int32 width = 2; + * @return The width. + */ + int getWidth(); + + /** + * int32 height = 3; + * @return The height. + */ + int getHeight(); + + /** + * .cmvr.api.FrameData.FrameType type = 4; + * @return The enum numeric value on the wire for type. + */ + int getTypeValue(); + /** + * .cmvr.api.FrameData.FrameType type = 4; + * @return The type. + */ + cmvr.api.CameraCommand.FrameData.FrameType getType(); + + /** + * string codec = 5; + * @return The codec. + */ + java.lang.String getCodec(); + /** + * string codec = 5; + * @return The bytes for codec. + */ + com.google.protobuf.ByteString + getCodecBytes(); + + /** + * bool is_key_frame = 6; + * @return The isKeyFrame. + */ + boolean getIsKeyFrame(); + } + /** + * Protobuf type {@code cmvr.api.FrameData} + */ + public static final class FrameData extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.FrameData) + FrameDataOrBuilder { + private static final long serialVersionUID = 0L; + // Use FrameData.newBuilder() to construct. + private FrameData(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private FrameData() { + data_ = com.google.protobuf.ByteString.EMPTY; + type_ = 0; + codec_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new FrameData(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_FrameData_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_FrameData_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.FrameData.class, cmvr.api.CameraCommand.FrameData.Builder.class); + } + + /** + * Protobuf enum {@code cmvr.api.FrameData.FrameType} + */ + public enum FrameType + implements com.google.protobuf.ProtocolMessageEnum { + /** + * U8C1 = 0; + */ + U8C1(0), + /** + * U16C1 = 1; + */ + U16C1(1), + /** + * U8C3 = 2; + */ + U8C3(2), + /** + * U16C3 = 3; + */ + U16C3(3), + /** + * F16C1 = 4; + */ + F16C1(4), + /** + * F32C1 = 5; + */ + F32C1(5), + UNRECOGNIZED(-1), + ; + + /** + * U8C1 = 0; + */ + public static final int U8C1_VALUE = 0; + /** + * U16C1 = 1; + */ + public static final int U16C1_VALUE = 1; + /** + * U8C3 = 2; + */ + public static final int U8C3_VALUE = 2; + /** + * U16C3 = 3; + */ + public static final int U16C3_VALUE = 3; + /** + * F16C1 = 4; + */ + public static final int F16C1_VALUE = 4; + /** + * F32C1 = 5; + */ + public static final int F32C1_VALUE = 5; + + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static FrameType valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static FrameType forNumber(int value) { + switch (value) { + case 0: return U8C1; + case 1: return U16C1; + case 2: return U8C3; + case 3: return U16C3; + case 4: return F16C1; + case 5: return F32C1; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + FrameType> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public FrameType findValueByNumber(int number) { + return FrameType.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(ordinal()); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return cmvr.api.CameraCommand.FrameData.getDescriptor().getEnumTypes().get(0); + } + + private static final FrameType[] VALUES = values(); + + public static FrameType valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private FrameType(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:cmvr.api.FrameData.FrameType) + } + + public static final int DATA_FIELD_NUMBER = 1; + private com.google.protobuf.ByteString data_; + /** + * bytes data = 1; + * @return The data. + */ + @java.lang.Override + public com.google.protobuf.ByteString getData() { + return data_; + } + + public static final int WIDTH_FIELD_NUMBER = 2; + private int width_; + /** + * int32 width = 2; + * @return The width. + */ + @java.lang.Override + public int getWidth() { + return width_; + } + + public static final int HEIGHT_FIELD_NUMBER = 3; + private int height_; + /** + * int32 height = 3; + * @return The height. + */ + @java.lang.Override + public int getHeight() { + return height_; + } + + public static final int TYPE_FIELD_NUMBER = 4; + private int type_; + /** + * .cmvr.api.FrameData.FrameType type = 4; + * @return The enum numeric value on the wire for type. + */ + @java.lang.Override public int getTypeValue() { + return type_; + } + /** + * .cmvr.api.FrameData.FrameType type = 4; + * @return The type. + */ + @java.lang.Override public cmvr.api.CameraCommand.FrameData.FrameType getType() { + @SuppressWarnings("deprecation") + cmvr.api.CameraCommand.FrameData.FrameType result = cmvr.api.CameraCommand.FrameData.FrameType.valueOf(type_); + return result == null ? cmvr.api.CameraCommand.FrameData.FrameType.UNRECOGNIZED : result; + } + + public static final int CODEC_FIELD_NUMBER = 5; + private volatile java.lang.Object codec_; + /** + * string codec = 5; + * @return The codec. + */ + @java.lang.Override + public java.lang.String getCodec() { + java.lang.Object ref = codec_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + codec_ = s; + return s; + } + } + /** + * string codec = 5; + * @return The bytes for codec. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getCodecBytes() { + java.lang.Object ref = codec_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + codec_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int IS_KEY_FRAME_FIELD_NUMBER = 6; + private boolean isKeyFrame_; + /** + * bool is_key_frame = 6; + * @return The isKeyFrame. + */ + @java.lang.Override + public boolean getIsKeyFrame() { + return isKeyFrame_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!data_.isEmpty()) { + output.writeBytes(1, data_); + } + if (width_ != 0) { + output.writeInt32(2, width_); + } + if (height_ != 0) { + output.writeInt32(3, height_); + } + if (type_ != cmvr.api.CameraCommand.FrameData.FrameType.U8C1.getNumber()) { + output.writeEnum(4, type_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(codec_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 5, codec_); + } + if (isKeyFrame_ != false) { + output.writeBool(6, isKeyFrame_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!data_.isEmpty()) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(1, data_); + } + if (width_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(2, width_); + } + if (height_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(3, height_); + } + if (type_ != cmvr.api.CameraCommand.FrameData.FrameType.U8C1.getNumber()) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(4, type_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(codec_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, codec_); + } + if (isKeyFrame_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(6, isKeyFrame_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.CameraCommand.FrameData)) { + return super.equals(obj); + } + cmvr.api.CameraCommand.FrameData other = (cmvr.api.CameraCommand.FrameData) obj; + + if (!getData() + .equals(other.getData())) return false; + if (getWidth() + != other.getWidth()) return false; + if (getHeight() + != other.getHeight()) return false; + if (type_ != other.type_) return false; + if (!getCodec() + .equals(other.getCodec())) return false; + if (getIsKeyFrame() + != other.getIsKeyFrame()) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + DATA_FIELD_NUMBER; + hash = (53 * hash) + getData().hashCode(); + hash = (37 * hash) + WIDTH_FIELD_NUMBER; + hash = (53 * hash) + getWidth(); + hash = (37 * hash) + HEIGHT_FIELD_NUMBER; + hash = (53 * hash) + getHeight(); + hash = (37 * hash) + TYPE_FIELD_NUMBER; + hash = (53 * hash) + type_; + hash = (37 * hash) + CODEC_FIELD_NUMBER; + hash = (53 * hash) + getCodec().hashCode(); + hash = (37 * hash) + IS_KEY_FRAME_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getIsKeyFrame()); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.CameraCommand.FrameData parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.FrameData parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.FrameData parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.FrameData parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.FrameData parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.FrameData parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.FrameData parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.FrameData parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.FrameData parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.FrameData parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.FrameData parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.FrameData parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.CameraCommand.FrameData prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.FrameData} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.FrameData) + cmvr.api.CameraCommand.FrameDataOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_FrameData_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_FrameData_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.FrameData.class, cmvr.api.CameraCommand.FrameData.Builder.class); + } + + // Construct using cmvr.api.CameraCommand.FrameData.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + data_ = com.google.protobuf.ByteString.EMPTY; + + width_ = 0; + + height_ = 0; + + type_ = 0; + + codec_ = ""; + + isKeyFrame_ = false; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_FrameData_descriptor; + } + + @java.lang.Override + public cmvr.api.CameraCommand.FrameData getDefaultInstanceForType() { + return cmvr.api.CameraCommand.FrameData.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.CameraCommand.FrameData build() { + cmvr.api.CameraCommand.FrameData result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.CameraCommand.FrameData buildPartial() { + cmvr.api.CameraCommand.FrameData result = new cmvr.api.CameraCommand.FrameData(this); + result.data_ = data_; + result.width_ = width_; + result.height_ = height_; + result.type_ = type_; + result.codec_ = codec_; + result.isKeyFrame_ = isKeyFrame_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.CameraCommand.FrameData) { + return mergeFrom((cmvr.api.CameraCommand.FrameData)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.CameraCommand.FrameData other) { + if (other == cmvr.api.CameraCommand.FrameData.getDefaultInstance()) return this; + if (other.getData() != com.google.protobuf.ByteString.EMPTY) { + setData(other.getData()); + } + if (other.getWidth() != 0) { + setWidth(other.getWidth()); + } + if (other.getHeight() != 0) { + setHeight(other.getHeight()); + } + if (other.type_ != 0) { + setTypeValue(other.getTypeValue()); + } + if (!other.getCodec().isEmpty()) { + codec_ = other.codec_; + onChanged(); + } + if (other.getIsKeyFrame() != false) { + setIsKeyFrame(other.getIsKeyFrame()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + data_ = input.readBytes(); + + break; + } // case 10 + case 16: { + width_ = input.readInt32(); + + break; + } // case 16 + case 24: { + height_ = input.readInt32(); + + break; + } // case 24 + case 32: { + type_ = input.readEnum(); + + break; + } // case 32 + case 42: { + codec_ = input.readStringRequireUtf8(); + + break; + } // case 42 + case 48: { + isKeyFrame_ = input.readBool(); + + break; + } // case 48 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private com.google.protobuf.ByteString data_ = com.google.protobuf.ByteString.EMPTY; + /** + * bytes data = 1; + * @return The data. + */ + @java.lang.Override + public com.google.protobuf.ByteString getData() { + return data_; + } + /** + * bytes data = 1; + * @param value The data to set. + * @return This builder for chaining. + */ + public Builder setData(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + + data_ = value; + onChanged(); + return this; + } + /** + * bytes data = 1; + * @return This builder for chaining. + */ + public Builder clearData() { + + data_ = getDefaultInstance().getData(); + onChanged(); + return this; + } + + private int width_ ; + /** + * int32 width = 2; + * @return The width. + */ + @java.lang.Override + public int getWidth() { + return width_; + } + /** + * int32 width = 2; + * @param value The width to set. + * @return This builder for chaining. + */ + public Builder setWidth(int value) { + + width_ = value; + onChanged(); + return this; + } + /** + * int32 width = 2; + * @return This builder for chaining. + */ + public Builder clearWidth() { + + width_ = 0; + onChanged(); + return this; + } + + private int height_ ; + /** + * int32 height = 3; + * @return The height. + */ + @java.lang.Override + public int getHeight() { + return height_; + } + /** + * int32 height = 3; + * @param value The height to set. + * @return This builder for chaining. + */ + public Builder setHeight(int value) { + + height_ = value; + onChanged(); + return this; + } + /** + * int32 height = 3; + * @return This builder for chaining. + */ + public Builder clearHeight() { + + height_ = 0; + onChanged(); + return this; + } + + private int type_ = 0; + /** + * .cmvr.api.FrameData.FrameType type = 4; + * @return The enum numeric value on the wire for type. + */ + @java.lang.Override public int getTypeValue() { + return type_; + } + /** + * .cmvr.api.FrameData.FrameType type = 4; + * @param value The enum numeric value on the wire for type to set. + * @return This builder for chaining. + */ + public Builder setTypeValue(int value) { + + type_ = value; + onChanged(); + return this; + } + /** + * .cmvr.api.FrameData.FrameType type = 4; + * @return The type. + */ + @java.lang.Override + public cmvr.api.CameraCommand.FrameData.FrameType getType() { + @SuppressWarnings("deprecation") + cmvr.api.CameraCommand.FrameData.FrameType result = cmvr.api.CameraCommand.FrameData.FrameType.valueOf(type_); + return result == null ? cmvr.api.CameraCommand.FrameData.FrameType.UNRECOGNIZED : result; + } + /** + * .cmvr.api.FrameData.FrameType type = 4; + * @param value The type to set. + * @return This builder for chaining. + */ + public Builder setType(cmvr.api.CameraCommand.FrameData.FrameType value) { + if (value == null) { + throw new NullPointerException(); + } + + type_ = value.getNumber(); + onChanged(); + return this; + } + /** + * .cmvr.api.FrameData.FrameType type = 4; + * @return This builder for chaining. + */ + public Builder clearType() { + + type_ = 0; + onChanged(); + return this; + } + + private java.lang.Object codec_ = ""; + /** + * string codec = 5; + * @return The codec. + */ + public java.lang.String getCodec() { + java.lang.Object ref = codec_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + codec_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string codec = 5; + * @return The bytes for codec. + */ + public com.google.protobuf.ByteString + getCodecBytes() { + java.lang.Object ref = codec_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + codec_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string codec = 5; + * @param value The codec to set. + * @return This builder for chaining. + */ + public Builder setCodec( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + codec_ = value; + onChanged(); + return this; + } + /** + * string codec = 5; + * @return This builder for chaining. + */ + public Builder clearCodec() { + + codec_ = getDefaultInstance().getCodec(); + onChanged(); + return this; + } + /** + * string codec = 5; + * @param value The bytes for codec to set. + * @return This builder for chaining. + */ + public Builder setCodecBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + codec_ = value; + onChanged(); + return this; + } + + private boolean isKeyFrame_ ; + /** + * bool is_key_frame = 6; + * @return The isKeyFrame. + */ + @java.lang.Override + public boolean getIsKeyFrame() { + return isKeyFrame_; + } + /** + * bool is_key_frame = 6; + * @param value The isKeyFrame to set. + * @return This builder for chaining. + */ + public Builder setIsKeyFrame(boolean value) { + + isKeyFrame_ = value; + onChanged(); + return this; + } + /** + * bool is_key_frame = 6; + * @return This builder for chaining. + */ + public Builder clearIsKeyFrame() { + + isKeyFrame_ = false; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.FrameData) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.FrameData) + private static final cmvr.api.CameraCommand.FrameData DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.CameraCommand.FrameData(); + } + + public static cmvr.api.CameraCommand.FrameData getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public FrameData parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.CameraCommand.FrameData getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface CameraStateOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.CameraState) + com.google.protobuf.MessageOrBuilder { + + /** + * bool is_initialized = 1; + * @return The isInitialized. + */ + boolean getIsInitialized(); + + /** + * bool is_opened = 2; + * @return The isOpened. + */ + boolean getIsOpened(); + + /** + * bool is_streaming = 3; + * @return The isStreaming. + */ + boolean getIsStreaming(); + + /** + * bool is_recording = 4; + * @return The isRecording. + */ + boolean getIsRecording(); + + /** + * bool is_error = 5; + * @return The isError. + */ + boolean getIsError(); + + /** + * string error_message = 6; + * @return The errorMessage. + */ + java.lang.String getErrorMessage(); + /** + * string error_message = 6; + * @return The bytes for errorMessage. + */ + com.google.protobuf.ByteString + getErrorMessageBytes(); + + /** + * int32 fps = 7; + * @return The fps. + */ + int getFps(); + + /** + * int32 width = 8; + * @return The width. + */ + int getWidth(); + + /** + * int32 height = 9; + * @return The height. + */ + int getHeight(); + } + /** + * Protobuf type {@code cmvr.api.CameraState} + */ + public static final class CameraState extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.CameraState) + CameraStateOrBuilder { + private static final long serialVersionUID = 0L; + // Use CameraState.newBuilder() to construct. + private CameraState(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private CameraState() { + errorMessage_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new CameraState(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_CameraState_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_CameraState_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.CameraState.class, cmvr.api.CameraCommand.CameraState.Builder.class); + } + + public static final int IS_INITIALIZED_FIELD_NUMBER = 1; + private boolean isInitialized_; + /** + * bool is_initialized = 1; + * @return The isInitialized. + */ + @java.lang.Override + public boolean getIsInitialized() { + return isInitialized_; + } + + public static final int IS_OPENED_FIELD_NUMBER = 2; + private boolean isOpened_; + /** + * bool is_opened = 2; + * @return The isOpened. + */ + @java.lang.Override + public boolean getIsOpened() { + return isOpened_; + } + + public static final int IS_STREAMING_FIELD_NUMBER = 3; + private boolean isStreaming_; + /** + * bool is_streaming = 3; + * @return The isStreaming. + */ + @java.lang.Override + public boolean getIsStreaming() { + return isStreaming_; + } + + public static final int IS_RECORDING_FIELD_NUMBER = 4; + private boolean isRecording_; + /** + * bool is_recording = 4; + * @return The isRecording. + */ + @java.lang.Override + public boolean getIsRecording() { + return isRecording_; + } + + public static final int IS_ERROR_FIELD_NUMBER = 5; + private boolean isError_; + /** + * bool is_error = 5; + * @return The isError. + */ + @java.lang.Override + public boolean getIsError() { + return isError_; + } + + public static final int ERROR_MESSAGE_FIELD_NUMBER = 6; + private volatile java.lang.Object errorMessage_; + /** + * string error_message = 6; + * @return The errorMessage. + */ + @java.lang.Override + public java.lang.String getErrorMessage() { + java.lang.Object ref = errorMessage_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + errorMessage_ = s; + return s; + } + } + /** + * string error_message = 6; + * @return The bytes for errorMessage. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getErrorMessageBytes() { + java.lang.Object ref = errorMessage_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + errorMessage_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int FPS_FIELD_NUMBER = 7; + private int fps_; + /** + * int32 fps = 7; + * @return The fps. + */ + @java.lang.Override + public int getFps() { + return fps_; + } + + public static final int WIDTH_FIELD_NUMBER = 8; + private int width_; + /** + * int32 width = 8; + * @return The width. + */ + @java.lang.Override + public int getWidth() { + return width_; + } + + public static final int HEIGHT_FIELD_NUMBER = 9; + private int height_; + /** + * int32 height = 9; + * @return The height. + */ + @java.lang.Override + public int getHeight() { + return height_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (isInitialized_ != false) { + output.writeBool(1, isInitialized_); + } + if (isOpened_ != false) { + output.writeBool(2, isOpened_); + } + if (isStreaming_ != false) { + output.writeBool(3, isStreaming_); + } + if (isRecording_ != false) { + output.writeBool(4, isRecording_); + } + if (isError_ != false) { + output.writeBool(5, isError_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(errorMessage_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 6, errorMessage_); + } + if (fps_ != 0) { + output.writeInt32(7, fps_); + } + if (width_ != 0) { + output.writeInt32(8, width_); + } + if (height_ != 0) { + output.writeInt32(9, height_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (isInitialized_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(1, isInitialized_); + } + if (isOpened_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(2, isOpened_); + } + if (isStreaming_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(3, isStreaming_); + } + if (isRecording_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(4, isRecording_); + } + if (isError_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(5, isError_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(errorMessage_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, errorMessage_); + } + if (fps_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(7, fps_); + } + if (width_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(8, width_); + } + if (height_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(9, height_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.CameraCommand.CameraState)) { + return super.equals(obj); + } + cmvr.api.CameraCommand.CameraState other = (cmvr.api.CameraCommand.CameraState) obj; + + if (getIsInitialized() + != other.getIsInitialized()) return false; + if (getIsOpened() + != other.getIsOpened()) return false; + if (getIsStreaming() + != other.getIsStreaming()) return false; + if (getIsRecording() + != other.getIsRecording()) return false; + if (getIsError() + != other.getIsError()) return false; + if (!getErrorMessage() + .equals(other.getErrorMessage())) return false; + if (getFps() + != other.getFps()) return false; + if (getWidth() + != other.getWidth()) return false; + if (getHeight() + != other.getHeight()) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + IS_INITIALIZED_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getIsInitialized()); + hash = (37 * hash) + IS_OPENED_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getIsOpened()); + hash = (37 * hash) + IS_STREAMING_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getIsStreaming()); + hash = (37 * hash) + IS_RECORDING_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getIsRecording()); + hash = (37 * hash) + IS_ERROR_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getIsError()); + hash = (37 * hash) + ERROR_MESSAGE_FIELD_NUMBER; + hash = (53 * hash) + getErrorMessage().hashCode(); + hash = (37 * hash) + FPS_FIELD_NUMBER; + hash = (53 * hash) + getFps(); + hash = (37 * hash) + WIDTH_FIELD_NUMBER; + hash = (53 * hash) + getWidth(); + hash = (37 * hash) + HEIGHT_FIELD_NUMBER; + hash = (53 * hash) + getHeight(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.CameraCommand.CameraState parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.CameraState parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.CameraState parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.CameraState parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.CameraState parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.CameraState parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.CameraState parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.CameraState parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.CameraState parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.CameraState parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.CameraState parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.CameraState parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.CameraCommand.CameraState prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.CameraState} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.CameraState) + cmvr.api.CameraCommand.CameraStateOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_CameraState_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_CameraState_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.CameraState.class, cmvr.api.CameraCommand.CameraState.Builder.class); + } + + // Construct using cmvr.api.CameraCommand.CameraState.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + isInitialized_ = false; + + isOpened_ = false; + + isStreaming_ = false; + + isRecording_ = false; + + isError_ = false; + + errorMessage_ = ""; + + fps_ = 0; + + width_ = 0; + + height_ = 0; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_CameraState_descriptor; + } + + @java.lang.Override + public cmvr.api.CameraCommand.CameraState getDefaultInstanceForType() { + return cmvr.api.CameraCommand.CameraState.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.CameraCommand.CameraState build() { + cmvr.api.CameraCommand.CameraState result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.CameraCommand.CameraState buildPartial() { + cmvr.api.CameraCommand.CameraState result = new cmvr.api.CameraCommand.CameraState(this); + result.isInitialized_ = isInitialized_; + result.isOpened_ = isOpened_; + result.isStreaming_ = isStreaming_; + result.isRecording_ = isRecording_; + result.isError_ = isError_; + result.errorMessage_ = errorMessage_; + result.fps_ = fps_; + result.width_ = width_; + result.height_ = height_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.CameraCommand.CameraState) { + return mergeFrom((cmvr.api.CameraCommand.CameraState)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.CameraCommand.CameraState other) { + if (other == cmvr.api.CameraCommand.CameraState.getDefaultInstance()) return this; + if (other.getIsInitialized() != false) { + setIsInitialized(other.getIsInitialized()); + } + if (other.getIsOpened() != false) { + setIsOpened(other.getIsOpened()); + } + if (other.getIsStreaming() != false) { + setIsStreaming(other.getIsStreaming()); + } + if (other.getIsRecording() != false) { + setIsRecording(other.getIsRecording()); + } + if (other.getIsError() != false) { + setIsError(other.getIsError()); + } + if (!other.getErrorMessage().isEmpty()) { + errorMessage_ = other.errorMessage_; + onChanged(); + } + if (other.getFps() != 0) { + setFps(other.getFps()); + } + if (other.getWidth() != 0) { + setWidth(other.getWidth()); + } + if (other.getHeight() != 0) { + setHeight(other.getHeight()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + isInitialized_ = input.readBool(); + + break; + } // case 8 + case 16: { + isOpened_ = input.readBool(); + + break; + } // case 16 + case 24: { + isStreaming_ = input.readBool(); + + break; + } // case 24 + case 32: { + isRecording_ = input.readBool(); + + break; + } // case 32 + case 40: { + isError_ = input.readBool(); + + break; + } // case 40 + case 50: { + errorMessage_ = input.readStringRequireUtf8(); + + break; + } // case 50 + case 56: { + fps_ = input.readInt32(); + + break; + } // case 56 + case 64: { + width_ = input.readInt32(); + + break; + } // case 64 + case 72: { + height_ = input.readInt32(); + + break; + } // case 72 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private boolean isInitialized_ ; + /** + * bool is_initialized = 1; + * @return The isInitialized. + */ + @java.lang.Override + public boolean getIsInitialized() { + return isInitialized_; + } + /** + * bool is_initialized = 1; + * @param value The isInitialized to set. + * @return This builder for chaining. + */ + public Builder setIsInitialized(boolean value) { + + isInitialized_ = value; + onChanged(); + return this; + } + /** + * bool is_initialized = 1; + * @return This builder for chaining. + */ + public Builder clearIsInitialized() { + + isInitialized_ = false; + onChanged(); + return this; + } + + private boolean isOpened_ ; + /** + * bool is_opened = 2; + * @return The isOpened. + */ + @java.lang.Override + public boolean getIsOpened() { + return isOpened_; + } + /** + * bool is_opened = 2; + * @param value The isOpened to set. + * @return This builder for chaining. + */ + public Builder setIsOpened(boolean value) { + + isOpened_ = value; + onChanged(); + return this; + } + /** + * bool is_opened = 2; + * @return This builder for chaining. + */ + public Builder clearIsOpened() { + + isOpened_ = false; + onChanged(); + return this; + } + + private boolean isStreaming_ ; + /** + * bool is_streaming = 3; + * @return The isStreaming. + */ + @java.lang.Override + public boolean getIsStreaming() { + return isStreaming_; + } + /** + * bool is_streaming = 3; + * @param value The isStreaming to set. + * @return This builder for chaining. + */ + public Builder setIsStreaming(boolean value) { + + isStreaming_ = value; + onChanged(); + return this; + } + /** + * bool is_streaming = 3; + * @return This builder for chaining. + */ + public Builder clearIsStreaming() { + + isStreaming_ = false; + onChanged(); + return this; + } + + private boolean isRecording_ ; + /** + * bool is_recording = 4; + * @return The isRecording. + */ + @java.lang.Override + public boolean getIsRecording() { + return isRecording_; + } + /** + * bool is_recording = 4; + * @param value The isRecording to set. + * @return This builder for chaining. + */ + public Builder setIsRecording(boolean value) { + + isRecording_ = value; + onChanged(); + return this; + } + /** + * bool is_recording = 4; + * @return This builder for chaining. + */ + public Builder clearIsRecording() { + + isRecording_ = false; + onChanged(); + return this; + } + + private boolean isError_ ; + /** + * bool is_error = 5; + * @return The isError. + */ + @java.lang.Override + public boolean getIsError() { + return isError_; + } + /** + * bool is_error = 5; + * @param value The isError to set. + * @return This builder for chaining. + */ + public Builder setIsError(boolean value) { + + isError_ = value; + onChanged(); + return this; + } + /** + * bool is_error = 5; + * @return This builder for chaining. + */ + public Builder clearIsError() { + + isError_ = false; + onChanged(); + return this; + } + + private java.lang.Object errorMessage_ = ""; + /** + * string error_message = 6; + * @return The errorMessage. + */ + public java.lang.String getErrorMessage() { + java.lang.Object ref = errorMessage_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + errorMessage_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string error_message = 6; + * @return The bytes for errorMessage. + */ + public com.google.protobuf.ByteString + getErrorMessageBytes() { + java.lang.Object ref = errorMessage_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + errorMessage_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string error_message = 6; + * @param value The errorMessage to set. + * @return This builder for chaining. + */ + public Builder setErrorMessage( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + errorMessage_ = value; + onChanged(); + return this; + } + /** + * string error_message = 6; + * @return This builder for chaining. + */ + public Builder clearErrorMessage() { + + errorMessage_ = getDefaultInstance().getErrorMessage(); + onChanged(); + return this; + } + /** + * string error_message = 6; + * @param value The bytes for errorMessage to set. + * @return This builder for chaining. + */ + public Builder setErrorMessageBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + errorMessage_ = value; + onChanged(); + return this; + } + + private int fps_ ; + /** + * int32 fps = 7; + * @return The fps. + */ + @java.lang.Override + public int getFps() { + return fps_; + } + /** + * int32 fps = 7; + * @param value The fps to set. + * @return This builder for chaining. + */ + public Builder setFps(int value) { + + fps_ = value; + onChanged(); + return this; + } + /** + * int32 fps = 7; + * @return This builder for chaining. + */ + public Builder clearFps() { + + fps_ = 0; + onChanged(); + return this; + } + + private int width_ ; + /** + * int32 width = 8; + * @return The width. + */ + @java.lang.Override + public int getWidth() { + return width_; + } + /** + * int32 width = 8; + * @param value The width to set. + * @return This builder for chaining. + */ + public Builder setWidth(int value) { + + width_ = value; + onChanged(); + return this; + } + /** + * int32 width = 8; + * @return This builder for chaining. + */ + public Builder clearWidth() { + + width_ = 0; + onChanged(); + return this; + } + + private int height_ ; + /** + * int32 height = 9; + * @return The height. + */ + @java.lang.Override + public int getHeight() { + return height_; + } + /** + * int32 height = 9; + * @param value The height to set. + * @return This builder for chaining. + */ + public Builder setHeight(int value) { + + height_ = value; + onChanged(); + return this; + } + /** + * int32 height = 9; + * @return This builder for chaining. + */ + public Builder clearHeight() { + + height_ = 0; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.CameraState) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.CameraState) + private static final cmvr.api.CameraCommand.CameraState DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.CameraCommand.CameraState(); + } + + public static cmvr.api.CameraCommand.CameraState getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public CameraState parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.CameraCommand.CameraState getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface GetCameraStateCommandOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetCameraStateCommand) + com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code cmvr.api.GetCameraStateCommand} + */ + public static final class GetCameraStateCommand extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetCameraStateCommand) + GetCameraStateCommandOrBuilder { + private static final long serialVersionUID = 0L; + // Use GetCameraStateCommand.newBuilder() to construct. + private GetCameraStateCommand(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private GetCameraStateCommand() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new GetCameraStateCommand(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetCameraStateCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetCameraStateCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.GetCameraStateCommand.class, cmvr.api.CameraCommand.GetCameraStateCommand.Builder.class); + } + + public interface RequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetCameraStateCommand.Request) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Request getHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.GetCameraStateCommand.Request} + */ + public static final class Request extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetCameraStateCommand.Request) + RequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use Request.newBuilder() to construct. + private Request(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Request() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Request(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetCameraStateCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetCameraStateCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.GetCameraStateCommand.Request.class, cmvr.api.CameraCommand.GetCameraStateCommand.Request.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Request header_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.CameraCommand.GetCameraStateCommand.Request)) { + return super.equals(obj); + } + cmvr.api.CameraCommand.GetCameraStateCommand.Request other = (cmvr.api.CameraCommand.GetCameraStateCommand.Request) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.CameraCommand.GetCameraStateCommand.Request parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetCameraStateCommand.Request parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetCameraStateCommand.Request parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetCameraStateCommand.Request parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetCameraStateCommand.Request parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetCameraStateCommand.Request parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetCameraStateCommand.Request parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetCameraStateCommand.Request parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetCameraStateCommand.Request parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetCameraStateCommand.Request parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetCameraStateCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetCameraStateCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.CameraCommand.GetCameraStateCommand.Request prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetCameraStateCommand.Request} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetCameraStateCommand.Request) + cmvr.api.CameraCommand.GetCameraStateCommand.RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetCameraStateCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetCameraStateCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.GetCameraStateCommand.Request.class, cmvr.api.CameraCommand.GetCameraStateCommand.Request.Builder.class); + } + + // Construct using cmvr.api.CameraCommand.GetCameraStateCommand.Request.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetCameraStateCommand_Request_descriptor; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetCameraStateCommand.Request getDefaultInstanceForType() { + return cmvr.api.CameraCommand.GetCameraStateCommand.Request.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetCameraStateCommand.Request build() { + cmvr.api.CameraCommand.GetCameraStateCommand.Request result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetCameraStateCommand.Request buildPartial() { + cmvr.api.CameraCommand.GetCameraStateCommand.Request result = new cmvr.api.CameraCommand.GetCameraStateCommand.Request(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.CameraCommand.GetCameraStateCommand.Request) { + return mergeFrom((cmvr.api.CameraCommand.GetCameraStateCommand.Request)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.CameraCommand.GetCameraStateCommand.Request other) { + if (other == cmvr.api.CameraCommand.GetCameraStateCommand.Request.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Request header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Request getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Request.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Request.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.Request.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetCameraStateCommand.Request) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetCameraStateCommand.Request) + private static final cmvr.api.CameraCommand.GetCameraStateCommand.Request DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.CameraCommand.GetCameraStateCommand.Request(); + } + + public static cmvr.api.CameraCommand.GetCameraStateCommand.Request getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetCameraStateCommand.Request getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface FeedbackOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetCameraStateCommand.Feedback) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Feedback getHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder(); + + /** + * .cmvr.api.CameraState state = 2; + * @return Whether the state field is set. + */ + boolean hasState(); + /** + * .cmvr.api.CameraState state = 2; + * @return The state. + */ + cmvr.api.CameraCommand.CameraState getState(); + /** + * .cmvr.api.CameraState state = 2; + */ + cmvr.api.CameraCommand.CameraStateOrBuilder getStateOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.GetCameraStateCommand.Feedback} + */ + public static final class Feedback extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetCameraStateCommand.Feedback) + FeedbackOrBuilder { + private static final long serialVersionUID = 0L; + // Use Feedback.newBuilder() to construct. + private Feedback(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Feedback() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Feedback(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetCameraStateCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetCameraStateCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.GetCameraStateCommand.Feedback.class, cmvr.api.CameraCommand.GetCameraStateCommand.Feedback.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Feedback header_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + public static final int STATE_FIELD_NUMBER = 2; + private cmvr.api.CameraCommand.CameraState state_; + /** + * .cmvr.api.CameraState state = 2; + * @return Whether the state field is set. + */ + @java.lang.Override + public boolean hasState() { + return state_ != null; + } + /** + * .cmvr.api.CameraState state = 2; + * @return The state. + */ + @java.lang.Override + public cmvr.api.CameraCommand.CameraState getState() { + return state_ == null ? cmvr.api.CameraCommand.CameraState.getDefaultInstance() : state_; + } + /** + * .cmvr.api.CameraState state = 2; + */ + @java.lang.Override + public cmvr.api.CameraCommand.CameraStateOrBuilder getStateOrBuilder() { + return getState(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + if (state_ != null) { + output.writeMessage(2, getState()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + if (state_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, getState()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.CameraCommand.GetCameraStateCommand.Feedback)) { + return super.equals(obj); + } + cmvr.api.CameraCommand.GetCameraStateCommand.Feedback other = (cmvr.api.CameraCommand.GetCameraStateCommand.Feedback) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (hasState() != other.hasState()) return false; + if (hasState()) { + if (!getState() + .equals(other.getState())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + if (hasState()) { + hash = (37 * hash) + STATE_FIELD_NUMBER; + hash = (53 * hash) + getState().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.CameraCommand.GetCameraStateCommand.Feedback parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetCameraStateCommand.Feedback parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetCameraStateCommand.Feedback parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetCameraStateCommand.Feedback parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetCameraStateCommand.Feedback parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetCameraStateCommand.Feedback parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetCameraStateCommand.Feedback parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetCameraStateCommand.Feedback parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetCameraStateCommand.Feedback parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetCameraStateCommand.Feedback parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetCameraStateCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetCameraStateCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.CameraCommand.GetCameraStateCommand.Feedback prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetCameraStateCommand.Feedback} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetCameraStateCommand.Feedback) + cmvr.api.CameraCommand.GetCameraStateCommand.FeedbackOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetCameraStateCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetCameraStateCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.GetCameraStateCommand.Feedback.class, cmvr.api.CameraCommand.GetCameraStateCommand.Feedback.Builder.class); + } + + // Construct using cmvr.api.CameraCommand.GetCameraStateCommand.Feedback.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + if (stateBuilder_ == null) { + state_ = null; + } else { + state_ = null; + stateBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetCameraStateCommand_Feedback_descriptor; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetCameraStateCommand.Feedback getDefaultInstanceForType() { + return cmvr.api.CameraCommand.GetCameraStateCommand.Feedback.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetCameraStateCommand.Feedback build() { + cmvr.api.CameraCommand.GetCameraStateCommand.Feedback result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetCameraStateCommand.Feedback buildPartial() { + cmvr.api.CameraCommand.GetCameraStateCommand.Feedback result = new cmvr.api.CameraCommand.GetCameraStateCommand.Feedback(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + if (stateBuilder_ == null) { + result.state_ = state_; + } else { + result.state_ = stateBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.CameraCommand.GetCameraStateCommand.Feedback) { + return mergeFrom((cmvr.api.CameraCommand.GetCameraStateCommand.Feedback)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.CameraCommand.GetCameraStateCommand.Feedback other) { + if (other == cmvr.api.CameraCommand.GetCameraStateCommand.Feedback.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + if (other.hasState()) { + mergeState(other.getState()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + case 18: { + input.readMessage( + getStateFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 18 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Feedback header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Feedback.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Feedback.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.Feedback.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + + private cmvr.api.CameraCommand.CameraState state_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.CameraCommand.CameraState, cmvr.api.CameraCommand.CameraState.Builder, cmvr.api.CameraCommand.CameraStateOrBuilder> stateBuilder_; + /** + * .cmvr.api.CameraState state = 2; + * @return Whether the state field is set. + */ + public boolean hasState() { + return stateBuilder_ != null || state_ != null; + } + /** + * .cmvr.api.CameraState state = 2; + * @return The state. + */ + public cmvr.api.CameraCommand.CameraState getState() { + if (stateBuilder_ == null) { + return state_ == null ? cmvr.api.CameraCommand.CameraState.getDefaultInstance() : state_; + } else { + return stateBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CameraState state = 2; + */ + public Builder setState(cmvr.api.CameraCommand.CameraState value) { + if (stateBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + state_ = value; + onChanged(); + } else { + stateBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CameraState state = 2; + */ + public Builder setState( + cmvr.api.CameraCommand.CameraState.Builder builderForValue) { + if (stateBuilder_ == null) { + state_ = builderForValue.build(); + onChanged(); + } else { + stateBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CameraState state = 2; + */ + public Builder mergeState(cmvr.api.CameraCommand.CameraState value) { + if (stateBuilder_ == null) { + if (state_ != null) { + state_ = + cmvr.api.CameraCommand.CameraState.newBuilder(state_).mergeFrom(value).buildPartial(); + } else { + state_ = value; + } + onChanged(); + } else { + stateBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CameraState state = 2; + */ + public Builder clearState() { + if (stateBuilder_ == null) { + state_ = null; + onChanged(); + } else { + state_ = null; + stateBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CameraState state = 2; + */ + public cmvr.api.CameraCommand.CameraState.Builder getStateBuilder() { + + onChanged(); + return getStateFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CameraState state = 2; + */ + public cmvr.api.CameraCommand.CameraStateOrBuilder getStateOrBuilder() { + if (stateBuilder_ != null) { + return stateBuilder_.getMessageOrBuilder(); + } else { + return state_ == null ? + cmvr.api.CameraCommand.CameraState.getDefaultInstance() : state_; + } + } + /** + * .cmvr.api.CameraState state = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.CameraCommand.CameraState, cmvr.api.CameraCommand.CameraState.Builder, cmvr.api.CameraCommand.CameraStateOrBuilder> + getStateFieldBuilder() { + if (stateBuilder_ == null) { + stateBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.CameraCommand.CameraState, cmvr.api.CameraCommand.CameraState.Builder, cmvr.api.CameraCommand.CameraStateOrBuilder>( + getState(), + getParentForChildren(), + isClean()); + state_ = null; + } + return stateBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetCameraStateCommand.Feedback) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetCameraStateCommand.Feedback) + private static final cmvr.api.CameraCommand.GetCameraStateCommand.Feedback DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.CameraCommand.GetCameraStateCommand.Feedback(); + } + + public static cmvr.api.CameraCommand.GetCameraStateCommand.Feedback getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Feedback parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetCameraStateCommand.Feedback getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.CameraCommand.GetCameraStateCommand)) { + return super.equals(obj); + } + cmvr.api.CameraCommand.GetCameraStateCommand other = (cmvr.api.CameraCommand.GetCameraStateCommand) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.CameraCommand.GetCameraStateCommand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetCameraStateCommand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetCameraStateCommand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetCameraStateCommand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetCameraStateCommand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetCameraStateCommand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetCameraStateCommand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetCameraStateCommand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetCameraStateCommand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetCameraStateCommand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetCameraStateCommand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetCameraStateCommand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.CameraCommand.GetCameraStateCommand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetCameraStateCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetCameraStateCommand) + cmvr.api.CameraCommand.GetCameraStateCommandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetCameraStateCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetCameraStateCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.GetCameraStateCommand.class, cmvr.api.CameraCommand.GetCameraStateCommand.Builder.class); + } + + // Construct using cmvr.api.CameraCommand.GetCameraStateCommand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetCameraStateCommand_descriptor; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetCameraStateCommand getDefaultInstanceForType() { + return cmvr.api.CameraCommand.GetCameraStateCommand.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetCameraStateCommand build() { + cmvr.api.CameraCommand.GetCameraStateCommand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetCameraStateCommand buildPartial() { + cmvr.api.CameraCommand.GetCameraStateCommand result = new cmvr.api.CameraCommand.GetCameraStateCommand(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.CameraCommand.GetCameraStateCommand) { + return mergeFrom((cmvr.api.CameraCommand.GetCameraStateCommand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.CameraCommand.GetCameraStateCommand other) { + if (other == cmvr.api.CameraCommand.GetCameraStateCommand.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetCameraStateCommand) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetCameraStateCommand) + private static final cmvr.api.CameraCommand.GetCameraStateCommand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.CameraCommand.GetCameraStateCommand(); + } + + public static cmvr.api.CameraCommand.GetCameraStateCommand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public GetCameraStateCommand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetCameraStateCommand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface StartCameraCommandOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.StartCameraCommand) + com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code cmvr.api.StartCameraCommand} + */ + public static final class StartCameraCommand extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.StartCameraCommand) + StartCameraCommandOrBuilder { + private static final long serialVersionUID = 0L; + // Use StartCameraCommand.newBuilder() to construct. + private StartCameraCommand(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private StartCameraCommand() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new StartCameraCommand(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StartCameraCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StartCameraCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.StartCameraCommand.class, cmvr.api.CameraCommand.StartCameraCommand.Builder.class); + } + + public interface RequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.StartCameraCommand.Request) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Request getHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.StartCameraCommand.Request} + */ + public static final class Request extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.StartCameraCommand.Request) + RequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use Request.newBuilder() to construct. + private Request(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Request() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Request(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StartCameraCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StartCameraCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.StartCameraCommand.Request.class, cmvr.api.CameraCommand.StartCameraCommand.Request.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Request header_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.CameraCommand.StartCameraCommand.Request)) { + return super.equals(obj); + } + cmvr.api.CameraCommand.StartCameraCommand.Request other = (cmvr.api.CameraCommand.StartCameraCommand.Request) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.CameraCommand.StartCameraCommand.Request parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.StartCameraCommand.Request parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.StartCameraCommand.Request parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.StartCameraCommand.Request parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.StartCameraCommand.Request parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.StartCameraCommand.Request parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.StartCameraCommand.Request parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.StartCameraCommand.Request parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.StartCameraCommand.Request parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.StartCameraCommand.Request parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.StartCameraCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.StartCameraCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.CameraCommand.StartCameraCommand.Request prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.StartCameraCommand.Request} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.StartCameraCommand.Request) + cmvr.api.CameraCommand.StartCameraCommand.RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StartCameraCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StartCameraCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.StartCameraCommand.Request.class, cmvr.api.CameraCommand.StartCameraCommand.Request.Builder.class); + } + + // Construct using cmvr.api.CameraCommand.StartCameraCommand.Request.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StartCameraCommand_Request_descriptor; + } + + @java.lang.Override + public cmvr.api.CameraCommand.StartCameraCommand.Request getDefaultInstanceForType() { + return cmvr.api.CameraCommand.StartCameraCommand.Request.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.CameraCommand.StartCameraCommand.Request build() { + cmvr.api.CameraCommand.StartCameraCommand.Request result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.CameraCommand.StartCameraCommand.Request buildPartial() { + cmvr.api.CameraCommand.StartCameraCommand.Request result = new cmvr.api.CameraCommand.StartCameraCommand.Request(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.CameraCommand.StartCameraCommand.Request) { + return mergeFrom((cmvr.api.CameraCommand.StartCameraCommand.Request)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.CameraCommand.StartCameraCommand.Request other) { + if (other == cmvr.api.CameraCommand.StartCameraCommand.Request.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Request header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Request getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Request.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Request.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.Request.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.StartCameraCommand.Request) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.StartCameraCommand.Request) + private static final cmvr.api.CameraCommand.StartCameraCommand.Request DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.CameraCommand.StartCameraCommand.Request(); + } + + public static cmvr.api.CameraCommand.StartCameraCommand.Request getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.CameraCommand.StartCameraCommand.Request getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface FeedbackOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.StartCameraCommand.Feedback) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Feedback getHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.StartCameraCommand.Feedback} + */ + public static final class Feedback extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.StartCameraCommand.Feedback) + FeedbackOrBuilder { + private static final long serialVersionUID = 0L; + // Use Feedback.newBuilder() to construct. + private Feedback(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Feedback() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Feedback(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StartCameraCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StartCameraCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.StartCameraCommand.Feedback.class, cmvr.api.CameraCommand.StartCameraCommand.Feedback.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Feedback header_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.CameraCommand.StartCameraCommand.Feedback)) { + return super.equals(obj); + } + cmvr.api.CameraCommand.StartCameraCommand.Feedback other = (cmvr.api.CameraCommand.StartCameraCommand.Feedback) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.CameraCommand.StartCameraCommand.Feedback parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.StartCameraCommand.Feedback parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.StartCameraCommand.Feedback parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.StartCameraCommand.Feedback parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.StartCameraCommand.Feedback parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.StartCameraCommand.Feedback parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.StartCameraCommand.Feedback parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.StartCameraCommand.Feedback parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.StartCameraCommand.Feedback parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.StartCameraCommand.Feedback parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.StartCameraCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.StartCameraCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.CameraCommand.StartCameraCommand.Feedback prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.StartCameraCommand.Feedback} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.StartCameraCommand.Feedback) + cmvr.api.CameraCommand.StartCameraCommand.FeedbackOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StartCameraCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StartCameraCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.StartCameraCommand.Feedback.class, cmvr.api.CameraCommand.StartCameraCommand.Feedback.Builder.class); + } + + // Construct using cmvr.api.CameraCommand.StartCameraCommand.Feedback.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StartCameraCommand_Feedback_descriptor; + } + + @java.lang.Override + public cmvr.api.CameraCommand.StartCameraCommand.Feedback getDefaultInstanceForType() { + return cmvr.api.CameraCommand.StartCameraCommand.Feedback.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.CameraCommand.StartCameraCommand.Feedback build() { + cmvr.api.CameraCommand.StartCameraCommand.Feedback result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.CameraCommand.StartCameraCommand.Feedback buildPartial() { + cmvr.api.CameraCommand.StartCameraCommand.Feedback result = new cmvr.api.CameraCommand.StartCameraCommand.Feedback(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.CameraCommand.StartCameraCommand.Feedback) { + return mergeFrom((cmvr.api.CameraCommand.StartCameraCommand.Feedback)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.CameraCommand.StartCameraCommand.Feedback other) { + if (other == cmvr.api.CameraCommand.StartCameraCommand.Feedback.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Feedback header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Feedback.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Feedback.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.Feedback.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.StartCameraCommand.Feedback) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.StartCameraCommand.Feedback) + private static final cmvr.api.CameraCommand.StartCameraCommand.Feedback DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.CameraCommand.StartCameraCommand.Feedback(); + } + + public static cmvr.api.CameraCommand.StartCameraCommand.Feedback getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Feedback parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.CameraCommand.StartCameraCommand.Feedback getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.CameraCommand.StartCameraCommand)) { + return super.equals(obj); + } + cmvr.api.CameraCommand.StartCameraCommand other = (cmvr.api.CameraCommand.StartCameraCommand) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.CameraCommand.StartCameraCommand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.StartCameraCommand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.StartCameraCommand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.StartCameraCommand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.StartCameraCommand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.StartCameraCommand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.StartCameraCommand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.StartCameraCommand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.StartCameraCommand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.StartCameraCommand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.StartCameraCommand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.StartCameraCommand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.CameraCommand.StartCameraCommand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.StartCameraCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.StartCameraCommand) + cmvr.api.CameraCommand.StartCameraCommandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StartCameraCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StartCameraCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.StartCameraCommand.class, cmvr.api.CameraCommand.StartCameraCommand.Builder.class); + } + + // Construct using cmvr.api.CameraCommand.StartCameraCommand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StartCameraCommand_descriptor; + } + + @java.lang.Override + public cmvr.api.CameraCommand.StartCameraCommand getDefaultInstanceForType() { + return cmvr.api.CameraCommand.StartCameraCommand.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.CameraCommand.StartCameraCommand build() { + cmvr.api.CameraCommand.StartCameraCommand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.CameraCommand.StartCameraCommand buildPartial() { + cmvr.api.CameraCommand.StartCameraCommand result = new cmvr.api.CameraCommand.StartCameraCommand(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.CameraCommand.StartCameraCommand) { + return mergeFrom((cmvr.api.CameraCommand.StartCameraCommand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.CameraCommand.StartCameraCommand other) { + if (other == cmvr.api.CameraCommand.StartCameraCommand.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.StartCameraCommand) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.StartCameraCommand) + private static final cmvr.api.CameraCommand.StartCameraCommand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.CameraCommand.StartCameraCommand(); + } + + public static cmvr.api.CameraCommand.StartCameraCommand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public StartCameraCommand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.CameraCommand.StartCameraCommand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface StopCameraCommandOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.StopCameraCommand) + com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code cmvr.api.StopCameraCommand} + */ + public static final class StopCameraCommand extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.StopCameraCommand) + StopCameraCommandOrBuilder { + private static final long serialVersionUID = 0L; + // Use StopCameraCommand.newBuilder() to construct. + private StopCameraCommand(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private StopCameraCommand() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new StopCameraCommand(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StopCameraCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StopCameraCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.StopCameraCommand.class, cmvr.api.CameraCommand.StopCameraCommand.Builder.class); + } + + public interface RequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.StopCameraCommand.Request) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Request getHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.StopCameraCommand.Request} + */ + public static final class Request extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.StopCameraCommand.Request) + RequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use Request.newBuilder() to construct. + private Request(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Request() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Request(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StopCameraCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StopCameraCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.StopCameraCommand.Request.class, cmvr.api.CameraCommand.StopCameraCommand.Request.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Request header_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.CameraCommand.StopCameraCommand.Request)) { + return super.equals(obj); + } + cmvr.api.CameraCommand.StopCameraCommand.Request other = (cmvr.api.CameraCommand.StopCameraCommand.Request) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.CameraCommand.StopCameraCommand.Request parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.StopCameraCommand.Request parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.StopCameraCommand.Request parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.StopCameraCommand.Request parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.StopCameraCommand.Request parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.StopCameraCommand.Request parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.StopCameraCommand.Request parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.StopCameraCommand.Request parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.StopCameraCommand.Request parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.StopCameraCommand.Request parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.StopCameraCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.StopCameraCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.CameraCommand.StopCameraCommand.Request prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.StopCameraCommand.Request} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.StopCameraCommand.Request) + cmvr.api.CameraCommand.StopCameraCommand.RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StopCameraCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StopCameraCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.StopCameraCommand.Request.class, cmvr.api.CameraCommand.StopCameraCommand.Request.Builder.class); + } + + // Construct using cmvr.api.CameraCommand.StopCameraCommand.Request.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StopCameraCommand_Request_descriptor; + } + + @java.lang.Override + public cmvr.api.CameraCommand.StopCameraCommand.Request getDefaultInstanceForType() { + return cmvr.api.CameraCommand.StopCameraCommand.Request.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.CameraCommand.StopCameraCommand.Request build() { + cmvr.api.CameraCommand.StopCameraCommand.Request result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.CameraCommand.StopCameraCommand.Request buildPartial() { + cmvr.api.CameraCommand.StopCameraCommand.Request result = new cmvr.api.CameraCommand.StopCameraCommand.Request(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.CameraCommand.StopCameraCommand.Request) { + return mergeFrom((cmvr.api.CameraCommand.StopCameraCommand.Request)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.CameraCommand.StopCameraCommand.Request other) { + if (other == cmvr.api.CameraCommand.StopCameraCommand.Request.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Request header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Request getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Request.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Request.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.Request.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.StopCameraCommand.Request) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.StopCameraCommand.Request) + private static final cmvr.api.CameraCommand.StopCameraCommand.Request DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.CameraCommand.StopCameraCommand.Request(); + } + + public static cmvr.api.CameraCommand.StopCameraCommand.Request getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.CameraCommand.StopCameraCommand.Request getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface FeedbackOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.StopCameraCommand.Feedback) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Feedback getHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.StopCameraCommand.Feedback} + */ + public static final class Feedback extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.StopCameraCommand.Feedback) + FeedbackOrBuilder { + private static final long serialVersionUID = 0L; + // Use Feedback.newBuilder() to construct. + private Feedback(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Feedback() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Feedback(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StopCameraCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StopCameraCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.StopCameraCommand.Feedback.class, cmvr.api.CameraCommand.StopCameraCommand.Feedback.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Feedback header_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.CameraCommand.StopCameraCommand.Feedback)) { + return super.equals(obj); + } + cmvr.api.CameraCommand.StopCameraCommand.Feedback other = (cmvr.api.CameraCommand.StopCameraCommand.Feedback) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.CameraCommand.StopCameraCommand.Feedback parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.StopCameraCommand.Feedback parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.StopCameraCommand.Feedback parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.StopCameraCommand.Feedback parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.StopCameraCommand.Feedback parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.StopCameraCommand.Feedback parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.StopCameraCommand.Feedback parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.StopCameraCommand.Feedback parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.StopCameraCommand.Feedback parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.StopCameraCommand.Feedback parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.StopCameraCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.StopCameraCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.CameraCommand.StopCameraCommand.Feedback prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.StopCameraCommand.Feedback} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.StopCameraCommand.Feedback) + cmvr.api.CameraCommand.StopCameraCommand.FeedbackOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StopCameraCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StopCameraCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.StopCameraCommand.Feedback.class, cmvr.api.CameraCommand.StopCameraCommand.Feedback.Builder.class); + } + + // Construct using cmvr.api.CameraCommand.StopCameraCommand.Feedback.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StopCameraCommand_Feedback_descriptor; + } + + @java.lang.Override + public cmvr.api.CameraCommand.StopCameraCommand.Feedback getDefaultInstanceForType() { + return cmvr.api.CameraCommand.StopCameraCommand.Feedback.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.CameraCommand.StopCameraCommand.Feedback build() { + cmvr.api.CameraCommand.StopCameraCommand.Feedback result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.CameraCommand.StopCameraCommand.Feedback buildPartial() { + cmvr.api.CameraCommand.StopCameraCommand.Feedback result = new cmvr.api.CameraCommand.StopCameraCommand.Feedback(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.CameraCommand.StopCameraCommand.Feedback) { + return mergeFrom((cmvr.api.CameraCommand.StopCameraCommand.Feedback)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.CameraCommand.StopCameraCommand.Feedback other) { + if (other == cmvr.api.CameraCommand.StopCameraCommand.Feedback.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Feedback header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Feedback.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Feedback.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.Feedback.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.StopCameraCommand.Feedback) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.StopCameraCommand.Feedback) + private static final cmvr.api.CameraCommand.StopCameraCommand.Feedback DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.CameraCommand.StopCameraCommand.Feedback(); + } + + public static cmvr.api.CameraCommand.StopCameraCommand.Feedback getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Feedback parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.CameraCommand.StopCameraCommand.Feedback getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.CameraCommand.StopCameraCommand)) { + return super.equals(obj); + } + cmvr.api.CameraCommand.StopCameraCommand other = (cmvr.api.CameraCommand.StopCameraCommand) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.CameraCommand.StopCameraCommand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.StopCameraCommand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.StopCameraCommand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.StopCameraCommand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.StopCameraCommand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.StopCameraCommand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.StopCameraCommand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.StopCameraCommand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.StopCameraCommand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.StopCameraCommand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.StopCameraCommand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.StopCameraCommand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.CameraCommand.StopCameraCommand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.StopCameraCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.StopCameraCommand) + cmvr.api.CameraCommand.StopCameraCommandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StopCameraCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StopCameraCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.StopCameraCommand.class, cmvr.api.CameraCommand.StopCameraCommand.Builder.class); + } + + // Construct using cmvr.api.CameraCommand.StopCameraCommand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StopCameraCommand_descriptor; + } + + @java.lang.Override + public cmvr.api.CameraCommand.StopCameraCommand getDefaultInstanceForType() { + return cmvr.api.CameraCommand.StopCameraCommand.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.CameraCommand.StopCameraCommand build() { + cmvr.api.CameraCommand.StopCameraCommand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.CameraCommand.StopCameraCommand buildPartial() { + cmvr.api.CameraCommand.StopCameraCommand result = new cmvr.api.CameraCommand.StopCameraCommand(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.CameraCommand.StopCameraCommand) { + return mergeFrom((cmvr.api.CameraCommand.StopCameraCommand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.CameraCommand.StopCameraCommand other) { + if (other == cmvr.api.CameraCommand.StopCameraCommand.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.StopCameraCommand) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.StopCameraCommand) + private static final cmvr.api.CameraCommand.StopCameraCommand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.CameraCommand.StopCameraCommand(); + } + + public static cmvr.api.CameraCommand.StopCameraCommand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public StopCameraCommand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.CameraCommand.StopCameraCommand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface GetRGBImageCommandOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetRGBImageCommand) + com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code cmvr.api.GetRGBImageCommand} + */ + public static final class GetRGBImageCommand extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetRGBImageCommand) + GetRGBImageCommandOrBuilder { + private static final long serialVersionUID = 0L; + // Use GetRGBImageCommand.newBuilder() to construct. + private GetRGBImageCommand(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private GetRGBImageCommand() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new GetRGBImageCommand(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBImageCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBImageCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.GetRGBImageCommand.class, cmvr.api.CameraCommand.GetRGBImageCommand.Builder.class); + } + + public interface RequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetRGBImageCommand.Request) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Request getHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.GetRGBImageCommand.Request} + */ + public static final class Request extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetRGBImageCommand.Request) + RequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use Request.newBuilder() to construct. + private Request(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Request() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Request(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBImageCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBImageCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.GetRGBImageCommand.Request.class, cmvr.api.CameraCommand.GetRGBImageCommand.Request.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Request header_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.CameraCommand.GetRGBImageCommand.Request)) { + return super.equals(obj); + } + cmvr.api.CameraCommand.GetRGBImageCommand.Request other = (cmvr.api.CameraCommand.GetRGBImageCommand.Request) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.CameraCommand.GetRGBImageCommand.Request parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetRGBImageCommand.Request parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBImageCommand.Request parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetRGBImageCommand.Request parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBImageCommand.Request parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetRGBImageCommand.Request parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBImageCommand.Request parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetRGBImageCommand.Request parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBImageCommand.Request parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetRGBImageCommand.Request parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBImageCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetRGBImageCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.CameraCommand.GetRGBImageCommand.Request prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetRGBImageCommand.Request} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetRGBImageCommand.Request) + cmvr.api.CameraCommand.GetRGBImageCommand.RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBImageCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBImageCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.GetRGBImageCommand.Request.class, cmvr.api.CameraCommand.GetRGBImageCommand.Request.Builder.class); + } + + // Construct using cmvr.api.CameraCommand.GetRGBImageCommand.Request.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBImageCommand_Request_descriptor; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBImageCommand.Request getDefaultInstanceForType() { + return cmvr.api.CameraCommand.GetRGBImageCommand.Request.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBImageCommand.Request build() { + cmvr.api.CameraCommand.GetRGBImageCommand.Request result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBImageCommand.Request buildPartial() { + cmvr.api.CameraCommand.GetRGBImageCommand.Request result = new cmvr.api.CameraCommand.GetRGBImageCommand.Request(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.CameraCommand.GetRGBImageCommand.Request) { + return mergeFrom((cmvr.api.CameraCommand.GetRGBImageCommand.Request)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.CameraCommand.GetRGBImageCommand.Request other) { + if (other == cmvr.api.CameraCommand.GetRGBImageCommand.Request.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Request header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Request getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Request.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Request.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.Request.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetRGBImageCommand.Request) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetRGBImageCommand.Request) + private static final cmvr.api.CameraCommand.GetRGBImageCommand.Request DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.CameraCommand.GetRGBImageCommand.Request(); + } + + public static cmvr.api.CameraCommand.GetRGBImageCommand.Request getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBImageCommand.Request getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface FeedbackOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetRGBImageCommand.Feedback) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Feedback getHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder(); + + /** + * .cmvr.api.FrameData color_frame = 2; + * @return Whether the colorFrame field is set. + */ + boolean hasColorFrame(); + /** + * .cmvr.api.FrameData color_frame = 2; + * @return The colorFrame. + */ + cmvr.api.CameraCommand.FrameData getColorFrame(); + /** + * .cmvr.api.FrameData color_frame = 2; + */ + cmvr.api.CameraCommand.FrameDataOrBuilder getColorFrameOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.GetRGBImageCommand.Feedback} + */ + public static final class Feedback extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetRGBImageCommand.Feedback) + FeedbackOrBuilder { + private static final long serialVersionUID = 0L; + // Use Feedback.newBuilder() to construct. + private Feedback(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Feedback() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Feedback(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBImageCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBImageCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.GetRGBImageCommand.Feedback.class, cmvr.api.CameraCommand.GetRGBImageCommand.Feedback.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Feedback header_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + public static final int COLOR_FRAME_FIELD_NUMBER = 2; + private cmvr.api.CameraCommand.FrameData colorFrame_; + /** + * .cmvr.api.FrameData color_frame = 2; + * @return Whether the colorFrame field is set. + */ + @java.lang.Override + public boolean hasColorFrame() { + return colorFrame_ != null; + } + /** + * .cmvr.api.FrameData color_frame = 2; + * @return The colorFrame. + */ + @java.lang.Override + public cmvr.api.CameraCommand.FrameData getColorFrame() { + return colorFrame_ == null ? cmvr.api.CameraCommand.FrameData.getDefaultInstance() : colorFrame_; + } + /** + * .cmvr.api.FrameData color_frame = 2; + */ + @java.lang.Override + public cmvr.api.CameraCommand.FrameDataOrBuilder getColorFrameOrBuilder() { + return getColorFrame(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + if (colorFrame_ != null) { + output.writeMessage(2, getColorFrame()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + if (colorFrame_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, getColorFrame()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.CameraCommand.GetRGBImageCommand.Feedback)) { + return super.equals(obj); + } + cmvr.api.CameraCommand.GetRGBImageCommand.Feedback other = (cmvr.api.CameraCommand.GetRGBImageCommand.Feedback) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (hasColorFrame() != other.hasColorFrame()) return false; + if (hasColorFrame()) { + if (!getColorFrame() + .equals(other.getColorFrame())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + if (hasColorFrame()) { + hash = (37 * hash) + COLOR_FRAME_FIELD_NUMBER; + hash = (53 * hash) + getColorFrame().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.CameraCommand.GetRGBImageCommand.Feedback parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetRGBImageCommand.Feedback parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBImageCommand.Feedback parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetRGBImageCommand.Feedback parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBImageCommand.Feedback parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetRGBImageCommand.Feedback parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBImageCommand.Feedback parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetRGBImageCommand.Feedback parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBImageCommand.Feedback parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetRGBImageCommand.Feedback parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBImageCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetRGBImageCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.CameraCommand.GetRGBImageCommand.Feedback prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetRGBImageCommand.Feedback} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetRGBImageCommand.Feedback) + cmvr.api.CameraCommand.GetRGBImageCommand.FeedbackOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBImageCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBImageCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.GetRGBImageCommand.Feedback.class, cmvr.api.CameraCommand.GetRGBImageCommand.Feedback.Builder.class); + } + + // Construct using cmvr.api.CameraCommand.GetRGBImageCommand.Feedback.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + if (colorFrameBuilder_ == null) { + colorFrame_ = null; + } else { + colorFrame_ = null; + colorFrameBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBImageCommand_Feedback_descriptor; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBImageCommand.Feedback getDefaultInstanceForType() { + return cmvr.api.CameraCommand.GetRGBImageCommand.Feedback.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBImageCommand.Feedback build() { + cmvr.api.CameraCommand.GetRGBImageCommand.Feedback result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBImageCommand.Feedback buildPartial() { + cmvr.api.CameraCommand.GetRGBImageCommand.Feedback result = new cmvr.api.CameraCommand.GetRGBImageCommand.Feedback(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + if (colorFrameBuilder_ == null) { + result.colorFrame_ = colorFrame_; + } else { + result.colorFrame_ = colorFrameBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.CameraCommand.GetRGBImageCommand.Feedback) { + return mergeFrom((cmvr.api.CameraCommand.GetRGBImageCommand.Feedback)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.CameraCommand.GetRGBImageCommand.Feedback other) { + if (other == cmvr.api.CameraCommand.GetRGBImageCommand.Feedback.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + if (other.hasColorFrame()) { + mergeColorFrame(other.getColorFrame()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + case 18: { + input.readMessage( + getColorFrameFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 18 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Feedback header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Feedback.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Feedback.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.Feedback.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + + private cmvr.api.CameraCommand.FrameData colorFrame_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.CameraCommand.FrameData, cmvr.api.CameraCommand.FrameData.Builder, cmvr.api.CameraCommand.FrameDataOrBuilder> colorFrameBuilder_; + /** + * .cmvr.api.FrameData color_frame = 2; + * @return Whether the colorFrame field is set. + */ + public boolean hasColorFrame() { + return colorFrameBuilder_ != null || colorFrame_ != null; + } + /** + * .cmvr.api.FrameData color_frame = 2; + * @return The colorFrame. + */ + public cmvr.api.CameraCommand.FrameData getColorFrame() { + if (colorFrameBuilder_ == null) { + return colorFrame_ == null ? cmvr.api.CameraCommand.FrameData.getDefaultInstance() : colorFrame_; + } else { + return colorFrameBuilder_.getMessage(); + } + } + /** + * .cmvr.api.FrameData color_frame = 2; + */ + public Builder setColorFrame(cmvr.api.CameraCommand.FrameData value) { + if (colorFrameBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + colorFrame_ = value; + onChanged(); + } else { + colorFrameBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.FrameData color_frame = 2; + */ + public Builder setColorFrame( + cmvr.api.CameraCommand.FrameData.Builder builderForValue) { + if (colorFrameBuilder_ == null) { + colorFrame_ = builderForValue.build(); + onChanged(); + } else { + colorFrameBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.FrameData color_frame = 2; + */ + public Builder mergeColorFrame(cmvr.api.CameraCommand.FrameData value) { + if (colorFrameBuilder_ == null) { + if (colorFrame_ != null) { + colorFrame_ = + cmvr.api.CameraCommand.FrameData.newBuilder(colorFrame_).mergeFrom(value).buildPartial(); + } else { + colorFrame_ = value; + } + onChanged(); + } else { + colorFrameBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.FrameData color_frame = 2; + */ + public Builder clearColorFrame() { + if (colorFrameBuilder_ == null) { + colorFrame_ = null; + onChanged(); + } else { + colorFrame_ = null; + colorFrameBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.FrameData color_frame = 2; + */ + public cmvr.api.CameraCommand.FrameData.Builder getColorFrameBuilder() { + + onChanged(); + return getColorFrameFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.FrameData color_frame = 2; + */ + public cmvr.api.CameraCommand.FrameDataOrBuilder getColorFrameOrBuilder() { + if (colorFrameBuilder_ != null) { + return colorFrameBuilder_.getMessageOrBuilder(); + } else { + return colorFrame_ == null ? + cmvr.api.CameraCommand.FrameData.getDefaultInstance() : colorFrame_; + } + } + /** + * .cmvr.api.FrameData color_frame = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.CameraCommand.FrameData, cmvr.api.CameraCommand.FrameData.Builder, cmvr.api.CameraCommand.FrameDataOrBuilder> + getColorFrameFieldBuilder() { + if (colorFrameBuilder_ == null) { + colorFrameBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.CameraCommand.FrameData, cmvr.api.CameraCommand.FrameData.Builder, cmvr.api.CameraCommand.FrameDataOrBuilder>( + getColorFrame(), + getParentForChildren(), + isClean()); + colorFrame_ = null; + } + return colorFrameBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetRGBImageCommand.Feedback) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetRGBImageCommand.Feedback) + private static final cmvr.api.CameraCommand.GetRGBImageCommand.Feedback DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.CameraCommand.GetRGBImageCommand.Feedback(); + } + + public static cmvr.api.CameraCommand.GetRGBImageCommand.Feedback getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Feedback parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBImageCommand.Feedback getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.CameraCommand.GetRGBImageCommand)) { + return super.equals(obj); + } + cmvr.api.CameraCommand.GetRGBImageCommand other = (cmvr.api.CameraCommand.GetRGBImageCommand) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.CameraCommand.GetRGBImageCommand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetRGBImageCommand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBImageCommand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetRGBImageCommand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBImageCommand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetRGBImageCommand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBImageCommand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetRGBImageCommand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBImageCommand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetRGBImageCommand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBImageCommand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetRGBImageCommand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.CameraCommand.GetRGBImageCommand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetRGBImageCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetRGBImageCommand) + cmvr.api.CameraCommand.GetRGBImageCommandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBImageCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBImageCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.GetRGBImageCommand.class, cmvr.api.CameraCommand.GetRGBImageCommand.Builder.class); + } + + // Construct using cmvr.api.CameraCommand.GetRGBImageCommand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBImageCommand_descriptor; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBImageCommand getDefaultInstanceForType() { + return cmvr.api.CameraCommand.GetRGBImageCommand.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBImageCommand build() { + cmvr.api.CameraCommand.GetRGBImageCommand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBImageCommand buildPartial() { + cmvr.api.CameraCommand.GetRGBImageCommand result = new cmvr.api.CameraCommand.GetRGBImageCommand(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.CameraCommand.GetRGBImageCommand) { + return mergeFrom((cmvr.api.CameraCommand.GetRGBImageCommand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.CameraCommand.GetRGBImageCommand other) { + if (other == cmvr.api.CameraCommand.GetRGBImageCommand.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetRGBImageCommand) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetRGBImageCommand) + private static final cmvr.api.CameraCommand.GetRGBImageCommand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.CameraCommand.GetRGBImageCommand(); + } + + public static cmvr.api.CameraCommand.GetRGBImageCommand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public GetRGBImageCommand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBImageCommand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface GetDepthImageCommandOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetDepthImageCommand) + com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code cmvr.api.GetDepthImageCommand} + */ + public static final class GetDepthImageCommand extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetDepthImageCommand) + GetDepthImageCommandOrBuilder { + private static final long serialVersionUID = 0L; + // Use GetDepthImageCommand.newBuilder() to construct. + private GetDepthImageCommand(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private GetDepthImageCommand() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new GetDepthImageCommand(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetDepthImageCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetDepthImageCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.GetDepthImageCommand.class, cmvr.api.CameraCommand.GetDepthImageCommand.Builder.class); + } + + public interface RequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetDepthImageCommand.Request) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Request getHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.GetDepthImageCommand.Request} + */ + public static final class Request extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetDepthImageCommand.Request) + RequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use Request.newBuilder() to construct. + private Request(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Request() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Request(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetDepthImageCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetDepthImageCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.GetDepthImageCommand.Request.class, cmvr.api.CameraCommand.GetDepthImageCommand.Request.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Request header_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.CameraCommand.GetDepthImageCommand.Request)) { + return super.equals(obj); + } + cmvr.api.CameraCommand.GetDepthImageCommand.Request other = (cmvr.api.CameraCommand.GetDepthImageCommand.Request) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.CameraCommand.GetDepthImageCommand.Request parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetDepthImageCommand.Request parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetDepthImageCommand.Request parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetDepthImageCommand.Request parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetDepthImageCommand.Request parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetDepthImageCommand.Request parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetDepthImageCommand.Request parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetDepthImageCommand.Request parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetDepthImageCommand.Request parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetDepthImageCommand.Request parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetDepthImageCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetDepthImageCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.CameraCommand.GetDepthImageCommand.Request prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetDepthImageCommand.Request} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetDepthImageCommand.Request) + cmvr.api.CameraCommand.GetDepthImageCommand.RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetDepthImageCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetDepthImageCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.GetDepthImageCommand.Request.class, cmvr.api.CameraCommand.GetDepthImageCommand.Request.Builder.class); + } + + // Construct using cmvr.api.CameraCommand.GetDepthImageCommand.Request.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetDepthImageCommand_Request_descriptor; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetDepthImageCommand.Request getDefaultInstanceForType() { + return cmvr.api.CameraCommand.GetDepthImageCommand.Request.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetDepthImageCommand.Request build() { + cmvr.api.CameraCommand.GetDepthImageCommand.Request result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetDepthImageCommand.Request buildPartial() { + cmvr.api.CameraCommand.GetDepthImageCommand.Request result = new cmvr.api.CameraCommand.GetDepthImageCommand.Request(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.CameraCommand.GetDepthImageCommand.Request) { + return mergeFrom((cmvr.api.CameraCommand.GetDepthImageCommand.Request)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.CameraCommand.GetDepthImageCommand.Request other) { + if (other == cmvr.api.CameraCommand.GetDepthImageCommand.Request.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Request header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Request getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Request.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Request.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.Request.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetDepthImageCommand.Request) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetDepthImageCommand.Request) + private static final cmvr.api.CameraCommand.GetDepthImageCommand.Request DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.CameraCommand.GetDepthImageCommand.Request(); + } + + public static cmvr.api.CameraCommand.GetDepthImageCommand.Request getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetDepthImageCommand.Request getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface FeedbackOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetDepthImageCommand.Feedback) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Feedback getHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder(); + + /** + * .cmvr.api.FrameData depth_frame = 2; + * @return Whether the depthFrame field is set. + */ + boolean hasDepthFrame(); + /** + * .cmvr.api.FrameData depth_frame = 2; + * @return The depthFrame. + */ + cmvr.api.CameraCommand.FrameData getDepthFrame(); + /** + * .cmvr.api.FrameData depth_frame = 2; + */ + cmvr.api.CameraCommand.FrameDataOrBuilder getDepthFrameOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.GetDepthImageCommand.Feedback} + */ + public static final class Feedback extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetDepthImageCommand.Feedback) + FeedbackOrBuilder { + private static final long serialVersionUID = 0L; + // Use Feedback.newBuilder() to construct. + private Feedback(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Feedback() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Feedback(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetDepthImageCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetDepthImageCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.GetDepthImageCommand.Feedback.class, cmvr.api.CameraCommand.GetDepthImageCommand.Feedback.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Feedback header_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + public static final int DEPTH_FRAME_FIELD_NUMBER = 2; + private cmvr.api.CameraCommand.FrameData depthFrame_; + /** + * .cmvr.api.FrameData depth_frame = 2; + * @return Whether the depthFrame field is set. + */ + @java.lang.Override + public boolean hasDepthFrame() { + return depthFrame_ != null; + } + /** + * .cmvr.api.FrameData depth_frame = 2; + * @return The depthFrame. + */ + @java.lang.Override + public cmvr.api.CameraCommand.FrameData getDepthFrame() { + return depthFrame_ == null ? cmvr.api.CameraCommand.FrameData.getDefaultInstance() : depthFrame_; + } + /** + * .cmvr.api.FrameData depth_frame = 2; + */ + @java.lang.Override + public cmvr.api.CameraCommand.FrameDataOrBuilder getDepthFrameOrBuilder() { + return getDepthFrame(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + if (depthFrame_ != null) { + output.writeMessage(2, getDepthFrame()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + if (depthFrame_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, getDepthFrame()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.CameraCommand.GetDepthImageCommand.Feedback)) { + return super.equals(obj); + } + cmvr.api.CameraCommand.GetDepthImageCommand.Feedback other = (cmvr.api.CameraCommand.GetDepthImageCommand.Feedback) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (hasDepthFrame() != other.hasDepthFrame()) return false; + if (hasDepthFrame()) { + if (!getDepthFrame() + .equals(other.getDepthFrame())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + if (hasDepthFrame()) { + hash = (37 * hash) + DEPTH_FRAME_FIELD_NUMBER; + hash = (53 * hash) + getDepthFrame().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.CameraCommand.GetDepthImageCommand.Feedback parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetDepthImageCommand.Feedback parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetDepthImageCommand.Feedback parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetDepthImageCommand.Feedback parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetDepthImageCommand.Feedback parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetDepthImageCommand.Feedback parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetDepthImageCommand.Feedback parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetDepthImageCommand.Feedback parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetDepthImageCommand.Feedback parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetDepthImageCommand.Feedback parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetDepthImageCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetDepthImageCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.CameraCommand.GetDepthImageCommand.Feedback prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetDepthImageCommand.Feedback} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetDepthImageCommand.Feedback) + cmvr.api.CameraCommand.GetDepthImageCommand.FeedbackOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetDepthImageCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetDepthImageCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.GetDepthImageCommand.Feedback.class, cmvr.api.CameraCommand.GetDepthImageCommand.Feedback.Builder.class); + } + + // Construct using cmvr.api.CameraCommand.GetDepthImageCommand.Feedback.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + if (depthFrameBuilder_ == null) { + depthFrame_ = null; + } else { + depthFrame_ = null; + depthFrameBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetDepthImageCommand_Feedback_descriptor; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetDepthImageCommand.Feedback getDefaultInstanceForType() { + return cmvr.api.CameraCommand.GetDepthImageCommand.Feedback.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetDepthImageCommand.Feedback build() { + cmvr.api.CameraCommand.GetDepthImageCommand.Feedback result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetDepthImageCommand.Feedback buildPartial() { + cmvr.api.CameraCommand.GetDepthImageCommand.Feedback result = new cmvr.api.CameraCommand.GetDepthImageCommand.Feedback(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + if (depthFrameBuilder_ == null) { + result.depthFrame_ = depthFrame_; + } else { + result.depthFrame_ = depthFrameBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.CameraCommand.GetDepthImageCommand.Feedback) { + return mergeFrom((cmvr.api.CameraCommand.GetDepthImageCommand.Feedback)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.CameraCommand.GetDepthImageCommand.Feedback other) { + if (other == cmvr.api.CameraCommand.GetDepthImageCommand.Feedback.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + if (other.hasDepthFrame()) { + mergeDepthFrame(other.getDepthFrame()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + case 18: { + input.readMessage( + getDepthFrameFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 18 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Feedback header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Feedback.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Feedback.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.Feedback.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + + private cmvr.api.CameraCommand.FrameData depthFrame_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.CameraCommand.FrameData, cmvr.api.CameraCommand.FrameData.Builder, cmvr.api.CameraCommand.FrameDataOrBuilder> depthFrameBuilder_; + /** + * .cmvr.api.FrameData depth_frame = 2; + * @return Whether the depthFrame field is set. + */ + public boolean hasDepthFrame() { + return depthFrameBuilder_ != null || depthFrame_ != null; + } + /** + * .cmvr.api.FrameData depth_frame = 2; + * @return The depthFrame. + */ + public cmvr.api.CameraCommand.FrameData getDepthFrame() { + if (depthFrameBuilder_ == null) { + return depthFrame_ == null ? cmvr.api.CameraCommand.FrameData.getDefaultInstance() : depthFrame_; + } else { + return depthFrameBuilder_.getMessage(); + } + } + /** + * .cmvr.api.FrameData depth_frame = 2; + */ + public Builder setDepthFrame(cmvr.api.CameraCommand.FrameData value) { + if (depthFrameBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + depthFrame_ = value; + onChanged(); + } else { + depthFrameBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.FrameData depth_frame = 2; + */ + public Builder setDepthFrame( + cmvr.api.CameraCommand.FrameData.Builder builderForValue) { + if (depthFrameBuilder_ == null) { + depthFrame_ = builderForValue.build(); + onChanged(); + } else { + depthFrameBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.FrameData depth_frame = 2; + */ + public Builder mergeDepthFrame(cmvr.api.CameraCommand.FrameData value) { + if (depthFrameBuilder_ == null) { + if (depthFrame_ != null) { + depthFrame_ = + cmvr.api.CameraCommand.FrameData.newBuilder(depthFrame_).mergeFrom(value).buildPartial(); + } else { + depthFrame_ = value; + } + onChanged(); + } else { + depthFrameBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.FrameData depth_frame = 2; + */ + public Builder clearDepthFrame() { + if (depthFrameBuilder_ == null) { + depthFrame_ = null; + onChanged(); + } else { + depthFrame_ = null; + depthFrameBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.FrameData depth_frame = 2; + */ + public cmvr.api.CameraCommand.FrameData.Builder getDepthFrameBuilder() { + + onChanged(); + return getDepthFrameFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.FrameData depth_frame = 2; + */ + public cmvr.api.CameraCommand.FrameDataOrBuilder getDepthFrameOrBuilder() { + if (depthFrameBuilder_ != null) { + return depthFrameBuilder_.getMessageOrBuilder(); + } else { + return depthFrame_ == null ? + cmvr.api.CameraCommand.FrameData.getDefaultInstance() : depthFrame_; + } + } + /** + * .cmvr.api.FrameData depth_frame = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.CameraCommand.FrameData, cmvr.api.CameraCommand.FrameData.Builder, cmvr.api.CameraCommand.FrameDataOrBuilder> + getDepthFrameFieldBuilder() { + if (depthFrameBuilder_ == null) { + depthFrameBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.CameraCommand.FrameData, cmvr.api.CameraCommand.FrameData.Builder, cmvr.api.CameraCommand.FrameDataOrBuilder>( + getDepthFrame(), + getParentForChildren(), + isClean()); + depthFrame_ = null; + } + return depthFrameBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetDepthImageCommand.Feedback) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetDepthImageCommand.Feedback) + private static final cmvr.api.CameraCommand.GetDepthImageCommand.Feedback DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.CameraCommand.GetDepthImageCommand.Feedback(); + } + + public static cmvr.api.CameraCommand.GetDepthImageCommand.Feedback getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Feedback parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetDepthImageCommand.Feedback getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.CameraCommand.GetDepthImageCommand)) { + return super.equals(obj); + } + cmvr.api.CameraCommand.GetDepthImageCommand other = (cmvr.api.CameraCommand.GetDepthImageCommand) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.CameraCommand.GetDepthImageCommand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetDepthImageCommand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetDepthImageCommand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetDepthImageCommand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetDepthImageCommand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetDepthImageCommand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetDepthImageCommand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetDepthImageCommand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetDepthImageCommand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetDepthImageCommand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetDepthImageCommand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetDepthImageCommand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.CameraCommand.GetDepthImageCommand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetDepthImageCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetDepthImageCommand) + cmvr.api.CameraCommand.GetDepthImageCommandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetDepthImageCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetDepthImageCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.GetDepthImageCommand.class, cmvr.api.CameraCommand.GetDepthImageCommand.Builder.class); + } + + // Construct using cmvr.api.CameraCommand.GetDepthImageCommand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetDepthImageCommand_descriptor; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetDepthImageCommand getDefaultInstanceForType() { + return cmvr.api.CameraCommand.GetDepthImageCommand.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetDepthImageCommand build() { + cmvr.api.CameraCommand.GetDepthImageCommand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetDepthImageCommand buildPartial() { + cmvr.api.CameraCommand.GetDepthImageCommand result = new cmvr.api.CameraCommand.GetDepthImageCommand(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.CameraCommand.GetDepthImageCommand) { + return mergeFrom((cmvr.api.CameraCommand.GetDepthImageCommand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.CameraCommand.GetDepthImageCommand other) { + if (other == cmvr.api.CameraCommand.GetDepthImageCommand.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetDepthImageCommand) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetDepthImageCommand) + private static final cmvr.api.CameraCommand.GetDepthImageCommand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.CameraCommand.GetDepthImageCommand(); + } + + public static cmvr.api.CameraCommand.GetDepthImageCommand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public GetDepthImageCommand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetDepthImageCommand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface GetRGBDImagesCommandOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetRGBDImagesCommand) + com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code cmvr.api.GetRGBDImagesCommand} + */ + public static final class GetRGBDImagesCommand extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetRGBDImagesCommand) + GetRGBDImagesCommandOrBuilder { + private static final long serialVersionUID = 0L; + // Use GetRGBDImagesCommand.newBuilder() to construct. + private GetRGBDImagesCommand(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private GetRGBDImagesCommand() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new GetRGBDImagesCommand(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBDImagesCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBDImagesCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.GetRGBDImagesCommand.class, cmvr.api.CameraCommand.GetRGBDImagesCommand.Builder.class); + } + + public interface RequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetRGBDImagesCommand.Request) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Request getHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.GetRGBDImagesCommand.Request} + */ + public static final class Request extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetRGBDImagesCommand.Request) + RequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use Request.newBuilder() to construct. + private Request(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Request() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Request(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBDImagesCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBDImagesCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.GetRGBDImagesCommand.Request.class, cmvr.api.CameraCommand.GetRGBDImagesCommand.Request.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Request header_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.CameraCommand.GetRGBDImagesCommand.Request)) { + return super.equals(obj); + } + cmvr.api.CameraCommand.GetRGBDImagesCommand.Request other = (cmvr.api.CameraCommand.GetRGBDImagesCommand.Request) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.CameraCommand.GetRGBDImagesCommand.Request parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetRGBDImagesCommand.Request parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBDImagesCommand.Request parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetRGBDImagesCommand.Request parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBDImagesCommand.Request parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetRGBDImagesCommand.Request parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBDImagesCommand.Request parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetRGBDImagesCommand.Request parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBDImagesCommand.Request parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetRGBDImagesCommand.Request parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBDImagesCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetRGBDImagesCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.CameraCommand.GetRGBDImagesCommand.Request prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetRGBDImagesCommand.Request} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetRGBDImagesCommand.Request) + cmvr.api.CameraCommand.GetRGBDImagesCommand.RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBDImagesCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBDImagesCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.GetRGBDImagesCommand.Request.class, cmvr.api.CameraCommand.GetRGBDImagesCommand.Request.Builder.class); + } + + // Construct using cmvr.api.CameraCommand.GetRGBDImagesCommand.Request.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBDImagesCommand_Request_descriptor; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBDImagesCommand.Request getDefaultInstanceForType() { + return cmvr.api.CameraCommand.GetRGBDImagesCommand.Request.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBDImagesCommand.Request build() { + cmvr.api.CameraCommand.GetRGBDImagesCommand.Request result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBDImagesCommand.Request buildPartial() { + cmvr.api.CameraCommand.GetRGBDImagesCommand.Request result = new cmvr.api.CameraCommand.GetRGBDImagesCommand.Request(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.CameraCommand.GetRGBDImagesCommand.Request) { + return mergeFrom((cmvr.api.CameraCommand.GetRGBDImagesCommand.Request)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.CameraCommand.GetRGBDImagesCommand.Request other) { + if (other == cmvr.api.CameraCommand.GetRGBDImagesCommand.Request.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Request header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Request getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Request.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Request.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.Request.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetRGBDImagesCommand.Request) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetRGBDImagesCommand.Request) + private static final cmvr.api.CameraCommand.GetRGBDImagesCommand.Request DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.CameraCommand.GetRGBDImagesCommand.Request(); + } + + public static cmvr.api.CameraCommand.GetRGBDImagesCommand.Request getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBDImagesCommand.Request getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface FeedbackOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetRGBDImagesCommand.Feedback) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Feedback getHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder(); + + /** + * .cmvr.api.FrameData color_frame = 2; + * @return Whether the colorFrame field is set. + */ + boolean hasColorFrame(); + /** + * .cmvr.api.FrameData color_frame = 2; + * @return The colorFrame. + */ + cmvr.api.CameraCommand.FrameData getColorFrame(); + /** + * .cmvr.api.FrameData color_frame = 2; + */ + cmvr.api.CameraCommand.FrameDataOrBuilder getColorFrameOrBuilder(); + + /** + * .cmvr.api.FrameData depth_frame = 3; + * @return Whether the depthFrame field is set. + */ + boolean hasDepthFrame(); + /** + * .cmvr.api.FrameData depth_frame = 3; + * @return The depthFrame. + */ + cmvr.api.CameraCommand.FrameData getDepthFrame(); + /** + * .cmvr.api.FrameData depth_frame = 3; + */ + cmvr.api.CameraCommand.FrameDataOrBuilder getDepthFrameOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.GetRGBDImagesCommand.Feedback} + */ + public static final class Feedback extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetRGBDImagesCommand.Feedback) + FeedbackOrBuilder { + private static final long serialVersionUID = 0L; + // Use Feedback.newBuilder() to construct. + private Feedback(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Feedback() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Feedback(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBDImagesCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBDImagesCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.GetRGBDImagesCommand.Feedback.class, cmvr.api.CameraCommand.GetRGBDImagesCommand.Feedback.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Feedback header_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + public static final int COLOR_FRAME_FIELD_NUMBER = 2; + private cmvr.api.CameraCommand.FrameData colorFrame_; + /** + * .cmvr.api.FrameData color_frame = 2; + * @return Whether the colorFrame field is set. + */ + @java.lang.Override + public boolean hasColorFrame() { + return colorFrame_ != null; + } + /** + * .cmvr.api.FrameData color_frame = 2; + * @return The colorFrame. + */ + @java.lang.Override + public cmvr.api.CameraCommand.FrameData getColorFrame() { + return colorFrame_ == null ? cmvr.api.CameraCommand.FrameData.getDefaultInstance() : colorFrame_; + } + /** + * .cmvr.api.FrameData color_frame = 2; + */ + @java.lang.Override + public cmvr.api.CameraCommand.FrameDataOrBuilder getColorFrameOrBuilder() { + return getColorFrame(); + } + + public static final int DEPTH_FRAME_FIELD_NUMBER = 3; + private cmvr.api.CameraCommand.FrameData depthFrame_; + /** + * .cmvr.api.FrameData depth_frame = 3; + * @return Whether the depthFrame field is set. + */ + @java.lang.Override + public boolean hasDepthFrame() { + return depthFrame_ != null; + } + /** + * .cmvr.api.FrameData depth_frame = 3; + * @return The depthFrame. + */ + @java.lang.Override + public cmvr.api.CameraCommand.FrameData getDepthFrame() { + return depthFrame_ == null ? cmvr.api.CameraCommand.FrameData.getDefaultInstance() : depthFrame_; + } + /** + * .cmvr.api.FrameData depth_frame = 3; + */ + @java.lang.Override + public cmvr.api.CameraCommand.FrameDataOrBuilder getDepthFrameOrBuilder() { + return getDepthFrame(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + if (colorFrame_ != null) { + output.writeMessage(2, getColorFrame()); + } + if (depthFrame_ != null) { + output.writeMessage(3, getDepthFrame()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + if (colorFrame_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, getColorFrame()); + } + if (depthFrame_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(3, getDepthFrame()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.CameraCommand.GetRGBDImagesCommand.Feedback)) { + return super.equals(obj); + } + cmvr.api.CameraCommand.GetRGBDImagesCommand.Feedback other = (cmvr.api.CameraCommand.GetRGBDImagesCommand.Feedback) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (hasColorFrame() != other.hasColorFrame()) return false; + if (hasColorFrame()) { + if (!getColorFrame() + .equals(other.getColorFrame())) return false; + } + if (hasDepthFrame() != other.hasDepthFrame()) return false; + if (hasDepthFrame()) { + if (!getDepthFrame() + .equals(other.getDepthFrame())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + if (hasColorFrame()) { + hash = (37 * hash) + COLOR_FRAME_FIELD_NUMBER; + hash = (53 * hash) + getColorFrame().hashCode(); + } + if (hasDepthFrame()) { + hash = (37 * hash) + DEPTH_FRAME_FIELD_NUMBER; + hash = (53 * hash) + getDepthFrame().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.CameraCommand.GetRGBDImagesCommand.Feedback parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetRGBDImagesCommand.Feedback parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBDImagesCommand.Feedback parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetRGBDImagesCommand.Feedback parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBDImagesCommand.Feedback parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetRGBDImagesCommand.Feedback parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBDImagesCommand.Feedback parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetRGBDImagesCommand.Feedback parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBDImagesCommand.Feedback parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetRGBDImagesCommand.Feedback parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBDImagesCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetRGBDImagesCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.CameraCommand.GetRGBDImagesCommand.Feedback prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetRGBDImagesCommand.Feedback} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetRGBDImagesCommand.Feedback) + cmvr.api.CameraCommand.GetRGBDImagesCommand.FeedbackOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBDImagesCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBDImagesCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.GetRGBDImagesCommand.Feedback.class, cmvr.api.CameraCommand.GetRGBDImagesCommand.Feedback.Builder.class); + } + + // Construct using cmvr.api.CameraCommand.GetRGBDImagesCommand.Feedback.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + if (colorFrameBuilder_ == null) { + colorFrame_ = null; + } else { + colorFrame_ = null; + colorFrameBuilder_ = null; + } + if (depthFrameBuilder_ == null) { + depthFrame_ = null; + } else { + depthFrame_ = null; + depthFrameBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBDImagesCommand_Feedback_descriptor; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBDImagesCommand.Feedback getDefaultInstanceForType() { + return cmvr.api.CameraCommand.GetRGBDImagesCommand.Feedback.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBDImagesCommand.Feedback build() { + cmvr.api.CameraCommand.GetRGBDImagesCommand.Feedback result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBDImagesCommand.Feedback buildPartial() { + cmvr.api.CameraCommand.GetRGBDImagesCommand.Feedback result = new cmvr.api.CameraCommand.GetRGBDImagesCommand.Feedback(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + if (colorFrameBuilder_ == null) { + result.colorFrame_ = colorFrame_; + } else { + result.colorFrame_ = colorFrameBuilder_.build(); + } + if (depthFrameBuilder_ == null) { + result.depthFrame_ = depthFrame_; + } else { + result.depthFrame_ = depthFrameBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.CameraCommand.GetRGBDImagesCommand.Feedback) { + return mergeFrom((cmvr.api.CameraCommand.GetRGBDImagesCommand.Feedback)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.CameraCommand.GetRGBDImagesCommand.Feedback other) { + if (other == cmvr.api.CameraCommand.GetRGBDImagesCommand.Feedback.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + if (other.hasColorFrame()) { + mergeColorFrame(other.getColorFrame()); + } + if (other.hasDepthFrame()) { + mergeDepthFrame(other.getDepthFrame()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + case 18: { + input.readMessage( + getColorFrameFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 18 + case 26: { + input.readMessage( + getDepthFrameFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 26 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Feedback header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Feedback.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Feedback.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.Feedback.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + + private cmvr.api.CameraCommand.FrameData colorFrame_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.CameraCommand.FrameData, cmvr.api.CameraCommand.FrameData.Builder, cmvr.api.CameraCommand.FrameDataOrBuilder> colorFrameBuilder_; + /** + * .cmvr.api.FrameData color_frame = 2; + * @return Whether the colorFrame field is set. + */ + public boolean hasColorFrame() { + return colorFrameBuilder_ != null || colorFrame_ != null; + } + /** + * .cmvr.api.FrameData color_frame = 2; + * @return The colorFrame. + */ + public cmvr.api.CameraCommand.FrameData getColorFrame() { + if (colorFrameBuilder_ == null) { + return colorFrame_ == null ? cmvr.api.CameraCommand.FrameData.getDefaultInstance() : colorFrame_; + } else { + return colorFrameBuilder_.getMessage(); + } + } + /** + * .cmvr.api.FrameData color_frame = 2; + */ + public Builder setColorFrame(cmvr.api.CameraCommand.FrameData value) { + if (colorFrameBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + colorFrame_ = value; + onChanged(); + } else { + colorFrameBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.FrameData color_frame = 2; + */ + public Builder setColorFrame( + cmvr.api.CameraCommand.FrameData.Builder builderForValue) { + if (colorFrameBuilder_ == null) { + colorFrame_ = builderForValue.build(); + onChanged(); + } else { + colorFrameBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.FrameData color_frame = 2; + */ + public Builder mergeColorFrame(cmvr.api.CameraCommand.FrameData value) { + if (colorFrameBuilder_ == null) { + if (colorFrame_ != null) { + colorFrame_ = + cmvr.api.CameraCommand.FrameData.newBuilder(colorFrame_).mergeFrom(value).buildPartial(); + } else { + colorFrame_ = value; + } + onChanged(); + } else { + colorFrameBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.FrameData color_frame = 2; + */ + public Builder clearColorFrame() { + if (colorFrameBuilder_ == null) { + colorFrame_ = null; + onChanged(); + } else { + colorFrame_ = null; + colorFrameBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.FrameData color_frame = 2; + */ + public cmvr.api.CameraCommand.FrameData.Builder getColorFrameBuilder() { + + onChanged(); + return getColorFrameFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.FrameData color_frame = 2; + */ + public cmvr.api.CameraCommand.FrameDataOrBuilder getColorFrameOrBuilder() { + if (colorFrameBuilder_ != null) { + return colorFrameBuilder_.getMessageOrBuilder(); + } else { + return colorFrame_ == null ? + cmvr.api.CameraCommand.FrameData.getDefaultInstance() : colorFrame_; + } + } + /** + * .cmvr.api.FrameData color_frame = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.CameraCommand.FrameData, cmvr.api.CameraCommand.FrameData.Builder, cmvr.api.CameraCommand.FrameDataOrBuilder> + getColorFrameFieldBuilder() { + if (colorFrameBuilder_ == null) { + colorFrameBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.CameraCommand.FrameData, cmvr.api.CameraCommand.FrameData.Builder, cmvr.api.CameraCommand.FrameDataOrBuilder>( + getColorFrame(), + getParentForChildren(), + isClean()); + colorFrame_ = null; + } + return colorFrameBuilder_; + } + + private cmvr.api.CameraCommand.FrameData depthFrame_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.CameraCommand.FrameData, cmvr.api.CameraCommand.FrameData.Builder, cmvr.api.CameraCommand.FrameDataOrBuilder> depthFrameBuilder_; + /** + * .cmvr.api.FrameData depth_frame = 3; + * @return Whether the depthFrame field is set. + */ + public boolean hasDepthFrame() { + return depthFrameBuilder_ != null || depthFrame_ != null; + } + /** + * .cmvr.api.FrameData depth_frame = 3; + * @return The depthFrame. + */ + public cmvr.api.CameraCommand.FrameData getDepthFrame() { + if (depthFrameBuilder_ == null) { + return depthFrame_ == null ? cmvr.api.CameraCommand.FrameData.getDefaultInstance() : depthFrame_; + } else { + return depthFrameBuilder_.getMessage(); + } + } + /** + * .cmvr.api.FrameData depth_frame = 3; + */ + public Builder setDepthFrame(cmvr.api.CameraCommand.FrameData value) { + if (depthFrameBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + depthFrame_ = value; + onChanged(); + } else { + depthFrameBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.FrameData depth_frame = 3; + */ + public Builder setDepthFrame( + cmvr.api.CameraCommand.FrameData.Builder builderForValue) { + if (depthFrameBuilder_ == null) { + depthFrame_ = builderForValue.build(); + onChanged(); + } else { + depthFrameBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.FrameData depth_frame = 3; + */ + public Builder mergeDepthFrame(cmvr.api.CameraCommand.FrameData value) { + if (depthFrameBuilder_ == null) { + if (depthFrame_ != null) { + depthFrame_ = + cmvr.api.CameraCommand.FrameData.newBuilder(depthFrame_).mergeFrom(value).buildPartial(); + } else { + depthFrame_ = value; + } + onChanged(); + } else { + depthFrameBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.FrameData depth_frame = 3; + */ + public Builder clearDepthFrame() { + if (depthFrameBuilder_ == null) { + depthFrame_ = null; + onChanged(); + } else { + depthFrame_ = null; + depthFrameBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.FrameData depth_frame = 3; + */ + public cmvr.api.CameraCommand.FrameData.Builder getDepthFrameBuilder() { + + onChanged(); + return getDepthFrameFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.FrameData depth_frame = 3; + */ + public cmvr.api.CameraCommand.FrameDataOrBuilder getDepthFrameOrBuilder() { + if (depthFrameBuilder_ != null) { + return depthFrameBuilder_.getMessageOrBuilder(); + } else { + return depthFrame_ == null ? + cmvr.api.CameraCommand.FrameData.getDefaultInstance() : depthFrame_; + } + } + /** + * .cmvr.api.FrameData depth_frame = 3; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.CameraCommand.FrameData, cmvr.api.CameraCommand.FrameData.Builder, cmvr.api.CameraCommand.FrameDataOrBuilder> + getDepthFrameFieldBuilder() { + if (depthFrameBuilder_ == null) { + depthFrameBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.CameraCommand.FrameData, cmvr.api.CameraCommand.FrameData.Builder, cmvr.api.CameraCommand.FrameDataOrBuilder>( + getDepthFrame(), + getParentForChildren(), + isClean()); + depthFrame_ = null; + } + return depthFrameBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetRGBDImagesCommand.Feedback) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetRGBDImagesCommand.Feedback) + private static final cmvr.api.CameraCommand.GetRGBDImagesCommand.Feedback DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.CameraCommand.GetRGBDImagesCommand.Feedback(); + } + + public static cmvr.api.CameraCommand.GetRGBDImagesCommand.Feedback getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Feedback parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBDImagesCommand.Feedback getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.CameraCommand.GetRGBDImagesCommand)) { + return super.equals(obj); + } + cmvr.api.CameraCommand.GetRGBDImagesCommand other = (cmvr.api.CameraCommand.GetRGBDImagesCommand) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.CameraCommand.GetRGBDImagesCommand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetRGBDImagesCommand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBDImagesCommand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetRGBDImagesCommand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBDImagesCommand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetRGBDImagesCommand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBDImagesCommand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetRGBDImagesCommand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBDImagesCommand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetRGBDImagesCommand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBDImagesCommand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetRGBDImagesCommand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.CameraCommand.GetRGBDImagesCommand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetRGBDImagesCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetRGBDImagesCommand) + cmvr.api.CameraCommand.GetRGBDImagesCommandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBDImagesCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBDImagesCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.GetRGBDImagesCommand.class, cmvr.api.CameraCommand.GetRGBDImagesCommand.Builder.class); + } + + // Construct using cmvr.api.CameraCommand.GetRGBDImagesCommand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBDImagesCommand_descriptor; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBDImagesCommand getDefaultInstanceForType() { + return cmvr.api.CameraCommand.GetRGBDImagesCommand.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBDImagesCommand build() { + cmvr.api.CameraCommand.GetRGBDImagesCommand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBDImagesCommand buildPartial() { + cmvr.api.CameraCommand.GetRGBDImagesCommand result = new cmvr.api.CameraCommand.GetRGBDImagesCommand(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.CameraCommand.GetRGBDImagesCommand) { + return mergeFrom((cmvr.api.CameraCommand.GetRGBDImagesCommand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.CameraCommand.GetRGBDImagesCommand other) { + if (other == cmvr.api.CameraCommand.GetRGBDImagesCommand.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetRGBDImagesCommand) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetRGBDImagesCommand) + private static final cmvr.api.CameraCommand.GetRGBDImagesCommand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.CameraCommand.GetRGBDImagesCommand(); + } + + public static cmvr.api.CameraCommand.GetRGBDImagesCommand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public GetRGBDImagesCommand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBDImagesCommand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface StartCameraRecordingCommandOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.StartCameraRecordingCommand) + com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code cmvr.api.StartCameraRecordingCommand} + */ + public static final class StartCameraRecordingCommand extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.StartCameraRecordingCommand) + StartCameraRecordingCommandOrBuilder { + private static final long serialVersionUID = 0L; + // Use StartCameraRecordingCommand.newBuilder() to construct. + private StartCameraRecordingCommand(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private StartCameraRecordingCommand() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new StartCameraRecordingCommand(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StartCameraRecordingCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StartCameraRecordingCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.StartCameraRecordingCommand.class, cmvr.api.CameraCommand.StartCameraRecordingCommand.Builder.class); + } + + public interface RequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.StartCameraRecordingCommand.Request) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Request getHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder(); + + /** + * string video_path = 2; + * @return The videoPath. + */ + java.lang.String getVideoPath(); + /** + * string video_path = 2; + * @return The bytes for videoPath. + */ + com.google.protobuf.ByteString + getVideoPathBytes(); + } + /** + * Protobuf type {@code cmvr.api.StartCameraRecordingCommand.Request} + */ + public static final class Request extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.StartCameraRecordingCommand.Request) + RequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use Request.newBuilder() to construct. + private Request(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Request() { + videoPath_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Request(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StartCameraRecordingCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StartCameraRecordingCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.StartCameraRecordingCommand.Request.class, cmvr.api.CameraCommand.StartCameraRecordingCommand.Request.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Request header_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + public static final int VIDEO_PATH_FIELD_NUMBER = 2; + private volatile java.lang.Object videoPath_; + /** + * string video_path = 2; + * @return The videoPath. + */ + @java.lang.Override + public java.lang.String getVideoPath() { + java.lang.Object ref = videoPath_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + videoPath_ = s; + return s; + } + } + /** + * string video_path = 2; + * @return The bytes for videoPath. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getVideoPathBytes() { + java.lang.Object ref = videoPath_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + videoPath_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(videoPath_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, videoPath_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(videoPath_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, videoPath_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.CameraCommand.StartCameraRecordingCommand.Request)) { + return super.equals(obj); + } + cmvr.api.CameraCommand.StartCameraRecordingCommand.Request other = (cmvr.api.CameraCommand.StartCameraRecordingCommand.Request) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getVideoPath() + .equals(other.getVideoPath())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (37 * hash) + VIDEO_PATH_FIELD_NUMBER; + hash = (53 * hash) + getVideoPath().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.CameraCommand.StartCameraRecordingCommand.Request parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.StartCameraRecordingCommand.Request parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.StartCameraRecordingCommand.Request parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.StartCameraRecordingCommand.Request parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.StartCameraRecordingCommand.Request parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.StartCameraRecordingCommand.Request parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.StartCameraRecordingCommand.Request parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.StartCameraRecordingCommand.Request parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.StartCameraRecordingCommand.Request parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.StartCameraRecordingCommand.Request parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.StartCameraRecordingCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.StartCameraRecordingCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.CameraCommand.StartCameraRecordingCommand.Request prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.StartCameraRecordingCommand.Request} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.StartCameraRecordingCommand.Request) + cmvr.api.CameraCommand.StartCameraRecordingCommand.RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StartCameraRecordingCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StartCameraRecordingCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.StartCameraRecordingCommand.Request.class, cmvr.api.CameraCommand.StartCameraRecordingCommand.Request.Builder.class); + } + + // Construct using cmvr.api.CameraCommand.StartCameraRecordingCommand.Request.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + videoPath_ = ""; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StartCameraRecordingCommand_Request_descriptor; + } + + @java.lang.Override + public cmvr.api.CameraCommand.StartCameraRecordingCommand.Request getDefaultInstanceForType() { + return cmvr.api.CameraCommand.StartCameraRecordingCommand.Request.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.CameraCommand.StartCameraRecordingCommand.Request build() { + cmvr.api.CameraCommand.StartCameraRecordingCommand.Request result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.CameraCommand.StartCameraRecordingCommand.Request buildPartial() { + cmvr.api.CameraCommand.StartCameraRecordingCommand.Request result = new cmvr.api.CameraCommand.StartCameraRecordingCommand.Request(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + result.videoPath_ = videoPath_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.CameraCommand.StartCameraRecordingCommand.Request) { + return mergeFrom((cmvr.api.CameraCommand.StartCameraRecordingCommand.Request)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.CameraCommand.StartCameraRecordingCommand.Request other) { + if (other == cmvr.api.CameraCommand.StartCameraRecordingCommand.Request.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + if (!other.getVideoPath().isEmpty()) { + videoPath_ = other.videoPath_; + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + case 18: { + videoPath_ = input.readStringRequireUtf8(); + + break; + } // case 18 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Request header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Request getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Request.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Request.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.Request.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + + private java.lang.Object videoPath_ = ""; + /** + * string video_path = 2; + * @return The videoPath. + */ + public java.lang.String getVideoPath() { + java.lang.Object ref = videoPath_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + videoPath_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string video_path = 2; + * @return The bytes for videoPath. + */ + public com.google.protobuf.ByteString + getVideoPathBytes() { + java.lang.Object ref = videoPath_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + videoPath_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string video_path = 2; + * @param value The videoPath to set. + * @return This builder for chaining. + */ + public Builder setVideoPath( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + videoPath_ = value; + onChanged(); + return this; + } + /** + * string video_path = 2; + * @return This builder for chaining. + */ + public Builder clearVideoPath() { + + videoPath_ = getDefaultInstance().getVideoPath(); + onChanged(); + return this; + } + /** + * string video_path = 2; + * @param value The bytes for videoPath to set. + * @return This builder for chaining. + */ + public Builder setVideoPathBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + videoPath_ = value; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.StartCameraRecordingCommand.Request) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.StartCameraRecordingCommand.Request) + private static final cmvr.api.CameraCommand.StartCameraRecordingCommand.Request DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.CameraCommand.StartCameraRecordingCommand.Request(); + } + + public static cmvr.api.CameraCommand.StartCameraRecordingCommand.Request getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.CameraCommand.StartCameraRecordingCommand.Request getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface FeedbackOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.StartCameraRecordingCommand.Feedback) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Feedback getHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.StartCameraRecordingCommand.Feedback} + */ + public static final class Feedback extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.StartCameraRecordingCommand.Feedback) + FeedbackOrBuilder { + private static final long serialVersionUID = 0L; + // Use Feedback.newBuilder() to construct. + private Feedback(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Feedback() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Feedback(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StartCameraRecordingCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StartCameraRecordingCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.StartCameraRecordingCommand.Feedback.class, cmvr.api.CameraCommand.StartCameraRecordingCommand.Feedback.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Feedback header_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.CameraCommand.StartCameraRecordingCommand.Feedback)) { + return super.equals(obj); + } + cmvr.api.CameraCommand.StartCameraRecordingCommand.Feedback other = (cmvr.api.CameraCommand.StartCameraRecordingCommand.Feedback) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.CameraCommand.StartCameraRecordingCommand.Feedback parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.StartCameraRecordingCommand.Feedback parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.StartCameraRecordingCommand.Feedback parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.StartCameraRecordingCommand.Feedback parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.StartCameraRecordingCommand.Feedback parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.StartCameraRecordingCommand.Feedback parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.StartCameraRecordingCommand.Feedback parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.StartCameraRecordingCommand.Feedback parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.StartCameraRecordingCommand.Feedback parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.StartCameraRecordingCommand.Feedback parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.StartCameraRecordingCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.StartCameraRecordingCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.CameraCommand.StartCameraRecordingCommand.Feedback prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.StartCameraRecordingCommand.Feedback} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.StartCameraRecordingCommand.Feedback) + cmvr.api.CameraCommand.StartCameraRecordingCommand.FeedbackOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StartCameraRecordingCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StartCameraRecordingCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.StartCameraRecordingCommand.Feedback.class, cmvr.api.CameraCommand.StartCameraRecordingCommand.Feedback.Builder.class); + } + + // Construct using cmvr.api.CameraCommand.StartCameraRecordingCommand.Feedback.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StartCameraRecordingCommand_Feedback_descriptor; + } + + @java.lang.Override + public cmvr.api.CameraCommand.StartCameraRecordingCommand.Feedback getDefaultInstanceForType() { + return cmvr.api.CameraCommand.StartCameraRecordingCommand.Feedback.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.CameraCommand.StartCameraRecordingCommand.Feedback build() { + cmvr.api.CameraCommand.StartCameraRecordingCommand.Feedback result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.CameraCommand.StartCameraRecordingCommand.Feedback buildPartial() { + cmvr.api.CameraCommand.StartCameraRecordingCommand.Feedback result = new cmvr.api.CameraCommand.StartCameraRecordingCommand.Feedback(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.CameraCommand.StartCameraRecordingCommand.Feedback) { + return mergeFrom((cmvr.api.CameraCommand.StartCameraRecordingCommand.Feedback)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.CameraCommand.StartCameraRecordingCommand.Feedback other) { + if (other == cmvr.api.CameraCommand.StartCameraRecordingCommand.Feedback.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Feedback header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Feedback.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Feedback.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.Feedback.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.StartCameraRecordingCommand.Feedback) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.StartCameraRecordingCommand.Feedback) + private static final cmvr.api.CameraCommand.StartCameraRecordingCommand.Feedback DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.CameraCommand.StartCameraRecordingCommand.Feedback(); + } + + public static cmvr.api.CameraCommand.StartCameraRecordingCommand.Feedback getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Feedback parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.CameraCommand.StartCameraRecordingCommand.Feedback getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.CameraCommand.StartCameraRecordingCommand)) { + return super.equals(obj); + } + cmvr.api.CameraCommand.StartCameraRecordingCommand other = (cmvr.api.CameraCommand.StartCameraRecordingCommand) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.CameraCommand.StartCameraRecordingCommand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.StartCameraRecordingCommand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.StartCameraRecordingCommand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.StartCameraRecordingCommand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.StartCameraRecordingCommand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.StartCameraRecordingCommand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.StartCameraRecordingCommand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.StartCameraRecordingCommand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.StartCameraRecordingCommand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.StartCameraRecordingCommand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.StartCameraRecordingCommand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.StartCameraRecordingCommand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.CameraCommand.StartCameraRecordingCommand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.StartCameraRecordingCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.StartCameraRecordingCommand) + cmvr.api.CameraCommand.StartCameraRecordingCommandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StartCameraRecordingCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StartCameraRecordingCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.StartCameraRecordingCommand.class, cmvr.api.CameraCommand.StartCameraRecordingCommand.Builder.class); + } + + // Construct using cmvr.api.CameraCommand.StartCameraRecordingCommand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StartCameraRecordingCommand_descriptor; + } + + @java.lang.Override + public cmvr.api.CameraCommand.StartCameraRecordingCommand getDefaultInstanceForType() { + return cmvr.api.CameraCommand.StartCameraRecordingCommand.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.CameraCommand.StartCameraRecordingCommand build() { + cmvr.api.CameraCommand.StartCameraRecordingCommand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.CameraCommand.StartCameraRecordingCommand buildPartial() { + cmvr.api.CameraCommand.StartCameraRecordingCommand result = new cmvr.api.CameraCommand.StartCameraRecordingCommand(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.CameraCommand.StartCameraRecordingCommand) { + return mergeFrom((cmvr.api.CameraCommand.StartCameraRecordingCommand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.CameraCommand.StartCameraRecordingCommand other) { + if (other == cmvr.api.CameraCommand.StartCameraRecordingCommand.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.StartCameraRecordingCommand) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.StartCameraRecordingCommand) + private static final cmvr.api.CameraCommand.StartCameraRecordingCommand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.CameraCommand.StartCameraRecordingCommand(); + } + + public static cmvr.api.CameraCommand.StartCameraRecordingCommand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public StartCameraRecordingCommand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.CameraCommand.StartCameraRecordingCommand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface StopCameraRecordingCommandOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.StopCameraRecordingCommand) + com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code cmvr.api.StopCameraRecordingCommand} + */ + public static final class StopCameraRecordingCommand extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.StopCameraRecordingCommand) + StopCameraRecordingCommandOrBuilder { + private static final long serialVersionUID = 0L; + // Use StopCameraRecordingCommand.newBuilder() to construct. + private StopCameraRecordingCommand(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private StopCameraRecordingCommand() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new StopCameraRecordingCommand(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StopCameraRecordingCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StopCameraRecordingCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.StopCameraRecordingCommand.class, cmvr.api.CameraCommand.StopCameraRecordingCommand.Builder.class); + } + + public interface RequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.StopCameraRecordingCommand.Request) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Request getHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.StopCameraRecordingCommand.Request} + */ + public static final class Request extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.StopCameraRecordingCommand.Request) + RequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use Request.newBuilder() to construct. + private Request(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Request() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Request(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StopCameraRecordingCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StopCameraRecordingCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.StopCameraRecordingCommand.Request.class, cmvr.api.CameraCommand.StopCameraRecordingCommand.Request.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Request header_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.CameraCommand.StopCameraRecordingCommand.Request)) { + return super.equals(obj); + } + cmvr.api.CameraCommand.StopCameraRecordingCommand.Request other = (cmvr.api.CameraCommand.StopCameraRecordingCommand.Request) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.CameraCommand.StopCameraRecordingCommand.Request parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.StopCameraRecordingCommand.Request parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.StopCameraRecordingCommand.Request parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.StopCameraRecordingCommand.Request parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.StopCameraRecordingCommand.Request parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.StopCameraRecordingCommand.Request parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.StopCameraRecordingCommand.Request parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.StopCameraRecordingCommand.Request parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.StopCameraRecordingCommand.Request parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.StopCameraRecordingCommand.Request parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.StopCameraRecordingCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.StopCameraRecordingCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.CameraCommand.StopCameraRecordingCommand.Request prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.StopCameraRecordingCommand.Request} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.StopCameraRecordingCommand.Request) + cmvr.api.CameraCommand.StopCameraRecordingCommand.RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StopCameraRecordingCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StopCameraRecordingCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.StopCameraRecordingCommand.Request.class, cmvr.api.CameraCommand.StopCameraRecordingCommand.Request.Builder.class); + } + + // Construct using cmvr.api.CameraCommand.StopCameraRecordingCommand.Request.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StopCameraRecordingCommand_Request_descriptor; + } + + @java.lang.Override + public cmvr.api.CameraCommand.StopCameraRecordingCommand.Request getDefaultInstanceForType() { + return cmvr.api.CameraCommand.StopCameraRecordingCommand.Request.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.CameraCommand.StopCameraRecordingCommand.Request build() { + cmvr.api.CameraCommand.StopCameraRecordingCommand.Request result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.CameraCommand.StopCameraRecordingCommand.Request buildPartial() { + cmvr.api.CameraCommand.StopCameraRecordingCommand.Request result = new cmvr.api.CameraCommand.StopCameraRecordingCommand.Request(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.CameraCommand.StopCameraRecordingCommand.Request) { + return mergeFrom((cmvr.api.CameraCommand.StopCameraRecordingCommand.Request)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.CameraCommand.StopCameraRecordingCommand.Request other) { + if (other == cmvr.api.CameraCommand.StopCameraRecordingCommand.Request.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Request header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Request getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Request.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Request.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.Request.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.StopCameraRecordingCommand.Request) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.StopCameraRecordingCommand.Request) + private static final cmvr.api.CameraCommand.StopCameraRecordingCommand.Request DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.CameraCommand.StopCameraRecordingCommand.Request(); + } + + public static cmvr.api.CameraCommand.StopCameraRecordingCommand.Request getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.CameraCommand.StopCameraRecordingCommand.Request getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface FeedbackOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.StopCameraRecordingCommand.Feedback) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Feedback getHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.StopCameraRecordingCommand.Feedback} + */ + public static final class Feedback extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.StopCameraRecordingCommand.Feedback) + FeedbackOrBuilder { + private static final long serialVersionUID = 0L; + // Use Feedback.newBuilder() to construct. + private Feedback(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Feedback() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Feedback(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StopCameraRecordingCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StopCameraRecordingCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.StopCameraRecordingCommand.Feedback.class, cmvr.api.CameraCommand.StopCameraRecordingCommand.Feedback.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Feedback header_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.CameraCommand.StopCameraRecordingCommand.Feedback)) { + return super.equals(obj); + } + cmvr.api.CameraCommand.StopCameraRecordingCommand.Feedback other = (cmvr.api.CameraCommand.StopCameraRecordingCommand.Feedback) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.CameraCommand.StopCameraRecordingCommand.Feedback parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.StopCameraRecordingCommand.Feedback parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.StopCameraRecordingCommand.Feedback parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.StopCameraRecordingCommand.Feedback parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.StopCameraRecordingCommand.Feedback parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.StopCameraRecordingCommand.Feedback parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.StopCameraRecordingCommand.Feedback parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.StopCameraRecordingCommand.Feedback parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.StopCameraRecordingCommand.Feedback parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.StopCameraRecordingCommand.Feedback parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.StopCameraRecordingCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.StopCameraRecordingCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.CameraCommand.StopCameraRecordingCommand.Feedback prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.StopCameraRecordingCommand.Feedback} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.StopCameraRecordingCommand.Feedback) + cmvr.api.CameraCommand.StopCameraRecordingCommand.FeedbackOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StopCameraRecordingCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StopCameraRecordingCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.StopCameraRecordingCommand.Feedback.class, cmvr.api.CameraCommand.StopCameraRecordingCommand.Feedback.Builder.class); + } + + // Construct using cmvr.api.CameraCommand.StopCameraRecordingCommand.Feedback.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StopCameraRecordingCommand_Feedback_descriptor; + } + + @java.lang.Override + public cmvr.api.CameraCommand.StopCameraRecordingCommand.Feedback getDefaultInstanceForType() { + return cmvr.api.CameraCommand.StopCameraRecordingCommand.Feedback.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.CameraCommand.StopCameraRecordingCommand.Feedback build() { + cmvr.api.CameraCommand.StopCameraRecordingCommand.Feedback result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.CameraCommand.StopCameraRecordingCommand.Feedback buildPartial() { + cmvr.api.CameraCommand.StopCameraRecordingCommand.Feedback result = new cmvr.api.CameraCommand.StopCameraRecordingCommand.Feedback(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.CameraCommand.StopCameraRecordingCommand.Feedback) { + return mergeFrom((cmvr.api.CameraCommand.StopCameraRecordingCommand.Feedback)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.CameraCommand.StopCameraRecordingCommand.Feedback other) { + if (other == cmvr.api.CameraCommand.StopCameraRecordingCommand.Feedback.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Feedback header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Feedback.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Feedback.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.Feedback.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.StopCameraRecordingCommand.Feedback) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.StopCameraRecordingCommand.Feedback) + private static final cmvr.api.CameraCommand.StopCameraRecordingCommand.Feedback DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.CameraCommand.StopCameraRecordingCommand.Feedback(); + } + + public static cmvr.api.CameraCommand.StopCameraRecordingCommand.Feedback getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Feedback parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.CameraCommand.StopCameraRecordingCommand.Feedback getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.CameraCommand.StopCameraRecordingCommand)) { + return super.equals(obj); + } + cmvr.api.CameraCommand.StopCameraRecordingCommand other = (cmvr.api.CameraCommand.StopCameraRecordingCommand) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.CameraCommand.StopCameraRecordingCommand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.StopCameraRecordingCommand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.StopCameraRecordingCommand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.StopCameraRecordingCommand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.StopCameraRecordingCommand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.StopCameraRecordingCommand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.StopCameraRecordingCommand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.StopCameraRecordingCommand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.StopCameraRecordingCommand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.StopCameraRecordingCommand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.StopCameraRecordingCommand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.StopCameraRecordingCommand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.CameraCommand.StopCameraRecordingCommand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.StopCameraRecordingCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.StopCameraRecordingCommand) + cmvr.api.CameraCommand.StopCameraRecordingCommandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StopCameraRecordingCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StopCameraRecordingCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.StopCameraRecordingCommand.class, cmvr.api.CameraCommand.StopCameraRecordingCommand.Builder.class); + } + + // Construct using cmvr.api.CameraCommand.StopCameraRecordingCommand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_StopCameraRecordingCommand_descriptor; + } + + @java.lang.Override + public cmvr.api.CameraCommand.StopCameraRecordingCommand getDefaultInstanceForType() { + return cmvr.api.CameraCommand.StopCameraRecordingCommand.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.CameraCommand.StopCameraRecordingCommand build() { + cmvr.api.CameraCommand.StopCameraRecordingCommand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.CameraCommand.StopCameraRecordingCommand buildPartial() { + cmvr.api.CameraCommand.StopCameraRecordingCommand result = new cmvr.api.CameraCommand.StopCameraRecordingCommand(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.CameraCommand.StopCameraRecordingCommand) { + return mergeFrom((cmvr.api.CameraCommand.StopCameraRecordingCommand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.CameraCommand.StopCameraRecordingCommand other) { + if (other == cmvr.api.CameraCommand.StopCameraRecordingCommand.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.StopCameraRecordingCommand) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.StopCameraRecordingCommand) + private static final cmvr.api.CameraCommand.StopCameraRecordingCommand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.CameraCommand.StopCameraRecordingCommand(); + } + + public static cmvr.api.CameraCommand.StopCameraRecordingCommand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public StopCameraRecordingCommand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.CameraCommand.StopCameraRecordingCommand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface GetRGBImageStreamCommandOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetRGBImageStreamCommand) + com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code cmvr.api.GetRGBImageStreamCommand} + */ + public static final class GetRGBImageStreamCommand extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetRGBImageStreamCommand) + GetRGBImageStreamCommandOrBuilder { + private static final long serialVersionUID = 0L; + // Use GetRGBImageStreamCommand.newBuilder() to construct. + private GetRGBImageStreamCommand(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private GetRGBImageStreamCommand() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new GetRGBImageStreamCommand(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBImageStreamCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBImageStreamCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.GetRGBImageStreamCommand.class, cmvr.api.CameraCommand.GetRGBImageStreamCommand.Builder.class); + } + + public interface RequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetRGBImageStreamCommand.Request) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Request getHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder(); + + /** + * bool eof = 2; + * @return The eof. + */ + boolean getEof(); + } + /** + * Protobuf type {@code cmvr.api.GetRGBImageStreamCommand.Request} + */ + public static final class Request extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetRGBImageStreamCommand.Request) + RequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use Request.newBuilder() to construct. + private Request(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Request() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Request(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBImageStreamCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBImageStreamCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.GetRGBImageStreamCommand.Request.class, cmvr.api.CameraCommand.GetRGBImageStreamCommand.Request.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Request header_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + public static final int EOF_FIELD_NUMBER = 2; + private boolean eof_; + /** + * bool eof = 2; + * @return The eof. + */ + @java.lang.Override + public boolean getEof() { + return eof_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + if (eof_ != false) { + output.writeBool(2, eof_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + if (eof_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(2, eof_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.CameraCommand.GetRGBImageStreamCommand.Request)) { + return super.equals(obj); + } + cmvr.api.CameraCommand.GetRGBImageStreamCommand.Request other = (cmvr.api.CameraCommand.GetRGBImageStreamCommand.Request) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (getEof() + != other.getEof()) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (37 * hash) + EOF_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getEof()); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.CameraCommand.GetRGBImageStreamCommand.Request parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetRGBImageStreamCommand.Request parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBImageStreamCommand.Request parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetRGBImageStreamCommand.Request parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBImageStreamCommand.Request parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetRGBImageStreamCommand.Request parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBImageStreamCommand.Request parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetRGBImageStreamCommand.Request parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBImageStreamCommand.Request parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetRGBImageStreamCommand.Request parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBImageStreamCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetRGBImageStreamCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.CameraCommand.GetRGBImageStreamCommand.Request prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetRGBImageStreamCommand.Request} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetRGBImageStreamCommand.Request) + cmvr.api.CameraCommand.GetRGBImageStreamCommand.RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBImageStreamCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBImageStreamCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.GetRGBImageStreamCommand.Request.class, cmvr.api.CameraCommand.GetRGBImageStreamCommand.Request.Builder.class); + } + + // Construct using cmvr.api.CameraCommand.GetRGBImageStreamCommand.Request.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + eof_ = false; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBImageStreamCommand_Request_descriptor; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBImageStreamCommand.Request getDefaultInstanceForType() { + return cmvr.api.CameraCommand.GetRGBImageStreamCommand.Request.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBImageStreamCommand.Request build() { + cmvr.api.CameraCommand.GetRGBImageStreamCommand.Request result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBImageStreamCommand.Request buildPartial() { + cmvr.api.CameraCommand.GetRGBImageStreamCommand.Request result = new cmvr.api.CameraCommand.GetRGBImageStreamCommand.Request(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + result.eof_ = eof_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.CameraCommand.GetRGBImageStreamCommand.Request) { + return mergeFrom((cmvr.api.CameraCommand.GetRGBImageStreamCommand.Request)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.CameraCommand.GetRGBImageStreamCommand.Request other) { + if (other == cmvr.api.CameraCommand.GetRGBImageStreamCommand.Request.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + if (other.getEof() != false) { + setEof(other.getEof()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + case 16: { + eof_ = input.readBool(); + + break; + } // case 16 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Request header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Request getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Request.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Request.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.Request.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + + private boolean eof_ ; + /** + * bool eof = 2; + * @return The eof. + */ + @java.lang.Override + public boolean getEof() { + return eof_; + } + /** + * bool eof = 2; + * @param value The eof to set. + * @return This builder for chaining. + */ + public Builder setEof(boolean value) { + + eof_ = value; + onChanged(); + return this; + } + /** + * bool eof = 2; + * @return This builder for chaining. + */ + public Builder clearEof() { + + eof_ = false; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetRGBImageStreamCommand.Request) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetRGBImageStreamCommand.Request) + private static final cmvr.api.CameraCommand.GetRGBImageStreamCommand.Request DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.CameraCommand.GetRGBImageStreamCommand.Request(); + } + + public static cmvr.api.CameraCommand.GetRGBImageStreamCommand.Request getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBImageStreamCommand.Request getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface FeedbackOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetRGBImageStreamCommand.Feedback) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Feedback getHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder(); + + /** + * .cmvr.api.FrameData color_frame = 2; + * @return Whether the colorFrame field is set. + */ + boolean hasColorFrame(); + /** + * .cmvr.api.FrameData color_frame = 2; + * @return The colorFrame. + */ + cmvr.api.CameraCommand.FrameData getColorFrame(); + /** + * .cmvr.api.FrameData color_frame = 2; + */ + cmvr.api.CameraCommand.FrameDataOrBuilder getColorFrameOrBuilder(); + + /** + * int32 seq_no = 3; + * @return The seqNo. + */ + int getSeqNo(); + } + /** + * Protobuf type {@code cmvr.api.GetRGBImageStreamCommand.Feedback} + */ + public static final class Feedback extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetRGBImageStreamCommand.Feedback) + FeedbackOrBuilder { + private static final long serialVersionUID = 0L; + // Use Feedback.newBuilder() to construct. + private Feedback(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Feedback() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Feedback(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBImageStreamCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBImageStreamCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.GetRGBImageStreamCommand.Feedback.class, cmvr.api.CameraCommand.GetRGBImageStreamCommand.Feedback.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Feedback header_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + public static final int COLOR_FRAME_FIELD_NUMBER = 2; + private cmvr.api.CameraCommand.FrameData colorFrame_; + /** + * .cmvr.api.FrameData color_frame = 2; + * @return Whether the colorFrame field is set. + */ + @java.lang.Override + public boolean hasColorFrame() { + return colorFrame_ != null; + } + /** + * .cmvr.api.FrameData color_frame = 2; + * @return The colorFrame. + */ + @java.lang.Override + public cmvr.api.CameraCommand.FrameData getColorFrame() { + return colorFrame_ == null ? cmvr.api.CameraCommand.FrameData.getDefaultInstance() : colorFrame_; + } + /** + * .cmvr.api.FrameData color_frame = 2; + */ + @java.lang.Override + public cmvr.api.CameraCommand.FrameDataOrBuilder getColorFrameOrBuilder() { + return getColorFrame(); + } + + public static final int SEQ_NO_FIELD_NUMBER = 3; + private int seqNo_; + /** + * int32 seq_no = 3; + * @return The seqNo. + */ + @java.lang.Override + public int getSeqNo() { + return seqNo_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + if (colorFrame_ != null) { + output.writeMessage(2, getColorFrame()); + } + if (seqNo_ != 0) { + output.writeInt32(3, seqNo_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + if (colorFrame_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, getColorFrame()); + } + if (seqNo_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(3, seqNo_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.CameraCommand.GetRGBImageStreamCommand.Feedback)) { + return super.equals(obj); + } + cmvr.api.CameraCommand.GetRGBImageStreamCommand.Feedback other = (cmvr.api.CameraCommand.GetRGBImageStreamCommand.Feedback) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (hasColorFrame() != other.hasColorFrame()) return false; + if (hasColorFrame()) { + if (!getColorFrame() + .equals(other.getColorFrame())) return false; + } + if (getSeqNo() + != other.getSeqNo()) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + if (hasColorFrame()) { + hash = (37 * hash) + COLOR_FRAME_FIELD_NUMBER; + hash = (53 * hash) + getColorFrame().hashCode(); + } + hash = (37 * hash) + SEQ_NO_FIELD_NUMBER; + hash = (53 * hash) + getSeqNo(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.CameraCommand.GetRGBImageStreamCommand.Feedback parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetRGBImageStreamCommand.Feedback parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBImageStreamCommand.Feedback parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetRGBImageStreamCommand.Feedback parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBImageStreamCommand.Feedback parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetRGBImageStreamCommand.Feedback parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBImageStreamCommand.Feedback parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetRGBImageStreamCommand.Feedback parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBImageStreamCommand.Feedback parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetRGBImageStreamCommand.Feedback parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBImageStreamCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetRGBImageStreamCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.CameraCommand.GetRGBImageStreamCommand.Feedback prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetRGBImageStreamCommand.Feedback} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetRGBImageStreamCommand.Feedback) + cmvr.api.CameraCommand.GetRGBImageStreamCommand.FeedbackOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBImageStreamCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBImageStreamCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.GetRGBImageStreamCommand.Feedback.class, cmvr.api.CameraCommand.GetRGBImageStreamCommand.Feedback.Builder.class); + } + + // Construct using cmvr.api.CameraCommand.GetRGBImageStreamCommand.Feedback.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + if (colorFrameBuilder_ == null) { + colorFrame_ = null; + } else { + colorFrame_ = null; + colorFrameBuilder_ = null; + } + seqNo_ = 0; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBImageStreamCommand_Feedback_descriptor; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBImageStreamCommand.Feedback getDefaultInstanceForType() { + return cmvr.api.CameraCommand.GetRGBImageStreamCommand.Feedback.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBImageStreamCommand.Feedback build() { + cmvr.api.CameraCommand.GetRGBImageStreamCommand.Feedback result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBImageStreamCommand.Feedback buildPartial() { + cmvr.api.CameraCommand.GetRGBImageStreamCommand.Feedback result = new cmvr.api.CameraCommand.GetRGBImageStreamCommand.Feedback(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + if (colorFrameBuilder_ == null) { + result.colorFrame_ = colorFrame_; + } else { + result.colorFrame_ = colorFrameBuilder_.build(); + } + result.seqNo_ = seqNo_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.CameraCommand.GetRGBImageStreamCommand.Feedback) { + return mergeFrom((cmvr.api.CameraCommand.GetRGBImageStreamCommand.Feedback)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.CameraCommand.GetRGBImageStreamCommand.Feedback other) { + if (other == cmvr.api.CameraCommand.GetRGBImageStreamCommand.Feedback.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + if (other.hasColorFrame()) { + mergeColorFrame(other.getColorFrame()); + } + if (other.getSeqNo() != 0) { + setSeqNo(other.getSeqNo()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + case 18: { + input.readMessage( + getColorFrameFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 18 + case 24: { + seqNo_ = input.readInt32(); + + break; + } // case 24 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Feedback header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Feedback.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Feedback.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.Feedback.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + + private cmvr.api.CameraCommand.FrameData colorFrame_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.CameraCommand.FrameData, cmvr.api.CameraCommand.FrameData.Builder, cmvr.api.CameraCommand.FrameDataOrBuilder> colorFrameBuilder_; + /** + * .cmvr.api.FrameData color_frame = 2; + * @return Whether the colorFrame field is set. + */ + public boolean hasColorFrame() { + return colorFrameBuilder_ != null || colorFrame_ != null; + } + /** + * .cmvr.api.FrameData color_frame = 2; + * @return The colorFrame. + */ + public cmvr.api.CameraCommand.FrameData getColorFrame() { + if (colorFrameBuilder_ == null) { + return colorFrame_ == null ? cmvr.api.CameraCommand.FrameData.getDefaultInstance() : colorFrame_; + } else { + return colorFrameBuilder_.getMessage(); + } + } + /** + * .cmvr.api.FrameData color_frame = 2; + */ + public Builder setColorFrame(cmvr.api.CameraCommand.FrameData value) { + if (colorFrameBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + colorFrame_ = value; + onChanged(); + } else { + colorFrameBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.FrameData color_frame = 2; + */ + public Builder setColorFrame( + cmvr.api.CameraCommand.FrameData.Builder builderForValue) { + if (colorFrameBuilder_ == null) { + colorFrame_ = builderForValue.build(); + onChanged(); + } else { + colorFrameBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.FrameData color_frame = 2; + */ + public Builder mergeColorFrame(cmvr.api.CameraCommand.FrameData value) { + if (colorFrameBuilder_ == null) { + if (colorFrame_ != null) { + colorFrame_ = + cmvr.api.CameraCommand.FrameData.newBuilder(colorFrame_).mergeFrom(value).buildPartial(); + } else { + colorFrame_ = value; + } + onChanged(); + } else { + colorFrameBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.FrameData color_frame = 2; + */ + public Builder clearColorFrame() { + if (colorFrameBuilder_ == null) { + colorFrame_ = null; + onChanged(); + } else { + colorFrame_ = null; + colorFrameBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.FrameData color_frame = 2; + */ + public cmvr.api.CameraCommand.FrameData.Builder getColorFrameBuilder() { + + onChanged(); + return getColorFrameFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.FrameData color_frame = 2; + */ + public cmvr.api.CameraCommand.FrameDataOrBuilder getColorFrameOrBuilder() { + if (colorFrameBuilder_ != null) { + return colorFrameBuilder_.getMessageOrBuilder(); + } else { + return colorFrame_ == null ? + cmvr.api.CameraCommand.FrameData.getDefaultInstance() : colorFrame_; + } + } + /** + * .cmvr.api.FrameData color_frame = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.CameraCommand.FrameData, cmvr.api.CameraCommand.FrameData.Builder, cmvr.api.CameraCommand.FrameDataOrBuilder> + getColorFrameFieldBuilder() { + if (colorFrameBuilder_ == null) { + colorFrameBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.CameraCommand.FrameData, cmvr.api.CameraCommand.FrameData.Builder, cmvr.api.CameraCommand.FrameDataOrBuilder>( + getColorFrame(), + getParentForChildren(), + isClean()); + colorFrame_ = null; + } + return colorFrameBuilder_; + } + + private int seqNo_ ; + /** + * int32 seq_no = 3; + * @return The seqNo. + */ + @java.lang.Override + public int getSeqNo() { + return seqNo_; + } + /** + * int32 seq_no = 3; + * @param value The seqNo to set. + * @return This builder for chaining. + */ + public Builder setSeqNo(int value) { + + seqNo_ = value; + onChanged(); + return this; + } + /** + * int32 seq_no = 3; + * @return This builder for chaining. + */ + public Builder clearSeqNo() { + + seqNo_ = 0; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetRGBImageStreamCommand.Feedback) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetRGBImageStreamCommand.Feedback) + private static final cmvr.api.CameraCommand.GetRGBImageStreamCommand.Feedback DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.CameraCommand.GetRGBImageStreamCommand.Feedback(); + } + + public static cmvr.api.CameraCommand.GetRGBImageStreamCommand.Feedback getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Feedback parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBImageStreamCommand.Feedback getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.CameraCommand.GetRGBImageStreamCommand)) { + return super.equals(obj); + } + cmvr.api.CameraCommand.GetRGBImageStreamCommand other = (cmvr.api.CameraCommand.GetRGBImageStreamCommand) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.CameraCommand.GetRGBImageStreamCommand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetRGBImageStreamCommand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBImageStreamCommand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetRGBImageStreamCommand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBImageStreamCommand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetRGBImageStreamCommand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBImageStreamCommand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetRGBImageStreamCommand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBImageStreamCommand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetRGBImageStreamCommand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBImageStreamCommand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetRGBImageStreamCommand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.CameraCommand.GetRGBImageStreamCommand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetRGBImageStreamCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetRGBImageStreamCommand) + cmvr.api.CameraCommand.GetRGBImageStreamCommandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBImageStreamCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBImageStreamCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.GetRGBImageStreamCommand.class, cmvr.api.CameraCommand.GetRGBImageStreamCommand.Builder.class); + } + + // Construct using cmvr.api.CameraCommand.GetRGBImageStreamCommand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBImageStreamCommand_descriptor; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBImageStreamCommand getDefaultInstanceForType() { + return cmvr.api.CameraCommand.GetRGBImageStreamCommand.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBImageStreamCommand build() { + cmvr.api.CameraCommand.GetRGBImageStreamCommand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBImageStreamCommand buildPartial() { + cmvr.api.CameraCommand.GetRGBImageStreamCommand result = new cmvr.api.CameraCommand.GetRGBImageStreamCommand(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.CameraCommand.GetRGBImageStreamCommand) { + return mergeFrom((cmvr.api.CameraCommand.GetRGBImageStreamCommand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.CameraCommand.GetRGBImageStreamCommand other) { + if (other == cmvr.api.CameraCommand.GetRGBImageStreamCommand.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetRGBImageStreamCommand) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetRGBImageStreamCommand) + private static final cmvr.api.CameraCommand.GetRGBImageStreamCommand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.CameraCommand.GetRGBImageStreamCommand(); + } + + public static cmvr.api.CameraCommand.GetRGBImageStreamCommand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public GetRGBImageStreamCommand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBImageStreamCommand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface GetDepthImageStreamCommandOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetDepthImageStreamCommand) + com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code cmvr.api.GetDepthImageStreamCommand} + */ + public static final class GetDepthImageStreamCommand extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetDepthImageStreamCommand) + GetDepthImageStreamCommandOrBuilder { + private static final long serialVersionUID = 0L; + // Use GetDepthImageStreamCommand.newBuilder() to construct. + private GetDepthImageStreamCommand(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private GetDepthImageStreamCommand() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new GetDepthImageStreamCommand(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetDepthImageStreamCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetDepthImageStreamCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.GetDepthImageStreamCommand.class, cmvr.api.CameraCommand.GetDepthImageStreamCommand.Builder.class); + } + + public interface RequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetDepthImageStreamCommand.Request) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Request getHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder(); + + /** + * bool eof = 2; + * @return The eof. + */ + boolean getEof(); + } + /** + * Protobuf type {@code cmvr.api.GetDepthImageStreamCommand.Request} + */ + public static final class Request extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetDepthImageStreamCommand.Request) + RequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use Request.newBuilder() to construct. + private Request(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Request() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Request(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetDepthImageStreamCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetDepthImageStreamCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.GetDepthImageStreamCommand.Request.class, cmvr.api.CameraCommand.GetDepthImageStreamCommand.Request.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Request header_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + public static final int EOF_FIELD_NUMBER = 2; + private boolean eof_; + /** + * bool eof = 2; + * @return The eof. + */ + @java.lang.Override + public boolean getEof() { + return eof_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + if (eof_ != false) { + output.writeBool(2, eof_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + if (eof_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(2, eof_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.CameraCommand.GetDepthImageStreamCommand.Request)) { + return super.equals(obj); + } + cmvr.api.CameraCommand.GetDepthImageStreamCommand.Request other = (cmvr.api.CameraCommand.GetDepthImageStreamCommand.Request) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (getEof() + != other.getEof()) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (37 * hash) + EOF_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getEof()); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.CameraCommand.GetDepthImageStreamCommand.Request parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetDepthImageStreamCommand.Request parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetDepthImageStreamCommand.Request parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetDepthImageStreamCommand.Request parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetDepthImageStreamCommand.Request parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetDepthImageStreamCommand.Request parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetDepthImageStreamCommand.Request parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetDepthImageStreamCommand.Request parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetDepthImageStreamCommand.Request parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetDepthImageStreamCommand.Request parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetDepthImageStreamCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetDepthImageStreamCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.CameraCommand.GetDepthImageStreamCommand.Request prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetDepthImageStreamCommand.Request} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetDepthImageStreamCommand.Request) + cmvr.api.CameraCommand.GetDepthImageStreamCommand.RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetDepthImageStreamCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetDepthImageStreamCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.GetDepthImageStreamCommand.Request.class, cmvr.api.CameraCommand.GetDepthImageStreamCommand.Request.Builder.class); + } + + // Construct using cmvr.api.CameraCommand.GetDepthImageStreamCommand.Request.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + eof_ = false; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetDepthImageStreamCommand_Request_descriptor; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetDepthImageStreamCommand.Request getDefaultInstanceForType() { + return cmvr.api.CameraCommand.GetDepthImageStreamCommand.Request.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetDepthImageStreamCommand.Request build() { + cmvr.api.CameraCommand.GetDepthImageStreamCommand.Request result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetDepthImageStreamCommand.Request buildPartial() { + cmvr.api.CameraCommand.GetDepthImageStreamCommand.Request result = new cmvr.api.CameraCommand.GetDepthImageStreamCommand.Request(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + result.eof_ = eof_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.CameraCommand.GetDepthImageStreamCommand.Request) { + return mergeFrom((cmvr.api.CameraCommand.GetDepthImageStreamCommand.Request)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.CameraCommand.GetDepthImageStreamCommand.Request other) { + if (other == cmvr.api.CameraCommand.GetDepthImageStreamCommand.Request.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + if (other.getEof() != false) { + setEof(other.getEof()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + case 16: { + eof_ = input.readBool(); + + break; + } // case 16 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Request header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Request getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Request.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Request.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.Request.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + + private boolean eof_ ; + /** + * bool eof = 2; + * @return The eof. + */ + @java.lang.Override + public boolean getEof() { + return eof_; + } + /** + * bool eof = 2; + * @param value The eof to set. + * @return This builder for chaining. + */ + public Builder setEof(boolean value) { + + eof_ = value; + onChanged(); + return this; + } + /** + * bool eof = 2; + * @return This builder for chaining. + */ + public Builder clearEof() { + + eof_ = false; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetDepthImageStreamCommand.Request) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetDepthImageStreamCommand.Request) + private static final cmvr.api.CameraCommand.GetDepthImageStreamCommand.Request DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.CameraCommand.GetDepthImageStreamCommand.Request(); + } + + public static cmvr.api.CameraCommand.GetDepthImageStreamCommand.Request getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetDepthImageStreamCommand.Request getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface FeedbackOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetDepthImageStreamCommand.Feedback) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Feedback getHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder(); + + /** + * .cmvr.api.FrameData depth_frame = 2; + * @return Whether the depthFrame field is set. + */ + boolean hasDepthFrame(); + /** + * .cmvr.api.FrameData depth_frame = 2; + * @return The depthFrame. + */ + cmvr.api.CameraCommand.FrameData getDepthFrame(); + /** + * .cmvr.api.FrameData depth_frame = 2; + */ + cmvr.api.CameraCommand.FrameDataOrBuilder getDepthFrameOrBuilder(); + + /** + * int32 seq_no = 3; + * @return The seqNo. + */ + int getSeqNo(); + } + /** + * Protobuf type {@code cmvr.api.GetDepthImageStreamCommand.Feedback} + */ + public static final class Feedback extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetDepthImageStreamCommand.Feedback) + FeedbackOrBuilder { + private static final long serialVersionUID = 0L; + // Use Feedback.newBuilder() to construct. + private Feedback(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Feedback() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Feedback(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetDepthImageStreamCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetDepthImageStreamCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.GetDepthImageStreamCommand.Feedback.class, cmvr.api.CameraCommand.GetDepthImageStreamCommand.Feedback.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Feedback header_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + public static final int DEPTH_FRAME_FIELD_NUMBER = 2; + private cmvr.api.CameraCommand.FrameData depthFrame_; + /** + * .cmvr.api.FrameData depth_frame = 2; + * @return Whether the depthFrame field is set. + */ + @java.lang.Override + public boolean hasDepthFrame() { + return depthFrame_ != null; + } + /** + * .cmvr.api.FrameData depth_frame = 2; + * @return The depthFrame. + */ + @java.lang.Override + public cmvr.api.CameraCommand.FrameData getDepthFrame() { + return depthFrame_ == null ? cmvr.api.CameraCommand.FrameData.getDefaultInstance() : depthFrame_; + } + /** + * .cmvr.api.FrameData depth_frame = 2; + */ + @java.lang.Override + public cmvr.api.CameraCommand.FrameDataOrBuilder getDepthFrameOrBuilder() { + return getDepthFrame(); + } + + public static final int SEQ_NO_FIELD_NUMBER = 3; + private int seqNo_; + /** + * int32 seq_no = 3; + * @return The seqNo. + */ + @java.lang.Override + public int getSeqNo() { + return seqNo_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + if (depthFrame_ != null) { + output.writeMessage(2, getDepthFrame()); + } + if (seqNo_ != 0) { + output.writeInt32(3, seqNo_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + if (depthFrame_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, getDepthFrame()); + } + if (seqNo_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(3, seqNo_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.CameraCommand.GetDepthImageStreamCommand.Feedback)) { + return super.equals(obj); + } + cmvr.api.CameraCommand.GetDepthImageStreamCommand.Feedback other = (cmvr.api.CameraCommand.GetDepthImageStreamCommand.Feedback) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (hasDepthFrame() != other.hasDepthFrame()) return false; + if (hasDepthFrame()) { + if (!getDepthFrame() + .equals(other.getDepthFrame())) return false; + } + if (getSeqNo() + != other.getSeqNo()) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + if (hasDepthFrame()) { + hash = (37 * hash) + DEPTH_FRAME_FIELD_NUMBER; + hash = (53 * hash) + getDepthFrame().hashCode(); + } + hash = (37 * hash) + SEQ_NO_FIELD_NUMBER; + hash = (53 * hash) + getSeqNo(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.CameraCommand.GetDepthImageStreamCommand.Feedback parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetDepthImageStreamCommand.Feedback parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetDepthImageStreamCommand.Feedback parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetDepthImageStreamCommand.Feedback parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetDepthImageStreamCommand.Feedback parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetDepthImageStreamCommand.Feedback parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetDepthImageStreamCommand.Feedback parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetDepthImageStreamCommand.Feedback parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetDepthImageStreamCommand.Feedback parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetDepthImageStreamCommand.Feedback parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetDepthImageStreamCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetDepthImageStreamCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.CameraCommand.GetDepthImageStreamCommand.Feedback prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetDepthImageStreamCommand.Feedback} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetDepthImageStreamCommand.Feedback) + cmvr.api.CameraCommand.GetDepthImageStreamCommand.FeedbackOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetDepthImageStreamCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetDepthImageStreamCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.GetDepthImageStreamCommand.Feedback.class, cmvr.api.CameraCommand.GetDepthImageStreamCommand.Feedback.Builder.class); + } + + // Construct using cmvr.api.CameraCommand.GetDepthImageStreamCommand.Feedback.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + if (depthFrameBuilder_ == null) { + depthFrame_ = null; + } else { + depthFrame_ = null; + depthFrameBuilder_ = null; + } + seqNo_ = 0; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetDepthImageStreamCommand_Feedback_descriptor; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetDepthImageStreamCommand.Feedback getDefaultInstanceForType() { + return cmvr.api.CameraCommand.GetDepthImageStreamCommand.Feedback.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetDepthImageStreamCommand.Feedback build() { + cmvr.api.CameraCommand.GetDepthImageStreamCommand.Feedback result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetDepthImageStreamCommand.Feedback buildPartial() { + cmvr.api.CameraCommand.GetDepthImageStreamCommand.Feedback result = new cmvr.api.CameraCommand.GetDepthImageStreamCommand.Feedback(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + if (depthFrameBuilder_ == null) { + result.depthFrame_ = depthFrame_; + } else { + result.depthFrame_ = depthFrameBuilder_.build(); + } + result.seqNo_ = seqNo_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.CameraCommand.GetDepthImageStreamCommand.Feedback) { + return mergeFrom((cmvr.api.CameraCommand.GetDepthImageStreamCommand.Feedback)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.CameraCommand.GetDepthImageStreamCommand.Feedback other) { + if (other == cmvr.api.CameraCommand.GetDepthImageStreamCommand.Feedback.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + if (other.hasDepthFrame()) { + mergeDepthFrame(other.getDepthFrame()); + } + if (other.getSeqNo() != 0) { + setSeqNo(other.getSeqNo()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + case 18: { + input.readMessage( + getDepthFrameFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 18 + case 24: { + seqNo_ = input.readInt32(); + + break; + } // case 24 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Feedback header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Feedback.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Feedback.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.Feedback.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + + private cmvr.api.CameraCommand.FrameData depthFrame_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.CameraCommand.FrameData, cmvr.api.CameraCommand.FrameData.Builder, cmvr.api.CameraCommand.FrameDataOrBuilder> depthFrameBuilder_; + /** + * .cmvr.api.FrameData depth_frame = 2; + * @return Whether the depthFrame field is set. + */ + public boolean hasDepthFrame() { + return depthFrameBuilder_ != null || depthFrame_ != null; + } + /** + * .cmvr.api.FrameData depth_frame = 2; + * @return The depthFrame. + */ + public cmvr.api.CameraCommand.FrameData getDepthFrame() { + if (depthFrameBuilder_ == null) { + return depthFrame_ == null ? cmvr.api.CameraCommand.FrameData.getDefaultInstance() : depthFrame_; + } else { + return depthFrameBuilder_.getMessage(); + } + } + /** + * .cmvr.api.FrameData depth_frame = 2; + */ + public Builder setDepthFrame(cmvr.api.CameraCommand.FrameData value) { + if (depthFrameBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + depthFrame_ = value; + onChanged(); + } else { + depthFrameBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.FrameData depth_frame = 2; + */ + public Builder setDepthFrame( + cmvr.api.CameraCommand.FrameData.Builder builderForValue) { + if (depthFrameBuilder_ == null) { + depthFrame_ = builderForValue.build(); + onChanged(); + } else { + depthFrameBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.FrameData depth_frame = 2; + */ + public Builder mergeDepthFrame(cmvr.api.CameraCommand.FrameData value) { + if (depthFrameBuilder_ == null) { + if (depthFrame_ != null) { + depthFrame_ = + cmvr.api.CameraCommand.FrameData.newBuilder(depthFrame_).mergeFrom(value).buildPartial(); + } else { + depthFrame_ = value; + } + onChanged(); + } else { + depthFrameBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.FrameData depth_frame = 2; + */ + public Builder clearDepthFrame() { + if (depthFrameBuilder_ == null) { + depthFrame_ = null; + onChanged(); + } else { + depthFrame_ = null; + depthFrameBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.FrameData depth_frame = 2; + */ + public cmvr.api.CameraCommand.FrameData.Builder getDepthFrameBuilder() { + + onChanged(); + return getDepthFrameFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.FrameData depth_frame = 2; + */ + public cmvr.api.CameraCommand.FrameDataOrBuilder getDepthFrameOrBuilder() { + if (depthFrameBuilder_ != null) { + return depthFrameBuilder_.getMessageOrBuilder(); + } else { + return depthFrame_ == null ? + cmvr.api.CameraCommand.FrameData.getDefaultInstance() : depthFrame_; + } + } + /** + * .cmvr.api.FrameData depth_frame = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.CameraCommand.FrameData, cmvr.api.CameraCommand.FrameData.Builder, cmvr.api.CameraCommand.FrameDataOrBuilder> + getDepthFrameFieldBuilder() { + if (depthFrameBuilder_ == null) { + depthFrameBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.CameraCommand.FrameData, cmvr.api.CameraCommand.FrameData.Builder, cmvr.api.CameraCommand.FrameDataOrBuilder>( + getDepthFrame(), + getParentForChildren(), + isClean()); + depthFrame_ = null; + } + return depthFrameBuilder_; + } + + private int seqNo_ ; + /** + * int32 seq_no = 3; + * @return The seqNo. + */ + @java.lang.Override + public int getSeqNo() { + return seqNo_; + } + /** + * int32 seq_no = 3; + * @param value The seqNo to set. + * @return This builder for chaining. + */ + public Builder setSeqNo(int value) { + + seqNo_ = value; + onChanged(); + return this; + } + /** + * int32 seq_no = 3; + * @return This builder for chaining. + */ + public Builder clearSeqNo() { + + seqNo_ = 0; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetDepthImageStreamCommand.Feedback) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetDepthImageStreamCommand.Feedback) + private static final cmvr.api.CameraCommand.GetDepthImageStreamCommand.Feedback DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.CameraCommand.GetDepthImageStreamCommand.Feedback(); + } + + public static cmvr.api.CameraCommand.GetDepthImageStreamCommand.Feedback getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Feedback parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetDepthImageStreamCommand.Feedback getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.CameraCommand.GetDepthImageStreamCommand)) { + return super.equals(obj); + } + cmvr.api.CameraCommand.GetDepthImageStreamCommand other = (cmvr.api.CameraCommand.GetDepthImageStreamCommand) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.CameraCommand.GetDepthImageStreamCommand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetDepthImageStreamCommand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetDepthImageStreamCommand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetDepthImageStreamCommand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetDepthImageStreamCommand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetDepthImageStreamCommand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetDepthImageStreamCommand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetDepthImageStreamCommand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetDepthImageStreamCommand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetDepthImageStreamCommand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetDepthImageStreamCommand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetDepthImageStreamCommand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.CameraCommand.GetDepthImageStreamCommand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetDepthImageStreamCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetDepthImageStreamCommand) + cmvr.api.CameraCommand.GetDepthImageStreamCommandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetDepthImageStreamCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetDepthImageStreamCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.GetDepthImageStreamCommand.class, cmvr.api.CameraCommand.GetDepthImageStreamCommand.Builder.class); + } + + // Construct using cmvr.api.CameraCommand.GetDepthImageStreamCommand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetDepthImageStreamCommand_descriptor; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetDepthImageStreamCommand getDefaultInstanceForType() { + return cmvr.api.CameraCommand.GetDepthImageStreamCommand.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetDepthImageStreamCommand build() { + cmvr.api.CameraCommand.GetDepthImageStreamCommand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetDepthImageStreamCommand buildPartial() { + cmvr.api.CameraCommand.GetDepthImageStreamCommand result = new cmvr.api.CameraCommand.GetDepthImageStreamCommand(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.CameraCommand.GetDepthImageStreamCommand) { + return mergeFrom((cmvr.api.CameraCommand.GetDepthImageStreamCommand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.CameraCommand.GetDepthImageStreamCommand other) { + if (other == cmvr.api.CameraCommand.GetDepthImageStreamCommand.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetDepthImageStreamCommand) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetDepthImageStreamCommand) + private static final cmvr.api.CameraCommand.GetDepthImageStreamCommand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.CameraCommand.GetDepthImageStreamCommand(); + } + + public static cmvr.api.CameraCommand.GetDepthImageStreamCommand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public GetDepthImageStreamCommand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetDepthImageStreamCommand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface GetRGBDImagesStreamCommandOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetRGBDImagesStreamCommand) + com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code cmvr.api.GetRGBDImagesStreamCommand} + */ + public static final class GetRGBDImagesStreamCommand extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetRGBDImagesStreamCommand) + GetRGBDImagesStreamCommandOrBuilder { + private static final long serialVersionUID = 0L; + // Use GetRGBDImagesStreamCommand.newBuilder() to construct. + private GetRGBDImagesStreamCommand(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private GetRGBDImagesStreamCommand() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new GetRGBDImagesStreamCommand(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBDImagesStreamCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBDImagesStreamCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.class, cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Builder.class); + } + + public interface RequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetRGBDImagesStreamCommand.Request) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Request getHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder(); + + /** + * bool eof = 2; + * @return The eof. + */ + boolean getEof(); + } + /** + * Protobuf type {@code cmvr.api.GetRGBDImagesStreamCommand.Request} + */ + public static final class Request extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetRGBDImagesStreamCommand.Request) + RequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use Request.newBuilder() to construct. + private Request(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Request() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Request(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBDImagesStreamCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBDImagesStreamCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Request.class, cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Request.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Request header_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + public static final int EOF_FIELD_NUMBER = 2; + private boolean eof_; + /** + * bool eof = 2; + * @return The eof. + */ + @java.lang.Override + public boolean getEof() { + return eof_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + if (eof_ != false) { + output.writeBool(2, eof_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + if (eof_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(2, eof_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Request)) { + return super.equals(obj); + } + cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Request other = (cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Request) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (getEof() + != other.getEof()) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (37 * hash) + EOF_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getEof()); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Request parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Request parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Request parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Request parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Request parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Request parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Request parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Request parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Request parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Request parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Request prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetRGBDImagesStreamCommand.Request} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetRGBDImagesStreamCommand.Request) + cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBDImagesStreamCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBDImagesStreamCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Request.class, cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Request.Builder.class); + } + + // Construct using cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Request.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + eof_ = false; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBDImagesStreamCommand_Request_descriptor; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Request getDefaultInstanceForType() { + return cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Request.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Request build() { + cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Request result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Request buildPartial() { + cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Request result = new cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Request(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + result.eof_ = eof_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Request) { + return mergeFrom((cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Request)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Request other) { + if (other == cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Request.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + if (other.getEof() != false) { + setEof(other.getEof()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + case 16: { + eof_ = input.readBool(); + + break; + } // case 16 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Request header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Request getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Request.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Request.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.Request.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + + private boolean eof_ ; + /** + * bool eof = 2; + * @return The eof. + */ + @java.lang.Override + public boolean getEof() { + return eof_; + } + /** + * bool eof = 2; + * @param value The eof to set. + * @return This builder for chaining. + */ + public Builder setEof(boolean value) { + + eof_ = value; + onChanged(); + return this; + } + /** + * bool eof = 2; + * @return This builder for chaining. + */ + public Builder clearEof() { + + eof_ = false; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetRGBDImagesStreamCommand.Request) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetRGBDImagesStreamCommand.Request) + private static final cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Request DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Request(); + } + + public static cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Request getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Request getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface FeedbackOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetRGBDImagesStreamCommand.Feedback) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Feedback getHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder(); + + /** + * .cmvr.api.FrameData color_frame = 2; + * @return Whether the colorFrame field is set. + */ + boolean hasColorFrame(); + /** + * .cmvr.api.FrameData color_frame = 2; + * @return The colorFrame. + */ + cmvr.api.CameraCommand.FrameData getColorFrame(); + /** + * .cmvr.api.FrameData color_frame = 2; + */ + cmvr.api.CameraCommand.FrameDataOrBuilder getColorFrameOrBuilder(); + + /** + * .cmvr.api.FrameData depth_frame = 3; + * @return Whether the depthFrame field is set. + */ + boolean hasDepthFrame(); + /** + * .cmvr.api.FrameData depth_frame = 3; + * @return The depthFrame. + */ + cmvr.api.CameraCommand.FrameData getDepthFrame(); + /** + * .cmvr.api.FrameData depth_frame = 3; + */ + cmvr.api.CameraCommand.FrameDataOrBuilder getDepthFrameOrBuilder(); + + /** + * int32 seq_no = 4; + * @return The seqNo. + */ + int getSeqNo(); + } + /** + * Protobuf type {@code cmvr.api.GetRGBDImagesStreamCommand.Feedback} + */ + public static final class Feedback extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetRGBDImagesStreamCommand.Feedback) + FeedbackOrBuilder { + private static final long serialVersionUID = 0L; + // Use Feedback.newBuilder() to construct. + private Feedback(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Feedback() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Feedback(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBDImagesStreamCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBDImagesStreamCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Feedback.class, cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Feedback.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Feedback header_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + public static final int COLOR_FRAME_FIELD_NUMBER = 2; + private cmvr.api.CameraCommand.FrameData colorFrame_; + /** + * .cmvr.api.FrameData color_frame = 2; + * @return Whether the colorFrame field is set. + */ + @java.lang.Override + public boolean hasColorFrame() { + return colorFrame_ != null; + } + /** + * .cmvr.api.FrameData color_frame = 2; + * @return The colorFrame. + */ + @java.lang.Override + public cmvr.api.CameraCommand.FrameData getColorFrame() { + return colorFrame_ == null ? cmvr.api.CameraCommand.FrameData.getDefaultInstance() : colorFrame_; + } + /** + * .cmvr.api.FrameData color_frame = 2; + */ + @java.lang.Override + public cmvr.api.CameraCommand.FrameDataOrBuilder getColorFrameOrBuilder() { + return getColorFrame(); + } + + public static final int DEPTH_FRAME_FIELD_NUMBER = 3; + private cmvr.api.CameraCommand.FrameData depthFrame_; + /** + * .cmvr.api.FrameData depth_frame = 3; + * @return Whether the depthFrame field is set. + */ + @java.lang.Override + public boolean hasDepthFrame() { + return depthFrame_ != null; + } + /** + * .cmvr.api.FrameData depth_frame = 3; + * @return The depthFrame. + */ + @java.lang.Override + public cmvr.api.CameraCommand.FrameData getDepthFrame() { + return depthFrame_ == null ? cmvr.api.CameraCommand.FrameData.getDefaultInstance() : depthFrame_; + } + /** + * .cmvr.api.FrameData depth_frame = 3; + */ + @java.lang.Override + public cmvr.api.CameraCommand.FrameDataOrBuilder getDepthFrameOrBuilder() { + return getDepthFrame(); + } + + public static final int SEQ_NO_FIELD_NUMBER = 4; + private int seqNo_; + /** + * int32 seq_no = 4; + * @return The seqNo. + */ + @java.lang.Override + public int getSeqNo() { + return seqNo_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + if (colorFrame_ != null) { + output.writeMessage(2, getColorFrame()); + } + if (depthFrame_ != null) { + output.writeMessage(3, getDepthFrame()); + } + if (seqNo_ != 0) { + output.writeInt32(4, seqNo_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + if (colorFrame_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, getColorFrame()); + } + if (depthFrame_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(3, getDepthFrame()); + } + if (seqNo_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(4, seqNo_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Feedback)) { + return super.equals(obj); + } + cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Feedback other = (cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Feedback) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (hasColorFrame() != other.hasColorFrame()) return false; + if (hasColorFrame()) { + if (!getColorFrame() + .equals(other.getColorFrame())) return false; + } + if (hasDepthFrame() != other.hasDepthFrame()) return false; + if (hasDepthFrame()) { + if (!getDepthFrame() + .equals(other.getDepthFrame())) return false; + } + if (getSeqNo() + != other.getSeqNo()) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + if (hasColorFrame()) { + hash = (37 * hash) + COLOR_FRAME_FIELD_NUMBER; + hash = (53 * hash) + getColorFrame().hashCode(); + } + if (hasDepthFrame()) { + hash = (37 * hash) + DEPTH_FRAME_FIELD_NUMBER; + hash = (53 * hash) + getDepthFrame().hashCode(); + } + hash = (37 * hash) + SEQ_NO_FIELD_NUMBER; + hash = (53 * hash) + getSeqNo(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Feedback parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Feedback parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Feedback parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Feedback parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Feedback parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Feedback parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Feedback parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Feedback parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Feedback parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Feedback parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Feedback prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetRGBDImagesStreamCommand.Feedback} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetRGBDImagesStreamCommand.Feedback) + cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.FeedbackOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBDImagesStreamCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBDImagesStreamCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Feedback.class, cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Feedback.Builder.class); + } + + // Construct using cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Feedback.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + if (colorFrameBuilder_ == null) { + colorFrame_ = null; + } else { + colorFrame_ = null; + colorFrameBuilder_ = null; + } + if (depthFrameBuilder_ == null) { + depthFrame_ = null; + } else { + depthFrame_ = null; + depthFrameBuilder_ = null; + } + seqNo_ = 0; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBDImagesStreamCommand_Feedback_descriptor; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Feedback getDefaultInstanceForType() { + return cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Feedback.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Feedback build() { + cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Feedback result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Feedback buildPartial() { + cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Feedback result = new cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Feedback(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + if (colorFrameBuilder_ == null) { + result.colorFrame_ = colorFrame_; + } else { + result.colorFrame_ = colorFrameBuilder_.build(); + } + if (depthFrameBuilder_ == null) { + result.depthFrame_ = depthFrame_; + } else { + result.depthFrame_ = depthFrameBuilder_.build(); + } + result.seqNo_ = seqNo_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Feedback) { + return mergeFrom((cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Feedback)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Feedback other) { + if (other == cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Feedback.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + if (other.hasColorFrame()) { + mergeColorFrame(other.getColorFrame()); + } + if (other.hasDepthFrame()) { + mergeDepthFrame(other.getDepthFrame()); + } + if (other.getSeqNo() != 0) { + setSeqNo(other.getSeqNo()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + case 18: { + input.readMessage( + getColorFrameFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 18 + case 26: { + input.readMessage( + getDepthFrameFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 26 + case 32: { + seqNo_ = input.readInt32(); + + break; + } // case 32 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Feedback header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Feedback.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Feedback.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.Feedback.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + + private cmvr.api.CameraCommand.FrameData colorFrame_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.CameraCommand.FrameData, cmvr.api.CameraCommand.FrameData.Builder, cmvr.api.CameraCommand.FrameDataOrBuilder> colorFrameBuilder_; + /** + * .cmvr.api.FrameData color_frame = 2; + * @return Whether the colorFrame field is set. + */ + public boolean hasColorFrame() { + return colorFrameBuilder_ != null || colorFrame_ != null; + } + /** + * .cmvr.api.FrameData color_frame = 2; + * @return The colorFrame. + */ + public cmvr.api.CameraCommand.FrameData getColorFrame() { + if (colorFrameBuilder_ == null) { + return colorFrame_ == null ? cmvr.api.CameraCommand.FrameData.getDefaultInstance() : colorFrame_; + } else { + return colorFrameBuilder_.getMessage(); + } + } + /** + * .cmvr.api.FrameData color_frame = 2; + */ + public Builder setColorFrame(cmvr.api.CameraCommand.FrameData value) { + if (colorFrameBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + colorFrame_ = value; + onChanged(); + } else { + colorFrameBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.FrameData color_frame = 2; + */ + public Builder setColorFrame( + cmvr.api.CameraCommand.FrameData.Builder builderForValue) { + if (colorFrameBuilder_ == null) { + colorFrame_ = builderForValue.build(); + onChanged(); + } else { + colorFrameBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.FrameData color_frame = 2; + */ + public Builder mergeColorFrame(cmvr.api.CameraCommand.FrameData value) { + if (colorFrameBuilder_ == null) { + if (colorFrame_ != null) { + colorFrame_ = + cmvr.api.CameraCommand.FrameData.newBuilder(colorFrame_).mergeFrom(value).buildPartial(); + } else { + colorFrame_ = value; + } + onChanged(); + } else { + colorFrameBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.FrameData color_frame = 2; + */ + public Builder clearColorFrame() { + if (colorFrameBuilder_ == null) { + colorFrame_ = null; + onChanged(); + } else { + colorFrame_ = null; + colorFrameBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.FrameData color_frame = 2; + */ + public cmvr.api.CameraCommand.FrameData.Builder getColorFrameBuilder() { + + onChanged(); + return getColorFrameFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.FrameData color_frame = 2; + */ + public cmvr.api.CameraCommand.FrameDataOrBuilder getColorFrameOrBuilder() { + if (colorFrameBuilder_ != null) { + return colorFrameBuilder_.getMessageOrBuilder(); + } else { + return colorFrame_ == null ? + cmvr.api.CameraCommand.FrameData.getDefaultInstance() : colorFrame_; + } + } + /** + * .cmvr.api.FrameData color_frame = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.CameraCommand.FrameData, cmvr.api.CameraCommand.FrameData.Builder, cmvr.api.CameraCommand.FrameDataOrBuilder> + getColorFrameFieldBuilder() { + if (colorFrameBuilder_ == null) { + colorFrameBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.CameraCommand.FrameData, cmvr.api.CameraCommand.FrameData.Builder, cmvr.api.CameraCommand.FrameDataOrBuilder>( + getColorFrame(), + getParentForChildren(), + isClean()); + colorFrame_ = null; + } + return colorFrameBuilder_; + } + + private cmvr.api.CameraCommand.FrameData depthFrame_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.CameraCommand.FrameData, cmvr.api.CameraCommand.FrameData.Builder, cmvr.api.CameraCommand.FrameDataOrBuilder> depthFrameBuilder_; + /** + * .cmvr.api.FrameData depth_frame = 3; + * @return Whether the depthFrame field is set. + */ + public boolean hasDepthFrame() { + return depthFrameBuilder_ != null || depthFrame_ != null; + } + /** + * .cmvr.api.FrameData depth_frame = 3; + * @return The depthFrame. + */ + public cmvr.api.CameraCommand.FrameData getDepthFrame() { + if (depthFrameBuilder_ == null) { + return depthFrame_ == null ? cmvr.api.CameraCommand.FrameData.getDefaultInstance() : depthFrame_; + } else { + return depthFrameBuilder_.getMessage(); + } + } + /** + * .cmvr.api.FrameData depth_frame = 3; + */ + public Builder setDepthFrame(cmvr.api.CameraCommand.FrameData value) { + if (depthFrameBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + depthFrame_ = value; + onChanged(); + } else { + depthFrameBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.FrameData depth_frame = 3; + */ + public Builder setDepthFrame( + cmvr.api.CameraCommand.FrameData.Builder builderForValue) { + if (depthFrameBuilder_ == null) { + depthFrame_ = builderForValue.build(); + onChanged(); + } else { + depthFrameBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.FrameData depth_frame = 3; + */ + public Builder mergeDepthFrame(cmvr.api.CameraCommand.FrameData value) { + if (depthFrameBuilder_ == null) { + if (depthFrame_ != null) { + depthFrame_ = + cmvr.api.CameraCommand.FrameData.newBuilder(depthFrame_).mergeFrom(value).buildPartial(); + } else { + depthFrame_ = value; + } + onChanged(); + } else { + depthFrameBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.FrameData depth_frame = 3; + */ + public Builder clearDepthFrame() { + if (depthFrameBuilder_ == null) { + depthFrame_ = null; + onChanged(); + } else { + depthFrame_ = null; + depthFrameBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.FrameData depth_frame = 3; + */ + public cmvr.api.CameraCommand.FrameData.Builder getDepthFrameBuilder() { + + onChanged(); + return getDepthFrameFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.FrameData depth_frame = 3; + */ + public cmvr.api.CameraCommand.FrameDataOrBuilder getDepthFrameOrBuilder() { + if (depthFrameBuilder_ != null) { + return depthFrameBuilder_.getMessageOrBuilder(); + } else { + return depthFrame_ == null ? + cmvr.api.CameraCommand.FrameData.getDefaultInstance() : depthFrame_; + } + } + /** + * .cmvr.api.FrameData depth_frame = 3; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.CameraCommand.FrameData, cmvr.api.CameraCommand.FrameData.Builder, cmvr.api.CameraCommand.FrameDataOrBuilder> + getDepthFrameFieldBuilder() { + if (depthFrameBuilder_ == null) { + depthFrameBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.CameraCommand.FrameData, cmvr.api.CameraCommand.FrameData.Builder, cmvr.api.CameraCommand.FrameDataOrBuilder>( + getDepthFrame(), + getParentForChildren(), + isClean()); + depthFrame_ = null; + } + return depthFrameBuilder_; + } + + private int seqNo_ ; + /** + * int32 seq_no = 4; + * @return The seqNo. + */ + @java.lang.Override + public int getSeqNo() { + return seqNo_; + } + /** + * int32 seq_no = 4; + * @param value The seqNo to set. + * @return This builder for chaining. + */ + public Builder setSeqNo(int value) { + + seqNo_ = value; + onChanged(); + return this; + } + /** + * int32 seq_no = 4; + * @return This builder for chaining. + */ + public Builder clearSeqNo() { + + seqNo_ = 0; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetRGBDImagesStreamCommand.Feedback) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetRGBDImagesStreamCommand.Feedback) + private static final cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Feedback DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Feedback(); + } + + public static cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Feedback getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Feedback parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Feedback getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.CameraCommand.GetRGBDImagesStreamCommand)) { + return super.equals(obj); + } + cmvr.api.CameraCommand.GetRGBDImagesStreamCommand other = (cmvr.api.CameraCommand.GetRGBDImagesStreamCommand) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.CameraCommand.GetRGBDImagesStreamCommand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetRGBDImagesStreamCommand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBDImagesStreamCommand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetRGBDImagesStreamCommand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBDImagesStreamCommand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.CameraCommand.GetRGBDImagesStreamCommand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBDImagesStreamCommand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetRGBDImagesStreamCommand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBDImagesStreamCommand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetRGBDImagesStreamCommand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.CameraCommand.GetRGBDImagesStreamCommand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.CameraCommand.GetRGBDImagesStreamCommand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.CameraCommand.GetRGBDImagesStreamCommand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetRGBDImagesStreamCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetRGBDImagesStreamCommand) + cmvr.api.CameraCommand.GetRGBDImagesStreamCommandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBDImagesStreamCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBDImagesStreamCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.class, cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Builder.class); + } + + // Construct using cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.CameraCommand.internal_static_cmvr_api_GetRGBDImagesStreamCommand_descriptor; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBDImagesStreamCommand getDefaultInstanceForType() { + return cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBDImagesStreamCommand build() { + cmvr.api.CameraCommand.GetRGBDImagesStreamCommand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBDImagesStreamCommand buildPartial() { + cmvr.api.CameraCommand.GetRGBDImagesStreamCommand result = new cmvr.api.CameraCommand.GetRGBDImagesStreamCommand(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.CameraCommand.GetRGBDImagesStreamCommand) { + return mergeFrom((cmvr.api.CameraCommand.GetRGBDImagesStreamCommand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.CameraCommand.GetRGBDImagesStreamCommand other) { + if (other == cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetRGBDImagesStreamCommand) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetRGBDImagesStreamCommand) + private static final cmvr.api.CameraCommand.GetRGBDImagesStreamCommand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.CameraCommand.GetRGBDImagesStreamCommand(); + } + + public static cmvr.api.CameraCommand.GetRGBDImagesStreamCommand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public GetRGBDImagesStreamCommand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.CameraCommand.GetRGBDImagesStreamCommand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_FrameData_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_FrameData_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_CameraState_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_CameraState_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetCameraStateCommand_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetCameraStateCommand_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetCameraStateCommand_Request_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetCameraStateCommand_Request_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetCameraStateCommand_Feedback_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetCameraStateCommand_Feedback_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_StartCameraCommand_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_StartCameraCommand_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_StartCameraCommand_Request_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_StartCameraCommand_Request_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_StartCameraCommand_Feedback_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_StartCameraCommand_Feedback_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_StopCameraCommand_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_StopCameraCommand_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_StopCameraCommand_Request_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_StopCameraCommand_Request_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_StopCameraCommand_Feedback_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_StopCameraCommand_Feedback_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetRGBImageCommand_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetRGBImageCommand_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetRGBImageCommand_Request_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetRGBImageCommand_Request_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetRGBImageCommand_Feedback_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetRGBImageCommand_Feedback_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetDepthImageCommand_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetDepthImageCommand_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetDepthImageCommand_Request_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetDepthImageCommand_Request_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetDepthImageCommand_Feedback_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetDepthImageCommand_Feedback_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetRGBDImagesCommand_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetRGBDImagesCommand_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetRGBDImagesCommand_Request_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetRGBDImagesCommand_Request_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetRGBDImagesCommand_Feedback_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetRGBDImagesCommand_Feedback_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_StartCameraRecordingCommand_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_StartCameraRecordingCommand_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_StartCameraRecordingCommand_Request_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_StartCameraRecordingCommand_Request_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_StartCameraRecordingCommand_Feedback_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_StartCameraRecordingCommand_Feedback_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_StopCameraRecordingCommand_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_StopCameraRecordingCommand_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_StopCameraRecordingCommand_Request_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_StopCameraRecordingCommand_Request_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_StopCameraRecordingCommand_Feedback_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_StopCameraRecordingCommand_Feedback_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetRGBImageStreamCommand_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetRGBImageStreamCommand_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetRGBImageStreamCommand_Request_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetRGBImageStreamCommand_Request_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetRGBImageStreamCommand_Feedback_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetRGBImageStreamCommand_Feedback_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetDepthImageStreamCommand_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetDepthImageStreamCommand_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetDepthImageStreamCommand_Request_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetDepthImageStreamCommand_Request_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetDepthImageStreamCommand_Feedback_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetDepthImageStreamCommand_Feedback_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetRGBDImagesStreamCommand_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetRGBDImagesStreamCommand_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetRGBDImagesStreamCommand_Request_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetRGBDImagesStreamCommand_Request_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetRGBDImagesStreamCommand_Feedback_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetRGBDImagesStreamCommand_Feedback_fieldAccessorTable; + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n\035cmvr/api/camera_command.proto\022\010cmvr.ap" + + "i\032\025cmvr/api/common.proto\"\327\001\n\tFrameData\022\014" + + "\n\004data\030\001 \001(\014\022\r\n\005width\030\002 \001(\005\022\016\n\006height\030\003 " + + "\001(\005\022+\n\004type\030\004 \001(\0162\035.cmvr.api.FrameData.F" + + "rameType\022\r\n\005codec\030\005 \001(\t\022\024\n\014is_key_frame\030" + + "\006 \001(\010\"K\n\tFrameType\022\010\n\004U8C1\020\000\022\t\n\005U16C1\020\001\022" + + "\010\n\004U8C3\020\002\022\t\n\005U16C3\020\003\022\t\n\005F16C1\020\004\022\t\n\005F32C1" + + "\020\005\"\271\001\n\013CameraState\022\026\n\016is_initialized\030\001 \001" + + "(\010\022\021\n\tis_opened\030\002 \001(\010\022\024\n\014is_streaming\030\003 " + + "\001(\010\022\024\n\014is_recording\030\004 \001(\010\022\020\n\010is_error\030\005 " + + "\001(\010\022\025\n\rerror_message\030\006 \001(\t\022\013\n\003fps\030\007 \001(\005\022" + + "\r\n\005width\030\010 \001(\005\022\016\n\006height\030\t \001(\005\"\267\001\n\025GetCa" + + "meraStateCommand\032:\n\007Request\022/\n\006header\030\001 " + + "\001(\0132\037.cmvr.api.CommandHeader.Request\032b\n\010" + + "Feedback\0220\n\006header\030\001 \001(\0132 .cmvr.api.Comm" + + "andHeader.Feedback\022$\n\005state\030\002 \001(\0132\025.cmvr" + + ".api.CameraState\"\216\001\n\022StartCameraCommand\032" + + ":\n\007Request\022/\n\006header\030\001 \001(\0132\037.cmvr.api.Co" + + "mmandHeader.Request\032<\n\010Feedback\0220\n\006heade" + + "r\030\001 \001(\0132 .cmvr.api.CommandHeader.Feedbac" + + "k\"\215\001\n\021StopCameraCommand\032:\n\007Request\022/\n\006he" + + "ader\030\001 \001(\0132\037.cmvr.api.CommandHeader.Requ" + + "est\032<\n\010Feedback\0220\n\006header\030\001 \001(\0132 .cmvr.a" + + "pi.CommandHeader.Feedback\"\270\001\n\022GetRGBImag" + + "eCommand\032:\n\007Request\022/\n\006header\030\001 \001(\0132\037.cm" + + "vr.api.CommandHeader.Request\032f\n\010Feedback" + + "\0220\n\006header\030\001 \001(\0132 .cmvr.api.CommandHeade" + + "r.Feedback\022(\n\013color_frame\030\002 \001(\0132\023.cmvr.a" + + "pi.FrameData\"\272\001\n\024GetDepthImageCommand\032:\n" + + "\007Request\022/\n\006header\030\001 \001(\0132\037.cmvr.api.Comm" + + "andHeader.Request\032f\n\010Feedback\0220\n\006header\030" + + "\001 \001(\0132 .cmvr.api.CommandHeader.Feedback\022" + + "(\n\013depth_frame\030\002 \001(\0132\023.cmvr.api.FrameDat" + + "a\"\345\001\n\024GetRGBDImagesCommand\032:\n\007Request\022/\n" + + "\006header\030\001 \001(\0132\037.cmvr.api.CommandHeader.R" + + "equest\032\220\001\n\010Feedback\0220\n\006header\030\001 \001(\0132 .cm" + + "vr.api.CommandHeader.Feedback\022(\n\013color_f" + + "rame\030\002 \001(\0132\023.cmvr.api.FrameData\022(\n\013depth" + + "_frame\030\003 \001(\0132\023.cmvr.api.FrameData\"\253\001\n\033St" + + "artCameraRecordingCommand\032N\n\007Request\022/\n\006" + + "header\030\001 \001(\0132\037.cmvr.api.CommandHeader.Re" + + "quest\022\022\n\nvideo_path\030\002 \001(\t\032<\n\010Feedback\0220\n" + + "\006header\030\001 \001(\0132 .cmvr.api.CommandHeader.F" + + "eedback\"\226\001\n\032StopCameraRecordingCommand\032:" + + "\n\007Request\022/\n\006header\030\001 \001(\0132\037.cmvr.api.Com" + + "mandHeader.Request\032<\n\010Feedback\0220\n\006header" + + "\030\001 \001(\0132 .cmvr.api.CommandHeader.Feedback" + + "\"\333\001\n\030GetRGBImageStreamCommand\032G\n\007Request" + + "\022/\n\006header\030\001 \001(\0132\037.cmvr.api.CommandHeade" + + "r.Request\022\013\n\003eof\030\002 \001(\010\032v\n\010Feedback\0220\n\006he" + + "ader\030\001 \001(\0132 .cmvr.api.CommandHeader.Feed" + + "back\022(\n\013color_frame\030\002 \001(\0132\023.cmvr.api.Fra" + + "meData\022\016\n\006seq_no\030\003 \001(\005\"\335\001\n\032GetDepthImage" + + "StreamCommand\032G\n\007Request\022/\n\006header\030\001 \001(\013" + + "2\037.cmvr.api.CommandHeader.Request\022\013\n\003eof" + + "\030\002 \001(\010\032v\n\010Feedback\0220\n\006header\030\001 \001(\0132 .cmv" + + "r.api.CommandHeader.Feedback\022(\n\013depth_fr" + + "ame\030\002 \001(\0132\023.cmvr.api.FrameData\022\016\n\006seq_no" + + "\030\003 \001(\005\"\210\002\n\032GetRGBDImagesStreamCommand\032G\n" + + "\007Request\022/\n\006header\030\001 \001(\0132\037.cmvr.api.Comm" + + "andHeader.Request\022\013\n\003eof\030\002 \001(\010\032\240\001\n\010Feedb" + + "ack\0220\n\006header\030\001 \001(\0132 .cmvr.api.CommandHe" + + "ader.Feedback\022(\n\013color_frame\030\002 \001(\0132\023.cmv" + + "r.api.FrameData\022(\n\013depth_frame\030\003 \001(\0132\023.c" + + "mvr.api.FrameData\022\016\n\006seq_no\030\004 \001(\005b\006proto" + + "3" + }; + descriptor = com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + cmvr.api.Common.getDescriptor(), + }); + internal_static_cmvr_api_FrameData_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_cmvr_api_FrameData_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_FrameData_descriptor, + new java.lang.String[] { "Data", "Width", "Height", "Type", "Codec", "IsKeyFrame", }); + internal_static_cmvr_api_CameraState_descriptor = + getDescriptor().getMessageTypes().get(1); + internal_static_cmvr_api_CameraState_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_CameraState_descriptor, + new java.lang.String[] { "IsInitialized", "IsOpened", "IsStreaming", "IsRecording", "IsError", "ErrorMessage", "Fps", "Width", "Height", }); + internal_static_cmvr_api_GetCameraStateCommand_descriptor = + getDescriptor().getMessageTypes().get(2); + internal_static_cmvr_api_GetCameraStateCommand_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetCameraStateCommand_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_GetCameraStateCommand_Request_descriptor = + internal_static_cmvr_api_GetCameraStateCommand_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_GetCameraStateCommand_Request_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetCameraStateCommand_Request_descriptor, + new java.lang.String[] { "Header", }); + internal_static_cmvr_api_GetCameraStateCommand_Feedback_descriptor = + internal_static_cmvr_api_GetCameraStateCommand_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_GetCameraStateCommand_Feedback_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetCameraStateCommand_Feedback_descriptor, + new java.lang.String[] { "Header", "State", }); + internal_static_cmvr_api_StartCameraCommand_descriptor = + getDescriptor().getMessageTypes().get(3); + internal_static_cmvr_api_StartCameraCommand_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_StartCameraCommand_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_StartCameraCommand_Request_descriptor = + internal_static_cmvr_api_StartCameraCommand_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_StartCameraCommand_Request_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_StartCameraCommand_Request_descriptor, + new java.lang.String[] { "Header", }); + internal_static_cmvr_api_StartCameraCommand_Feedback_descriptor = + internal_static_cmvr_api_StartCameraCommand_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_StartCameraCommand_Feedback_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_StartCameraCommand_Feedback_descriptor, + new java.lang.String[] { "Header", }); + internal_static_cmvr_api_StopCameraCommand_descriptor = + getDescriptor().getMessageTypes().get(4); + internal_static_cmvr_api_StopCameraCommand_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_StopCameraCommand_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_StopCameraCommand_Request_descriptor = + internal_static_cmvr_api_StopCameraCommand_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_StopCameraCommand_Request_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_StopCameraCommand_Request_descriptor, + new java.lang.String[] { "Header", }); + internal_static_cmvr_api_StopCameraCommand_Feedback_descriptor = + internal_static_cmvr_api_StopCameraCommand_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_StopCameraCommand_Feedback_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_StopCameraCommand_Feedback_descriptor, + new java.lang.String[] { "Header", }); + internal_static_cmvr_api_GetRGBImageCommand_descriptor = + getDescriptor().getMessageTypes().get(5); + internal_static_cmvr_api_GetRGBImageCommand_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetRGBImageCommand_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_GetRGBImageCommand_Request_descriptor = + internal_static_cmvr_api_GetRGBImageCommand_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_GetRGBImageCommand_Request_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetRGBImageCommand_Request_descriptor, + new java.lang.String[] { "Header", }); + internal_static_cmvr_api_GetRGBImageCommand_Feedback_descriptor = + internal_static_cmvr_api_GetRGBImageCommand_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_GetRGBImageCommand_Feedback_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetRGBImageCommand_Feedback_descriptor, + new java.lang.String[] { "Header", "ColorFrame", }); + internal_static_cmvr_api_GetDepthImageCommand_descriptor = + getDescriptor().getMessageTypes().get(6); + internal_static_cmvr_api_GetDepthImageCommand_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetDepthImageCommand_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_GetDepthImageCommand_Request_descriptor = + internal_static_cmvr_api_GetDepthImageCommand_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_GetDepthImageCommand_Request_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetDepthImageCommand_Request_descriptor, + new java.lang.String[] { "Header", }); + internal_static_cmvr_api_GetDepthImageCommand_Feedback_descriptor = + internal_static_cmvr_api_GetDepthImageCommand_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_GetDepthImageCommand_Feedback_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetDepthImageCommand_Feedback_descriptor, + new java.lang.String[] { "Header", "DepthFrame", }); + internal_static_cmvr_api_GetRGBDImagesCommand_descriptor = + getDescriptor().getMessageTypes().get(7); + internal_static_cmvr_api_GetRGBDImagesCommand_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetRGBDImagesCommand_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_GetRGBDImagesCommand_Request_descriptor = + internal_static_cmvr_api_GetRGBDImagesCommand_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_GetRGBDImagesCommand_Request_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetRGBDImagesCommand_Request_descriptor, + new java.lang.String[] { "Header", }); + internal_static_cmvr_api_GetRGBDImagesCommand_Feedback_descriptor = + internal_static_cmvr_api_GetRGBDImagesCommand_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_GetRGBDImagesCommand_Feedback_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetRGBDImagesCommand_Feedback_descriptor, + new java.lang.String[] { "Header", "ColorFrame", "DepthFrame", }); + internal_static_cmvr_api_StartCameraRecordingCommand_descriptor = + getDescriptor().getMessageTypes().get(8); + internal_static_cmvr_api_StartCameraRecordingCommand_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_StartCameraRecordingCommand_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_StartCameraRecordingCommand_Request_descriptor = + internal_static_cmvr_api_StartCameraRecordingCommand_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_StartCameraRecordingCommand_Request_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_StartCameraRecordingCommand_Request_descriptor, + new java.lang.String[] { "Header", "VideoPath", }); + internal_static_cmvr_api_StartCameraRecordingCommand_Feedback_descriptor = + internal_static_cmvr_api_StartCameraRecordingCommand_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_StartCameraRecordingCommand_Feedback_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_StartCameraRecordingCommand_Feedback_descriptor, + new java.lang.String[] { "Header", }); + internal_static_cmvr_api_StopCameraRecordingCommand_descriptor = + getDescriptor().getMessageTypes().get(9); + internal_static_cmvr_api_StopCameraRecordingCommand_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_StopCameraRecordingCommand_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_StopCameraRecordingCommand_Request_descriptor = + internal_static_cmvr_api_StopCameraRecordingCommand_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_StopCameraRecordingCommand_Request_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_StopCameraRecordingCommand_Request_descriptor, + new java.lang.String[] { "Header", }); + internal_static_cmvr_api_StopCameraRecordingCommand_Feedback_descriptor = + internal_static_cmvr_api_StopCameraRecordingCommand_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_StopCameraRecordingCommand_Feedback_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_StopCameraRecordingCommand_Feedback_descriptor, + new java.lang.String[] { "Header", }); + internal_static_cmvr_api_GetRGBImageStreamCommand_descriptor = + getDescriptor().getMessageTypes().get(10); + internal_static_cmvr_api_GetRGBImageStreamCommand_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetRGBImageStreamCommand_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_GetRGBImageStreamCommand_Request_descriptor = + internal_static_cmvr_api_GetRGBImageStreamCommand_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_GetRGBImageStreamCommand_Request_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetRGBImageStreamCommand_Request_descriptor, + new java.lang.String[] { "Header", "Eof", }); + internal_static_cmvr_api_GetRGBImageStreamCommand_Feedback_descriptor = + internal_static_cmvr_api_GetRGBImageStreamCommand_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_GetRGBImageStreamCommand_Feedback_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetRGBImageStreamCommand_Feedback_descriptor, + new java.lang.String[] { "Header", "ColorFrame", "SeqNo", }); + internal_static_cmvr_api_GetDepthImageStreamCommand_descriptor = + getDescriptor().getMessageTypes().get(11); + internal_static_cmvr_api_GetDepthImageStreamCommand_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetDepthImageStreamCommand_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_GetDepthImageStreamCommand_Request_descriptor = + internal_static_cmvr_api_GetDepthImageStreamCommand_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_GetDepthImageStreamCommand_Request_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetDepthImageStreamCommand_Request_descriptor, + new java.lang.String[] { "Header", "Eof", }); + internal_static_cmvr_api_GetDepthImageStreamCommand_Feedback_descriptor = + internal_static_cmvr_api_GetDepthImageStreamCommand_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_GetDepthImageStreamCommand_Feedback_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetDepthImageStreamCommand_Feedback_descriptor, + new java.lang.String[] { "Header", "DepthFrame", "SeqNo", }); + internal_static_cmvr_api_GetRGBDImagesStreamCommand_descriptor = + getDescriptor().getMessageTypes().get(12); + internal_static_cmvr_api_GetRGBDImagesStreamCommand_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetRGBDImagesStreamCommand_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_GetRGBDImagesStreamCommand_Request_descriptor = + internal_static_cmvr_api_GetRGBDImagesStreamCommand_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_GetRGBDImagesStreamCommand_Request_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetRGBDImagesStreamCommand_Request_descriptor, + new java.lang.String[] { "Header", "Eof", }); + internal_static_cmvr_api_GetRGBDImagesStreamCommand_Feedback_descriptor = + internal_static_cmvr_api_GetRGBDImagesStreamCommand_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_GetRGBDImagesStreamCommand_Feedback_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetRGBDImagesStreamCommand_Feedback_descriptor, + new java.lang.String[] { "Header", "ColorFrame", "DepthFrame", "SeqNo", }); + cmvr.api.Common.getDescriptor(); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/CameraServiceGrpc.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/CameraServiceGrpc.java new file mode 100644 index 0000000..dfc84b5 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/CameraServiceGrpc.java @@ -0,0 +1,968 @@ +package cmvr.api; + +import static io.grpc.MethodDescriptor.generateFullMethodName; + +/** + */ +@javax.annotation.Generated( + value = "by gRPC proto compiler (version 1.52.0)", + comments = "Source: cmvr/api/camera_service.proto") +@io.grpc.stub.annotations.GrpcGenerated +public final class CameraServiceGrpc { + + private CameraServiceGrpc() {} + + public static final String SERVICE_NAME = "cmvr.api.CameraService"; + + // Static method descriptors that strictly reflect the proto. + private static volatile io.grpc.MethodDescriptor getGetStatusMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "GetStatus", + requestType = cmvr.api.CameraCommand.GetCameraStateCommand.Request.class, + responseType = cmvr.api.CameraCommand.GetCameraStateCommand.Feedback.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getGetStatusMethod() { + io.grpc.MethodDescriptor getGetStatusMethod; + if ((getGetStatusMethod = CameraServiceGrpc.getGetStatusMethod) == null) { + synchronized (CameraServiceGrpc.class) { + if ((getGetStatusMethod = CameraServiceGrpc.getGetStatusMethod) == null) { + CameraServiceGrpc.getGetStatusMethod = getGetStatusMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetStatus")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.CameraCommand.GetCameraStateCommand.Request.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.CameraCommand.GetCameraStateCommand.Feedback.getDefaultInstance())) + .setSchemaDescriptor(new CameraServiceMethodDescriptorSupplier("GetStatus")) + .build(); + } + } + } + return getGetStatusMethod; + } + + private static volatile io.grpc.MethodDescriptor getStartCameraMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "StartCamera", + requestType = cmvr.api.CameraCommand.StartCameraCommand.Request.class, + responseType = cmvr.api.CameraCommand.StartCameraCommand.Feedback.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getStartCameraMethod() { + io.grpc.MethodDescriptor getStartCameraMethod; + if ((getStartCameraMethod = CameraServiceGrpc.getStartCameraMethod) == null) { + synchronized (CameraServiceGrpc.class) { + if ((getStartCameraMethod = CameraServiceGrpc.getStartCameraMethod) == null) { + CameraServiceGrpc.getStartCameraMethod = getStartCameraMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "StartCamera")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.CameraCommand.StartCameraCommand.Request.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.CameraCommand.StartCameraCommand.Feedback.getDefaultInstance())) + .setSchemaDescriptor(new CameraServiceMethodDescriptorSupplier("StartCamera")) + .build(); + } + } + } + return getStartCameraMethod; + } + + private static volatile io.grpc.MethodDescriptor getStopCameraMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "StopCamera", + requestType = cmvr.api.CameraCommand.StopCameraCommand.Request.class, + responseType = cmvr.api.CameraCommand.StopCameraCommand.Feedback.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getStopCameraMethod() { + io.grpc.MethodDescriptor getStopCameraMethod; + if ((getStopCameraMethod = CameraServiceGrpc.getStopCameraMethod) == null) { + synchronized (CameraServiceGrpc.class) { + if ((getStopCameraMethod = CameraServiceGrpc.getStopCameraMethod) == null) { + CameraServiceGrpc.getStopCameraMethod = getStopCameraMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "StopCamera")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.CameraCommand.StopCameraCommand.Request.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.CameraCommand.StopCameraCommand.Feedback.getDefaultInstance())) + .setSchemaDescriptor(new CameraServiceMethodDescriptorSupplier("StopCamera")) + .build(); + } + } + } + return getStopCameraMethod; + } + + private static volatile io.grpc.MethodDescriptor getGetRGBImageMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "GetRGBImage", + requestType = cmvr.api.CameraCommand.GetRGBImageCommand.Request.class, + responseType = cmvr.api.CameraCommand.GetRGBImageCommand.Feedback.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getGetRGBImageMethod() { + io.grpc.MethodDescriptor getGetRGBImageMethod; + if ((getGetRGBImageMethod = CameraServiceGrpc.getGetRGBImageMethod) == null) { + synchronized (CameraServiceGrpc.class) { + if ((getGetRGBImageMethod = CameraServiceGrpc.getGetRGBImageMethod) == null) { + CameraServiceGrpc.getGetRGBImageMethod = getGetRGBImageMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetRGBImage")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.CameraCommand.GetRGBImageCommand.Request.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.CameraCommand.GetRGBImageCommand.Feedback.getDefaultInstance())) + .setSchemaDescriptor(new CameraServiceMethodDescriptorSupplier("GetRGBImage")) + .build(); + } + } + } + return getGetRGBImageMethod; + } + + private static volatile io.grpc.MethodDescriptor getGetDepthImageMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "GetDepthImage", + requestType = cmvr.api.CameraCommand.GetDepthImageCommand.Request.class, + responseType = cmvr.api.CameraCommand.GetDepthImageCommand.Feedback.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getGetDepthImageMethod() { + io.grpc.MethodDescriptor getGetDepthImageMethod; + if ((getGetDepthImageMethod = CameraServiceGrpc.getGetDepthImageMethod) == null) { + synchronized (CameraServiceGrpc.class) { + if ((getGetDepthImageMethod = CameraServiceGrpc.getGetDepthImageMethod) == null) { + CameraServiceGrpc.getGetDepthImageMethod = getGetDepthImageMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetDepthImage")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.CameraCommand.GetDepthImageCommand.Request.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.CameraCommand.GetDepthImageCommand.Feedback.getDefaultInstance())) + .setSchemaDescriptor(new CameraServiceMethodDescriptorSupplier("GetDepthImage")) + .build(); + } + } + } + return getGetDepthImageMethod; + } + + private static volatile io.grpc.MethodDescriptor getGetRGBDImagesMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "GetRGBDImages", + requestType = cmvr.api.CameraCommand.GetRGBDImagesCommand.Request.class, + responseType = cmvr.api.CameraCommand.GetRGBDImagesCommand.Feedback.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getGetRGBDImagesMethod() { + io.grpc.MethodDescriptor getGetRGBDImagesMethod; + if ((getGetRGBDImagesMethod = CameraServiceGrpc.getGetRGBDImagesMethod) == null) { + synchronized (CameraServiceGrpc.class) { + if ((getGetRGBDImagesMethod = CameraServiceGrpc.getGetRGBDImagesMethod) == null) { + CameraServiceGrpc.getGetRGBDImagesMethod = getGetRGBDImagesMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetRGBDImages")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.CameraCommand.GetRGBDImagesCommand.Request.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.CameraCommand.GetRGBDImagesCommand.Feedback.getDefaultInstance())) + .setSchemaDescriptor(new CameraServiceMethodDescriptorSupplier("GetRGBDImages")) + .build(); + } + } + } + return getGetRGBDImagesMethod; + } + + private static volatile io.grpc.MethodDescriptor getStartRecordingMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "StartRecording", + requestType = cmvr.api.CameraCommand.StartCameraRecordingCommand.Request.class, + responseType = cmvr.api.CameraCommand.StartCameraRecordingCommand.Feedback.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getStartRecordingMethod() { + io.grpc.MethodDescriptor getStartRecordingMethod; + if ((getStartRecordingMethod = CameraServiceGrpc.getStartRecordingMethod) == null) { + synchronized (CameraServiceGrpc.class) { + if ((getStartRecordingMethod = CameraServiceGrpc.getStartRecordingMethod) == null) { + CameraServiceGrpc.getStartRecordingMethod = getStartRecordingMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "StartRecording")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.CameraCommand.StartCameraRecordingCommand.Request.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.CameraCommand.StartCameraRecordingCommand.Feedback.getDefaultInstance())) + .setSchemaDescriptor(new CameraServiceMethodDescriptorSupplier("StartRecording")) + .build(); + } + } + } + return getStartRecordingMethod; + } + + private static volatile io.grpc.MethodDescriptor getStopRecordingMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "StopRecording", + requestType = cmvr.api.CameraCommand.StopCameraRecordingCommand.Request.class, + responseType = cmvr.api.CameraCommand.StopCameraRecordingCommand.Feedback.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getStopRecordingMethod() { + io.grpc.MethodDescriptor getStopRecordingMethod; + if ((getStopRecordingMethod = CameraServiceGrpc.getStopRecordingMethod) == null) { + synchronized (CameraServiceGrpc.class) { + if ((getStopRecordingMethod = CameraServiceGrpc.getStopRecordingMethod) == null) { + CameraServiceGrpc.getStopRecordingMethod = getStopRecordingMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "StopRecording")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.CameraCommand.StopCameraRecordingCommand.Request.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.CameraCommand.StopCameraRecordingCommand.Feedback.getDefaultInstance())) + .setSchemaDescriptor(new CameraServiceMethodDescriptorSupplier("StopRecording")) + .build(); + } + } + } + return getStopRecordingMethod; + } + + private static volatile io.grpc.MethodDescriptor getGetRGBImageStreamMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "GetRGBImageStream", + requestType = cmvr.api.CameraCommand.GetRGBImageStreamCommand.Request.class, + responseType = cmvr.api.CameraCommand.GetRGBImageStreamCommand.Feedback.class, + methodType = io.grpc.MethodDescriptor.MethodType.BIDI_STREAMING) + public static io.grpc.MethodDescriptor getGetRGBImageStreamMethod() { + io.grpc.MethodDescriptor getGetRGBImageStreamMethod; + if ((getGetRGBImageStreamMethod = CameraServiceGrpc.getGetRGBImageStreamMethod) == null) { + synchronized (CameraServiceGrpc.class) { + if ((getGetRGBImageStreamMethod = CameraServiceGrpc.getGetRGBImageStreamMethod) == null) { + CameraServiceGrpc.getGetRGBImageStreamMethod = getGetRGBImageStreamMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.BIDI_STREAMING) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetRGBImageStream")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.CameraCommand.GetRGBImageStreamCommand.Request.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.CameraCommand.GetRGBImageStreamCommand.Feedback.getDefaultInstance())) + .setSchemaDescriptor(new CameraServiceMethodDescriptorSupplier("GetRGBImageStream")) + .build(); + } + } + } + return getGetRGBImageStreamMethod; + } + + private static volatile io.grpc.MethodDescriptor getGetDepthImageStreamMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "GetDepthImageStream", + requestType = cmvr.api.CameraCommand.GetDepthImageStreamCommand.Request.class, + responseType = cmvr.api.CameraCommand.GetDepthImageStreamCommand.Feedback.class, + methodType = io.grpc.MethodDescriptor.MethodType.BIDI_STREAMING) + public static io.grpc.MethodDescriptor getGetDepthImageStreamMethod() { + io.grpc.MethodDescriptor getGetDepthImageStreamMethod; + if ((getGetDepthImageStreamMethod = CameraServiceGrpc.getGetDepthImageStreamMethod) == null) { + synchronized (CameraServiceGrpc.class) { + if ((getGetDepthImageStreamMethod = CameraServiceGrpc.getGetDepthImageStreamMethod) == null) { + CameraServiceGrpc.getGetDepthImageStreamMethod = getGetDepthImageStreamMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.BIDI_STREAMING) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetDepthImageStream")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.CameraCommand.GetDepthImageStreamCommand.Request.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.CameraCommand.GetDepthImageStreamCommand.Feedback.getDefaultInstance())) + .setSchemaDescriptor(new CameraServiceMethodDescriptorSupplier("GetDepthImageStream")) + .build(); + } + } + } + return getGetDepthImageStreamMethod; + } + + private static volatile io.grpc.MethodDescriptor getGetRGBDImagesStreamMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "GetRGBDImagesStream", + requestType = cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Request.class, + responseType = cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Feedback.class, + methodType = io.grpc.MethodDescriptor.MethodType.BIDI_STREAMING) + public static io.grpc.MethodDescriptor getGetRGBDImagesStreamMethod() { + io.grpc.MethodDescriptor getGetRGBDImagesStreamMethod; + if ((getGetRGBDImagesStreamMethod = CameraServiceGrpc.getGetRGBDImagesStreamMethod) == null) { + synchronized (CameraServiceGrpc.class) { + if ((getGetRGBDImagesStreamMethod = CameraServiceGrpc.getGetRGBDImagesStreamMethod) == null) { + CameraServiceGrpc.getGetRGBDImagesStreamMethod = getGetRGBDImagesStreamMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.BIDI_STREAMING) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetRGBDImagesStream")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Request.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Feedback.getDefaultInstance())) + .setSchemaDescriptor(new CameraServiceMethodDescriptorSupplier("GetRGBDImagesStream")) + .build(); + } + } + } + return getGetRGBDImagesStreamMethod; + } + + /** + * Creates a new async stub that supports all call types for the service + */ + public static CameraServiceStub newStub(io.grpc.Channel channel) { + io.grpc.stub.AbstractStub.StubFactory factory = + new io.grpc.stub.AbstractStub.StubFactory() { + @java.lang.Override + public CameraServiceStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new CameraServiceStub(channel, callOptions); + } + }; + return CameraServiceStub.newStub(factory, channel); + } + + /** + * Creates a new blocking-style stub that supports unary and streaming output calls on the service + */ + public static CameraServiceBlockingStub newBlockingStub( + io.grpc.Channel channel) { + io.grpc.stub.AbstractStub.StubFactory factory = + new io.grpc.stub.AbstractStub.StubFactory() { + @java.lang.Override + public CameraServiceBlockingStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new CameraServiceBlockingStub(channel, callOptions); + } + }; + return CameraServiceBlockingStub.newStub(factory, channel); + } + + /** + * Creates a new ListenableFuture-style stub that supports unary calls on the service + */ + public static CameraServiceFutureStub newFutureStub( + io.grpc.Channel channel) { + io.grpc.stub.AbstractStub.StubFactory factory = + new io.grpc.stub.AbstractStub.StubFactory() { + @java.lang.Override + public CameraServiceFutureStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new CameraServiceFutureStub(channel, callOptions); + } + }; + return CameraServiceFutureStub.newStub(factory, channel); + } + + /** + */ + public static abstract class CameraServiceImplBase implements io.grpc.BindableService { + + /** + */ + public void getStatus(cmvr.api.CameraCommand.GetCameraStateCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetStatusMethod(), responseObserver); + } + + /** + */ + public void startCamera(cmvr.api.CameraCommand.StartCameraCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getStartCameraMethod(), responseObserver); + } + + /** + */ + public void stopCamera(cmvr.api.CameraCommand.StopCameraCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getStopCameraMethod(), responseObserver); + } + + /** + */ + public void getRGBImage(cmvr.api.CameraCommand.GetRGBImageCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetRGBImageMethod(), responseObserver); + } + + /** + */ + public void getDepthImage(cmvr.api.CameraCommand.GetDepthImageCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetDepthImageMethod(), responseObserver); + } + + /** + */ + public void getRGBDImages(cmvr.api.CameraCommand.GetRGBDImagesCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetRGBDImagesMethod(), responseObserver); + } + + /** + */ + public void startRecording(cmvr.api.CameraCommand.StartCameraRecordingCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getStartRecordingMethod(), responseObserver); + } + + /** + */ + public void stopRecording(cmvr.api.CameraCommand.StopCameraRecordingCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getStopRecordingMethod(), responseObserver); + } + + /** + */ + public io.grpc.stub.StreamObserver getRGBImageStream( + io.grpc.stub.StreamObserver responseObserver) { + return io.grpc.stub.ServerCalls.asyncUnimplementedStreamingCall(getGetRGBImageStreamMethod(), responseObserver); + } + + /** + */ + public io.grpc.stub.StreamObserver getDepthImageStream( + io.grpc.stub.StreamObserver responseObserver) { + return io.grpc.stub.ServerCalls.asyncUnimplementedStreamingCall(getGetDepthImageStreamMethod(), responseObserver); + } + + /** + */ + public io.grpc.stub.StreamObserver getRGBDImagesStream( + io.grpc.stub.StreamObserver responseObserver) { + return io.grpc.stub.ServerCalls.asyncUnimplementedStreamingCall(getGetRGBDImagesStreamMethod(), responseObserver); + } + + @java.lang.Override public final io.grpc.ServerServiceDefinition bindService() { + return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()) + .addMethod( + getGetStatusMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + cmvr.api.CameraCommand.GetCameraStateCommand.Request, + cmvr.api.CameraCommand.GetCameraStateCommand.Feedback>( + this, METHODID_GET_STATUS))) + .addMethod( + getStartCameraMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + cmvr.api.CameraCommand.StartCameraCommand.Request, + cmvr.api.CameraCommand.StartCameraCommand.Feedback>( + this, METHODID_START_CAMERA))) + .addMethod( + getStopCameraMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + cmvr.api.CameraCommand.StopCameraCommand.Request, + cmvr.api.CameraCommand.StopCameraCommand.Feedback>( + this, METHODID_STOP_CAMERA))) + .addMethod( + getGetRGBImageMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + cmvr.api.CameraCommand.GetRGBImageCommand.Request, + cmvr.api.CameraCommand.GetRGBImageCommand.Feedback>( + this, METHODID_GET_RGBIMAGE))) + .addMethod( + getGetDepthImageMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + cmvr.api.CameraCommand.GetDepthImageCommand.Request, + cmvr.api.CameraCommand.GetDepthImageCommand.Feedback>( + this, METHODID_GET_DEPTH_IMAGE))) + .addMethod( + getGetRGBDImagesMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + cmvr.api.CameraCommand.GetRGBDImagesCommand.Request, + cmvr.api.CameraCommand.GetRGBDImagesCommand.Feedback>( + this, METHODID_GET_RGBDIMAGES))) + .addMethod( + getStartRecordingMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + cmvr.api.CameraCommand.StartCameraRecordingCommand.Request, + cmvr.api.CameraCommand.StartCameraRecordingCommand.Feedback>( + this, METHODID_START_RECORDING))) + .addMethod( + getStopRecordingMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + cmvr.api.CameraCommand.StopCameraRecordingCommand.Request, + cmvr.api.CameraCommand.StopCameraRecordingCommand.Feedback>( + this, METHODID_STOP_RECORDING))) + .addMethod( + getGetRGBImageStreamMethod(), + io.grpc.stub.ServerCalls.asyncBidiStreamingCall( + new MethodHandlers< + cmvr.api.CameraCommand.GetRGBImageStreamCommand.Request, + cmvr.api.CameraCommand.GetRGBImageStreamCommand.Feedback>( + this, METHODID_GET_RGBIMAGE_STREAM))) + .addMethod( + getGetDepthImageStreamMethod(), + io.grpc.stub.ServerCalls.asyncBidiStreamingCall( + new MethodHandlers< + cmvr.api.CameraCommand.GetDepthImageStreamCommand.Request, + cmvr.api.CameraCommand.GetDepthImageStreamCommand.Feedback>( + this, METHODID_GET_DEPTH_IMAGE_STREAM))) + .addMethod( + getGetRGBDImagesStreamMethod(), + io.grpc.stub.ServerCalls.asyncBidiStreamingCall( + new MethodHandlers< + cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Request, + cmvr.api.CameraCommand.GetRGBDImagesStreamCommand.Feedback>( + this, METHODID_GET_RGBDIMAGES_STREAM))) + .build(); + } + } + + /** + */ + public static final class CameraServiceStub extends io.grpc.stub.AbstractAsyncStub { + private CameraServiceStub( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + super(channel, callOptions); + } + + @java.lang.Override + protected CameraServiceStub build( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new CameraServiceStub(channel, callOptions); + } + + /** + */ + public void getStatus(cmvr.api.CameraCommand.GetCameraStateCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getGetStatusMethod(), getCallOptions()), request, responseObserver); + } + + /** + */ + public void startCamera(cmvr.api.CameraCommand.StartCameraCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getStartCameraMethod(), getCallOptions()), request, responseObserver); + } + + /** + */ + public void stopCamera(cmvr.api.CameraCommand.StopCameraCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getStopCameraMethod(), getCallOptions()), request, responseObserver); + } + + /** + */ + public void getRGBImage(cmvr.api.CameraCommand.GetRGBImageCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getGetRGBImageMethod(), getCallOptions()), request, responseObserver); + } + + /** + */ + public void getDepthImage(cmvr.api.CameraCommand.GetDepthImageCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getGetDepthImageMethod(), getCallOptions()), request, responseObserver); + } + + /** + */ + public void getRGBDImages(cmvr.api.CameraCommand.GetRGBDImagesCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getGetRGBDImagesMethod(), getCallOptions()), request, responseObserver); + } + + /** + */ + public void startRecording(cmvr.api.CameraCommand.StartCameraRecordingCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getStartRecordingMethod(), getCallOptions()), request, responseObserver); + } + + /** + */ + public void stopRecording(cmvr.api.CameraCommand.StopCameraRecordingCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getStopRecordingMethod(), getCallOptions()), request, responseObserver); + } + + /** + */ + public io.grpc.stub.StreamObserver getRGBImageStream( + io.grpc.stub.StreamObserver responseObserver) { + return io.grpc.stub.ClientCalls.asyncBidiStreamingCall( + getChannel().newCall(getGetRGBImageStreamMethod(), getCallOptions()), responseObserver); + } + + /** + */ + public io.grpc.stub.StreamObserver getDepthImageStream( + io.grpc.stub.StreamObserver responseObserver) { + return io.grpc.stub.ClientCalls.asyncBidiStreamingCall( + getChannel().newCall(getGetDepthImageStreamMethod(), getCallOptions()), responseObserver); + } + + /** + */ + public io.grpc.stub.StreamObserver getRGBDImagesStream( + io.grpc.stub.StreamObserver responseObserver) { + return io.grpc.stub.ClientCalls.asyncBidiStreamingCall( + getChannel().newCall(getGetRGBDImagesStreamMethod(), getCallOptions()), responseObserver); + } + } + + /** + */ + public static final class CameraServiceBlockingStub extends io.grpc.stub.AbstractBlockingStub { + private CameraServiceBlockingStub( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + super(channel, callOptions); + } + + @java.lang.Override + protected CameraServiceBlockingStub build( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new CameraServiceBlockingStub(channel, callOptions); + } + + /** + */ + public cmvr.api.CameraCommand.GetCameraStateCommand.Feedback getStatus(cmvr.api.CameraCommand.GetCameraStateCommand.Request request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getGetStatusMethod(), getCallOptions(), request); + } + + /** + */ + public cmvr.api.CameraCommand.StartCameraCommand.Feedback startCamera(cmvr.api.CameraCommand.StartCameraCommand.Request request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getStartCameraMethod(), getCallOptions(), request); + } + + /** + */ + public cmvr.api.CameraCommand.StopCameraCommand.Feedback stopCamera(cmvr.api.CameraCommand.StopCameraCommand.Request request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getStopCameraMethod(), getCallOptions(), request); + } + + /** + */ + public cmvr.api.CameraCommand.GetRGBImageCommand.Feedback getRGBImage(cmvr.api.CameraCommand.GetRGBImageCommand.Request request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getGetRGBImageMethod(), getCallOptions(), request); + } + + /** + */ + public cmvr.api.CameraCommand.GetDepthImageCommand.Feedback getDepthImage(cmvr.api.CameraCommand.GetDepthImageCommand.Request request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getGetDepthImageMethod(), getCallOptions(), request); + } + + /** + */ + public cmvr.api.CameraCommand.GetRGBDImagesCommand.Feedback getRGBDImages(cmvr.api.CameraCommand.GetRGBDImagesCommand.Request request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getGetRGBDImagesMethod(), getCallOptions(), request); + } + + /** + */ + public cmvr.api.CameraCommand.StartCameraRecordingCommand.Feedback startRecording(cmvr.api.CameraCommand.StartCameraRecordingCommand.Request request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getStartRecordingMethod(), getCallOptions(), request); + } + + /** + */ + public cmvr.api.CameraCommand.StopCameraRecordingCommand.Feedback stopRecording(cmvr.api.CameraCommand.StopCameraRecordingCommand.Request request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getStopRecordingMethod(), getCallOptions(), request); + } + } + + /** + */ + public static final class CameraServiceFutureStub extends io.grpc.stub.AbstractFutureStub { + private CameraServiceFutureStub( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + super(channel, callOptions); + } + + @java.lang.Override + protected CameraServiceFutureStub build( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new CameraServiceFutureStub(channel, callOptions); + } + + /** + */ + public com.google.common.util.concurrent.ListenableFuture getStatus( + cmvr.api.CameraCommand.GetCameraStateCommand.Request request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getGetStatusMethod(), getCallOptions()), request); + } + + /** + */ + public com.google.common.util.concurrent.ListenableFuture startCamera( + cmvr.api.CameraCommand.StartCameraCommand.Request request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getStartCameraMethod(), getCallOptions()), request); + } + + /** + */ + public com.google.common.util.concurrent.ListenableFuture stopCamera( + cmvr.api.CameraCommand.StopCameraCommand.Request request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getStopCameraMethod(), getCallOptions()), request); + } + + /** + */ + public com.google.common.util.concurrent.ListenableFuture getRGBImage( + cmvr.api.CameraCommand.GetRGBImageCommand.Request request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getGetRGBImageMethod(), getCallOptions()), request); + } + + /** + */ + public com.google.common.util.concurrent.ListenableFuture getDepthImage( + cmvr.api.CameraCommand.GetDepthImageCommand.Request request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getGetDepthImageMethod(), getCallOptions()), request); + } + + /** + */ + public com.google.common.util.concurrent.ListenableFuture getRGBDImages( + cmvr.api.CameraCommand.GetRGBDImagesCommand.Request request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getGetRGBDImagesMethod(), getCallOptions()), request); + } + + /** + */ + public com.google.common.util.concurrent.ListenableFuture startRecording( + cmvr.api.CameraCommand.StartCameraRecordingCommand.Request request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getStartRecordingMethod(), getCallOptions()), request); + } + + /** + */ + public com.google.common.util.concurrent.ListenableFuture stopRecording( + cmvr.api.CameraCommand.StopCameraRecordingCommand.Request request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getStopRecordingMethod(), getCallOptions()), request); + } + } + + private static final int METHODID_GET_STATUS = 0; + private static final int METHODID_START_CAMERA = 1; + private static final int METHODID_STOP_CAMERA = 2; + private static final int METHODID_GET_RGBIMAGE = 3; + private static final int METHODID_GET_DEPTH_IMAGE = 4; + private static final int METHODID_GET_RGBDIMAGES = 5; + private static final int METHODID_START_RECORDING = 6; + private static final int METHODID_STOP_RECORDING = 7; + private static final int METHODID_GET_RGBIMAGE_STREAM = 8; + private static final int METHODID_GET_DEPTH_IMAGE_STREAM = 9; + private static final int METHODID_GET_RGBDIMAGES_STREAM = 10; + + private static final class MethodHandlers implements + io.grpc.stub.ServerCalls.UnaryMethod, + io.grpc.stub.ServerCalls.ServerStreamingMethod, + io.grpc.stub.ServerCalls.ClientStreamingMethod, + io.grpc.stub.ServerCalls.BidiStreamingMethod { + private final CameraServiceImplBase serviceImpl; + private final int methodId; + + MethodHandlers(CameraServiceImplBase serviceImpl, int methodId) { + this.serviceImpl = serviceImpl; + this.methodId = methodId; + } + + @java.lang.Override + @java.lang.SuppressWarnings("unchecked") + public void invoke(Req request, io.grpc.stub.StreamObserver responseObserver) { + switch (methodId) { + case METHODID_GET_STATUS: + serviceImpl.getStatus((cmvr.api.CameraCommand.GetCameraStateCommand.Request) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; + case METHODID_START_CAMERA: + serviceImpl.startCamera((cmvr.api.CameraCommand.StartCameraCommand.Request) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; + case METHODID_STOP_CAMERA: + serviceImpl.stopCamera((cmvr.api.CameraCommand.StopCameraCommand.Request) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; + case METHODID_GET_RGBIMAGE: + serviceImpl.getRGBImage((cmvr.api.CameraCommand.GetRGBImageCommand.Request) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; + case METHODID_GET_DEPTH_IMAGE: + serviceImpl.getDepthImage((cmvr.api.CameraCommand.GetDepthImageCommand.Request) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; + case METHODID_GET_RGBDIMAGES: + serviceImpl.getRGBDImages((cmvr.api.CameraCommand.GetRGBDImagesCommand.Request) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; + case METHODID_START_RECORDING: + serviceImpl.startRecording((cmvr.api.CameraCommand.StartCameraRecordingCommand.Request) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; + case METHODID_STOP_RECORDING: + serviceImpl.stopRecording((cmvr.api.CameraCommand.StopCameraRecordingCommand.Request) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; + default: + throw new AssertionError(); + } + } + + @java.lang.Override + @java.lang.SuppressWarnings("unchecked") + public io.grpc.stub.StreamObserver invoke( + io.grpc.stub.StreamObserver responseObserver) { + switch (methodId) { + case METHODID_GET_RGBIMAGE_STREAM: + return (io.grpc.stub.StreamObserver) serviceImpl.getRGBImageStream( + (io.grpc.stub.StreamObserver) responseObserver); + case METHODID_GET_DEPTH_IMAGE_STREAM: + return (io.grpc.stub.StreamObserver) serviceImpl.getDepthImageStream( + (io.grpc.stub.StreamObserver) responseObserver); + case METHODID_GET_RGBDIMAGES_STREAM: + return (io.grpc.stub.StreamObserver) serviceImpl.getRGBDImagesStream( + (io.grpc.stub.StreamObserver) responseObserver); + default: + throw new AssertionError(); + } + } + } + + private static abstract class CameraServiceBaseDescriptorSupplier + implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier { + CameraServiceBaseDescriptorSupplier() {} + + @java.lang.Override + public com.google.protobuf.Descriptors.FileDescriptor getFileDescriptor() { + return cmvr.api.CameraServiceOuterClass.getDescriptor(); + } + + @java.lang.Override + public com.google.protobuf.Descriptors.ServiceDescriptor getServiceDescriptor() { + return getFileDescriptor().findServiceByName("CameraService"); + } + } + + private static final class CameraServiceFileDescriptorSupplier + extends CameraServiceBaseDescriptorSupplier { + CameraServiceFileDescriptorSupplier() {} + } + + private static final class CameraServiceMethodDescriptorSupplier + extends CameraServiceBaseDescriptorSupplier + implements io.grpc.protobuf.ProtoMethodDescriptorSupplier { + private final String methodName; + + CameraServiceMethodDescriptorSupplier(String methodName) { + this.methodName = methodName; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.MethodDescriptor getMethodDescriptor() { + return getServiceDescriptor().findMethodByName(methodName); + } + } + + private static volatile io.grpc.ServiceDescriptor serviceDescriptor; + + public static io.grpc.ServiceDescriptor getServiceDescriptor() { + io.grpc.ServiceDescriptor result = serviceDescriptor; + if (result == null) { + synchronized (CameraServiceGrpc.class) { + result = serviceDescriptor; + if (result == null) { + serviceDescriptor = result = io.grpc.ServiceDescriptor.newBuilder(SERVICE_NAME) + .setSchemaDescriptor(new CameraServiceFileDescriptorSupplier()) + .addMethod(getGetStatusMethod()) + .addMethod(getStartCameraMethod()) + .addMethod(getStopCameraMethod()) + .addMethod(getGetRGBImageMethod()) + .addMethod(getGetDepthImageMethod()) + .addMethod(getGetRGBDImagesMethod()) + .addMethod(getStartRecordingMethod()) + .addMethod(getStopRecordingMethod()) + .addMethod(getGetRGBImageStreamMethod()) + .addMethod(getGetDepthImageStreamMethod()) + .addMethod(getGetRGBDImagesStreamMethod()) + .build(); + } + } + } + return result; + } +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/CameraServiceOuterClass.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/CameraServiceOuterClass.java new file mode 100644 index 0000000..3a14894 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/CameraServiceOuterClass.java @@ -0,0 +1,68 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: cmvr/api/camera_service.proto + +package cmvr.api; + +public final class CameraServiceOuterClass { + private CameraServiceOuterClass() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistryLite registry) { + } + + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + registerAllExtensions( + (com.google.protobuf.ExtensionRegistryLite) registry); + } + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n\035cmvr/api/camera_service.proto\022\010cmvr.ap" + + "i\032\035cmvr/api/camera_command.proto2\233\t\n\rCam" + + "eraService\022`\n\tGetStatus\022\'.cmvr.api.GetCa" + + "meraStateCommand.Request\032(.cmvr.api.GetC" + + "ameraStateCommand.Feedback\"\000\022\\\n\013StartCam" + + "era\022$.cmvr.api.StartCameraCommand.Reques" + + "t\032%.cmvr.api.StartCameraCommand.Feedback" + + "\"\000\022Y\n\nStopCamera\022#.cmvr.api.StopCameraCo" + + "mmand.Request\032$.cmvr.api.StopCameraComma" + + "nd.Feedback\"\000\022\\\n\013GetRGBImage\022$.cmvr.api." + + "GetRGBImageCommand.Request\032%.cmvr.api.Ge" + + "tRGBImageCommand.Feedback\"\000\022b\n\rGetDepthI" + + "mage\022&.cmvr.api.GetDepthImageCommand.Req" + + "uest\032\'.cmvr.api.GetDepthImageCommand.Fee" + + "dback\"\000\022b\n\rGetRGBDImages\022&.cmvr.api.GetR" + + "GBDImagesCommand.Request\032\'.cmvr.api.GetR" + + "GBDImagesCommand.Feedback\"\000\022q\n\016StartReco" + + "rding\022-.cmvr.api.StartCameraRecordingCom" + + "mand.Request\032..cmvr.api.StartCameraRecor" + + "dingCommand.Feedback\"\000\022n\n\rStopRecording\022" + + ",.cmvr.api.StopCameraRecordingCommand.Re" + + "quest\032-.cmvr.api.StopCameraRecordingComm" + + "and.Feedback\"\000\022r\n\021GetRGBImageStream\022*.cm" + + "vr.api.GetRGBImageStreamCommand.Request\032" + + "+.cmvr.api.GetRGBImageStreamCommand.Feed" + + "back\"\000(\0010\001\022x\n\023GetDepthImageStream\022,.cmvr" + + ".api.GetDepthImageStreamCommand.Request\032" + + "-.cmvr.api.GetDepthImageStreamCommand.Fe" + + "edback\"\000(\0010\001\022x\n\023GetRGBDImagesStream\022,.cm" + + "vr.api.GetRGBDImagesStreamCommand.Reques" + + "t\032-.cmvr.api.GetRGBDImagesStreamCommand." + + "Feedback\"\000(\0010\001b\006proto3" + }; + descriptor = com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + cmvr.api.CameraCommand.getDescriptor(), + }); + cmvr.api.CameraCommand.getDescriptor(); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/Common.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/Common.java new file mode 100644 index 0000000..fc321ec --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/Common.java @@ -0,0 +1,2917 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: cmvr/api/common.proto + +package cmvr.api; + +public final class Common { + private Common() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistryLite registry) { + } + + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + registerAllExtensions( + (com.google.protobuf.ExtensionRegistryLite) registry); + } + public interface DeviceLifecycleOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.DeviceLifecycle) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.DeviceLifecycle.Lifecycle state = 1; + * @return The enum numeric value on the wire for state. + */ + int getStateValue(); + /** + * .cmvr.api.DeviceLifecycle.Lifecycle state = 1; + * @return The state. + */ + cmvr.api.Common.DeviceLifecycle.Lifecycle getState(); + } + /** + * Protobuf type {@code cmvr.api.DeviceLifecycle} + */ + public static final class DeviceLifecycle extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.DeviceLifecycle) + DeviceLifecycleOrBuilder { + private static final long serialVersionUID = 0L; + // Use DeviceLifecycle.newBuilder() to construct. + private DeviceLifecycle(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private DeviceLifecycle() { + state_ = 0; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new DeviceLifecycle(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.Common.internal_static_cmvr_api_DeviceLifecycle_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.Common.internal_static_cmvr_api_DeviceLifecycle_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.Common.DeviceLifecycle.class, cmvr.api.Common.DeviceLifecycle.Builder.class); + } + + /** + * Protobuf enum {@code cmvr.api.DeviceLifecycle.Lifecycle} + */ + public enum Lifecycle + implements com.google.protobuf.ProtocolMessageEnum { + /** + * STATE_INIT = 0; + */ + STATE_INIT(0), + /** + * STATE_READY = 1; + */ + STATE_READY(1), + /** + * STATE_RUNNING = 2; + */ + STATE_RUNNING(2), + /** + * STATE_ERROR = 3; + */ + STATE_ERROR(3), + /** + * STATE_ESTOP = 4; + */ + STATE_ESTOP(4), + /** + * STATE_STOP = 5; + */ + STATE_STOP(5), + UNRECOGNIZED(-1), + ; + + /** + * STATE_INIT = 0; + */ + public static final int STATE_INIT_VALUE = 0; + /** + * STATE_READY = 1; + */ + public static final int STATE_READY_VALUE = 1; + /** + * STATE_RUNNING = 2; + */ + public static final int STATE_RUNNING_VALUE = 2; + /** + * STATE_ERROR = 3; + */ + public static final int STATE_ERROR_VALUE = 3; + /** + * STATE_ESTOP = 4; + */ + public static final int STATE_ESTOP_VALUE = 4; + /** + * STATE_STOP = 5; + */ + public static final int STATE_STOP_VALUE = 5; + + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static Lifecycle valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static Lifecycle forNumber(int value) { + switch (value) { + case 0: return STATE_INIT; + case 1: return STATE_READY; + case 2: return STATE_RUNNING; + case 3: return STATE_ERROR; + case 4: return STATE_ESTOP; + case 5: return STATE_STOP; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + Lifecycle> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public Lifecycle findValueByNumber(int number) { + return Lifecycle.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(ordinal()); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return cmvr.api.Common.DeviceLifecycle.getDescriptor().getEnumTypes().get(0); + } + + private static final Lifecycle[] VALUES = values(); + + public static Lifecycle valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private Lifecycle(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:cmvr.api.DeviceLifecycle.Lifecycle) + } + + public static final int STATE_FIELD_NUMBER = 1; + private int state_; + /** + * .cmvr.api.DeviceLifecycle.Lifecycle state = 1; + * @return The enum numeric value on the wire for state. + */ + @java.lang.Override public int getStateValue() { + return state_; + } + /** + * .cmvr.api.DeviceLifecycle.Lifecycle state = 1; + * @return The state. + */ + @java.lang.Override public cmvr.api.Common.DeviceLifecycle.Lifecycle getState() { + @SuppressWarnings("deprecation") + cmvr.api.Common.DeviceLifecycle.Lifecycle result = cmvr.api.Common.DeviceLifecycle.Lifecycle.valueOf(state_); + return result == null ? cmvr.api.Common.DeviceLifecycle.Lifecycle.UNRECOGNIZED : result; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (state_ != cmvr.api.Common.DeviceLifecycle.Lifecycle.STATE_INIT.getNumber()) { + output.writeEnum(1, state_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (state_ != cmvr.api.Common.DeviceLifecycle.Lifecycle.STATE_INIT.getNumber()) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(1, state_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.Common.DeviceLifecycle)) { + return super.equals(obj); + } + cmvr.api.Common.DeviceLifecycle other = (cmvr.api.Common.DeviceLifecycle) obj; + + if (state_ != other.state_) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + STATE_FIELD_NUMBER; + hash = (53 * hash) + state_; + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.Common.DeviceLifecycle parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.Common.DeviceLifecycle parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.Common.DeviceLifecycle parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.Common.DeviceLifecycle parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.Common.DeviceLifecycle parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.Common.DeviceLifecycle parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.Common.DeviceLifecycle parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.Common.DeviceLifecycle parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.Common.DeviceLifecycle parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.Common.DeviceLifecycle parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.Common.DeviceLifecycle parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.Common.DeviceLifecycle parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.Common.DeviceLifecycle prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.DeviceLifecycle} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.DeviceLifecycle) + cmvr.api.Common.DeviceLifecycleOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.Common.internal_static_cmvr_api_DeviceLifecycle_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.Common.internal_static_cmvr_api_DeviceLifecycle_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.Common.DeviceLifecycle.class, cmvr.api.Common.DeviceLifecycle.Builder.class); + } + + // Construct using cmvr.api.Common.DeviceLifecycle.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + state_ = 0; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.Common.internal_static_cmvr_api_DeviceLifecycle_descriptor; + } + + @java.lang.Override + public cmvr.api.Common.DeviceLifecycle getDefaultInstanceForType() { + return cmvr.api.Common.DeviceLifecycle.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.Common.DeviceLifecycle build() { + cmvr.api.Common.DeviceLifecycle result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.Common.DeviceLifecycle buildPartial() { + cmvr.api.Common.DeviceLifecycle result = new cmvr.api.Common.DeviceLifecycle(this); + result.state_ = state_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.Common.DeviceLifecycle) { + return mergeFrom((cmvr.api.Common.DeviceLifecycle)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.Common.DeviceLifecycle other) { + if (other == cmvr.api.Common.DeviceLifecycle.getDefaultInstance()) return this; + if (other.state_ != 0) { + setStateValue(other.getStateValue()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + state_ = input.readEnum(); + + break; + } // case 8 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int state_ = 0; + /** + * .cmvr.api.DeviceLifecycle.Lifecycle state = 1; + * @return The enum numeric value on the wire for state. + */ + @java.lang.Override public int getStateValue() { + return state_; + } + /** + * .cmvr.api.DeviceLifecycle.Lifecycle state = 1; + * @param value The enum numeric value on the wire for state to set. + * @return This builder for chaining. + */ + public Builder setStateValue(int value) { + + state_ = value; + onChanged(); + return this; + } + /** + * .cmvr.api.DeviceLifecycle.Lifecycle state = 1; + * @return The state. + */ + @java.lang.Override + public cmvr.api.Common.DeviceLifecycle.Lifecycle getState() { + @SuppressWarnings("deprecation") + cmvr.api.Common.DeviceLifecycle.Lifecycle result = cmvr.api.Common.DeviceLifecycle.Lifecycle.valueOf(state_); + return result == null ? cmvr.api.Common.DeviceLifecycle.Lifecycle.UNRECOGNIZED : result; + } + /** + * .cmvr.api.DeviceLifecycle.Lifecycle state = 1; + * @param value The state to set. + * @return This builder for chaining. + */ + public Builder setState(cmvr.api.Common.DeviceLifecycle.Lifecycle value) { + if (value == null) { + throw new NullPointerException(); + } + + state_ = value.getNumber(); + onChanged(); + return this; + } + /** + * .cmvr.api.DeviceLifecycle.Lifecycle state = 1; + * @return This builder for chaining. + */ + public Builder clearState() { + + state_ = 0; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.DeviceLifecycle) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.DeviceLifecycle) + private static final cmvr.api.Common.DeviceLifecycle DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.Common.DeviceLifecycle(); + } + + public static cmvr.api.Common.DeviceLifecycle getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public DeviceLifecycle parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.Common.DeviceLifecycle getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface CommandHeaderOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.CommandHeader) + com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code cmvr.api.CommandHeader} + */ + public static final class CommandHeader extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.CommandHeader) + CommandHeaderOrBuilder { + private static final long serialVersionUID = 0L; + // Use CommandHeader.newBuilder() to construct. + private CommandHeader(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private CommandHeader() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new CommandHeader(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.Common.internal_static_cmvr_api_CommandHeader_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.Common.internal_static_cmvr_api_CommandHeader_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.Common.CommandHeader.class, cmvr.api.Common.CommandHeader.Builder.class); + } + + public interface RequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.CommandHeader.Request) + com.google.protobuf.MessageOrBuilder { + + /** + *
+       * 目标设备名称
+       * 
+ * + * string device_id = 1; + * @return The deviceId. + */ + java.lang.String getDeviceId(); + /** + *
+       * 目标设备名称
+       * 
+ * + * string device_id = 1; + * @return The bytes for deviceId. + */ + com.google.protobuf.ByteString + getDeviceIdBytes(); + + /** + *
+       * 请求时间
+       * 
+ * + * .google.protobuf.Timestamp timestamp = 2; + * @return Whether the timestamp field is set. + */ + boolean hasTimestamp(); + /** + *
+       * 请求时间
+       * 
+ * + * .google.protobuf.Timestamp timestamp = 2; + * @return The timestamp. + */ + com.google.protobuf.Timestamp getTimestamp(); + /** + *
+       * 请求时间
+       * 
+ * + * .google.protobuf.Timestamp timestamp = 2; + */ + com.google.protobuf.TimestampOrBuilder getTimestampOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.CommandHeader.Request} + */ + public static final class Request extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.CommandHeader.Request) + RequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use Request.newBuilder() to construct. + private Request(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Request() { + deviceId_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Request(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.Common.internal_static_cmvr_api_CommandHeader_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.Common.internal_static_cmvr_api_CommandHeader_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.Common.CommandHeader.Request.class, cmvr.api.Common.CommandHeader.Request.Builder.class); + } + + public static final int DEVICE_ID_FIELD_NUMBER = 1; + private volatile java.lang.Object deviceId_; + /** + *
+       * 目标设备名称
+       * 
+ * + * string device_id = 1; + * @return The deviceId. + */ + @java.lang.Override + public java.lang.String getDeviceId() { + java.lang.Object ref = deviceId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + deviceId_ = s; + return s; + } + } + /** + *
+       * 目标设备名称
+       * 
+ * + * string device_id = 1; + * @return The bytes for deviceId. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getDeviceIdBytes() { + java.lang.Object ref = deviceId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + deviceId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int TIMESTAMP_FIELD_NUMBER = 2; + private com.google.protobuf.Timestamp timestamp_; + /** + *
+       * 请求时间
+       * 
+ * + * .google.protobuf.Timestamp timestamp = 2; + * @return Whether the timestamp field is set. + */ + @java.lang.Override + public boolean hasTimestamp() { + return timestamp_ != null; + } + /** + *
+       * 请求时间
+       * 
+ * + * .google.protobuf.Timestamp timestamp = 2; + * @return The timestamp. + */ + @java.lang.Override + public com.google.protobuf.Timestamp getTimestamp() { + return timestamp_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : timestamp_; + } + /** + *
+       * 请求时间
+       * 
+ * + * .google.protobuf.Timestamp timestamp = 2; + */ + @java.lang.Override + public com.google.protobuf.TimestampOrBuilder getTimestampOrBuilder() { + return getTimestamp(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(deviceId_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, deviceId_); + } + if (timestamp_ != null) { + output.writeMessage(2, getTimestamp()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(deviceId_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, deviceId_); + } + if (timestamp_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, getTimestamp()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.Common.CommandHeader.Request)) { + return super.equals(obj); + } + cmvr.api.Common.CommandHeader.Request other = (cmvr.api.Common.CommandHeader.Request) obj; + + if (!getDeviceId() + .equals(other.getDeviceId())) return false; + if (hasTimestamp() != other.hasTimestamp()) return false; + if (hasTimestamp()) { + if (!getTimestamp() + .equals(other.getTimestamp())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + DEVICE_ID_FIELD_NUMBER; + hash = (53 * hash) + getDeviceId().hashCode(); + if (hasTimestamp()) { + hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER; + hash = (53 * hash) + getTimestamp().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.Common.CommandHeader.Request parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.Common.CommandHeader.Request parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.Common.CommandHeader.Request parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.Common.CommandHeader.Request parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.Common.CommandHeader.Request parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.Common.CommandHeader.Request parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.Common.CommandHeader.Request parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.Common.CommandHeader.Request parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.Common.CommandHeader.Request parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.Common.CommandHeader.Request parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.Common.CommandHeader.Request parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.Common.CommandHeader.Request parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.Common.CommandHeader.Request prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.CommandHeader.Request} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.CommandHeader.Request) + cmvr.api.Common.CommandHeader.RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.Common.internal_static_cmvr_api_CommandHeader_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.Common.internal_static_cmvr_api_CommandHeader_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.Common.CommandHeader.Request.class, cmvr.api.Common.CommandHeader.Request.Builder.class); + } + + // Construct using cmvr.api.Common.CommandHeader.Request.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + deviceId_ = ""; + + if (timestampBuilder_ == null) { + timestamp_ = null; + } else { + timestamp_ = null; + timestampBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.Common.internal_static_cmvr_api_CommandHeader_Request_descriptor; + } + + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request getDefaultInstanceForType() { + return cmvr.api.Common.CommandHeader.Request.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request build() { + cmvr.api.Common.CommandHeader.Request result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request buildPartial() { + cmvr.api.Common.CommandHeader.Request result = new cmvr.api.Common.CommandHeader.Request(this); + result.deviceId_ = deviceId_; + if (timestampBuilder_ == null) { + result.timestamp_ = timestamp_; + } else { + result.timestamp_ = timestampBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.Common.CommandHeader.Request) { + return mergeFrom((cmvr.api.Common.CommandHeader.Request)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.Common.CommandHeader.Request other) { + if (other == cmvr.api.Common.CommandHeader.Request.getDefaultInstance()) return this; + if (!other.getDeviceId().isEmpty()) { + deviceId_ = other.deviceId_; + onChanged(); + } + if (other.hasTimestamp()) { + mergeTimestamp(other.getTimestamp()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + deviceId_ = input.readStringRequireUtf8(); + + break; + } // case 10 + case 18: { + input.readMessage( + getTimestampFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 18 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private java.lang.Object deviceId_ = ""; + /** + *
+         * 目标设备名称
+         * 
+ * + * string device_id = 1; + * @return The deviceId. + */ + public java.lang.String getDeviceId() { + java.lang.Object ref = deviceId_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + deviceId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+         * 目标设备名称
+         * 
+ * + * string device_id = 1; + * @return The bytes for deviceId. + */ + public com.google.protobuf.ByteString + getDeviceIdBytes() { + java.lang.Object ref = deviceId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + deviceId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+         * 目标设备名称
+         * 
+ * + * string device_id = 1; + * @param value The deviceId to set. + * @return This builder for chaining. + */ + public Builder setDeviceId( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + deviceId_ = value; + onChanged(); + return this; + } + /** + *
+         * 目标设备名称
+         * 
+ * + * string device_id = 1; + * @return This builder for chaining. + */ + public Builder clearDeviceId() { + + deviceId_ = getDefaultInstance().getDeviceId(); + onChanged(); + return this; + } + /** + *
+         * 目标设备名称
+         * 
+ * + * string device_id = 1; + * @param value The bytes for deviceId to set. + * @return This builder for chaining. + */ + public Builder setDeviceIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + deviceId_ = value; + onChanged(); + return this; + } + + private com.google.protobuf.Timestamp timestamp_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> timestampBuilder_; + /** + *
+         * 请求时间
+         * 
+ * + * .google.protobuf.Timestamp timestamp = 2; + * @return Whether the timestamp field is set. + */ + public boolean hasTimestamp() { + return timestampBuilder_ != null || timestamp_ != null; + } + /** + *
+         * 请求时间
+         * 
+ * + * .google.protobuf.Timestamp timestamp = 2; + * @return The timestamp. + */ + public com.google.protobuf.Timestamp getTimestamp() { + if (timestampBuilder_ == null) { + return timestamp_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : timestamp_; + } else { + return timestampBuilder_.getMessage(); + } + } + /** + *
+         * 请求时间
+         * 
+ * + * .google.protobuf.Timestamp timestamp = 2; + */ + public Builder setTimestamp(com.google.protobuf.Timestamp value) { + if (timestampBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + timestamp_ = value; + onChanged(); + } else { + timestampBuilder_.setMessage(value); + } + + return this; + } + /** + *
+         * 请求时间
+         * 
+ * + * .google.protobuf.Timestamp timestamp = 2; + */ + public Builder setTimestamp( + com.google.protobuf.Timestamp.Builder builderForValue) { + if (timestampBuilder_ == null) { + timestamp_ = builderForValue.build(); + onChanged(); + } else { + timestampBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+         * 请求时间
+         * 
+ * + * .google.protobuf.Timestamp timestamp = 2; + */ + public Builder mergeTimestamp(com.google.protobuf.Timestamp value) { + if (timestampBuilder_ == null) { + if (timestamp_ != null) { + timestamp_ = + com.google.protobuf.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial(); + } else { + timestamp_ = value; + } + onChanged(); + } else { + timestampBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+         * 请求时间
+         * 
+ * + * .google.protobuf.Timestamp timestamp = 2; + */ + public Builder clearTimestamp() { + if (timestampBuilder_ == null) { + timestamp_ = null; + onChanged(); + } else { + timestamp_ = null; + timestampBuilder_ = null; + } + + return this; + } + /** + *
+         * 请求时间
+         * 
+ * + * .google.protobuf.Timestamp timestamp = 2; + */ + public com.google.protobuf.Timestamp.Builder getTimestampBuilder() { + + onChanged(); + return getTimestampFieldBuilder().getBuilder(); + } + /** + *
+         * 请求时间
+         * 
+ * + * .google.protobuf.Timestamp timestamp = 2; + */ + public com.google.protobuf.TimestampOrBuilder getTimestampOrBuilder() { + if (timestampBuilder_ != null) { + return timestampBuilder_.getMessageOrBuilder(); + } else { + return timestamp_ == null ? + com.google.protobuf.Timestamp.getDefaultInstance() : timestamp_; + } + } + /** + *
+         * 请求时间
+         * 
+ * + * .google.protobuf.Timestamp timestamp = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> + getTimestampFieldBuilder() { + if (timestampBuilder_ == null) { + timestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder>( + getTimestamp(), + getParentForChildren(), + isClean()); + timestamp_ = null; + } + return timestampBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.CommandHeader.Request) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.CommandHeader.Request) + private static final cmvr.api.Common.CommandHeader.Request DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.Common.CommandHeader.Request(); + } + + public static cmvr.api.Common.CommandHeader.Request getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface FeedbackOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.CommandHeader.Feedback) + com.google.protobuf.MessageOrBuilder { + + /** + *
+       * 是否成功
+       * 
+ * + * bool success = 1; + * @return The success. + */ + boolean getSuccess(); + + /** + *
+       * 错误信息(成功时为空)
+       * 
+ * + * string error_message = 2; + * @return The errorMessage. + */ + java.lang.String getErrorMessage(); + /** + *
+       * 错误信息(成功时为空)
+       * 
+ * + * string error_message = 2; + * @return The bytes for errorMessage. + */ + com.google.protobuf.ByteString + getErrorMessageBytes(); + + /** + *
+       * 回复时间
+       * 
+ * + * .google.protobuf.Timestamp timestamp = 3; + * @return Whether the timestamp field is set. + */ + boolean hasTimestamp(); + /** + *
+       * 回复时间
+       * 
+ * + * .google.protobuf.Timestamp timestamp = 3; + * @return The timestamp. + */ + com.google.protobuf.Timestamp getTimestamp(); + /** + *
+       * 回复时间
+       * 
+ * + * .google.protobuf.Timestamp timestamp = 3; + */ + com.google.protobuf.TimestampOrBuilder getTimestampOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.CommandHeader.Feedback} + */ + public static final class Feedback extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.CommandHeader.Feedback) + FeedbackOrBuilder { + private static final long serialVersionUID = 0L; + // Use Feedback.newBuilder() to construct. + private Feedback(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Feedback() { + errorMessage_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Feedback(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.Common.internal_static_cmvr_api_CommandHeader_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.Common.internal_static_cmvr_api_CommandHeader_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.Common.CommandHeader.Feedback.class, cmvr.api.Common.CommandHeader.Feedback.Builder.class); + } + + public static final int SUCCESS_FIELD_NUMBER = 1; + private boolean success_; + /** + *
+       * 是否成功
+       * 
+ * + * bool success = 1; + * @return The success. + */ + @java.lang.Override + public boolean getSuccess() { + return success_; + } + + public static final int ERROR_MESSAGE_FIELD_NUMBER = 2; + private volatile java.lang.Object errorMessage_; + /** + *
+       * 错误信息(成功时为空)
+       * 
+ * + * string error_message = 2; + * @return The errorMessage. + */ + @java.lang.Override + public java.lang.String getErrorMessage() { + java.lang.Object ref = errorMessage_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + errorMessage_ = s; + return s; + } + } + /** + *
+       * 错误信息(成功时为空)
+       * 
+ * + * string error_message = 2; + * @return The bytes for errorMessage. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getErrorMessageBytes() { + java.lang.Object ref = errorMessage_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + errorMessage_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int TIMESTAMP_FIELD_NUMBER = 3; + private com.google.protobuf.Timestamp timestamp_; + /** + *
+       * 回复时间
+       * 
+ * + * .google.protobuf.Timestamp timestamp = 3; + * @return Whether the timestamp field is set. + */ + @java.lang.Override + public boolean hasTimestamp() { + return timestamp_ != null; + } + /** + *
+       * 回复时间
+       * 
+ * + * .google.protobuf.Timestamp timestamp = 3; + * @return The timestamp. + */ + @java.lang.Override + public com.google.protobuf.Timestamp getTimestamp() { + return timestamp_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : timestamp_; + } + /** + *
+       * 回复时间
+       * 
+ * + * .google.protobuf.Timestamp timestamp = 3; + */ + @java.lang.Override + public com.google.protobuf.TimestampOrBuilder getTimestampOrBuilder() { + return getTimestamp(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (success_ != false) { + output.writeBool(1, success_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(errorMessage_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, errorMessage_); + } + if (timestamp_ != null) { + output.writeMessage(3, getTimestamp()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (success_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(1, success_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(errorMessage_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, errorMessage_); + } + if (timestamp_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(3, getTimestamp()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.Common.CommandHeader.Feedback)) { + return super.equals(obj); + } + cmvr.api.Common.CommandHeader.Feedback other = (cmvr.api.Common.CommandHeader.Feedback) obj; + + if (getSuccess() + != other.getSuccess()) return false; + if (!getErrorMessage() + .equals(other.getErrorMessage())) return false; + if (hasTimestamp() != other.hasTimestamp()) return false; + if (hasTimestamp()) { + if (!getTimestamp() + .equals(other.getTimestamp())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + SUCCESS_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getSuccess()); + hash = (37 * hash) + ERROR_MESSAGE_FIELD_NUMBER; + hash = (53 * hash) + getErrorMessage().hashCode(); + if (hasTimestamp()) { + hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER; + hash = (53 * hash) + getTimestamp().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.Common.CommandHeader.Feedback parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.Common.CommandHeader.Feedback parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.Common.CommandHeader.Feedback parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.Common.CommandHeader.Feedback parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.Common.CommandHeader.Feedback parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.Common.CommandHeader.Feedback parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.Common.CommandHeader.Feedback parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.Common.CommandHeader.Feedback parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.Common.CommandHeader.Feedback parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.Common.CommandHeader.Feedback parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.Common.CommandHeader.Feedback parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.Common.CommandHeader.Feedback parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.Common.CommandHeader.Feedback prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.CommandHeader.Feedback} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.CommandHeader.Feedback) + cmvr.api.Common.CommandHeader.FeedbackOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.Common.internal_static_cmvr_api_CommandHeader_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.Common.internal_static_cmvr_api_CommandHeader_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.Common.CommandHeader.Feedback.class, cmvr.api.Common.CommandHeader.Feedback.Builder.class); + } + + // Construct using cmvr.api.Common.CommandHeader.Feedback.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + success_ = false; + + errorMessage_ = ""; + + if (timestampBuilder_ == null) { + timestamp_ = null; + } else { + timestamp_ = null; + timestampBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.Common.internal_static_cmvr_api_CommandHeader_Feedback_descriptor; + } + + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getDefaultInstanceForType() { + return cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback build() { + cmvr.api.Common.CommandHeader.Feedback result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback buildPartial() { + cmvr.api.Common.CommandHeader.Feedback result = new cmvr.api.Common.CommandHeader.Feedback(this); + result.success_ = success_; + result.errorMessage_ = errorMessage_; + if (timestampBuilder_ == null) { + result.timestamp_ = timestamp_; + } else { + result.timestamp_ = timestampBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.Common.CommandHeader.Feedback) { + return mergeFrom((cmvr.api.Common.CommandHeader.Feedback)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.Common.CommandHeader.Feedback other) { + if (other == cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance()) return this; + if (other.getSuccess() != false) { + setSuccess(other.getSuccess()); + } + if (!other.getErrorMessage().isEmpty()) { + errorMessage_ = other.errorMessage_; + onChanged(); + } + if (other.hasTimestamp()) { + mergeTimestamp(other.getTimestamp()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + success_ = input.readBool(); + + break; + } // case 8 + case 18: { + errorMessage_ = input.readStringRequireUtf8(); + + break; + } // case 18 + case 26: { + input.readMessage( + getTimestampFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 26 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private boolean success_ ; + /** + *
+         * 是否成功
+         * 
+ * + * bool success = 1; + * @return The success. + */ + @java.lang.Override + public boolean getSuccess() { + return success_; + } + /** + *
+         * 是否成功
+         * 
+ * + * bool success = 1; + * @param value The success to set. + * @return This builder for chaining. + */ + public Builder setSuccess(boolean value) { + + success_ = value; + onChanged(); + return this; + } + /** + *
+         * 是否成功
+         * 
+ * + * bool success = 1; + * @return This builder for chaining. + */ + public Builder clearSuccess() { + + success_ = false; + onChanged(); + return this; + } + + private java.lang.Object errorMessage_ = ""; + /** + *
+         * 错误信息(成功时为空)
+         * 
+ * + * string error_message = 2; + * @return The errorMessage. + */ + public java.lang.String getErrorMessage() { + java.lang.Object ref = errorMessage_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + errorMessage_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+         * 错误信息(成功时为空)
+         * 
+ * + * string error_message = 2; + * @return The bytes for errorMessage. + */ + public com.google.protobuf.ByteString + getErrorMessageBytes() { + java.lang.Object ref = errorMessage_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + errorMessage_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+         * 错误信息(成功时为空)
+         * 
+ * + * string error_message = 2; + * @param value The errorMessage to set. + * @return This builder for chaining. + */ + public Builder setErrorMessage( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + errorMessage_ = value; + onChanged(); + return this; + } + /** + *
+         * 错误信息(成功时为空)
+         * 
+ * + * string error_message = 2; + * @return This builder for chaining. + */ + public Builder clearErrorMessage() { + + errorMessage_ = getDefaultInstance().getErrorMessage(); + onChanged(); + return this; + } + /** + *
+         * 错误信息(成功时为空)
+         * 
+ * + * string error_message = 2; + * @param value The bytes for errorMessage to set. + * @return This builder for chaining. + */ + public Builder setErrorMessageBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + errorMessage_ = value; + onChanged(); + return this; + } + + private com.google.protobuf.Timestamp timestamp_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> timestampBuilder_; + /** + *
+         * 回复时间
+         * 
+ * + * .google.protobuf.Timestamp timestamp = 3; + * @return Whether the timestamp field is set. + */ + public boolean hasTimestamp() { + return timestampBuilder_ != null || timestamp_ != null; + } + /** + *
+         * 回复时间
+         * 
+ * + * .google.protobuf.Timestamp timestamp = 3; + * @return The timestamp. + */ + public com.google.protobuf.Timestamp getTimestamp() { + if (timestampBuilder_ == null) { + return timestamp_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : timestamp_; + } else { + return timestampBuilder_.getMessage(); + } + } + /** + *
+         * 回复时间
+         * 
+ * + * .google.protobuf.Timestamp timestamp = 3; + */ + public Builder setTimestamp(com.google.protobuf.Timestamp value) { + if (timestampBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + timestamp_ = value; + onChanged(); + } else { + timestampBuilder_.setMessage(value); + } + + return this; + } + /** + *
+         * 回复时间
+         * 
+ * + * .google.protobuf.Timestamp timestamp = 3; + */ + public Builder setTimestamp( + com.google.protobuf.Timestamp.Builder builderForValue) { + if (timestampBuilder_ == null) { + timestamp_ = builderForValue.build(); + onChanged(); + } else { + timestampBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+         * 回复时间
+         * 
+ * + * .google.protobuf.Timestamp timestamp = 3; + */ + public Builder mergeTimestamp(com.google.protobuf.Timestamp value) { + if (timestampBuilder_ == null) { + if (timestamp_ != null) { + timestamp_ = + com.google.protobuf.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial(); + } else { + timestamp_ = value; + } + onChanged(); + } else { + timestampBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+         * 回复时间
+         * 
+ * + * .google.protobuf.Timestamp timestamp = 3; + */ + public Builder clearTimestamp() { + if (timestampBuilder_ == null) { + timestamp_ = null; + onChanged(); + } else { + timestamp_ = null; + timestampBuilder_ = null; + } + + return this; + } + /** + *
+         * 回复时间
+         * 
+ * + * .google.protobuf.Timestamp timestamp = 3; + */ + public com.google.protobuf.Timestamp.Builder getTimestampBuilder() { + + onChanged(); + return getTimestampFieldBuilder().getBuilder(); + } + /** + *
+         * 回复时间
+         * 
+ * + * .google.protobuf.Timestamp timestamp = 3; + */ + public com.google.protobuf.TimestampOrBuilder getTimestampOrBuilder() { + if (timestampBuilder_ != null) { + return timestampBuilder_.getMessageOrBuilder(); + } else { + return timestamp_ == null ? + com.google.protobuf.Timestamp.getDefaultInstance() : timestamp_; + } + } + /** + *
+         * 回复时间
+         * 
+ * + * .google.protobuf.Timestamp timestamp = 3; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> + getTimestampFieldBuilder() { + if (timestampBuilder_ == null) { + timestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder>( + getTimestamp(), + getParentForChildren(), + isClean()); + timestamp_ = null; + } + return timestampBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.CommandHeader.Feedback) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.CommandHeader.Feedback) + private static final cmvr.api.Common.CommandHeader.Feedback DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.Common.CommandHeader.Feedback(); + } + + public static cmvr.api.Common.CommandHeader.Feedback getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Feedback parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.Common.CommandHeader)) { + return super.equals(obj); + } + cmvr.api.Common.CommandHeader other = (cmvr.api.Common.CommandHeader) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.Common.CommandHeader parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.Common.CommandHeader parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.Common.CommandHeader parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.Common.CommandHeader parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.Common.CommandHeader parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.Common.CommandHeader parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.Common.CommandHeader parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.Common.CommandHeader parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.Common.CommandHeader parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.Common.CommandHeader parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.Common.CommandHeader parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.Common.CommandHeader parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.Common.CommandHeader prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.CommandHeader} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.CommandHeader) + cmvr.api.Common.CommandHeaderOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.Common.internal_static_cmvr_api_CommandHeader_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.Common.internal_static_cmvr_api_CommandHeader_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.Common.CommandHeader.class, cmvr.api.Common.CommandHeader.Builder.class); + } + + // Construct using cmvr.api.Common.CommandHeader.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.Common.internal_static_cmvr_api_CommandHeader_descriptor; + } + + @java.lang.Override + public cmvr.api.Common.CommandHeader getDefaultInstanceForType() { + return cmvr.api.Common.CommandHeader.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.Common.CommandHeader build() { + cmvr.api.Common.CommandHeader result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.Common.CommandHeader buildPartial() { + cmvr.api.Common.CommandHeader result = new cmvr.api.Common.CommandHeader(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.Common.CommandHeader) { + return mergeFrom((cmvr.api.Common.CommandHeader)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.Common.CommandHeader other) { + if (other == cmvr.api.Common.CommandHeader.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.CommandHeader) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.CommandHeader) + private static final cmvr.api.Common.CommandHeader DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.Common.CommandHeader(); + } + + public static cmvr.api.Common.CommandHeader getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public CommandHeader parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.Common.CommandHeader getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_DeviceLifecycle_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_DeviceLifecycle_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_CommandHeader_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_CommandHeader_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_CommandHeader_Request_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_CommandHeader_Request_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_CommandHeader_Feedback_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_CommandHeader_Feedback_fieldAccessorTable; + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n\025cmvr/api/common.proto\022\010cmvr.api\032\037googl" + + "e/protobuf/timestamp.proto\"\270\001\n\017DeviceLif" + + "ecycle\0222\n\005state\030\001 \001(\0162#.cmvr.api.DeviceL" + + "ifecycle.Lifecycle\"q\n\tLifecycle\022\016\n\nSTATE" + + "_INIT\020\000\022\017\n\013STATE_READY\020\001\022\021\n\rSTATE_RUNNIN" + + "G\020\002\022\017\n\013STATE_ERROR\020\003\022\017\n\013STATE_ESTOP\020\004\022\016\n" + + "\nSTATE_STOP\020\005\"\277\001\n\rCommandHeader\032K\n\007Reque" + + "st\022\021\n\tdevice_id\030\001 \001(\t\022-\n\ttimestamp\030\002 \001(\013" + + "2\032.google.protobuf.Timestamp\032a\n\010Feedback" + + "\022\017\n\007success\030\001 \001(\010\022\025\n\rerror_message\030\002 \001(\t" + + "\022-\n\ttimestamp\030\003 \001(\0132\032.google.protobuf.Ti" + + "mestampb\006proto3" + }; + descriptor = com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + com.google.protobuf.TimestampProto.getDescriptor(), + }); + internal_static_cmvr_api_DeviceLifecycle_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_cmvr_api_DeviceLifecycle_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_DeviceLifecycle_descriptor, + new java.lang.String[] { "State", }); + internal_static_cmvr_api_CommandHeader_descriptor = + getDescriptor().getMessageTypes().get(1); + internal_static_cmvr_api_CommandHeader_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_CommandHeader_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_CommandHeader_Request_descriptor = + internal_static_cmvr_api_CommandHeader_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_CommandHeader_Request_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_CommandHeader_Request_descriptor, + new java.lang.String[] { "DeviceId", "Timestamp", }); + internal_static_cmvr_api_CommandHeader_Feedback_descriptor = + internal_static_cmvr_api_CommandHeader_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_CommandHeader_Feedback_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_CommandHeader_Feedback_descriptor, + new java.lang.String[] { "Success", "ErrorMessage", "Timestamp", }); + com.google.protobuf.TimestampProto.getDescriptor(); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/DexHandServiceGrpc.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/DexHandServiceGrpc.java new file mode 100644 index 0000000..4a68db3 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/DexHandServiceGrpc.java @@ -0,0 +1,790 @@ +package cmvr.api; + +import static io.grpc.MethodDescriptor.generateFullMethodName; + +/** + */ +@javax.annotation.Generated( + value = "by gRPC proto compiler (version 1.52.0)", + comments = "Source: cmvr/api/dexhand_service.proto") +@io.grpc.stub.annotations.GrpcGenerated +public final class DexHandServiceGrpc { + + private DexHandServiceGrpc() {} + + public static final String SERVICE_NAME = "cmvr.api.DexHandService"; + + // Static method descriptors that strictly reflect the proto. + private static volatile io.grpc.MethodDescriptor getGetStatusMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "GetStatus", + requestType = cmvr.api.DexhandCommand.GetDexHandStateCommand.Request.class, + responseType = cmvr.api.DexhandCommand.GetDexHandStateCommand.Feedback.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getGetStatusMethod() { + io.grpc.MethodDescriptor getGetStatusMethod; + if ((getGetStatusMethod = DexHandServiceGrpc.getGetStatusMethod) == null) { + synchronized (DexHandServiceGrpc.class) { + if ((getGetStatusMethod = DexHandServiceGrpc.getGetStatusMethod) == null) { + DexHandServiceGrpc.getGetStatusMethod = getGetStatusMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetStatus")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.DexhandCommand.GetDexHandStateCommand.Request.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.DexhandCommand.GetDexHandStateCommand.Feedback.getDefaultInstance())) + .setSchemaDescriptor(new DexHandServiceMethodDescriptorSupplier("GetStatus")) + .build(); + } + } + } + return getGetStatusMethod; + } + + private static volatile io.grpc.MethodDescriptor getSetDexHandPosMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "SetDexHandPos", + requestType = cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request.class, + responseType = cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Feedback.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getSetDexHandPosMethod() { + io.grpc.MethodDescriptor getSetDexHandPosMethod; + if ((getSetDexHandPosMethod = DexHandServiceGrpc.getSetDexHandPosMethod) == null) { + synchronized (DexHandServiceGrpc.class) { + if ((getSetDexHandPosMethod = DexHandServiceGrpc.getSetDexHandPosMethod) == null) { + DexHandServiceGrpc.getSetDexHandPosMethod = getSetDexHandPosMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "SetDexHandPos")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Feedback.getDefaultInstance())) + .setSchemaDescriptor(new DexHandServiceMethodDescriptorSupplier("SetDexHandPos")) + .build(); + } + } + } + return getSetDexHandPosMethod; + } + + private static volatile io.grpc.MethodDescriptor getSetDexHandAngleMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "SetDexHandAngle", + requestType = cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request.class, + responseType = cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Feedback.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getSetDexHandAngleMethod() { + io.grpc.MethodDescriptor getSetDexHandAngleMethod; + if ((getSetDexHandAngleMethod = DexHandServiceGrpc.getSetDexHandAngleMethod) == null) { + synchronized (DexHandServiceGrpc.class) { + if ((getSetDexHandAngleMethod = DexHandServiceGrpc.getSetDexHandAngleMethod) == null) { + DexHandServiceGrpc.getSetDexHandAngleMethod = getSetDexHandAngleMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "SetDexHandAngle")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Feedback.getDefaultInstance())) + .setSchemaDescriptor(new DexHandServiceMethodDescriptorSupplier("SetDexHandAngle")) + .build(); + } + } + } + return getSetDexHandAngleMethod; + } + + private static volatile io.grpc.MethodDescriptor getSetDexHandForceMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "SetDexHandForce", + requestType = cmvr.api.DexhandCommand.SetDexHandForceCommand.Request.class, + responseType = cmvr.api.DexhandCommand.SetDexHandForceCommand.Feedback.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getSetDexHandForceMethod() { + io.grpc.MethodDescriptor getSetDexHandForceMethod; + if ((getSetDexHandForceMethod = DexHandServiceGrpc.getSetDexHandForceMethod) == null) { + synchronized (DexHandServiceGrpc.class) { + if ((getSetDexHandForceMethod = DexHandServiceGrpc.getSetDexHandForceMethod) == null) { + DexHandServiceGrpc.getSetDexHandForceMethod = getSetDexHandForceMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "SetDexHandForce")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.DexhandCommand.SetDexHandForceCommand.Request.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.DexhandCommand.SetDexHandForceCommand.Feedback.getDefaultInstance())) + .setSchemaDescriptor(new DexHandServiceMethodDescriptorSupplier("SetDexHandForce")) + .build(); + } + } + } + return getSetDexHandForceMethod; + } + + private static volatile io.grpc.MethodDescriptor getSetDexHandSpeedMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "SetDexHandSpeed", + requestType = cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request.class, + responseType = cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Feedback.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getSetDexHandSpeedMethod() { + io.grpc.MethodDescriptor getSetDexHandSpeedMethod; + if ((getSetDexHandSpeedMethod = DexHandServiceGrpc.getSetDexHandSpeedMethod) == null) { + synchronized (DexHandServiceGrpc.class) { + if ((getSetDexHandSpeedMethod = DexHandServiceGrpc.getSetDexHandSpeedMethod) == null) { + DexHandServiceGrpc.getSetDexHandSpeedMethod = getSetDexHandSpeedMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "SetDexHandSpeed")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Feedback.getDefaultInstance())) + .setSchemaDescriptor(new DexHandServiceMethodDescriptorSupplier("SetDexHandSpeed")) + .build(); + } + } + } + return getSetDexHandSpeedMethod; + } + + private static volatile io.grpc.MethodDescriptor getSetDexHandPresetActMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "SetDexHandPresetAct", + requestType = cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request.class, + responseType = cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Feedback.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getSetDexHandPresetActMethod() { + io.grpc.MethodDescriptor getSetDexHandPresetActMethod; + if ((getSetDexHandPresetActMethod = DexHandServiceGrpc.getSetDexHandPresetActMethod) == null) { + synchronized (DexHandServiceGrpc.class) { + if ((getSetDexHandPresetActMethod = DexHandServiceGrpc.getSetDexHandPresetActMethod) == null) { + DexHandServiceGrpc.getSetDexHandPresetActMethod = getSetDexHandPresetActMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "SetDexHandPresetAct")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Feedback.getDefaultInstance())) + .setSchemaDescriptor(new DexHandServiceMethodDescriptorSupplier("SetDexHandPresetAct")) + .build(); + } + } + } + return getSetDexHandPresetActMethod; + } + + private static volatile io.grpc.MethodDescriptor getGetSensorDataMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "GetSensorData", + requestType = cmvr.api.DexhandCommand.GetSensorDataCommand.Request.class, + responseType = cmvr.api.DexhandCommand.GetSensorDataCommand.Feedback.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getGetSensorDataMethod() { + io.grpc.MethodDescriptor getGetSensorDataMethod; + if ((getGetSensorDataMethod = DexHandServiceGrpc.getGetSensorDataMethod) == null) { + synchronized (DexHandServiceGrpc.class) { + if ((getGetSensorDataMethod = DexHandServiceGrpc.getGetSensorDataMethod) == null) { + DexHandServiceGrpc.getGetSensorDataMethod = getGetSensorDataMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetSensorData")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.DexhandCommand.GetSensorDataCommand.Request.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.DexhandCommand.GetSensorDataCommand.Feedback.getDefaultInstance())) + .setSchemaDescriptor(new DexHandServiceMethodDescriptorSupplier("GetSensorData")) + .build(); + } + } + } + return getGetSensorDataMethod; + } + + private static volatile io.grpc.MethodDescriptor getGetSensorDataStreamMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "GetSensorDataStream", + requestType = cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Request.class, + responseType = cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Feedback.class, + methodType = io.grpc.MethodDescriptor.MethodType.BIDI_STREAMING) + public static io.grpc.MethodDescriptor getGetSensorDataStreamMethod() { + io.grpc.MethodDescriptor getGetSensorDataStreamMethod; + if ((getGetSensorDataStreamMethod = DexHandServiceGrpc.getGetSensorDataStreamMethod) == null) { + synchronized (DexHandServiceGrpc.class) { + if ((getGetSensorDataStreamMethod = DexHandServiceGrpc.getGetSensorDataStreamMethod) == null) { + DexHandServiceGrpc.getGetSensorDataStreamMethod = getGetSensorDataStreamMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.BIDI_STREAMING) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetSensorDataStream")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Request.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Feedback.getDefaultInstance())) + .setSchemaDescriptor(new DexHandServiceMethodDescriptorSupplier("GetSensorDataStream")) + .build(); + } + } + } + return getGetSensorDataStreamMethod; + } + + /** + * Creates a new async stub that supports all call types for the service + */ + public static DexHandServiceStub newStub(io.grpc.Channel channel) { + io.grpc.stub.AbstractStub.StubFactory factory = + new io.grpc.stub.AbstractStub.StubFactory() { + @java.lang.Override + public DexHandServiceStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new DexHandServiceStub(channel, callOptions); + } + }; + return DexHandServiceStub.newStub(factory, channel); + } + + /** + * Creates a new blocking-style stub that supports unary and streaming output calls on the service + */ + public static DexHandServiceBlockingStub newBlockingStub( + io.grpc.Channel channel) { + io.grpc.stub.AbstractStub.StubFactory factory = + new io.grpc.stub.AbstractStub.StubFactory() { + @java.lang.Override + public DexHandServiceBlockingStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new DexHandServiceBlockingStub(channel, callOptions); + } + }; + return DexHandServiceBlockingStub.newStub(factory, channel); + } + + /** + * Creates a new ListenableFuture-style stub that supports unary calls on the service + */ + public static DexHandServiceFutureStub newFutureStub( + io.grpc.Channel channel) { + io.grpc.stub.AbstractStub.StubFactory factory = + new io.grpc.stub.AbstractStub.StubFactory() { + @java.lang.Override + public DexHandServiceFutureStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new DexHandServiceFutureStub(channel, callOptions); + } + }; + return DexHandServiceFutureStub.newStub(factory, channel); + } + + /** + */ + public static abstract class DexHandServiceImplBase implements io.grpc.BindableService { + + /** + *
+     * 基本控制
+     * 
+ */ + public void getStatus(cmvr.api.DexhandCommand.GetDexHandStateCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetStatusMethod(), responseObserver); + } + + /** + */ + public void setDexHandPos(cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetDexHandPosMethod(), responseObserver); + } + + /** + */ + public void setDexHandAngle(cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetDexHandAngleMethod(), responseObserver); + } + + /** + */ + public void setDexHandForce(cmvr.api.DexhandCommand.SetDexHandForceCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetDexHandForceMethod(), responseObserver); + } + + /** + */ + public void setDexHandSpeed(cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetDexHandSpeedMethod(), responseObserver); + } + + /** + */ + public void setDexHandPresetAct(cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetDexHandPresetActMethod(), responseObserver); + } + + /** + */ + public void getSensorData(cmvr.api.DexhandCommand.GetSensorDataCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetSensorDataMethod(), responseObserver); + } + + /** + */ + public io.grpc.stub.StreamObserver getSensorDataStream( + io.grpc.stub.StreamObserver responseObserver) { + return io.grpc.stub.ServerCalls.asyncUnimplementedStreamingCall(getGetSensorDataStreamMethod(), responseObserver); + } + + @java.lang.Override public final io.grpc.ServerServiceDefinition bindService() { + return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()) + .addMethod( + getGetStatusMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + cmvr.api.DexhandCommand.GetDexHandStateCommand.Request, + cmvr.api.DexhandCommand.GetDexHandStateCommand.Feedback>( + this, METHODID_GET_STATUS))) + .addMethod( + getSetDexHandPosMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request, + cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Feedback>( + this, METHODID_SET_DEX_HAND_POS))) + .addMethod( + getSetDexHandAngleMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request, + cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Feedback>( + this, METHODID_SET_DEX_HAND_ANGLE))) + .addMethod( + getSetDexHandForceMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + cmvr.api.DexhandCommand.SetDexHandForceCommand.Request, + cmvr.api.DexhandCommand.SetDexHandForceCommand.Feedback>( + this, METHODID_SET_DEX_HAND_FORCE))) + .addMethod( + getSetDexHandSpeedMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request, + cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Feedback>( + this, METHODID_SET_DEX_HAND_SPEED))) + .addMethod( + getSetDexHandPresetActMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request, + cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Feedback>( + this, METHODID_SET_DEX_HAND_PRESET_ACT))) + .addMethod( + getGetSensorDataMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + cmvr.api.DexhandCommand.GetSensorDataCommand.Request, + cmvr.api.DexhandCommand.GetSensorDataCommand.Feedback>( + this, METHODID_GET_SENSOR_DATA))) + .addMethod( + getGetSensorDataStreamMethod(), + io.grpc.stub.ServerCalls.asyncBidiStreamingCall( + new MethodHandlers< + cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Request, + cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Feedback>( + this, METHODID_GET_SENSOR_DATA_STREAM))) + .build(); + } + } + + /** + */ + public static final class DexHandServiceStub extends io.grpc.stub.AbstractAsyncStub { + private DexHandServiceStub( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + super(channel, callOptions); + } + + @java.lang.Override + protected DexHandServiceStub build( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new DexHandServiceStub(channel, callOptions); + } + + /** + *
+     * 基本控制
+     * 
+ */ + public void getStatus(cmvr.api.DexhandCommand.GetDexHandStateCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getGetStatusMethod(), getCallOptions()), request, responseObserver); + } + + /** + */ + public void setDexHandPos(cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getSetDexHandPosMethod(), getCallOptions()), request, responseObserver); + } + + /** + */ + public void setDexHandAngle(cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getSetDexHandAngleMethod(), getCallOptions()), request, responseObserver); + } + + /** + */ + public void setDexHandForce(cmvr.api.DexhandCommand.SetDexHandForceCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getSetDexHandForceMethod(), getCallOptions()), request, responseObserver); + } + + /** + */ + public void setDexHandSpeed(cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getSetDexHandSpeedMethod(), getCallOptions()), request, responseObserver); + } + + /** + */ + public void setDexHandPresetAct(cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getSetDexHandPresetActMethod(), getCallOptions()), request, responseObserver); + } + + /** + */ + public void getSensorData(cmvr.api.DexhandCommand.GetSensorDataCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getGetSensorDataMethod(), getCallOptions()), request, responseObserver); + } + + /** + */ + public io.grpc.stub.StreamObserver getSensorDataStream( + io.grpc.stub.StreamObserver responseObserver) { + return io.grpc.stub.ClientCalls.asyncBidiStreamingCall( + getChannel().newCall(getGetSensorDataStreamMethod(), getCallOptions()), responseObserver); + } + } + + /** + */ + public static final class DexHandServiceBlockingStub extends io.grpc.stub.AbstractBlockingStub { + private DexHandServiceBlockingStub( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + super(channel, callOptions); + } + + @java.lang.Override + protected DexHandServiceBlockingStub build( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new DexHandServiceBlockingStub(channel, callOptions); + } + + /** + *
+     * 基本控制
+     * 
+ */ + public cmvr.api.DexhandCommand.GetDexHandStateCommand.Feedback getStatus(cmvr.api.DexhandCommand.GetDexHandStateCommand.Request request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getGetStatusMethod(), getCallOptions(), request); + } + + /** + */ + public cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Feedback setDexHandPos(cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getSetDexHandPosMethod(), getCallOptions(), request); + } + + /** + */ + public cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Feedback setDexHandAngle(cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getSetDexHandAngleMethod(), getCallOptions(), request); + } + + /** + */ + public cmvr.api.DexhandCommand.SetDexHandForceCommand.Feedback setDexHandForce(cmvr.api.DexhandCommand.SetDexHandForceCommand.Request request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getSetDexHandForceMethod(), getCallOptions(), request); + } + + /** + */ + public cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Feedback setDexHandSpeed(cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getSetDexHandSpeedMethod(), getCallOptions(), request); + } + + /** + */ + public cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Feedback setDexHandPresetAct(cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getSetDexHandPresetActMethod(), getCallOptions(), request); + } + + /** + */ + public cmvr.api.DexhandCommand.GetSensorDataCommand.Feedback getSensorData(cmvr.api.DexhandCommand.GetSensorDataCommand.Request request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getGetSensorDataMethod(), getCallOptions(), request); + } + } + + /** + */ + public static final class DexHandServiceFutureStub extends io.grpc.stub.AbstractFutureStub { + private DexHandServiceFutureStub( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + super(channel, callOptions); + } + + @java.lang.Override + protected DexHandServiceFutureStub build( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new DexHandServiceFutureStub(channel, callOptions); + } + + /** + *
+     * 基本控制
+     * 
+ */ + public com.google.common.util.concurrent.ListenableFuture getStatus( + cmvr.api.DexhandCommand.GetDexHandStateCommand.Request request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getGetStatusMethod(), getCallOptions()), request); + } + + /** + */ + public com.google.common.util.concurrent.ListenableFuture setDexHandPos( + cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getSetDexHandPosMethod(), getCallOptions()), request); + } + + /** + */ + public com.google.common.util.concurrent.ListenableFuture setDexHandAngle( + cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getSetDexHandAngleMethod(), getCallOptions()), request); + } + + /** + */ + public com.google.common.util.concurrent.ListenableFuture setDexHandForce( + cmvr.api.DexhandCommand.SetDexHandForceCommand.Request request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getSetDexHandForceMethod(), getCallOptions()), request); + } + + /** + */ + public com.google.common.util.concurrent.ListenableFuture setDexHandSpeed( + cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getSetDexHandSpeedMethod(), getCallOptions()), request); + } + + /** + */ + public com.google.common.util.concurrent.ListenableFuture setDexHandPresetAct( + cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getSetDexHandPresetActMethod(), getCallOptions()), request); + } + + /** + */ + public com.google.common.util.concurrent.ListenableFuture getSensorData( + cmvr.api.DexhandCommand.GetSensorDataCommand.Request request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getGetSensorDataMethod(), getCallOptions()), request); + } + } + + private static final int METHODID_GET_STATUS = 0; + private static final int METHODID_SET_DEX_HAND_POS = 1; + private static final int METHODID_SET_DEX_HAND_ANGLE = 2; + private static final int METHODID_SET_DEX_HAND_FORCE = 3; + private static final int METHODID_SET_DEX_HAND_SPEED = 4; + private static final int METHODID_SET_DEX_HAND_PRESET_ACT = 5; + private static final int METHODID_GET_SENSOR_DATA = 6; + private static final int METHODID_GET_SENSOR_DATA_STREAM = 7; + + private static final class MethodHandlers implements + io.grpc.stub.ServerCalls.UnaryMethod, + io.grpc.stub.ServerCalls.ServerStreamingMethod, + io.grpc.stub.ServerCalls.ClientStreamingMethod, + io.grpc.stub.ServerCalls.BidiStreamingMethod { + private final DexHandServiceImplBase serviceImpl; + private final int methodId; + + MethodHandlers(DexHandServiceImplBase serviceImpl, int methodId) { + this.serviceImpl = serviceImpl; + this.methodId = methodId; + } + + @java.lang.Override + @java.lang.SuppressWarnings("unchecked") + public void invoke(Req request, io.grpc.stub.StreamObserver responseObserver) { + switch (methodId) { + case METHODID_GET_STATUS: + serviceImpl.getStatus((cmvr.api.DexhandCommand.GetDexHandStateCommand.Request) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; + case METHODID_SET_DEX_HAND_POS: + serviceImpl.setDexHandPos((cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; + case METHODID_SET_DEX_HAND_ANGLE: + serviceImpl.setDexHandAngle((cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; + case METHODID_SET_DEX_HAND_FORCE: + serviceImpl.setDexHandForce((cmvr.api.DexhandCommand.SetDexHandForceCommand.Request) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; + case METHODID_SET_DEX_HAND_SPEED: + serviceImpl.setDexHandSpeed((cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; + case METHODID_SET_DEX_HAND_PRESET_ACT: + serviceImpl.setDexHandPresetAct((cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; + case METHODID_GET_SENSOR_DATA: + serviceImpl.getSensorData((cmvr.api.DexhandCommand.GetSensorDataCommand.Request) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; + default: + throw new AssertionError(); + } + } + + @java.lang.Override + @java.lang.SuppressWarnings("unchecked") + public io.grpc.stub.StreamObserver invoke( + io.grpc.stub.StreamObserver responseObserver) { + switch (methodId) { + case METHODID_GET_SENSOR_DATA_STREAM: + return (io.grpc.stub.StreamObserver) serviceImpl.getSensorDataStream( + (io.grpc.stub.StreamObserver) responseObserver); + default: + throw new AssertionError(); + } + } + } + + private static abstract class DexHandServiceBaseDescriptorSupplier + implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier { + DexHandServiceBaseDescriptorSupplier() {} + + @java.lang.Override + public com.google.protobuf.Descriptors.FileDescriptor getFileDescriptor() { + return cmvr.api.DexhandService.getDescriptor(); + } + + @java.lang.Override + public com.google.protobuf.Descriptors.ServiceDescriptor getServiceDescriptor() { + return getFileDescriptor().findServiceByName("DexHandService"); + } + } + + private static final class DexHandServiceFileDescriptorSupplier + extends DexHandServiceBaseDescriptorSupplier { + DexHandServiceFileDescriptorSupplier() {} + } + + private static final class DexHandServiceMethodDescriptorSupplier + extends DexHandServiceBaseDescriptorSupplier + implements io.grpc.protobuf.ProtoMethodDescriptorSupplier { + private final String methodName; + + DexHandServiceMethodDescriptorSupplier(String methodName) { + this.methodName = methodName; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.MethodDescriptor getMethodDescriptor() { + return getServiceDescriptor().findMethodByName(methodName); + } + } + + private static volatile io.grpc.ServiceDescriptor serviceDescriptor; + + public static io.grpc.ServiceDescriptor getServiceDescriptor() { + io.grpc.ServiceDescriptor result = serviceDescriptor; + if (result == null) { + synchronized (DexHandServiceGrpc.class) { + result = serviceDescriptor; + if (result == null) { + serviceDescriptor = result = io.grpc.ServiceDescriptor.newBuilder(SERVICE_NAME) + .setSchemaDescriptor(new DexHandServiceFileDescriptorSupplier()) + .addMethod(getGetStatusMethod()) + .addMethod(getSetDexHandPosMethod()) + .addMethod(getSetDexHandAngleMethod()) + .addMethod(getSetDexHandForceMethod()) + .addMethod(getSetDexHandSpeedMethod()) + .addMethod(getSetDexHandPresetActMethod()) + .addMethod(getGetSensorDataMethod()) + .addMethod(getGetSensorDataStreamMethod()) + .build(); + } + } + } + return result; + } +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/DexhandCommand.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/DexhandCommand.java new file mode 100644 index 0000000..60117a3 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/DexhandCommand.java @@ -0,0 +1,21427 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: cmvr/api/dexhand_command.proto + +package cmvr.api; + +public final class DexhandCommand { + private DexhandCommand() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistryLite registry) { + } + + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + registerAllExtensions( + (com.google.protobuf.ExtensionRegistryLite) registry); + } + public interface FreedomValueOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.FreedomValue) + com.google.protobuf.MessageOrBuilder { + + /** + *
+     * 自由度id 0-6 分别对应六个自由度 小拇指 无名指 中指 食指 大拇指弯曲 大拇指旋转
+     * 
+ * + * int32 id = 1; + * @return The id. + */ + int getId(); + + /** + *
+     * 值 0-1百分比
+     * 
+ * + * float value = 2; + * @return The value. + */ + float getValue(); + } + /** + * Protobuf type {@code cmvr.api.FreedomValue} + */ + public static final class FreedomValue extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.FreedomValue) + FreedomValueOrBuilder { + private static final long serialVersionUID = 0L; + // Use FreedomValue.newBuilder() to construct. + private FreedomValue(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private FreedomValue() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new FreedomValue(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_FreedomValue_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_FreedomValue_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.FreedomValue.class, cmvr.api.DexhandCommand.FreedomValue.Builder.class); + } + + public static final int ID_FIELD_NUMBER = 1; + private int id_; + /** + *
+     * 自由度id 0-6 分别对应六个自由度 小拇指 无名指 中指 食指 大拇指弯曲 大拇指旋转
+     * 
+ * + * int32 id = 1; + * @return The id. + */ + @java.lang.Override + public int getId() { + return id_; + } + + public static final int VALUE_FIELD_NUMBER = 2; + private float value_; + /** + *
+     * 值 0-1百分比
+     * 
+ * + * float value = 2; + * @return The value. + */ + @java.lang.Override + public float getValue() { + return value_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (id_ != 0) { + output.writeInt32(1, id_); + } + if (java.lang.Float.floatToRawIntBits(value_) != 0) { + output.writeFloat(2, value_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (id_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(1, id_); + } + if (java.lang.Float.floatToRawIntBits(value_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(2, value_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.DexhandCommand.FreedomValue)) { + return super.equals(obj); + } + cmvr.api.DexhandCommand.FreedomValue other = (cmvr.api.DexhandCommand.FreedomValue) obj; + + if (getId() + != other.getId()) return false; + if (java.lang.Float.floatToIntBits(getValue()) + != java.lang.Float.floatToIntBits( + other.getValue())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + ID_FIELD_NUMBER; + hash = (53 * hash) + getId(); + hash = (37 * hash) + VALUE_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getValue()); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.DexhandCommand.FreedomValue parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.FreedomValue parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.FreedomValue parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.FreedomValue parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.FreedomValue parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.FreedomValue parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.FreedomValue parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.FreedomValue parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.FreedomValue parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.FreedomValue parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.FreedomValue parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.FreedomValue parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.DexhandCommand.FreedomValue prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.FreedomValue} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.FreedomValue) + cmvr.api.DexhandCommand.FreedomValueOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_FreedomValue_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_FreedomValue_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.FreedomValue.class, cmvr.api.DexhandCommand.FreedomValue.Builder.class); + } + + // Construct using cmvr.api.DexhandCommand.FreedomValue.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + id_ = 0; + + value_ = 0F; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_FreedomValue_descriptor; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.FreedomValue getDefaultInstanceForType() { + return cmvr.api.DexhandCommand.FreedomValue.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.DexhandCommand.FreedomValue build() { + cmvr.api.DexhandCommand.FreedomValue result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.FreedomValue buildPartial() { + cmvr.api.DexhandCommand.FreedomValue result = new cmvr.api.DexhandCommand.FreedomValue(this); + result.id_ = id_; + result.value_ = value_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.DexhandCommand.FreedomValue) { + return mergeFrom((cmvr.api.DexhandCommand.FreedomValue)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.DexhandCommand.FreedomValue other) { + if (other == cmvr.api.DexhandCommand.FreedomValue.getDefaultInstance()) return this; + if (other.getId() != 0) { + setId(other.getId()); + } + if (other.getValue() != 0F) { + setValue(other.getValue()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + id_ = input.readInt32(); + + break; + } // case 8 + case 21: { + value_ = input.readFloat(); + + break; + } // case 21 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int id_ ; + /** + *
+       * 自由度id 0-6 分别对应六个自由度 小拇指 无名指 中指 食指 大拇指弯曲 大拇指旋转
+       * 
+ * + * int32 id = 1; + * @return The id. + */ + @java.lang.Override + public int getId() { + return id_; + } + /** + *
+       * 自由度id 0-6 分别对应六个自由度 小拇指 无名指 中指 食指 大拇指弯曲 大拇指旋转
+       * 
+ * + * int32 id = 1; + * @param value The id to set. + * @return This builder for chaining. + */ + public Builder setId(int value) { + + id_ = value; + onChanged(); + return this; + } + /** + *
+       * 自由度id 0-6 分别对应六个自由度 小拇指 无名指 中指 食指 大拇指弯曲 大拇指旋转
+       * 
+ * + * int32 id = 1; + * @return This builder for chaining. + */ + public Builder clearId() { + + id_ = 0; + onChanged(); + return this; + } + + private float value_ ; + /** + *
+       * 值 0-1百分比
+       * 
+ * + * float value = 2; + * @return The value. + */ + @java.lang.Override + public float getValue() { + return value_; + } + /** + *
+       * 值 0-1百分比
+       * 
+ * + * float value = 2; + * @param value The value to set. + * @return This builder for chaining. + */ + public Builder setValue(float value) { + + value_ = value; + onChanged(); + return this; + } + /** + *
+       * 值 0-1百分比
+       * 
+ * + * float value = 2; + * @return This builder for chaining. + */ + public Builder clearValue() { + + value_ = 0F; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.FreedomValue) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.FreedomValue) + private static final cmvr.api.DexhandCommand.FreedomValue DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.DexhandCommand.FreedomValue(); + } + + public static cmvr.api.DexhandCommand.FreedomValue getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public FreedomValue parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.FreedomValue getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface RH56DFTPDexHandOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.RH56DFTPDexHand) + com.google.protobuf.MessageOrBuilder { + + /** + *
+     * 自由度ID,唯一标识不同的关节或自由度
+     * 
+ * + * int32 dof_id = 1; + * @return The dofId. + */ + int getDofId(); + + /** + *
+     * 自由度角度
+     * 
+ * + * int32 angle = 2; + * @return The angle. + */ + int getAngle(); + + /** + *
+     * 自由度速度
+     * 
+ * + * int32 speed = 3; + * @return The speed. + */ + int getSpeed(); + + /** + *
+     * 实际受力
+     * 
+ * + * int32 force = 4; + * @return The force. + */ + int getForce(); + + /** + *
+     * 执行器位置
+     * 
+ * + * int32 position = 5; + * @return The position. + */ + int getPosition(); + + /** + *
+     * 执行器实际电流
+     * 
+ * + * int32 current = 6; + * @return The current. + */ + int getCurrent(); + + /** + *
+     * 执行器温度
+     * 
+ * + * int32 temperature = 7; + * @return The temperature. + */ + int getTemperature(); + + /** + *
+     * 执行器故障信息
+     * 
+ * + * int32 error = 8; + * @return The error. + */ + int getError(); + + /** + *
+     * 错误消息列表
+     * 
+ * + * repeated string error_message = 9; + * @return A list containing the errorMessage. + */ + java.util.List + getErrorMessageList(); + /** + *
+     * 错误消息列表
+     * 
+ * + * repeated string error_message = 9; + * @return The count of errorMessage. + */ + int getErrorMessageCount(); + /** + *
+     * 错误消息列表
+     * 
+ * + * repeated string error_message = 9; + * @param index The index of the element to return. + * @return The errorMessage at the given index. + */ + java.lang.String getErrorMessage(int index); + /** + *
+     * 错误消息列表
+     * 
+ * + * repeated string error_message = 9; + * @param index The index of the value to return. + * @return The bytes of the errorMessage at the given index. + */ + com.google.protobuf.ByteString + getErrorMessageBytes(int index); + } + /** + * Protobuf type {@code cmvr.api.RH56DFTPDexHand} + */ + public static final class RH56DFTPDexHand extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.RH56DFTPDexHand) + RH56DFTPDexHandOrBuilder { + private static final long serialVersionUID = 0L; + // Use RH56DFTPDexHand.newBuilder() to construct. + private RH56DFTPDexHand(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private RH56DFTPDexHand() { + errorMessage_ = com.google.protobuf.LazyStringArrayList.EMPTY; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new RH56DFTPDexHand(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_RH56DFTPDexHand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_RH56DFTPDexHand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.RH56DFTPDexHand.class, cmvr.api.DexhandCommand.RH56DFTPDexHand.Builder.class); + } + + public static final int DOF_ID_FIELD_NUMBER = 1; + private int dofId_; + /** + *
+     * 自由度ID,唯一标识不同的关节或自由度
+     * 
+ * + * int32 dof_id = 1; + * @return The dofId. + */ + @java.lang.Override + public int getDofId() { + return dofId_; + } + + public static final int ANGLE_FIELD_NUMBER = 2; + private int angle_; + /** + *
+     * 自由度角度
+     * 
+ * + * int32 angle = 2; + * @return The angle. + */ + @java.lang.Override + public int getAngle() { + return angle_; + } + + public static final int SPEED_FIELD_NUMBER = 3; + private int speed_; + /** + *
+     * 自由度速度
+     * 
+ * + * int32 speed = 3; + * @return The speed. + */ + @java.lang.Override + public int getSpeed() { + return speed_; + } + + public static final int FORCE_FIELD_NUMBER = 4; + private int force_; + /** + *
+     * 实际受力
+     * 
+ * + * int32 force = 4; + * @return The force. + */ + @java.lang.Override + public int getForce() { + return force_; + } + + public static final int POSITION_FIELD_NUMBER = 5; + private int position_; + /** + *
+     * 执行器位置
+     * 
+ * + * int32 position = 5; + * @return The position. + */ + @java.lang.Override + public int getPosition() { + return position_; + } + + public static final int CURRENT_FIELD_NUMBER = 6; + private int current_; + /** + *
+     * 执行器实际电流
+     * 
+ * + * int32 current = 6; + * @return The current. + */ + @java.lang.Override + public int getCurrent() { + return current_; + } + + public static final int TEMPERATURE_FIELD_NUMBER = 7; + private int temperature_; + /** + *
+     * 执行器温度
+     * 
+ * + * int32 temperature = 7; + * @return The temperature. + */ + @java.lang.Override + public int getTemperature() { + return temperature_; + } + + public static final int ERROR_FIELD_NUMBER = 8; + private int error_; + /** + *
+     * 执行器故障信息
+     * 
+ * + * int32 error = 8; + * @return The error. + */ + @java.lang.Override + public int getError() { + return error_; + } + + public static final int ERROR_MESSAGE_FIELD_NUMBER = 9; + private com.google.protobuf.LazyStringList errorMessage_; + /** + *
+     * 错误消息列表
+     * 
+ * + * repeated string error_message = 9; + * @return A list containing the errorMessage. + */ + public com.google.protobuf.ProtocolStringList + getErrorMessageList() { + return errorMessage_; + } + /** + *
+     * 错误消息列表
+     * 
+ * + * repeated string error_message = 9; + * @return The count of errorMessage. + */ + public int getErrorMessageCount() { + return errorMessage_.size(); + } + /** + *
+     * 错误消息列表
+     * 
+ * + * repeated string error_message = 9; + * @param index The index of the element to return. + * @return The errorMessage at the given index. + */ + public java.lang.String getErrorMessage(int index) { + return errorMessage_.get(index); + } + /** + *
+     * 错误消息列表
+     * 
+ * + * repeated string error_message = 9; + * @param index The index of the value to return. + * @return The bytes of the errorMessage at the given index. + */ + public com.google.protobuf.ByteString + getErrorMessageBytes(int index) { + return errorMessage_.getByteString(index); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (dofId_ != 0) { + output.writeInt32(1, dofId_); + } + if (angle_ != 0) { + output.writeInt32(2, angle_); + } + if (speed_ != 0) { + output.writeInt32(3, speed_); + } + if (force_ != 0) { + output.writeInt32(4, force_); + } + if (position_ != 0) { + output.writeInt32(5, position_); + } + if (current_ != 0) { + output.writeInt32(6, current_); + } + if (temperature_ != 0) { + output.writeInt32(7, temperature_); + } + if (error_ != 0) { + output.writeInt32(8, error_); + } + for (int i = 0; i < errorMessage_.size(); i++) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 9, errorMessage_.getRaw(i)); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (dofId_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(1, dofId_); + } + if (angle_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(2, angle_); + } + if (speed_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(3, speed_); + } + if (force_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(4, force_); + } + if (position_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(5, position_); + } + if (current_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(6, current_); + } + if (temperature_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(7, temperature_); + } + if (error_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(8, error_); + } + { + int dataSize = 0; + for (int i = 0; i < errorMessage_.size(); i++) { + dataSize += computeStringSizeNoTag(errorMessage_.getRaw(i)); + } + size += dataSize; + size += 1 * getErrorMessageList().size(); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.DexhandCommand.RH56DFTPDexHand)) { + return super.equals(obj); + } + cmvr.api.DexhandCommand.RH56DFTPDexHand other = (cmvr.api.DexhandCommand.RH56DFTPDexHand) obj; + + if (getDofId() + != other.getDofId()) return false; + if (getAngle() + != other.getAngle()) return false; + if (getSpeed() + != other.getSpeed()) return false; + if (getForce() + != other.getForce()) return false; + if (getPosition() + != other.getPosition()) return false; + if (getCurrent() + != other.getCurrent()) return false; + if (getTemperature() + != other.getTemperature()) return false; + if (getError() + != other.getError()) return false; + if (!getErrorMessageList() + .equals(other.getErrorMessageList())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + DOF_ID_FIELD_NUMBER; + hash = (53 * hash) + getDofId(); + hash = (37 * hash) + ANGLE_FIELD_NUMBER; + hash = (53 * hash) + getAngle(); + hash = (37 * hash) + SPEED_FIELD_NUMBER; + hash = (53 * hash) + getSpeed(); + hash = (37 * hash) + FORCE_FIELD_NUMBER; + hash = (53 * hash) + getForce(); + hash = (37 * hash) + POSITION_FIELD_NUMBER; + hash = (53 * hash) + getPosition(); + hash = (37 * hash) + CURRENT_FIELD_NUMBER; + hash = (53 * hash) + getCurrent(); + hash = (37 * hash) + TEMPERATURE_FIELD_NUMBER; + hash = (53 * hash) + getTemperature(); + hash = (37 * hash) + ERROR_FIELD_NUMBER; + hash = (53 * hash) + getError(); + if (getErrorMessageCount() > 0) { + hash = (37 * hash) + ERROR_MESSAGE_FIELD_NUMBER; + hash = (53 * hash) + getErrorMessageList().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.DexhandCommand.RH56DFTPDexHand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.RH56DFTPDexHand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.RH56DFTPDexHand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.RH56DFTPDexHand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.RH56DFTPDexHand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.RH56DFTPDexHand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.RH56DFTPDexHand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.RH56DFTPDexHand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.RH56DFTPDexHand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.RH56DFTPDexHand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.RH56DFTPDexHand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.RH56DFTPDexHand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.DexhandCommand.RH56DFTPDexHand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.RH56DFTPDexHand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.RH56DFTPDexHand) + cmvr.api.DexhandCommand.RH56DFTPDexHandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_RH56DFTPDexHand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_RH56DFTPDexHand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.RH56DFTPDexHand.class, cmvr.api.DexhandCommand.RH56DFTPDexHand.Builder.class); + } + + // Construct using cmvr.api.DexhandCommand.RH56DFTPDexHand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + dofId_ = 0; + + angle_ = 0; + + speed_ = 0; + + force_ = 0; + + position_ = 0; + + current_ = 0; + + temperature_ = 0; + + error_ = 0; + + errorMessage_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000001); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_RH56DFTPDexHand_descriptor; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.RH56DFTPDexHand getDefaultInstanceForType() { + return cmvr.api.DexhandCommand.RH56DFTPDexHand.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.DexhandCommand.RH56DFTPDexHand build() { + cmvr.api.DexhandCommand.RH56DFTPDexHand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.RH56DFTPDexHand buildPartial() { + cmvr.api.DexhandCommand.RH56DFTPDexHand result = new cmvr.api.DexhandCommand.RH56DFTPDexHand(this); + int from_bitField0_ = bitField0_; + result.dofId_ = dofId_; + result.angle_ = angle_; + result.speed_ = speed_; + result.force_ = force_; + result.position_ = position_; + result.current_ = current_; + result.temperature_ = temperature_; + result.error_ = error_; + if (((bitField0_ & 0x00000001) != 0)) { + errorMessage_ = errorMessage_.getUnmodifiableView(); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.errorMessage_ = errorMessage_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.DexhandCommand.RH56DFTPDexHand) { + return mergeFrom((cmvr.api.DexhandCommand.RH56DFTPDexHand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.DexhandCommand.RH56DFTPDexHand other) { + if (other == cmvr.api.DexhandCommand.RH56DFTPDexHand.getDefaultInstance()) return this; + if (other.getDofId() != 0) { + setDofId(other.getDofId()); + } + if (other.getAngle() != 0) { + setAngle(other.getAngle()); + } + if (other.getSpeed() != 0) { + setSpeed(other.getSpeed()); + } + if (other.getForce() != 0) { + setForce(other.getForce()); + } + if (other.getPosition() != 0) { + setPosition(other.getPosition()); + } + if (other.getCurrent() != 0) { + setCurrent(other.getCurrent()); + } + if (other.getTemperature() != 0) { + setTemperature(other.getTemperature()); + } + if (other.getError() != 0) { + setError(other.getError()); + } + if (!other.errorMessage_.isEmpty()) { + if (errorMessage_.isEmpty()) { + errorMessage_ = other.errorMessage_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureErrorMessageIsMutable(); + errorMessage_.addAll(other.errorMessage_); + } + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + dofId_ = input.readInt32(); + + break; + } // case 8 + case 16: { + angle_ = input.readInt32(); + + break; + } // case 16 + case 24: { + speed_ = input.readInt32(); + + break; + } // case 24 + case 32: { + force_ = input.readInt32(); + + break; + } // case 32 + case 40: { + position_ = input.readInt32(); + + break; + } // case 40 + case 48: { + current_ = input.readInt32(); + + break; + } // case 48 + case 56: { + temperature_ = input.readInt32(); + + break; + } // case 56 + case 64: { + error_ = input.readInt32(); + + break; + } // case 64 + case 74: { + java.lang.String s = input.readStringRequireUtf8(); + ensureErrorMessageIsMutable(); + errorMessage_.add(s); + break; + } // case 74 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private int dofId_ ; + /** + *
+       * 自由度ID,唯一标识不同的关节或自由度
+       * 
+ * + * int32 dof_id = 1; + * @return The dofId. + */ + @java.lang.Override + public int getDofId() { + return dofId_; + } + /** + *
+       * 自由度ID,唯一标识不同的关节或自由度
+       * 
+ * + * int32 dof_id = 1; + * @param value The dofId to set. + * @return This builder for chaining. + */ + public Builder setDofId(int value) { + + dofId_ = value; + onChanged(); + return this; + } + /** + *
+       * 自由度ID,唯一标识不同的关节或自由度
+       * 
+ * + * int32 dof_id = 1; + * @return This builder for chaining. + */ + public Builder clearDofId() { + + dofId_ = 0; + onChanged(); + return this; + } + + private int angle_ ; + /** + *
+       * 自由度角度
+       * 
+ * + * int32 angle = 2; + * @return The angle. + */ + @java.lang.Override + public int getAngle() { + return angle_; + } + /** + *
+       * 自由度角度
+       * 
+ * + * int32 angle = 2; + * @param value The angle to set. + * @return This builder for chaining. + */ + public Builder setAngle(int value) { + + angle_ = value; + onChanged(); + return this; + } + /** + *
+       * 自由度角度
+       * 
+ * + * int32 angle = 2; + * @return This builder for chaining. + */ + public Builder clearAngle() { + + angle_ = 0; + onChanged(); + return this; + } + + private int speed_ ; + /** + *
+       * 自由度速度
+       * 
+ * + * int32 speed = 3; + * @return The speed. + */ + @java.lang.Override + public int getSpeed() { + return speed_; + } + /** + *
+       * 自由度速度
+       * 
+ * + * int32 speed = 3; + * @param value The speed to set. + * @return This builder for chaining. + */ + public Builder setSpeed(int value) { + + speed_ = value; + onChanged(); + return this; + } + /** + *
+       * 自由度速度
+       * 
+ * + * int32 speed = 3; + * @return This builder for chaining. + */ + public Builder clearSpeed() { + + speed_ = 0; + onChanged(); + return this; + } + + private int force_ ; + /** + *
+       * 实际受力
+       * 
+ * + * int32 force = 4; + * @return The force. + */ + @java.lang.Override + public int getForce() { + return force_; + } + /** + *
+       * 实际受力
+       * 
+ * + * int32 force = 4; + * @param value The force to set. + * @return This builder for chaining. + */ + public Builder setForce(int value) { + + force_ = value; + onChanged(); + return this; + } + /** + *
+       * 实际受力
+       * 
+ * + * int32 force = 4; + * @return This builder for chaining. + */ + public Builder clearForce() { + + force_ = 0; + onChanged(); + return this; + } + + private int position_ ; + /** + *
+       * 执行器位置
+       * 
+ * + * int32 position = 5; + * @return The position. + */ + @java.lang.Override + public int getPosition() { + return position_; + } + /** + *
+       * 执行器位置
+       * 
+ * + * int32 position = 5; + * @param value The position to set. + * @return This builder for chaining. + */ + public Builder setPosition(int value) { + + position_ = value; + onChanged(); + return this; + } + /** + *
+       * 执行器位置
+       * 
+ * + * int32 position = 5; + * @return This builder for chaining. + */ + public Builder clearPosition() { + + position_ = 0; + onChanged(); + return this; + } + + private int current_ ; + /** + *
+       * 执行器实际电流
+       * 
+ * + * int32 current = 6; + * @return The current. + */ + @java.lang.Override + public int getCurrent() { + return current_; + } + /** + *
+       * 执行器实际电流
+       * 
+ * + * int32 current = 6; + * @param value The current to set. + * @return This builder for chaining. + */ + public Builder setCurrent(int value) { + + current_ = value; + onChanged(); + return this; + } + /** + *
+       * 执行器实际电流
+       * 
+ * + * int32 current = 6; + * @return This builder for chaining. + */ + public Builder clearCurrent() { + + current_ = 0; + onChanged(); + return this; + } + + private int temperature_ ; + /** + *
+       * 执行器温度
+       * 
+ * + * int32 temperature = 7; + * @return The temperature. + */ + @java.lang.Override + public int getTemperature() { + return temperature_; + } + /** + *
+       * 执行器温度
+       * 
+ * + * int32 temperature = 7; + * @param value The temperature to set. + * @return This builder for chaining. + */ + public Builder setTemperature(int value) { + + temperature_ = value; + onChanged(); + return this; + } + /** + *
+       * 执行器温度
+       * 
+ * + * int32 temperature = 7; + * @return This builder for chaining. + */ + public Builder clearTemperature() { + + temperature_ = 0; + onChanged(); + return this; + } + + private int error_ ; + /** + *
+       * 执行器故障信息
+       * 
+ * + * int32 error = 8; + * @return The error. + */ + @java.lang.Override + public int getError() { + return error_; + } + /** + *
+       * 执行器故障信息
+       * 
+ * + * int32 error = 8; + * @param value The error to set. + * @return This builder for chaining. + */ + public Builder setError(int value) { + + error_ = value; + onChanged(); + return this; + } + /** + *
+       * 执行器故障信息
+       * 
+ * + * int32 error = 8; + * @return This builder for chaining. + */ + public Builder clearError() { + + error_ = 0; + onChanged(); + return this; + } + + private com.google.protobuf.LazyStringList errorMessage_ = com.google.protobuf.LazyStringArrayList.EMPTY; + private void ensureErrorMessageIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + errorMessage_ = new com.google.protobuf.LazyStringArrayList(errorMessage_); + bitField0_ |= 0x00000001; + } + } + /** + *
+       * 错误消息列表
+       * 
+ * + * repeated string error_message = 9; + * @return A list containing the errorMessage. + */ + public com.google.protobuf.ProtocolStringList + getErrorMessageList() { + return errorMessage_.getUnmodifiableView(); + } + /** + *
+       * 错误消息列表
+       * 
+ * + * repeated string error_message = 9; + * @return The count of errorMessage. + */ + public int getErrorMessageCount() { + return errorMessage_.size(); + } + /** + *
+       * 错误消息列表
+       * 
+ * + * repeated string error_message = 9; + * @param index The index of the element to return. + * @return The errorMessage at the given index. + */ + public java.lang.String getErrorMessage(int index) { + return errorMessage_.get(index); + } + /** + *
+       * 错误消息列表
+       * 
+ * + * repeated string error_message = 9; + * @param index The index of the value to return. + * @return The bytes of the errorMessage at the given index. + */ + public com.google.protobuf.ByteString + getErrorMessageBytes(int index) { + return errorMessage_.getByteString(index); + } + /** + *
+       * 错误消息列表
+       * 
+ * + * repeated string error_message = 9; + * @param index The index to set the value at. + * @param value The errorMessage to set. + * @return This builder for chaining. + */ + public Builder setErrorMessage( + int index, java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureErrorMessageIsMutable(); + errorMessage_.set(index, value); + onChanged(); + return this; + } + /** + *
+       * 错误消息列表
+       * 
+ * + * repeated string error_message = 9; + * @param value The errorMessage to add. + * @return This builder for chaining. + */ + public Builder addErrorMessage( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureErrorMessageIsMutable(); + errorMessage_.add(value); + onChanged(); + return this; + } + /** + *
+       * 错误消息列表
+       * 
+ * + * repeated string error_message = 9; + * @param values The errorMessage to add. + * @return This builder for chaining. + */ + public Builder addAllErrorMessage( + java.lang.Iterable values) { + ensureErrorMessageIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, errorMessage_); + onChanged(); + return this; + } + /** + *
+       * 错误消息列表
+       * 
+ * + * repeated string error_message = 9; + * @return This builder for chaining. + */ + public Builder clearErrorMessage() { + errorMessage_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + /** + *
+       * 错误消息列表
+       * 
+ * + * repeated string error_message = 9; + * @param value The bytes of the errorMessage to add. + * @return This builder for chaining. + */ + public Builder addErrorMessageBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + ensureErrorMessageIsMutable(); + errorMessage_.add(value); + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.RH56DFTPDexHand) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.RH56DFTPDexHand) + private static final cmvr.api.DexhandCommand.RH56DFTPDexHand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.DexhandCommand.RH56DFTPDexHand(); + } + + public static cmvr.api.DexhandCommand.RH56DFTPDexHand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public RH56DFTPDexHand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.RH56DFTPDexHand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface SensorDataOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.SensorData) + com.google.protobuf.MessageOrBuilder { + + /** + *
+     * 手指类型(掌心使用PALM)
+     * 
+ * + * .cmvr.api.SensorData.FingerType finger_type = 4; + * @return The enum numeric value on the wire for fingerType. + */ + int getFingerTypeValue(); + /** + *
+     * 手指类型(掌心使用PALM)
+     * 
+ * + * .cmvr.api.SensorData.FingerType finger_type = 4; + * @return The fingerType. + */ + cmvr.api.DexhandCommand.SensorData.FingerType getFingerType(); + + /** + *
+     * 部位类型
+     * 
+ * + * .cmvr.api.SensorData.PartType part_type = 5; + * @return The enum numeric value on the wire for partType. + */ + int getPartTypeValue(); + /** + *
+     * 部位类型
+     * 
+ * + * .cmvr.api.SensorData.PartType part_type = 5; + * @return The partType. + */ + cmvr.api.DexhandCommand.SensorData.PartType getPartType(); + + /** + *
+     * 传感器名称(如"小拇指指端")
+     * 
+ * + * string sensor_name = 6; + * @return The sensorName. + */ + java.lang.String getSensorName(); + /** + *
+     * 传感器名称(如"小拇指指端")
+     * 
+ * + * string sensor_name = 6; + * @return The bytes for sensorName. + */ + com.google.protobuf.ByteString + getSensorNameBytes(); + + /** + *
+     * 二维数组,每行数据是 RowData 类型
+     * 
+ * + * repeated .cmvr.api.SensorData.RowData data = 1; + */ + java.util.List + getDataList(); + /** + *
+     * 二维数组,每行数据是 RowData 类型
+     * 
+ * + * repeated .cmvr.api.SensorData.RowData data = 1; + */ + cmvr.api.DexhandCommand.SensorData.RowData getData(int index); + /** + *
+     * 二维数组,每行数据是 RowData 类型
+     * 
+ * + * repeated .cmvr.api.SensorData.RowData data = 1; + */ + int getDataCount(); + /** + *
+     * 二维数组,每行数据是 RowData 类型
+     * 
+ * + * repeated .cmvr.api.SensorData.RowData data = 1; + */ + java.util.List + getDataOrBuilderList(); + /** + *
+     * 二维数组,每行数据是 RowData 类型
+     * 
+ * + * repeated .cmvr.api.SensorData.RowData data = 1; + */ + cmvr.api.DexhandCommand.SensorData.RowDataOrBuilder getDataOrBuilder( + int index); + + /** + *
+     * 行
+     * 
+ * + * int32 rows = 2; + * @return The rows. + */ + int getRows(); + + /** + *
+     * 列
+     * 
+ * + * int32 cols = 3; + * @return The cols. + */ + int getCols(); + } + /** + *
+   * 传感器数据
+   * 传感器数据
+   * 
+ * + * Protobuf type {@code cmvr.api.SensorData} + */ + public static final class SensorData extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.SensorData) + SensorDataOrBuilder { + private static final long serialVersionUID = 0L; + // Use SensorData.newBuilder() to construct. + private SensorData(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private SensorData() { + fingerType_ = 0; + partType_ = 0; + sensorName_ = ""; + data_ = java.util.Collections.emptyList(); + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new SensorData(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SensorData_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SensorData_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.SensorData.class, cmvr.api.DexhandCommand.SensorData.Builder.class); + } + + /** + *
+     * 手指类型(掌心作为特殊类型)
+     * 
+ * + * Protobuf enum {@code cmvr.api.SensorData.FingerType} + */ + public enum FingerType + implements com.google.protobuf.ProtocolMessageEnum { + /** + *
+       * 小拇指
+       * 
+ * + * PINKY = 0; + */ + PINKY(0), + /** + *
+       * 无名指
+       * 
+ * + * RING = 1; + */ + RING(1), + /** + *
+       * 中指(避免与PartType.MIDDLE冲突)
+       * 
+ * + * MIDDLE_FINGER = 2; + */ + MIDDLE_FINGER(2), + /** + *
+       * 食指
+       * 
+ * + * INDEX = 3; + */ + INDEX(3), + /** + *
+       * 大拇指
+       * 
+ * + * THUMB = 4; + */ + THUMB(4), + /** + *
+       * 掌心
+       * 
+ * + * PALM = 5; + */ + PALM(5), + UNRECOGNIZED(-1), + ; + + /** + *
+       * 小拇指
+       * 
+ * + * PINKY = 0; + */ + public static final int PINKY_VALUE = 0; + /** + *
+       * 无名指
+       * 
+ * + * RING = 1; + */ + public static final int RING_VALUE = 1; + /** + *
+       * 中指(避免与PartType.MIDDLE冲突)
+       * 
+ * + * MIDDLE_FINGER = 2; + */ + public static final int MIDDLE_FINGER_VALUE = 2; + /** + *
+       * 食指
+       * 
+ * + * INDEX = 3; + */ + public static final int INDEX_VALUE = 3; + /** + *
+       * 大拇指
+       * 
+ * + * THUMB = 4; + */ + public static final int THUMB_VALUE = 4; + /** + *
+       * 掌心
+       * 
+ * + * PALM = 5; + */ + public static final int PALM_VALUE = 5; + + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static FingerType valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static FingerType forNumber(int value) { + switch (value) { + case 0: return PINKY; + case 1: return RING; + case 2: return MIDDLE_FINGER; + case 3: return INDEX; + case 4: return THUMB; + case 5: return PALM; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + FingerType> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public FingerType findValueByNumber(int number) { + return FingerType.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(ordinal()); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return cmvr.api.DexhandCommand.SensorData.getDescriptor().getEnumTypes().get(0); + } + + private static final FingerType[] VALUES = values(); + + public static FingerType valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private FingerType(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:cmvr.api.SensorData.FingerType) + } + + /** + *
+     * 部位类型(指中改为THUMB_MIDDLE以避免冲突)
+     * 
+ * + * Protobuf enum {@code cmvr.api.SensorData.PartType} + */ + public enum PartType + implements com.google.protobuf.ProtocolMessageEnum { + /** + *
+       * 指端
+       * 
+ * + * TIP = 0; + */ + TIP(0), + /** + *
+       * 指尖
+       * 
+ * + * FINGER = 1; + */ + FINGER(1), + /** + *
+       * 指腹
+       * 
+ * + * PAD = 2; + */ + PAD(2), + /** + *
+       * 大拇指指中(仅大拇指有)
+       * 
+ * + * THUMB_MIDDLE = 3; + */ + THUMB_MIDDLE(3), + /** + *
+       * 掌心部位(对应PalmTactileData)
+       * 
+ * + * PALM_PAD = 4; + */ + PALM_PAD(4), + UNRECOGNIZED(-1), + ; + + /** + *
+       * 指端
+       * 
+ * + * TIP = 0; + */ + public static final int TIP_VALUE = 0; + /** + *
+       * 指尖
+       * 
+ * + * FINGER = 1; + */ + public static final int FINGER_VALUE = 1; + /** + *
+       * 指腹
+       * 
+ * + * PAD = 2; + */ + public static final int PAD_VALUE = 2; + /** + *
+       * 大拇指指中(仅大拇指有)
+       * 
+ * + * THUMB_MIDDLE = 3; + */ + public static final int THUMB_MIDDLE_VALUE = 3; + /** + *
+       * 掌心部位(对应PalmTactileData)
+       * 
+ * + * PALM_PAD = 4; + */ + public static final int PALM_PAD_VALUE = 4; + + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static PartType valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static PartType forNumber(int value) { + switch (value) { + case 0: return TIP; + case 1: return FINGER; + case 2: return PAD; + case 3: return THUMB_MIDDLE; + case 4: return PALM_PAD; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + PartType> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public PartType findValueByNumber(int number) { + return PartType.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(ordinal()); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return cmvr.api.DexhandCommand.SensorData.getDescriptor().getEnumTypes().get(1); + } + + private static final PartType[] VALUES = values(); + + public static PartType valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private PartType(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:cmvr.api.SensorData.PartType) + } + + public interface RowDataOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.SensorData.RowData) + com.google.protobuf.MessageOrBuilder { + + /** + *
+       * 一维数组,存放每行的浮点数值
+       * 
+ * + * repeated int32 values = 1 [packed = true]; + * @return A list containing the values. + */ + java.util.List getValuesList(); + /** + *
+       * 一维数组,存放每行的浮点数值
+       * 
+ * + * repeated int32 values = 1 [packed = true]; + * @return The count of values. + */ + int getValuesCount(); + /** + *
+       * 一维数组,存放每行的浮点数值
+       * 
+ * + * repeated int32 values = 1 [packed = true]; + * @param index The index of the element to return. + * @return The values at the given index. + */ + int getValues(int index); + } + /** + * Protobuf type {@code cmvr.api.SensorData.RowData} + */ + public static final class RowData extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.SensorData.RowData) + RowDataOrBuilder { + private static final long serialVersionUID = 0L; + // Use RowData.newBuilder() to construct. + private RowData(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private RowData() { + values_ = emptyIntList(); + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new RowData(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SensorData_RowData_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SensorData_RowData_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.SensorData.RowData.class, cmvr.api.DexhandCommand.SensorData.RowData.Builder.class); + } + + public static final int VALUES_FIELD_NUMBER = 1; + private com.google.protobuf.Internal.IntList values_; + /** + *
+       * 一维数组,存放每行的浮点数值
+       * 
+ * + * repeated int32 values = 1 [packed = true]; + * @return A list containing the values. + */ + @java.lang.Override + public java.util.List + getValuesList() { + return values_; + } + /** + *
+       * 一维数组,存放每行的浮点数值
+       * 
+ * + * repeated int32 values = 1 [packed = true]; + * @return The count of values. + */ + public int getValuesCount() { + return values_.size(); + } + /** + *
+       * 一维数组,存放每行的浮点数值
+       * 
+ * + * repeated int32 values = 1 [packed = true]; + * @param index The index of the element to return. + * @return The values at the given index. + */ + public int getValues(int index) { + return values_.getInt(index); + } + private int valuesMemoizedSerializedSize = -1; + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (getValuesList().size() > 0) { + output.writeUInt32NoTag(10); + output.writeUInt32NoTag(valuesMemoizedSerializedSize); + } + for (int i = 0; i < values_.size(); i++) { + output.writeInt32NoTag(values_.getInt(i)); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + { + int dataSize = 0; + for (int i = 0; i < values_.size(); i++) { + dataSize += com.google.protobuf.CodedOutputStream + .computeInt32SizeNoTag(values_.getInt(i)); + } + size += dataSize; + if (!getValuesList().isEmpty()) { + size += 1; + size += com.google.protobuf.CodedOutputStream + .computeInt32SizeNoTag(dataSize); + } + valuesMemoizedSerializedSize = dataSize; + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.DexhandCommand.SensorData.RowData)) { + return super.equals(obj); + } + cmvr.api.DexhandCommand.SensorData.RowData other = (cmvr.api.DexhandCommand.SensorData.RowData) obj; + + if (!getValuesList() + .equals(other.getValuesList())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (getValuesCount() > 0) { + hash = (37 * hash) + VALUES_FIELD_NUMBER; + hash = (53 * hash) + getValuesList().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.DexhandCommand.SensorData.RowData parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SensorData.RowData parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SensorData.RowData parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SensorData.RowData parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SensorData.RowData parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SensorData.RowData parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SensorData.RowData parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SensorData.RowData parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SensorData.RowData parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SensorData.RowData parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SensorData.RowData parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SensorData.RowData parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.DexhandCommand.SensorData.RowData prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.SensorData.RowData} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.SensorData.RowData) + cmvr.api.DexhandCommand.SensorData.RowDataOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SensorData_RowData_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SensorData_RowData_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.SensorData.RowData.class, cmvr.api.DexhandCommand.SensorData.RowData.Builder.class); + } + + // Construct using cmvr.api.DexhandCommand.SensorData.RowData.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + values_ = emptyIntList(); + bitField0_ = (bitField0_ & ~0x00000001); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SensorData_RowData_descriptor; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SensorData.RowData getDefaultInstanceForType() { + return cmvr.api.DexhandCommand.SensorData.RowData.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SensorData.RowData build() { + cmvr.api.DexhandCommand.SensorData.RowData result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SensorData.RowData buildPartial() { + cmvr.api.DexhandCommand.SensorData.RowData result = new cmvr.api.DexhandCommand.SensorData.RowData(this); + int from_bitField0_ = bitField0_; + if (((bitField0_ & 0x00000001) != 0)) { + values_.makeImmutable(); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.values_ = values_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.DexhandCommand.SensorData.RowData) { + return mergeFrom((cmvr.api.DexhandCommand.SensorData.RowData)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.DexhandCommand.SensorData.RowData other) { + if (other == cmvr.api.DexhandCommand.SensorData.RowData.getDefaultInstance()) return this; + if (!other.values_.isEmpty()) { + if (values_.isEmpty()) { + values_ = other.values_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureValuesIsMutable(); + values_.addAll(other.values_); + } + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + int v = input.readInt32(); + ensureValuesIsMutable(); + values_.addInt(v); + break; + } // case 8 + case 10: { + int length = input.readRawVarint32(); + int limit = input.pushLimit(length); + ensureValuesIsMutable(); + while (input.getBytesUntilLimit() > 0) { + values_.addInt(input.readInt32()); + } + input.popLimit(limit); + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private com.google.protobuf.Internal.IntList values_ = emptyIntList(); + private void ensureValuesIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + values_ = mutableCopy(values_); + bitField0_ |= 0x00000001; + } + } + /** + *
+         * 一维数组,存放每行的浮点数值
+         * 
+ * + * repeated int32 values = 1 [packed = true]; + * @return A list containing the values. + */ + public java.util.List + getValuesList() { + return ((bitField0_ & 0x00000001) != 0) ? + java.util.Collections.unmodifiableList(values_) : values_; + } + /** + *
+         * 一维数组,存放每行的浮点数值
+         * 
+ * + * repeated int32 values = 1 [packed = true]; + * @return The count of values. + */ + public int getValuesCount() { + return values_.size(); + } + /** + *
+         * 一维数组,存放每行的浮点数值
+         * 
+ * + * repeated int32 values = 1 [packed = true]; + * @param index The index of the element to return. + * @return The values at the given index. + */ + public int getValues(int index) { + return values_.getInt(index); + } + /** + *
+         * 一维数组,存放每行的浮点数值
+         * 
+ * + * repeated int32 values = 1 [packed = true]; + * @param index The index to set the value at. + * @param value The values to set. + * @return This builder for chaining. + */ + public Builder setValues( + int index, int value) { + ensureValuesIsMutable(); + values_.setInt(index, value); + onChanged(); + return this; + } + /** + *
+         * 一维数组,存放每行的浮点数值
+         * 
+ * + * repeated int32 values = 1 [packed = true]; + * @param value The values to add. + * @return This builder for chaining. + */ + public Builder addValues(int value) { + ensureValuesIsMutable(); + values_.addInt(value); + onChanged(); + return this; + } + /** + *
+         * 一维数组,存放每行的浮点数值
+         * 
+ * + * repeated int32 values = 1 [packed = true]; + * @param values The values to add. + * @return This builder for chaining. + */ + public Builder addAllValues( + java.lang.Iterable values) { + ensureValuesIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, values_); + onChanged(); + return this; + } + /** + *
+         * 一维数组,存放每行的浮点数值
+         * 
+ * + * repeated int32 values = 1 [packed = true]; + * @return This builder for chaining. + */ + public Builder clearValues() { + values_ = emptyIntList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.SensorData.RowData) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.SensorData.RowData) + private static final cmvr.api.DexhandCommand.SensorData.RowData DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.DexhandCommand.SensorData.RowData(); + } + + public static cmvr.api.DexhandCommand.SensorData.RowData getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public RowData parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SensorData.RowData getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public static final int FINGER_TYPE_FIELD_NUMBER = 4; + private int fingerType_; + /** + *
+     * 手指类型(掌心使用PALM)
+     * 
+ * + * .cmvr.api.SensorData.FingerType finger_type = 4; + * @return The enum numeric value on the wire for fingerType. + */ + @java.lang.Override public int getFingerTypeValue() { + return fingerType_; + } + /** + *
+     * 手指类型(掌心使用PALM)
+     * 
+ * + * .cmvr.api.SensorData.FingerType finger_type = 4; + * @return The fingerType. + */ + @java.lang.Override public cmvr.api.DexhandCommand.SensorData.FingerType getFingerType() { + @SuppressWarnings("deprecation") + cmvr.api.DexhandCommand.SensorData.FingerType result = cmvr.api.DexhandCommand.SensorData.FingerType.valueOf(fingerType_); + return result == null ? cmvr.api.DexhandCommand.SensorData.FingerType.UNRECOGNIZED : result; + } + + public static final int PART_TYPE_FIELD_NUMBER = 5; + private int partType_; + /** + *
+     * 部位类型
+     * 
+ * + * .cmvr.api.SensorData.PartType part_type = 5; + * @return The enum numeric value on the wire for partType. + */ + @java.lang.Override public int getPartTypeValue() { + return partType_; + } + /** + *
+     * 部位类型
+     * 
+ * + * .cmvr.api.SensorData.PartType part_type = 5; + * @return The partType. + */ + @java.lang.Override public cmvr.api.DexhandCommand.SensorData.PartType getPartType() { + @SuppressWarnings("deprecation") + cmvr.api.DexhandCommand.SensorData.PartType result = cmvr.api.DexhandCommand.SensorData.PartType.valueOf(partType_); + return result == null ? cmvr.api.DexhandCommand.SensorData.PartType.UNRECOGNIZED : result; + } + + public static final int SENSOR_NAME_FIELD_NUMBER = 6; + private volatile java.lang.Object sensorName_; + /** + *
+     * 传感器名称(如"小拇指指端")
+     * 
+ * + * string sensor_name = 6; + * @return The sensorName. + */ + @java.lang.Override + public java.lang.String getSensorName() { + java.lang.Object ref = sensorName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + sensorName_ = s; + return s; + } + } + /** + *
+     * 传感器名称(如"小拇指指端")
+     * 
+ * + * string sensor_name = 6; + * @return The bytes for sensorName. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getSensorNameBytes() { + java.lang.Object ref = sensorName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + sensorName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int DATA_FIELD_NUMBER = 1; + private java.util.List data_; + /** + *
+     * 二维数组,每行数据是 RowData 类型
+     * 
+ * + * repeated .cmvr.api.SensorData.RowData data = 1; + */ + @java.lang.Override + public java.util.List getDataList() { + return data_; + } + /** + *
+     * 二维数组,每行数据是 RowData 类型
+     * 
+ * + * repeated .cmvr.api.SensorData.RowData data = 1; + */ + @java.lang.Override + public java.util.List + getDataOrBuilderList() { + return data_; + } + /** + *
+     * 二维数组,每行数据是 RowData 类型
+     * 
+ * + * repeated .cmvr.api.SensorData.RowData data = 1; + */ + @java.lang.Override + public int getDataCount() { + return data_.size(); + } + /** + *
+     * 二维数组,每行数据是 RowData 类型
+     * 
+ * + * repeated .cmvr.api.SensorData.RowData data = 1; + */ + @java.lang.Override + public cmvr.api.DexhandCommand.SensorData.RowData getData(int index) { + return data_.get(index); + } + /** + *
+     * 二维数组,每行数据是 RowData 类型
+     * 
+ * + * repeated .cmvr.api.SensorData.RowData data = 1; + */ + @java.lang.Override + public cmvr.api.DexhandCommand.SensorData.RowDataOrBuilder getDataOrBuilder( + int index) { + return data_.get(index); + } + + public static final int ROWS_FIELD_NUMBER = 2; + private int rows_; + /** + *
+     * 行
+     * 
+ * + * int32 rows = 2; + * @return The rows. + */ + @java.lang.Override + public int getRows() { + return rows_; + } + + public static final int COLS_FIELD_NUMBER = 3; + private int cols_; + /** + *
+     * 列
+     * 
+ * + * int32 cols = 3; + * @return The cols. + */ + @java.lang.Override + public int getCols() { + return cols_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + for (int i = 0; i < data_.size(); i++) { + output.writeMessage(1, data_.get(i)); + } + if (rows_ != 0) { + output.writeInt32(2, rows_); + } + if (cols_ != 0) { + output.writeInt32(3, cols_); + } + if (fingerType_ != cmvr.api.DexhandCommand.SensorData.FingerType.PINKY.getNumber()) { + output.writeEnum(4, fingerType_); + } + if (partType_ != cmvr.api.DexhandCommand.SensorData.PartType.TIP.getNumber()) { + output.writeEnum(5, partType_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sensorName_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 6, sensorName_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + for (int i = 0; i < data_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, data_.get(i)); + } + if (rows_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(2, rows_); + } + if (cols_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(3, cols_); + } + if (fingerType_ != cmvr.api.DexhandCommand.SensorData.FingerType.PINKY.getNumber()) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(4, fingerType_); + } + if (partType_ != cmvr.api.DexhandCommand.SensorData.PartType.TIP.getNumber()) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(5, partType_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sensorName_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, sensorName_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.DexhandCommand.SensorData)) { + return super.equals(obj); + } + cmvr.api.DexhandCommand.SensorData other = (cmvr.api.DexhandCommand.SensorData) obj; + + if (fingerType_ != other.fingerType_) return false; + if (partType_ != other.partType_) return false; + if (!getSensorName() + .equals(other.getSensorName())) return false; + if (!getDataList() + .equals(other.getDataList())) return false; + if (getRows() + != other.getRows()) return false; + if (getCols() + != other.getCols()) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + FINGER_TYPE_FIELD_NUMBER; + hash = (53 * hash) + fingerType_; + hash = (37 * hash) + PART_TYPE_FIELD_NUMBER; + hash = (53 * hash) + partType_; + hash = (37 * hash) + SENSOR_NAME_FIELD_NUMBER; + hash = (53 * hash) + getSensorName().hashCode(); + if (getDataCount() > 0) { + hash = (37 * hash) + DATA_FIELD_NUMBER; + hash = (53 * hash) + getDataList().hashCode(); + } + hash = (37 * hash) + ROWS_FIELD_NUMBER; + hash = (53 * hash) + getRows(); + hash = (37 * hash) + COLS_FIELD_NUMBER; + hash = (53 * hash) + getCols(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.DexhandCommand.SensorData parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SensorData parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SensorData parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SensorData parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SensorData parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SensorData parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SensorData parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SensorData parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SensorData parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SensorData parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SensorData parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SensorData parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.DexhandCommand.SensorData prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * 传感器数据
+     * 传感器数据
+     * 
+ * + * Protobuf type {@code cmvr.api.SensorData} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.SensorData) + cmvr.api.DexhandCommand.SensorDataOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SensorData_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SensorData_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.SensorData.class, cmvr.api.DexhandCommand.SensorData.Builder.class); + } + + // Construct using cmvr.api.DexhandCommand.SensorData.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + fingerType_ = 0; + + partType_ = 0; + + sensorName_ = ""; + + if (dataBuilder_ == null) { + data_ = java.util.Collections.emptyList(); + } else { + data_ = null; + dataBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); + rows_ = 0; + + cols_ = 0; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SensorData_descriptor; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SensorData getDefaultInstanceForType() { + return cmvr.api.DexhandCommand.SensorData.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SensorData build() { + cmvr.api.DexhandCommand.SensorData result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SensorData buildPartial() { + cmvr.api.DexhandCommand.SensorData result = new cmvr.api.DexhandCommand.SensorData(this); + int from_bitField0_ = bitField0_; + result.fingerType_ = fingerType_; + result.partType_ = partType_; + result.sensorName_ = sensorName_; + if (dataBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0)) { + data_ = java.util.Collections.unmodifiableList(data_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.data_ = data_; + } else { + result.data_ = dataBuilder_.build(); + } + result.rows_ = rows_; + result.cols_ = cols_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.DexhandCommand.SensorData) { + return mergeFrom((cmvr.api.DexhandCommand.SensorData)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.DexhandCommand.SensorData other) { + if (other == cmvr.api.DexhandCommand.SensorData.getDefaultInstance()) return this; + if (other.fingerType_ != 0) { + setFingerTypeValue(other.getFingerTypeValue()); + } + if (other.partType_ != 0) { + setPartTypeValue(other.getPartTypeValue()); + } + if (!other.getSensorName().isEmpty()) { + sensorName_ = other.sensorName_; + onChanged(); + } + if (dataBuilder_ == null) { + if (!other.data_.isEmpty()) { + if (data_.isEmpty()) { + data_ = other.data_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureDataIsMutable(); + data_.addAll(other.data_); + } + onChanged(); + } + } else { + if (!other.data_.isEmpty()) { + if (dataBuilder_.isEmpty()) { + dataBuilder_.dispose(); + dataBuilder_ = null; + data_ = other.data_; + bitField0_ = (bitField0_ & ~0x00000001); + dataBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? + getDataFieldBuilder() : null; + } else { + dataBuilder_.addAllMessages(other.data_); + } + } + } + if (other.getRows() != 0) { + setRows(other.getRows()); + } + if (other.getCols() != 0) { + setCols(other.getCols()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + cmvr.api.DexhandCommand.SensorData.RowData m = + input.readMessage( + cmvr.api.DexhandCommand.SensorData.RowData.parser(), + extensionRegistry); + if (dataBuilder_ == null) { + ensureDataIsMutable(); + data_.add(m); + } else { + dataBuilder_.addMessage(m); + } + break; + } // case 10 + case 16: { + rows_ = input.readInt32(); + + break; + } // case 16 + case 24: { + cols_ = input.readInt32(); + + break; + } // case 24 + case 32: { + fingerType_ = input.readEnum(); + + break; + } // case 32 + case 40: { + partType_ = input.readEnum(); + + break; + } // case 40 + case 50: { + sensorName_ = input.readStringRequireUtf8(); + + break; + } // case 50 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private int fingerType_ = 0; + /** + *
+       * 手指类型(掌心使用PALM)
+       * 
+ * + * .cmvr.api.SensorData.FingerType finger_type = 4; + * @return The enum numeric value on the wire for fingerType. + */ + @java.lang.Override public int getFingerTypeValue() { + return fingerType_; + } + /** + *
+       * 手指类型(掌心使用PALM)
+       * 
+ * + * .cmvr.api.SensorData.FingerType finger_type = 4; + * @param value The enum numeric value on the wire for fingerType to set. + * @return This builder for chaining. + */ + public Builder setFingerTypeValue(int value) { + + fingerType_ = value; + onChanged(); + return this; + } + /** + *
+       * 手指类型(掌心使用PALM)
+       * 
+ * + * .cmvr.api.SensorData.FingerType finger_type = 4; + * @return The fingerType. + */ + @java.lang.Override + public cmvr.api.DexhandCommand.SensorData.FingerType getFingerType() { + @SuppressWarnings("deprecation") + cmvr.api.DexhandCommand.SensorData.FingerType result = cmvr.api.DexhandCommand.SensorData.FingerType.valueOf(fingerType_); + return result == null ? cmvr.api.DexhandCommand.SensorData.FingerType.UNRECOGNIZED : result; + } + /** + *
+       * 手指类型(掌心使用PALM)
+       * 
+ * + * .cmvr.api.SensorData.FingerType finger_type = 4; + * @param value The fingerType to set. + * @return This builder for chaining. + */ + public Builder setFingerType(cmvr.api.DexhandCommand.SensorData.FingerType value) { + if (value == null) { + throw new NullPointerException(); + } + + fingerType_ = value.getNumber(); + onChanged(); + return this; + } + /** + *
+       * 手指类型(掌心使用PALM)
+       * 
+ * + * .cmvr.api.SensorData.FingerType finger_type = 4; + * @return This builder for chaining. + */ + public Builder clearFingerType() { + + fingerType_ = 0; + onChanged(); + return this; + } + + private int partType_ = 0; + /** + *
+       * 部位类型
+       * 
+ * + * .cmvr.api.SensorData.PartType part_type = 5; + * @return The enum numeric value on the wire for partType. + */ + @java.lang.Override public int getPartTypeValue() { + return partType_; + } + /** + *
+       * 部位类型
+       * 
+ * + * .cmvr.api.SensorData.PartType part_type = 5; + * @param value The enum numeric value on the wire for partType to set. + * @return This builder for chaining. + */ + public Builder setPartTypeValue(int value) { + + partType_ = value; + onChanged(); + return this; + } + /** + *
+       * 部位类型
+       * 
+ * + * .cmvr.api.SensorData.PartType part_type = 5; + * @return The partType. + */ + @java.lang.Override + public cmvr.api.DexhandCommand.SensorData.PartType getPartType() { + @SuppressWarnings("deprecation") + cmvr.api.DexhandCommand.SensorData.PartType result = cmvr.api.DexhandCommand.SensorData.PartType.valueOf(partType_); + return result == null ? cmvr.api.DexhandCommand.SensorData.PartType.UNRECOGNIZED : result; + } + /** + *
+       * 部位类型
+       * 
+ * + * .cmvr.api.SensorData.PartType part_type = 5; + * @param value The partType to set. + * @return This builder for chaining. + */ + public Builder setPartType(cmvr.api.DexhandCommand.SensorData.PartType value) { + if (value == null) { + throw new NullPointerException(); + } + + partType_ = value.getNumber(); + onChanged(); + return this; + } + /** + *
+       * 部位类型
+       * 
+ * + * .cmvr.api.SensorData.PartType part_type = 5; + * @return This builder for chaining. + */ + public Builder clearPartType() { + + partType_ = 0; + onChanged(); + return this; + } + + private java.lang.Object sensorName_ = ""; + /** + *
+       * 传感器名称(如"小拇指指端")
+       * 
+ * + * string sensor_name = 6; + * @return The sensorName. + */ + public java.lang.String getSensorName() { + java.lang.Object ref = sensorName_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + sensorName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * 传感器名称(如"小拇指指端")
+       * 
+ * + * string sensor_name = 6; + * @return The bytes for sensorName. + */ + public com.google.protobuf.ByteString + getSensorNameBytes() { + java.lang.Object ref = sensorName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + sensorName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * 传感器名称(如"小拇指指端")
+       * 
+ * + * string sensor_name = 6; + * @param value The sensorName to set. + * @return This builder for chaining. + */ + public Builder setSensorName( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + sensorName_ = value; + onChanged(); + return this; + } + /** + *
+       * 传感器名称(如"小拇指指端")
+       * 
+ * + * string sensor_name = 6; + * @return This builder for chaining. + */ + public Builder clearSensorName() { + + sensorName_ = getDefaultInstance().getSensorName(); + onChanged(); + return this; + } + /** + *
+       * 传感器名称(如"小拇指指端")
+       * 
+ * + * string sensor_name = 6; + * @param value The bytes for sensorName to set. + * @return This builder for chaining. + */ + public Builder setSensorNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + sensorName_ = value; + onChanged(); + return this; + } + + private java.util.List data_ = + java.util.Collections.emptyList(); + private void ensureDataIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + data_ = new java.util.ArrayList(data_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + cmvr.api.DexhandCommand.SensorData.RowData, cmvr.api.DexhandCommand.SensorData.RowData.Builder, cmvr.api.DexhandCommand.SensorData.RowDataOrBuilder> dataBuilder_; + + /** + *
+       * 二维数组,每行数据是 RowData 类型
+       * 
+ * + * repeated .cmvr.api.SensorData.RowData data = 1; + */ + public java.util.List getDataList() { + if (dataBuilder_ == null) { + return java.util.Collections.unmodifiableList(data_); + } else { + return dataBuilder_.getMessageList(); + } + } + /** + *
+       * 二维数组,每行数据是 RowData 类型
+       * 
+ * + * repeated .cmvr.api.SensorData.RowData data = 1; + */ + public int getDataCount() { + if (dataBuilder_ == null) { + return data_.size(); + } else { + return dataBuilder_.getCount(); + } + } + /** + *
+       * 二维数组,每行数据是 RowData 类型
+       * 
+ * + * repeated .cmvr.api.SensorData.RowData data = 1; + */ + public cmvr.api.DexhandCommand.SensorData.RowData getData(int index) { + if (dataBuilder_ == null) { + return data_.get(index); + } else { + return dataBuilder_.getMessage(index); + } + } + /** + *
+       * 二维数组,每行数据是 RowData 类型
+       * 
+ * + * repeated .cmvr.api.SensorData.RowData data = 1; + */ + public Builder setData( + int index, cmvr.api.DexhandCommand.SensorData.RowData value) { + if (dataBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureDataIsMutable(); + data_.set(index, value); + onChanged(); + } else { + dataBuilder_.setMessage(index, value); + } + return this; + } + /** + *
+       * 二维数组,每行数据是 RowData 类型
+       * 
+ * + * repeated .cmvr.api.SensorData.RowData data = 1; + */ + public Builder setData( + int index, cmvr.api.DexhandCommand.SensorData.RowData.Builder builderForValue) { + if (dataBuilder_ == null) { + ensureDataIsMutable(); + data_.set(index, builderForValue.build()); + onChanged(); + } else { + dataBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+       * 二维数组,每行数据是 RowData 类型
+       * 
+ * + * repeated .cmvr.api.SensorData.RowData data = 1; + */ + public Builder addData(cmvr.api.DexhandCommand.SensorData.RowData value) { + if (dataBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureDataIsMutable(); + data_.add(value); + onChanged(); + } else { + dataBuilder_.addMessage(value); + } + return this; + } + /** + *
+       * 二维数组,每行数据是 RowData 类型
+       * 
+ * + * repeated .cmvr.api.SensorData.RowData data = 1; + */ + public Builder addData( + int index, cmvr.api.DexhandCommand.SensorData.RowData value) { + if (dataBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureDataIsMutable(); + data_.add(index, value); + onChanged(); + } else { + dataBuilder_.addMessage(index, value); + } + return this; + } + /** + *
+       * 二维数组,每行数据是 RowData 类型
+       * 
+ * + * repeated .cmvr.api.SensorData.RowData data = 1; + */ + public Builder addData( + cmvr.api.DexhandCommand.SensorData.RowData.Builder builderForValue) { + if (dataBuilder_ == null) { + ensureDataIsMutable(); + data_.add(builderForValue.build()); + onChanged(); + } else { + dataBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + *
+       * 二维数组,每行数据是 RowData 类型
+       * 
+ * + * repeated .cmvr.api.SensorData.RowData data = 1; + */ + public Builder addData( + int index, cmvr.api.DexhandCommand.SensorData.RowData.Builder builderForValue) { + if (dataBuilder_ == null) { + ensureDataIsMutable(); + data_.add(index, builderForValue.build()); + onChanged(); + } else { + dataBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+       * 二维数组,每行数据是 RowData 类型
+       * 
+ * + * repeated .cmvr.api.SensorData.RowData data = 1; + */ + public Builder addAllData( + java.lang.Iterable values) { + if (dataBuilder_ == null) { + ensureDataIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, data_); + onChanged(); + } else { + dataBuilder_.addAllMessages(values); + } + return this; + } + /** + *
+       * 二维数组,每行数据是 RowData 类型
+       * 
+ * + * repeated .cmvr.api.SensorData.RowData data = 1; + */ + public Builder clearData() { + if (dataBuilder_ == null) { + data_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + dataBuilder_.clear(); + } + return this; + } + /** + *
+       * 二维数组,每行数据是 RowData 类型
+       * 
+ * + * repeated .cmvr.api.SensorData.RowData data = 1; + */ + public Builder removeData(int index) { + if (dataBuilder_ == null) { + ensureDataIsMutable(); + data_.remove(index); + onChanged(); + } else { + dataBuilder_.remove(index); + } + return this; + } + /** + *
+       * 二维数组,每行数据是 RowData 类型
+       * 
+ * + * repeated .cmvr.api.SensorData.RowData data = 1; + */ + public cmvr.api.DexhandCommand.SensorData.RowData.Builder getDataBuilder( + int index) { + return getDataFieldBuilder().getBuilder(index); + } + /** + *
+       * 二维数组,每行数据是 RowData 类型
+       * 
+ * + * repeated .cmvr.api.SensorData.RowData data = 1; + */ + public cmvr.api.DexhandCommand.SensorData.RowDataOrBuilder getDataOrBuilder( + int index) { + if (dataBuilder_ == null) { + return data_.get(index); } else { + return dataBuilder_.getMessageOrBuilder(index); + } + } + /** + *
+       * 二维数组,每行数据是 RowData 类型
+       * 
+ * + * repeated .cmvr.api.SensorData.RowData data = 1; + */ + public java.util.List + getDataOrBuilderList() { + if (dataBuilder_ != null) { + return dataBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(data_); + } + } + /** + *
+       * 二维数组,每行数据是 RowData 类型
+       * 
+ * + * repeated .cmvr.api.SensorData.RowData data = 1; + */ + public cmvr.api.DexhandCommand.SensorData.RowData.Builder addDataBuilder() { + return getDataFieldBuilder().addBuilder( + cmvr.api.DexhandCommand.SensorData.RowData.getDefaultInstance()); + } + /** + *
+       * 二维数组,每行数据是 RowData 类型
+       * 
+ * + * repeated .cmvr.api.SensorData.RowData data = 1; + */ + public cmvr.api.DexhandCommand.SensorData.RowData.Builder addDataBuilder( + int index) { + return getDataFieldBuilder().addBuilder( + index, cmvr.api.DexhandCommand.SensorData.RowData.getDefaultInstance()); + } + /** + *
+       * 二维数组,每行数据是 RowData 类型
+       * 
+ * + * repeated .cmvr.api.SensorData.RowData data = 1; + */ + public java.util.List + getDataBuilderList() { + return getDataFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilderV3< + cmvr.api.DexhandCommand.SensorData.RowData, cmvr.api.DexhandCommand.SensorData.RowData.Builder, cmvr.api.DexhandCommand.SensorData.RowDataOrBuilder> + getDataFieldBuilder() { + if (dataBuilder_ == null) { + dataBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + cmvr.api.DexhandCommand.SensorData.RowData, cmvr.api.DexhandCommand.SensorData.RowData.Builder, cmvr.api.DexhandCommand.SensorData.RowDataOrBuilder>( + data_, + ((bitField0_ & 0x00000001) != 0), + getParentForChildren(), + isClean()); + data_ = null; + } + return dataBuilder_; + } + + private int rows_ ; + /** + *
+       * 行
+       * 
+ * + * int32 rows = 2; + * @return The rows. + */ + @java.lang.Override + public int getRows() { + return rows_; + } + /** + *
+       * 行
+       * 
+ * + * int32 rows = 2; + * @param value The rows to set. + * @return This builder for chaining. + */ + public Builder setRows(int value) { + + rows_ = value; + onChanged(); + return this; + } + /** + *
+       * 行
+       * 
+ * + * int32 rows = 2; + * @return This builder for chaining. + */ + public Builder clearRows() { + + rows_ = 0; + onChanged(); + return this; + } + + private int cols_ ; + /** + *
+       * 列
+       * 
+ * + * int32 cols = 3; + * @return The cols. + */ + @java.lang.Override + public int getCols() { + return cols_; + } + /** + *
+       * 列
+       * 
+ * + * int32 cols = 3; + * @param value The cols to set. + * @return This builder for chaining. + */ + public Builder setCols(int value) { + + cols_ = value; + onChanged(); + return this; + } + /** + *
+       * 列
+       * 
+ * + * int32 cols = 3; + * @return This builder for chaining. + */ + public Builder clearCols() { + + cols_ = 0; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.SensorData) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.SensorData) + private static final cmvr.api.DexhandCommand.SensorData DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.DexhandCommand.SensorData(); + } + + public static cmvr.api.DexhandCommand.SensorData getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public SensorData parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SensorData getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface DexHandStateOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.DexHandState) + com.google.protobuf.MessageOrBuilder { + + /** + *
+     * 是否初始化
+     * 
+ * + * bool is_initialized = 1; + * @return The isInitialized. + */ + boolean getIsInitialized(); + + /** + *
+     * 包含多个自由度状态
+     * 
+ * + * repeated .cmvr.api.RH56DFTPDexHand hands = 2; + */ + java.util.List + getHandsList(); + /** + *
+     * 包含多个自由度状态
+     * 
+ * + * repeated .cmvr.api.RH56DFTPDexHand hands = 2; + */ + cmvr.api.DexhandCommand.RH56DFTPDexHand getHands(int index); + /** + *
+     * 包含多个自由度状态
+     * 
+ * + * repeated .cmvr.api.RH56DFTPDexHand hands = 2; + */ + int getHandsCount(); + /** + *
+     * 包含多个自由度状态
+     * 
+ * + * repeated .cmvr.api.RH56DFTPDexHand hands = 2; + */ + java.util.List + getHandsOrBuilderList(); + /** + *
+     * 包含多个自由度状态
+     * 
+ * + * repeated .cmvr.api.RH56DFTPDexHand hands = 2; + */ + cmvr.api.DexhandCommand.RH56DFTPDexHandOrBuilder getHandsOrBuilder( + int index); + } + /** + * Protobuf type {@code cmvr.api.DexHandState} + */ + public static final class DexHandState extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.DexHandState) + DexHandStateOrBuilder { + private static final long serialVersionUID = 0L; + // Use DexHandState.newBuilder() to construct. + private DexHandState(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private DexHandState() { + hands_ = java.util.Collections.emptyList(); + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new DexHandState(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_DexHandState_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_DexHandState_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.DexHandState.class, cmvr.api.DexhandCommand.DexHandState.Builder.class); + } + + public static final int IS_INITIALIZED_FIELD_NUMBER = 1; + private boolean isInitialized_; + /** + *
+     * 是否初始化
+     * 
+ * + * bool is_initialized = 1; + * @return The isInitialized. + */ + @java.lang.Override + public boolean getIsInitialized() { + return isInitialized_; + } + + public static final int HANDS_FIELD_NUMBER = 2; + private java.util.List hands_; + /** + *
+     * 包含多个自由度状态
+     * 
+ * + * repeated .cmvr.api.RH56DFTPDexHand hands = 2; + */ + @java.lang.Override + public java.util.List getHandsList() { + return hands_; + } + /** + *
+     * 包含多个自由度状态
+     * 
+ * + * repeated .cmvr.api.RH56DFTPDexHand hands = 2; + */ + @java.lang.Override + public java.util.List + getHandsOrBuilderList() { + return hands_; + } + /** + *
+     * 包含多个自由度状态
+     * 
+ * + * repeated .cmvr.api.RH56DFTPDexHand hands = 2; + */ + @java.lang.Override + public int getHandsCount() { + return hands_.size(); + } + /** + *
+     * 包含多个自由度状态
+     * 
+ * + * repeated .cmvr.api.RH56DFTPDexHand hands = 2; + */ + @java.lang.Override + public cmvr.api.DexhandCommand.RH56DFTPDexHand getHands(int index) { + return hands_.get(index); + } + /** + *
+     * 包含多个自由度状态
+     * 
+ * + * repeated .cmvr.api.RH56DFTPDexHand hands = 2; + */ + @java.lang.Override + public cmvr.api.DexhandCommand.RH56DFTPDexHandOrBuilder getHandsOrBuilder( + int index) { + return hands_.get(index); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (isInitialized_ != false) { + output.writeBool(1, isInitialized_); + } + for (int i = 0; i < hands_.size(); i++) { + output.writeMessage(2, hands_.get(i)); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (isInitialized_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(1, isInitialized_); + } + for (int i = 0; i < hands_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, hands_.get(i)); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.DexhandCommand.DexHandState)) { + return super.equals(obj); + } + cmvr.api.DexhandCommand.DexHandState other = (cmvr.api.DexhandCommand.DexHandState) obj; + + if (getIsInitialized() + != other.getIsInitialized()) return false; + if (!getHandsList() + .equals(other.getHandsList())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + IS_INITIALIZED_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getIsInitialized()); + if (getHandsCount() > 0) { + hash = (37 * hash) + HANDS_FIELD_NUMBER; + hash = (53 * hash) + getHandsList().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.DexhandCommand.DexHandState parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.DexHandState parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.DexHandState parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.DexHandState parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.DexHandState parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.DexHandState parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.DexHandState parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.DexHandState parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.DexHandState parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.DexHandState parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.DexHandState parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.DexHandState parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.DexhandCommand.DexHandState prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.DexHandState} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.DexHandState) + cmvr.api.DexhandCommand.DexHandStateOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_DexHandState_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_DexHandState_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.DexHandState.class, cmvr.api.DexhandCommand.DexHandState.Builder.class); + } + + // Construct using cmvr.api.DexhandCommand.DexHandState.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + isInitialized_ = false; + + if (handsBuilder_ == null) { + hands_ = java.util.Collections.emptyList(); + } else { + hands_ = null; + handsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_DexHandState_descriptor; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.DexHandState getDefaultInstanceForType() { + return cmvr.api.DexhandCommand.DexHandState.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.DexhandCommand.DexHandState build() { + cmvr.api.DexhandCommand.DexHandState result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.DexHandState buildPartial() { + cmvr.api.DexhandCommand.DexHandState result = new cmvr.api.DexhandCommand.DexHandState(this); + int from_bitField0_ = bitField0_; + result.isInitialized_ = isInitialized_; + if (handsBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0)) { + hands_ = java.util.Collections.unmodifiableList(hands_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.hands_ = hands_; + } else { + result.hands_ = handsBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.DexhandCommand.DexHandState) { + return mergeFrom((cmvr.api.DexhandCommand.DexHandState)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.DexhandCommand.DexHandState other) { + if (other == cmvr.api.DexhandCommand.DexHandState.getDefaultInstance()) return this; + if (other.getIsInitialized() != false) { + setIsInitialized(other.getIsInitialized()); + } + if (handsBuilder_ == null) { + if (!other.hands_.isEmpty()) { + if (hands_.isEmpty()) { + hands_ = other.hands_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureHandsIsMutable(); + hands_.addAll(other.hands_); + } + onChanged(); + } + } else { + if (!other.hands_.isEmpty()) { + if (handsBuilder_.isEmpty()) { + handsBuilder_.dispose(); + handsBuilder_ = null; + hands_ = other.hands_; + bitField0_ = (bitField0_ & ~0x00000001); + handsBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? + getHandsFieldBuilder() : null; + } else { + handsBuilder_.addAllMessages(other.hands_); + } + } + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + isInitialized_ = input.readBool(); + + break; + } // case 8 + case 18: { + cmvr.api.DexhandCommand.RH56DFTPDexHand m = + input.readMessage( + cmvr.api.DexhandCommand.RH56DFTPDexHand.parser(), + extensionRegistry); + if (handsBuilder_ == null) { + ensureHandsIsMutable(); + hands_.add(m); + } else { + handsBuilder_.addMessage(m); + } + break; + } // case 18 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private boolean isInitialized_ ; + /** + *
+       * 是否初始化
+       * 
+ * + * bool is_initialized = 1; + * @return The isInitialized. + */ + @java.lang.Override + public boolean getIsInitialized() { + return isInitialized_; + } + /** + *
+       * 是否初始化
+       * 
+ * + * bool is_initialized = 1; + * @param value The isInitialized to set. + * @return This builder for chaining. + */ + public Builder setIsInitialized(boolean value) { + + isInitialized_ = value; + onChanged(); + return this; + } + /** + *
+       * 是否初始化
+       * 
+ * + * bool is_initialized = 1; + * @return This builder for chaining. + */ + public Builder clearIsInitialized() { + + isInitialized_ = false; + onChanged(); + return this; + } + + private java.util.List hands_ = + java.util.Collections.emptyList(); + private void ensureHandsIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + hands_ = new java.util.ArrayList(hands_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + cmvr.api.DexhandCommand.RH56DFTPDexHand, cmvr.api.DexhandCommand.RH56DFTPDexHand.Builder, cmvr.api.DexhandCommand.RH56DFTPDexHandOrBuilder> handsBuilder_; + + /** + *
+       * 包含多个自由度状态
+       * 
+ * + * repeated .cmvr.api.RH56DFTPDexHand hands = 2; + */ + public java.util.List getHandsList() { + if (handsBuilder_ == null) { + return java.util.Collections.unmodifiableList(hands_); + } else { + return handsBuilder_.getMessageList(); + } + } + /** + *
+       * 包含多个自由度状态
+       * 
+ * + * repeated .cmvr.api.RH56DFTPDexHand hands = 2; + */ + public int getHandsCount() { + if (handsBuilder_ == null) { + return hands_.size(); + } else { + return handsBuilder_.getCount(); + } + } + /** + *
+       * 包含多个自由度状态
+       * 
+ * + * repeated .cmvr.api.RH56DFTPDexHand hands = 2; + */ + public cmvr.api.DexhandCommand.RH56DFTPDexHand getHands(int index) { + if (handsBuilder_ == null) { + return hands_.get(index); + } else { + return handsBuilder_.getMessage(index); + } + } + /** + *
+       * 包含多个自由度状态
+       * 
+ * + * repeated .cmvr.api.RH56DFTPDexHand hands = 2; + */ + public Builder setHands( + int index, cmvr.api.DexhandCommand.RH56DFTPDexHand value) { + if (handsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureHandsIsMutable(); + hands_.set(index, value); + onChanged(); + } else { + handsBuilder_.setMessage(index, value); + } + return this; + } + /** + *
+       * 包含多个自由度状态
+       * 
+ * + * repeated .cmvr.api.RH56DFTPDexHand hands = 2; + */ + public Builder setHands( + int index, cmvr.api.DexhandCommand.RH56DFTPDexHand.Builder builderForValue) { + if (handsBuilder_ == null) { + ensureHandsIsMutable(); + hands_.set(index, builderForValue.build()); + onChanged(); + } else { + handsBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+       * 包含多个自由度状态
+       * 
+ * + * repeated .cmvr.api.RH56DFTPDexHand hands = 2; + */ + public Builder addHands(cmvr.api.DexhandCommand.RH56DFTPDexHand value) { + if (handsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureHandsIsMutable(); + hands_.add(value); + onChanged(); + } else { + handsBuilder_.addMessage(value); + } + return this; + } + /** + *
+       * 包含多个自由度状态
+       * 
+ * + * repeated .cmvr.api.RH56DFTPDexHand hands = 2; + */ + public Builder addHands( + int index, cmvr.api.DexhandCommand.RH56DFTPDexHand value) { + if (handsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureHandsIsMutable(); + hands_.add(index, value); + onChanged(); + } else { + handsBuilder_.addMessage(index, value); + } + return this; + } + /** + *
+       * 包含多个自由度状态
+       * 
+ * + * repeated .cmvr.api.RH56DFTPDexHand hands = 2; + */ + public Builder addHands( + cmvr.api.DexhandCommand.RH56DFTPDexHand.Builder builderForValue) { + if (handsBuilder_ == null) { + ensureHandsIsMutable(); + hands_.add(builderForValue.build()); + onChanged(); + } else { + handsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + *
+       * 包含多个自由度状态
+       * 
+ * + * repeated .cmvr.api.RH56DFTPDexHand hands = 2; + */ + public Builder addHands( + int index, cmvr.api.DexhandCommand.RH56DFTPDexHand.Builder builderForValue) { + if (handsBuilder_ == null) { + ensureHandsIsMutable(); + hands_.add(index, builderForValue.build()); + onChanged(); + } else { + handsBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+       * 包含多个自由度状态
+       * 
+ * + * repeated .cmvr.api.RH56DFTPDexHand hands = 2; + */ + public Builder addAllHands( + java.lang.Iterable values) { + if (handsBuilder_ == null) { + ensureHandsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, hands_); + onChanged(); + } else { + handsBuilder_.addAllMessages(values); + } + return this; + } + /** + *
+       * 包含多个自由度状态
+       * 
+ * + * repeated .cmvr.api.RH56DFTPDexHand hands = 2; + */ + public Builder clearHands() { + if (handsBuilder_ == null) { + hands_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + handsBuilder_.clear(); + } + return this; + } + /** + *
+       * 包含多个自由度状态
+       * 
+ * + * repeated .cmvr.api.RH56DFTPDexHand hands = 2; + */ + public Builder removeHands(int index) { + if (handsBuilder_ == null) { + ensureHandsIsMutable(); + hands_.remove(index); + onChanged(); + } else { + handsBuilder_.remove(index); + } + return this; + } + /** + *
+       * 包含多个自由度状态
+       * 
+ * + * repeated .cmvr.api.RH56DFTPDexHand hands = 2; + */ + public cmvr.api.DexhandCommand.RH56DFTPDexHand.Builder getHandsBuilder( + int index) { + return getHandsFieldBuilder().getBuilder(index); + } + /** + *
+       * 包含多个自由度状态
+       * 
+ * + * repeated .cmvr.api.RH56DFTPDexHand hands = 2; + */ + public cmvr.api.DexhandCommand.RH56DFTPDexHandOrBuilder getHandsOrBuilder( + int index) { + if (handsBuilder_ == null) { + return hands_.get(index); } else { + return handsBuilder_.getMessageOrBuilder(index); + } + } + /** + *
+       * 包含多个自由度状态
+       * 
+ * + * repeated .cmvr.api.RH56DFTPDexHand hands = 2; + */ + public java.util.List + getHandsOrBuilderList() { + if (handsBuilder_ != null) { + return handsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(hands_); + } + } + /** + *
+       * 包含多个自由度状态
+       * 
+ * + * repeated .cmvr.api.RH56DFTPDexHand hands = 2; + */ + public cmvr.api.DexhandCommand.RH56DFTPDexHand.Builder addHandsBuilder() { + return getHandsFieldBuilder().addBuilder( + cmvr.api.DexhandCommand.RH56DFTPDexHand.getDefaultInstance()); + } + /** + *
+       * 包含多个自由度状态
+       * 
+ * + * repeated .cmvr.api.RH56DFTPDexHand hands = 2; + */ + public cmvr.api.DexhandCommand.RH56DFTPDexHand.Builder addHandsBuilder( + int index) { + return getHandsFieldBuilder().addBuilder( + index, cmvr.api.DexhandCommand.RH56DFTPDexHand.getDefaultInstance()); + } + /** + *
+       * 包含多个自由度状态
+       * 
+ * + * repeated .cmvr.api.RH56DFTPDexHand hands = 2; + */ + public java.util.List + getHandsBuilderList() { + return getHandsFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilderV3< + cmvr.api.DexhandCommand.RH56DFTPDexHand, cmvr.api.DexhandCommand.RH56DFTPDexHand.Builder, cmvr.api.DexhandCommand.RH56DFTPDexHandOrBuilder> + getHandsFieldBuilder() { + if (handsBuilder_ == null) { + handsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + cmvr.api.DexhandCommand.RH56DFTPDexHand, cmvr.api.DexhandCommand.RH56DFTPDexHand.Builder, cmvr.api.DexhandCommand.RH56DFTPDexHandOrBuilder>( + hands_, + ((bitField0_ & 0x00000001) != 0), + getParentForChildren(), + isClean()); + hands_ = null; + } + return handsBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.DexHandState) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.DexHandState) + private static final cmvr.api.DexhandCommand.DexHandState DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.DexhandCommand.DexHandState(); + } + + public static cmvr.api.DexhandCommand.DexHandState getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public DexHandState parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.DexHandState getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface GetDexHandStateCommandOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetDexHandStateCommand) + com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code cmvr.api.GetDexHandStateCommand} + */ + public static final class GetDexHandStateCommand extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetDexHandStateCommand) + GetDexHandStateCommandOrBuilder { + private static final long serialVersionUID = 0L; + // Use GetDexHandStateCommand.newBuilder() to construct. + private GetDexHandStateCommand(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private GetDexHandStateCommand() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new GetDexHandStateCommand(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetDexHandStateCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetDexHandStateCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.GetDexHandStateCommand.class, cmvr.api.DexhandCommand.GetDexHandStateCommand.Builder.class); + } + + public interface RequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetDexHandStateCommand.Request) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Request getHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.GetDexHandStateCommand.Request} + */ + public static final class Request extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetDexHandStateCommand.Request) + RequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use Request.newBuilder() to construct. + private Request(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Request() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Request(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetDexHandStateCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetDexHandStateCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.GetDexHandStateCommand.Request.class, cmvr.api.DexhandCommand.GetDexHandStateCommand.Request.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Request header_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.DexhandCommand.GetDexHandStateCommand.Request)) { + return super.equals(obj); + } + cmvr.api.DexhandCommand.GetDexHandStateCommand.Request other = (cmvr.api.DexhandCommand.GetDexHandStateCommand.Request) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.DexhandCommand.GetDexHandStateCommand.Request parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.GetDexHandStateCommand.Request parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetDexHandStateCommand.Request parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.GetDexHandStateCommand.Request parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetDexHandStateCommand.Request parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.GetDexHandStateCommand.Request parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetDexHandStateCommand.Request parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.GetDexHandStateCommand.Request parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetDexHandStateCommand.Request parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.GetDexHandStateCommand.Request parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetDexHandStateCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.GetDexHandStateCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.DexhandCommand.GetDexHandStateCommand.Request prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetDexHandStateCommand.Request} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetDexHandStateCommand.Request) + cmvr.api.DexhandCommand.GetDexHandStateCommand.RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetDexHandStateCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetDexHandStateCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.GetDexHandStateCommand.Request.class, cmvr.api.DexhandCommand.GetDexHandStateCommand.Request.Builder.class); + } + + // Construct using cmvr.api.DexhandCommand.GetDexHandStateCommand.Request.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetDexHandStateCommand_Request_descriptor; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.GetDexHandStateCommand.Request getDefaultInstanceForType() { + return cmvr.api.DexhandCommand.GetDexHandStateCommand.Request.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.DexhandCommand.GetDexHandStateCommand.Request build() { + cmvr.api.DexhandCommand.GetDexHandStateCommand.Request result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.GetDexHandStateCommand.Request buildPartial() { + cmvr.api.DexhandCommand.GetDexHandStateCommand.Request result = new cmvr.api.DexhandCommand.GetDexHandStateCommand.Request(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.DexhandCommand.GetDexHandStateCommand.Request) { + return mergeFrom((cmvr.api.DexhandCommand.GetDexHandStateCommand.Request)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.DexhandCommand.GetDexHandStateCommand.Request other) { + if (other == cmvr.api.DexhandCommand.GetDexHandStateCommand.Request.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Request header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Request getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Request.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Request.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.Request.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetDexHandStateCommand.Request) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetDexHandStateCommand.Request) + private static final cmvr.api.DexhandCommand.GetDexHandStateCommand.Request DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.DexhandCommand.GetDexHandStateCommand.Request(); + } + + public static cmvr.api.DexhandCommand.GetDexHandStateCommand.Request getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.GetDexHandStateCommand.Request getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface FeedbackOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetDexHandStateCommand.Feedback) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Feedback getHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder(); + + /** + * .cmvr.api.DexHandState state = 2; + * @return Whether the state field is set. + */ + boolean hasState(); + /** + * .cmvr.api.DexHandState state = 2; + * @return The state. + */ + cmvr.api.DexhandCommand.DexHandState getState(); + /** + * .cmvr.api.DexHandState state = 2; + */ + cmvr.api.DexhandCommand.DexHandStateOrBuilder getStateOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.GetDexHandStateCommand.Feedback} + */ + public static final class Feedback extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetDexHandStateCommand.Feedback) + FeedbackOrBuilder { + private static final long serialVersionUID = 0L; + // Use Feedback.newBuilder() to construct. + private Feedback(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Feedback() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Feedback(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetDexHandStateCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetDexHandStateCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.GetDexHandStateCommand.Feedback.class, cmvr.api.DexhandCommand.GetDexHandStateCommand.Feedback.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Feedback header_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + public static final int STATE_FIELD_NUMBER = 2; + private cmvr.api.DexhandCommand.DexHandState state_; + /** + * .cmvr.api.DexHandState state = 2; + * @return Whether the state field is set. + */ + @java.lang.Override + public boolean hasState() { + return state_ != null; + } + /** + * .cmvr.api.DexHandState state = 2; + * @return The state. + */ + @java.lang.Override + public cmvr.api.DexhandCommand.DexHandState getState() { + return state_ == null ? cmvr.api.DexhandCommand.DexHandState.getDefaultInstance() : state_; + } + /** + * .cmvr.api.DexHandState state = 2; + */ + @java.lang.Override + public cmvr.api.DexhandCommand.DexHandStateOrBuilder getStateOrBuilder() { + return getState(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + if (state_ != null) { + output.writeMessage(2, getState()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + if (state_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, getState()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.DexhandCommand.GetDexHandStateCommand.Feedback)) { + return super.equals(obj); + } + cmvr.api.DexhandCommand.GetDexHandStateCommand.Feedback other = (cmvr.api.DexhandCommand.GetDexHandStateCommand.Feedback) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (hasState() != other.hasState()) return false; + if (hasState()) { + if (!getState() + .equals(other.getState())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + if (hasState()) { + hash = (37 * hash) + STATE_FIELD_NUMBER; + hash = (53 * hash) + getState().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.DexhandCommand.GetDexHandStateCommand.Feedback parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.GetDexHandStateCommand.Feedback parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetDexHandStateCommand.Feedback parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.GetDexHandStateCommand.Feedback parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetDexHandStateCommand.Feedback parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.GetDexHandStateCommand.Feedback parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetDexHandStateCommand.Feedback parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.GetDexHandStateCommand.Feedback parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetDexHandStateCommand.Feedback parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.GetDexHandStateCommand.Feedback parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetDexHandStateCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.GetDexHandStateCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.DexhandCommand.GetDexHandStateCommand.Feedback prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetDexHandStateCommand.Feedback} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetDexHandStateCommand.Feedback) + cmvr.api.DexhandCommand.GetDexHandStateCommand.FeedbackOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetDexHandStateCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetDexHandStateCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.GetDexHandStateCommand.Feedback.class, cmvr.api.DexhandCommand.GetDexHandStateCommand.Feedback.Builder.class); + } + + // Construct using cmvr.api.DexhandCommand.GetDexHandStateCommand.Feedback.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + if (stateBuilder_ == null) { + state_ = null; + } else { + state_ = null; + stateBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetDexHandStateCommand_Feedback_descriptor; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.GetDexHandStateCommand.Feedback getDefaultInstanceForType() { + return cmvr.api.DexhandCommand.GetDexHandStateCommand.Feedback.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.DexhandCommand.GetDexHandStateCommand.Feedback build() { + cmvr.api.DexhandCommand.GetDexHandStateCommand.Feedback result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.GetDexHandStateCommand.Feedback buildPartial() { + cmvr.api.DexhandCommand.GetDexHandStateCommand.Feedback result = new cmvr.api.DexhandCommand.GetDexHandStateCommand.Feedback(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + if (stateBuilder_ == null) { + result.state_ = state_; + } else { + result.state_ = stateBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.DexhandCommand.GetDexHandStateCommand.Feedback) { + return mergeFrom((cmvr.api.DexhandCommand.GetDexHandStateCommand.Feedback)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.DexhandCommand.GetDexHandStateCommand.Feedback other) { + if (other == cmvr.api.DexhandCommand.GetDexHandStateCommand.Feedback.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + if (other.hasState()) { + mergeState(other.getState()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + case 18: { + input.readMessage( + getStateFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 18 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Feedback header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Feedback.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Feedback.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.Feedback.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + + private cmvr.api.DexhandCommand.DexHandState state_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.DexhandCommand.DexHandState, cmvr.api.DexhandCommand.DexHandState.Builder, cmvr.api.DexhandCommand.DexHandStateOrBuilder> stateBuilder_; + /** + * .cmvr.api.DexHandState state = 2; + * @return Whether the state field is set. + */ + public boolean hasState() { + return stateBuilder_ != null || state_ != null; + } + /** + * .cmvr.api.DexHandState state = 2; + * @return The state. + */ + public cmvr.api.DexhandCommand.DexHandState getState() { + if (stateBuilder_ == null) { + return state_ == null ? cmvr.api.DexhandCommand.DexHandState.getDefaultInstance() : state_; + } else { + return stateBuilder_.getMessage(); + } + } + /** + * .cmvr.api.DexHandState state = 2; + */ + public Builder setState(cmvr.api.DexhandCommand.DexHandState value) { + if (stateBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + state_ = value; + onChanged(); + } else { + stateBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.DexHandState state = 2; + */ + public Builder setState( + cmvr.api.DexhandCommand.DexHandState.Builder builderForValue) { + if (stateBuilder_ == null) { + state_ = builderForValue.build(); + onChanged(); + } else { + stateBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.DexHandState state = 2; + */ + public Builder mergeState(cmvr.api.DexhandCommand.DexHandState value) { + if (stateBuilder_ == null) { + if (state_ != null) { + state_ = + cmvr.api.DexhandCommand.DexHandState.newBuilder(state_).mergeFrom(value).buildPartial(); + } else { + state_ = value; + } + onChanged(); + } else { + stateBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.DexHandState state = 2; + */ + public Builder clearState() { + if (stateBuilder_ == null) { + state_ = null; + onChanged(); + } else { + state_ = null; + stateBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.DexHandState state = 2; + */ + public cmvr.api.DexhandCommand.DexHandState.Builder getStateBuilder() { + + onChanged(); + return getStateFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.DexHandState state = 2; + */ + public cmvr.api.DexhandCommand.DexHandStateOrBuilder getStateOrBuilder() { + if (stateBuilder_ != null) { + return stateBuilder_.getMessageOrBuilder(); + } else { + return state_ == null ? + cmvr.api.DexhandCommand.DexHandState.getDefaultInstance() : state_; + } + } + /** + * .cmvr.api.DexHandState state = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.DexhandCommand.DexHandState, cmvr.api.DexhandCommand.DexHandState.Builder, cmvr.api.DexhandCommand.DexHandStateOrBuilder> + getStateFieldBuilder() { + if (stateBuilder_ == null) { + stateBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.DexhandCommand.DexHandState, cmvr.api.DexhandCommand.DexHandState.Builder, cmvr.api.DexhandCommand.DexHandStateOrBuilder>( + getState(), + getParentForChildren(), + isClean()); + state_ = null; + } + return stateBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetDexHandStateCommand.Feedback) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetDexHandStateCommand.Feedback) + private static final cmvr.api.DexhandCommand.GetDexHandStateCommand.Feedback DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.DexhandCommand.GetDexHandStateCommand.Feedback(); + } + + public static cmvr.api.DexhandCommand.GetDexHandStateCommand.Feedback getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Feedback parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.GetDexHandStateCommand.Feedback getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.DexhandCommand.GetDexHandStateCommand)) { + return super.equals(obj); + } + cmvr.api.DexhandCommand.GetDexHandStateCommand other = (cmvr.api.DexhandCommand.GetDexHandStateCommand) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.DexhandCommand.GetDexHandStateCommand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.GetDexHandStateCommand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetDexHandStateCommand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.GetDexHandStateCommand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetDexHandStateCommand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.GetDexHandStateCommand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetDexHandStateCommand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.GetDexHandStateCommand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetDexHandStateCommand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.GetDexHandStateCommand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetDexHandStateCommand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.GetDexHandStateCommand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.DexhandCommand.GetDexHandStateCommand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetDexHandStateCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetDexHandStateCommand) + cmvr.api.DexhandCommand.GetDexHandStateCommandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetDexHandStateCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetDexHandStateCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.GetDexHandStateCommand.class, cmvr.api.DexhandCommand.GetDexHandStateCommand.Builder.class); + } + + // Construct using cmvr.api.DexhandCommand.GetDexHandStateCommand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetDexHandStateCommand_descriptor; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.GetDexHandStateCommand getDefaultInstanceForType() { + return cmvr.api.DexhandCommand.GetDexHandStateCommand.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.DexhandCommand.GetDexHandStateCommand build() { + cmvr.api.DexhandCommand.GetDexHandStateCommand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.GetDexHandStateCommand buildPartial() { + cmvr.api.DexhandCommand.GetDexHandStateCommand result = new cmvr.api.DexhandCommand.GetDexHandStateCommand(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.DexhandCommand.GetDexHandStateCommand) { + return mergeFrom((cmvr.api.DexhandCommand.GetDexHandStateCommand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.DexhandCommand.GetDexHandStateCommand other) { + if (other == cmvr.api.DexhandCommand.GetDexHandStateCommand.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetDexHandStateCommand) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetDexHandStateCommand) + private static final cmvr.api.DexhandCommand.GetDexHandStateCommand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.DexhandCommand.GetDexHandStateCommand(); + } + + public static cmvr.api.DexhandCommand.GetDexHandStateCommand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public GetDexHandStateCommand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.GetDexHandStateCommand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface SetDexHandPositionsCommandOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.SetDexHandPositionsCommand) + com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code cmvr.api.SetDexHandPositionsCommand} + */ + public static final class SetDexHandPositionsCommand extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.SetDexHandPositionsCommand) + SetDexHandPositionsCommandOrBuilder { + private static final long serialVersionUID = 0L; + // Use SetDexHandPositionsCommand.newBuilder() to construct. + private SetDexHandPositionsCommand(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private SetDexHandPositionsCommand() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new SetDexHandPositionsCommand(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandPositionsCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandPositionsCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.SetDexHandPositionsCommand.class, cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Builder.class); + } + + public interface RequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.SetDexHandPositionsCommand.Request) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Request getHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder(); + + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + java.util.List + getValuesList(); + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + cmvr.api.DexhandCommand.FreedomValue getValues(int index); + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + int getValuesCount(); + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + java.util.List + getValuesOrBuilderList(); + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + cmvr.api.DexhandCommand.FreedomValueOrBuilder getValuesOrBuilder( + int index); + } + /** + * Protobuf type {@code cmvr.api.SetDexHandPositionsCommand.Request} + */ + public static final class Request extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.SetDexHandPositionsCommand.Request) + RequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use Request.newBuilder() to construct. + private Request(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Request() { + values_ = java.util.Collections.emptyList(); + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Request(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandPositionsCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandPositionsCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request.class, cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Request header_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + public static final int VALUES_FIELD_NUMBER = 2; + private java.util.List values_; + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + @java.lang.Override + public java.util.List getValuesList() { + return values_; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + @java.lang.Override + public java.util.List + getValuesOrBuilderList() { + return values_; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + @java.lang.Override + public int getValuesCount() { + return values_.size(); + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + @java.lang.Override + public cmvr.api.DexhandCommand.FreedomValue getValues(int index) { + return values_.get(index); + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + @java.lang.Override + public cmvr.api.DexhandCommand.FreedomValueOrBuilder getValuesOrBuilder( + int index) { + return values_.get(index); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + for (int i = 0; i < values_.size(); i++) { + output.writeMessage(2, values_.get(i)); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + for (int i = 0; i < values_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, values_.get(i)); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request)) { + return super.equals(obj); + } + cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request other = (cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getValuesList() + .equals(other.getValuesList())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + if (getValuesCount() > 0) { + hash = (37 * hash) + VALUES_FIELD_NUMBER; + hash = (53 * hash) + getValuesList().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.SetDexHandPositionsCommand.Request} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.SetDexHandPositionsCommand.Request) + cmvr.api.DexhandCommand.SetDexHandPositionsCommand.RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandPositionsCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandPositionsCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request.class, cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request.Builder.class); + } + + // Construct using cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + if (valuesBuilder_ == null) { + values_ = java.util.Collections.emptyList(); + } else { + values_ = null; + valuesBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandPositionsCommand_Request_descriptor; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request getDefaultInstanceForType() { + return cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request build() { + cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request buildPartial() { + cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request result = new cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request(this); + int from_bitField0_ = bitField0_; + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + if (valuesBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0)) { + values_ = java.util.Collections.unmodifiableList(values_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.values_ = values_; + } else { + result.values_ = valuesBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request) { + return mergeFrom((cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request other) { + if (other == cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + if (valuesBuilder_ == null) { + if (!other.values_.isEmpty()) { + if (values_.isEmpty()) { + values_ = other.values_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureValuesIsMutable(); + values_.addAll(other.values_); + } + onChanged(); + } + } else { + if (!other.values_.isEmpty()) { + if (valuesBuilder_.isEmpty()) { + valuesBuilder_.dispose(); + valuesBuilder_ = null; + values_ = other.values_; + bitField0_ = (bitField0_ & ~0x00000001); + valuesBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? + getValuesFieldBuilder() : null; + } else { + valuesBuilder_.addAllMessages(other.values_); + } + } + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + case 18: { + cmvr.api.DexhandCommand.FreedomValue m = + input.readMessage( + cmvr.api.DexhandCommand.FreedomValue.parser(), + extensionRegistry); + if (valuesBuilder_ == null) { + ensureValuesIsMutable(); + values_.add(m); + } else { + valuesBuilder_.addMessage(m); + } + break; + } // case 18 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private cmvr.api.Common.CommandHeader.Request header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Request getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Request.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Request.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.Request.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + + private java.util.List values_ = + java.util.Collections.emptyList(); + private void ensureValuesIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + values_ = new java.util.ArrayList(values_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + cmvr.api.DexhandCommand.FreedomValue, cmvr.api.DexhandCommand.FreedomValue.Builder, cmvr.api.DexhandCommand.FreedomValueOrBuilder> valuesBuilder_; + + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public java.util.List getValuesList() { + if (valuesBuilder_ == null) { + return java.util.Collections.unmodifiableList(values_); + } else { + return valuesBuilder_.getMessageList(); + } + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public int getValuesCount() { + if (valuesBuilder_ == null) { + return values_.size(); + } else { + return valuesBuilder_.getCount(); + } + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public cmvr.api.DexhandCommand.FreedomValue getValues(int index) { + if (valuesBuilder_ == null) { + return values_.get(index); + } else { + return valuesBuilder_.getMessage(index); + } + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public Builder setValues( + int index, cmvr.api.DexhandCommand.FreedomValue value) { + if (valuesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureValuesIsMutable(); + values_.set(index, value); + onChanged(); + } else { + valuesBuilder_.setMessage(index, value); + } + return this; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public Builder setValues( + int index, cmvr.api.DexhandCommand.FreedomValue.Builder builderForValue) { + if (valuesBuilder_ == null) { + ensureValuesIsMutable(); + values_.set(index, builderForValue.build()); + onChanged(); + } else { + valuesBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public Builder addValues(cmvr.api.DexhandCommand.FreedomValue value) { + if (valuesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureValuesIsMutable(); + values_.add(value); + onChanged(); + } else { + valuesBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public Builder addValues( + int index, cmvr.api.DexhandCommand.FreedomValue value) { + if (valuesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureValuesIsMutable(); + values_.add(index, value); + onChanged(); + } else { + valuesBuilder_.addMessage(index, value); + } + return this; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public Builder addValues( + cmvr.api.DexhandCommand.FreedomValue.Builder builderForValue) { + if (valuesBuilder_ == null) { + ensureValuesIsMutable(); + values_.add(builderForValue.build()); + onChanged(); + } else { + valuesBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public Builder addValues( + int index, cmvr.api.DexhandCommand.FreedomValue.Builder builderForValue) { + if (valuesBuilder_ == null) { + ensureValuesIsMutable(); + values_.add(index, builderForValue.build()); + onChanged(); + } else { + valuesBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public Builder addAllValues( + java.lang.Iterable values) { + if (valuesBuilder_ == null) { + ensureValuesIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, values_); + onChanged(); + } else { + valuesBuilder_.addAllMessages(values); + } + return this; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public Builder clearValues() { + if (valuesBuilder_ == null) { + values_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + valuesBuilder_.clear(); + } + return this; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public Builder removeValues(int index) { + if (valuesBuilder_ == null) { + ensureValuesIsMutable(); + values_.remove(index); + onChanged(); + } else { + valuesBuilder_.remove(index); + } + return this; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public cmvr.api.DexhandCommand.FreedomValue.Builder getValuesBuilder( + int index) { + return getValuesFieldBuilder().getBuilder(index); + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public cmvr.api.DexhandCommand.FreedomValueOrBuilder getValuesOrBuilder( + int index) { + if (valuesBuilder_ == null) { + return values_.get(index); } else { + return valuesBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public java.util.List + getValuesOrBuilderList() { + if (valuesBuilder_ != null) { + return valuesBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(values_); + } + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public cmvr.api.DexhandCommand.FreedomValue.Builder addValuesBuilder() { + return getValuesFieldBuilder().addBuilder( + cmvr.api.DexhandCommand.FreedomValue.getDefaultInstance()); + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public cmvr.api.DexhandCommand.FreedomValue.Builder addValuesBuilder( + int index) { + return getValuesFieldBuilder().addBuilder( + index, cmvr.api.DexhandCommand.FreedomValue.getDefaultInstance()); + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public java.util.List + getValuesBuilderList() { + return getValuesFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilderV3< + cmvr.api.DexhandCommand.FreedomValue, cmvr.api.DexhandCommand.FreedomValue.Builder, cmvr.api.DexhandCommand.FreedomValueOrBuilder> + getValuesFieldBuilder() { + if (valuesBuilder_ == null) { + valuesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + cmvr.api.DexhandCommand.FreedomValue, cmvr.api.DexhandCommand.FreedomValue.Builder, cmvr.api.DexhandCommand.FreedomValueOrBuilder>( + values_, + ((bitField0_ & 0x00000001) != 0), + getParentForChildren(), + isClean()); + values_ = null; + } + return valuesBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.SetDexHandPositionsCommand.Request) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.SetDexHandPositionsCommand.Request) + private static final cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request(); + } + + public static cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Request getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface FeedbackOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.SetDexHandPositionsCommand.Feedback) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Feedback getHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.SetDexHandPositionsCommand.Feedback} + */ + public static final class Feedback extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.SetDexHandPositionsCommand.Feedback) + FeedbackOrBuilder { + private static final long serialVersionUID = 0L; + // Use Feedback.newBuilder() to construct. + private Feedback(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Feedback() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Feedback(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandPositionsCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandPositionsCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Feedback.class, cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Feedback.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Feedback header_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Feedback)) { + return super.equals(obj); + } + cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Feedback other = (cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Feedback) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Feedback parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Feedback parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Feedback parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Feedback parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Feedback parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Feedback parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Feedback parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Feedback parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Feedback parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Feedback parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Feedback prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.SetDexHandPositionsCommand.Feedback} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.SetDexHandPositionsCommand.Feedback) + cmvr.api.DexhandCommand.SetDexHandPositionsCommand.FeedbackOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandPositionsCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandPositionsCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Feedback.class, cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Feedback.Builder.class); + } + + // Construct using cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Feedback.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandPositionsCommand_Feedback_descriptor; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Feedback getDefaultInstanceForType() { + return cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Feedback.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Feedback build() { + cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Feedback result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Feedback buildPartial() { + cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Feedback result = new cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Feedback(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Feedback) { + return mergeFrom((cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Feedback)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Feedback other) { + if (other == cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Feedback.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Feedback header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Feedback.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Feedback.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.Feedback.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.SetDexHandPositionsCommand.Feedback) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.SetDexHandPositionsCommand.Feedback) + private static final cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Feedback DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Feedback(); + } + + public static cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Feedback getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Feedback parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Feedback getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.DexhandCommand.SetDexHandPositionsCommand)) { + return super.equals(obj); + } + cmvr.api.DexhandCommand.SetDexHandPositionsCommand other = (cmvr.api.DexhandCommand.SetDexHandPositionsCommand) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.DexhandCommand.SetDexHandPositionsCommand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandPositionsCommand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandPositionsCommand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandPositionsCommand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandPositionsCommand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandPositionsCommand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandPositionsCommand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandPositionsCommand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandPositionsCommand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandPositionsCommand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandPositionsCommand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandPositionsCommand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.DexhandCommand.SetDexHandPositionsCommand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.SetDexHandPositionsCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.SetDexHandPositionsCommand) + cmvr.api.DexhandCommand.SetDexHandPositionsCommandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandPositionsCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandPositionsCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.SetDexHandPositionsCommand.class, cmvr.api.DexhandCommand.SetDexHandPositionsCommand.Builder.class); + } + + // Construct using cmvr.api.DexhandCommand.SetDexHandPositionsCommand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandPositionsCommand_descriptor; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandPositionsCommand getDefaultInstanceForType() { + return cmvr.api.DexhandCommand.SetDexHandPositionsCommand.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandPositionsCommand build() { + cmvr.api.DexhandCommand.SetDexHandPositionsCommand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandPositionsCommand buildPartial() { + cmvr.api.DexhandCommand.SetDexHandPositionsCommand result = new cmvr.api.DexhandCommand.SetDexHandPositionsCommand(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.DexhandCommand.SetDexHandPositionsCommand) { + return mergeFrom((cmvr.api.DexhandCommand.SetDexHandPositionsCommand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.DexhandCommand.SetDexHandPositionsCommand other) { + if (other == cmvr.api.DexhandCommand.SetDexHandPositionsCommand.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.SetDexHandPositionsCommand) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.SetDexHandPositionsCommand) + private static final cmvr.api.DexhandCommand.SetDexHandPositionsCommand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.DexhandCommand.SetDexHandPositionsCommand(); + } + + public static cmvr.api.DexhandCommand.SetDexHandPositionsCommand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public SetDexHandPositionsCommand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandPositionsCommand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface SetDexHandAnglesCommandOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.SetDexHandAnglesCommand) + com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code cmvr.api.SetDexHandAnglesCommand} + */ + public static final class SetDexHandAnglesCommand extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.SetDexHandAnglesCommand) + SetDexHandAnglesCommandOrBuilder { + private static final long serialVersionUID = 0L; + // Use SetDexHandAnglesCommand.newBuilder() to construct. + private SetDexHandAnglesCommand(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private SetDexHandAnglesCommand() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new SetDexHandAnglesCommand(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandAnglesCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandAnglesCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.SetDexHandAnglesCommand.class, cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Builder.class); + } + + public interface RequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.SetDexHandAnglesCommand.Request) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Request getHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder(); + + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + java.util.List + getValuesList(); + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + cmvr.api.DexhandCommand.FreedomValue getValues(int index); + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + int getValuesCount(); + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + java.util.List + getValuesOrBuilderList(); + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + cmvr.api.DexhandCommand.FreedomValueOrBuilder getValuesOrBuilder( + int index); + } + /** + * Protobuf type {@code cmvr.api.SetDexHandAnglesCommand.Request} + */ + public static final class Request extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.SetDexHandAnglesCommand.Request) + RequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use Request.newBuilder() to construct. + private Request(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Request() { + values_ = java.util.Collections.emptyList(); + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Request(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandAnglesCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandAnglesCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request.class, cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Request header_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + public static final int VALUES_FIELD_NUMBER = 2; + private java.util.List values_; + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + @java.lang.Override + public java.util.List getValuesList() { + return values_; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + @java.lang.Override + public java.util.List + getValuesOrBuilderList() { + return values_; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + @java.lang.Override + public int getValuesCount() { + return values_.size(); + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + @java.lang.Override + public cmvr.api.DexhandCommand.FreedomValue getValues(int index) { + return values_.get(index); + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + @java.lang.Override + public cmvr.api.DexhandCommand.FreedomValueOrBuilder getValuesOrBuilder( + int index) { + return values_.get(index); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + for (int i = 0; i < values_.size(); i++) { + output.writeMessage(2, values_.get(i)); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + for (int i = 0; i < values_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, values_.get(i)); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request)) { + return super.equals(obj); + } + cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request other = (cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getValuesList() + .equals(other.getValuesList())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + if (getValuesCount() > 0) { + hash = (37 * hash) + VALUES_FIELD_NUMBER; + hash = (53 * hash) + getValuesList().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.SetDexHandAnglesCommand.Request} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.SetDexHandAnglesCommand.Request) + cmvr.api.DexhandCommand.SetDexHandAnglesCommand.RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandAnglesCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandAnglesCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request.class, cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request.Builder.class); + } + + // Construct using cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + if (valuesBuilder_ == null) { + values_ = java.util.Collections.emptyList(); + } else { + values_ = null; + valuesBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandAnglesCommand_Request_descriptor; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request getDefaultInstanceForType() { + return cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request build() { + cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request buildPartial() { + cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request result = new cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request(this); + int from_bitField0_ = bitField0_; + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + if (valuesBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0)) { + values_ = java.util.Collections.unmodifiableList(values_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.values_ = values_; + } else { + result.values_ = valuesBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request) { + return mergeFrom((cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request other) { + if (other == cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + if (valuesBuilder_ == null) { + if (!other.values_.isEmpty()) { + if (values_.isEmpty()) { + values_ = other.values_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureValuesIsMutable(); + values_.addAll(other.values_); + } + onChanged(); + } + } else { + if (!other.values_.isEmpty()) { + if (valuesBuilder_.isEmpty()) { + valuesBuilder_.dispose(); + valuesBuilder_ = null; + values_ = other.values_; + bitField0_ = (bitField0_ & ~0x00000001); + valuesBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? + getValuesFieldBuilder() : null; + } else { + valuesBuilder_.addAllMessages(other.values_); + } + } + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + case 18: { + cmvr.api.DexhandCommand.FreedomValue m = + input.readMessage( + cmvr.api.DexhandCommand.FreedomValue.parser(), + extensionRegistry); + if (valuesBuilder_ == null) { + ensureValuesIsMutable(); + values_.add(m); + } else { + valuesBuilder_.addMessage(m); + } + break; + } // case 18 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private cmvr.api.Common.CommandHeader.Request header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Request getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Request.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Request.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.Request.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + + private java.util.List values_ = + java.util.Collections.emptyList(); + private void ensureValuesIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + values_ = new java.util.ArrayList(values_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + cmvr.api.DexhandCommand.FreedomValue, cmvr.api.DexhandCommand.FreedomValue.Builder, cmvr.api.DexhandCommand.FreedomValueOrBuilder> valuesBuilder_; + + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public java.util.List getValuesList() { + if (valuesBuilder_ == null) { + return java.util.Collections.unmodifiableList(values_); + } else { + return valuesBuilder_.getMessageList(); + } + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public int getValuesCount() { + if (valuesBuilder_ == null) { + return values_.size(); + } else { + return valuesBuilder_.getCount(); + } + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public cmvr.api.DexhandCommand.FreedomValue getValues(int index) { + if (valuesBuilder_ == null) { + return values_.get(index); + } else { + return valuesBuilder_.getMessage(index); + } + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public Builder setValues( + int index, cmvr.api.DexhandCommand.FreedomValue value) { + if (valuesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureValuesIsMutable(); + values_.set(index, value); + onChanged(); + } else { + valuesBuilder_.setMessage(index, value); + } + return this; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public Builder setValues( + int index, cmvr.api.DexhandCommand.FreedomValue.Builder builderForValue) { + if (valuesBuilder_ == null) { + ensureValuesIsMutable(); + values_.set(index, builderForValue.build()); + onChanged(); + } else { + valuesBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public Builder addValues(cmvr.api.DexhandCommand.FreedomValue value) { + if (valuesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureValuesIsMutable(); + values_.add(value); + onChanged(); + } else { + valuesBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public Builder addValues( + int index, cmvr.api.DexhandCommand.FreedomValue value) { + if (valuesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureValuesIsMutable(); + values_.add(index, value); + onChanged(); + } else { + valuesBuilder_.addMessage(index, value); + } + return this; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public Builder addValues( + cmvr.api.DexhandCommand.FreedomValue.Builder builderForValue) { + if (valuesBuilder_ == null) { + ensureValuesIsMutable(); + values_.add(builderForValue.build()); + onChanged(); + } else { + valuesBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public Builder addValues( + int index, cmvr.api.DexhandCommand.FreedomValue.Builder builderForValue) { + if (valuesBuilder_ == null) { + ensureValuesIsMutable(); + values_.add(index, builderForValue.build()); + onChanged(); + } else { + valuesBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public Builder addAllValues( + java.lang.Iterable values) { + if (valuesBuilder_ == null) { + ensureValuesIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, values_); + onChanged(); + } else { + valuesBuilder_.addAllMessages(values); + } + return this; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public Builder clearValues() { + if (valuesBuilder_ == null) { + values_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + valuesBuilder_.clear(); + } + return this; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public Builder removeValues(int index) { + if (valuesBuilder_ == null) { + ensureValuesIsMutable(); + values_.remove(index); + onChanged(); + } else { + valuesBuilder_.remove(index); + } + return this; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public cmvr.api.DexhandCommand.FreedomValue.Builder getValuesBuilder( + int index) { + return getValuesFieldBuilder().getBuilder(index); + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public cmvr.api.DexhandCommand.FreedomValueOrBuilder getValuesOrBuilder( + int index) { + if (valuesBuilder_ == null) { + return values_.get(index); } else { + return valuesBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public java.util.List + getValuesOrBuilderList() { + if (valuesBuilder_ != null) { + return valuesBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(values_); + } + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public cmvr.api.DexhandCommand.FreedomValue.Builder addValuesBuilder() { + return getValuesFieldBuilder().addBuilder( + cmvr.api.DexhandCommand.FreedomValue.getDefaultInstance()); + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public cmvr.api.DexhandCommand.FreedomValue.Builder addValuesBuilder( + int index) { + return getValuesFieldBuilder().addBuilder( + index, cmvr.api.DexhandCommand.FreedomValue.getDefaultInstance()); + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public java.util.List + getValuesBuilderList() { + return getValuesFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilderV3< + cmvr.api.DexhandCommand.FreedomValue, cmvr.api.DexhandCommand.FreedomValue.Builder, cmvr.api.DexhandCommand.FreedomValueOrBuilder> + getValuesFieldBuilder() { + if (valuesBuilder_ == null) { + valuesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + cmvr.api.DexhandCommand.FreedomValue, cmvr.api.DexhandCommand.FreedomValue.Builder, cmvr.api.DexhandCommand.FreedomValueOrBuilder>( + values_, + ((bitField0_ & 0x00000001) != 0), + getParentForChildren(), + isClean()); + values_ = null; + } + return valuesBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.SetDexHandAnglesCommand.Request) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.SetDexHandAnglesCommand.Request) + private static final cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request(); + } + + public static cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Request getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface FeedbackOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.SetDexHandAnglesCommand.Feedback) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Feedback getHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.SetDexHandAnglesCommand.Feedback} + */ + public static final class Feedback extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.SetDexHandAnglesCommand.Feedback) + FeedbackOrBuilder { + private static final long serialVersionUID = 0L; + // Use Feedback.newBuilder() to construct. + private Feedback(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Feedback() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Feedback(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandAnglesCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandAnglesCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Feedback.class, cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Feedback.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Feedback header_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Feedback)) { + return super.equals(obj); + } + cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Feedback other = (cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Feedback) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Feedback parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Feedback parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Feedback parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Feedback parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Feedback parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Feedback parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Feedback parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Feedback parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Feedback parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Feedback parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Feedback prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.SetDexHandAnglesCommand.Feedback} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.SetDexHandAnglesCommand.Feedback) + cmvr.api.DexhandCommand.SetDexHandAnglesCommand.FeedbackOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandAnglesCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandAnglesCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Feedback.class, cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Feedback.Builder.class); + } + + // Construct using cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Feedback.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandAnglesCommand_Feedback_descriptor; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Feedback getDefaultInstanceForType() { + return cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Feedback.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Feedback build() { + cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Feedback result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Feedback buildPartial() { + cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Feedback result = new cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Feedback(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Feedback) { + return mergeFrom((cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Feedback)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Feedback other) { + if (other == cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Feedback.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Feedback header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Feedback.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Feedback.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.Feedback.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.SetDexHandAnglesCommand.Feedback) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.SetDexHandAnglesCommand.Feedback) + private static final cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Feedback DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Feedback(); + } + + public static cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Feedback getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Feedback parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Feedback getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.DexhandCommand.SetDexHandAnglesCommand)) { + return super.equals(obj); + } + cmvr.api.DexhandCommand.SetDexHandAnglesCommand other = (cmvr.api.DexhandCommand.SetDexHandAnglesCommand) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.DexhandCommand.SetDexHandAnglesCommand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandAnglesCommand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandAnglesCommand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandAnglesCommand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandAnglesCommand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandAnglesCommand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandAnglesCommand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandAnglesCommand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandAnglesCommand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandAnglesCommand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandAnglesCommand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandAnglesCommand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.DexhandCommand.SetDexHandAnglesCommand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.SetDexHandAnglesCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.SetDexHandAnglesCommand) + cmvr.api.DexhandCommand.SetDexHandAnglesCommandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandAnglesCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandAnglesCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.SetDexHandAnglesCommand.class, cmvr.api.DexhandCommand.SetDexHandAnglesCommand.Builder.class); + } + + // Construct using cmvr.api.DexhandCommand.SetDexHandAnglesCommand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandAnglesCommand_descriptor; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandAnglesCommand getDefaultInstanceForType() { + return cmvr.api.DexhandCommand.SetDexHandAnglesCommand.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandAnglesCommand build() { + cmvr.api.DexhandCommand.SetDexHandAnglesCommand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandAnglesCommand buildPartial() { + cmvr.api.DexhandCommand.SetDexHandAnglesCommand result = new cmvr.api.DexhandCommand.SetDexHandAnglesCommand(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.DexhandCommand.SetDexHandAnglesCommand) { + return mergeFrom((cmvr.api.DexhandCommand.SetDexHandAnglesCommand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.DexhandCommand.SetDexHandAnglesCommand other) { + if (other == cmvr.api.DexhandCommand.SetDexHandAnglesCommand.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.SetDexHandAnglesCommand) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.SetDexHandAnglesCommand) + private static final cmvr.api.DexhandCommand.SetDexHandAnglesCommand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.DexhandCommand.SetDexHandAnglesCommand(); + } + + public static cmvr.api.DexhandCommand.SetDexHandAnglesCommand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public SetDexHandAnglesCommand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandAnglesCommand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface SetDexHandForceCommandOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.SetDexHandForceCommand) + com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code cmvr.api.SetDexHandForceCommand} + */ + public static final class SetDexHandForceCommand extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.SetDexHandForceCommand) + SetDexHandForceCommandOrBuilder { + private static final long serialVersionUID = 0L; + // Use SetDexHandForceCommand.newBuilder() to construct. + private SetDexHandForceCommand(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private SetDexHandForceCommand() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new SetDexHandForceCommand(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandForceCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandForceCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.SetDexHandForceCommand.class, cmvr.api.DexhandCommand.SetDexHandForceCommand.Builder.class); + } + + public interface RequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.SetDexHandForceCommand.Request) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Request getHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder(); + + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + java.util.List + getValuesList(); + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + cmvr.api.DexhandCommand.FreedomValue getValues(int index); + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + int getValuesCount(); + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + java.util.List + getValuesOrBuilderList(); + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + cmvr.api.DexhandCommand.FreedomValueOrBuilder getValuesOrBuilder( + int index); + } + /** + * Protobuf type {@code cmvr.api.SetDexHandForceCommand.Request} + */ + public static final class Request extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.SetDexHandForceCommand.Request) + RequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use Request.newBuilder() to construct. + private Request(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Request() { + values_ = java.util.Collections.emptyList(); + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Request(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandForceCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandForceCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.SetDexHandForceCommand.Request.class, cmvr.api.DexhandCommand.SetDexHandForceCommand.Request.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Request header_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + public static final int VALUES_FIELD_NUMBER = 2; + private java.util.List values_; + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + @java.lang.Override + public java.util.List getValuesList() { + return values_; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + @java.lang.Override + public java.util.List + getValuesOrBuilderList() { + return values_; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + @java.lang.Override + public int getValuesCount() { + return values_.size(); + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + @java.lang.Override + public cmvr.api.DexhandCommand.FreedomValue getValues(int index) { + return values_.get(index); + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + @java.lang.Override + public cmvr.api.DexhandCommand.FreedomValueOrBuilder getValuesOrBuilder( + int index) { + return values_.get(index); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + for (int i = 0; i < values_.size(); i++) { + output.writeMessage(2, values_.get(i)); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + for (int i = 0; i < values_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, values_.get(i)); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.DexhandCommand.SetDexHandForceCommand.Request)) { + return super.equals(obj); + } + cmvr.api.DexhandCommand.SetDexHandForceCommand.Request other = (cmvr.api.DexhandCommand.SetDexHandForceCommand.Request) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getValuesList() + .equals(other.getValuesList())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + if (getValuesCount() > 0) { + hash = (37 * hash) + VALUES_FIELD_NUMBER; + hash = (53 * hash) + getValuesList().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.DexhandCommand.SetDexHandForceCommand.Request parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandForceCommand.Request parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandForceCommand.Request parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandForceCommand.Request parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandForceCommand.Request parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandForceCommand.Request parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandForceCommand.Request parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandForceCommand.Request parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandForceCommand.Request parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandForceCommand.Request parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandForceCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandForceCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.DexhandCommand.SetDexHandForceCommand.Request prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.SetDexHandForceCommand.Request} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.SetDexHandForceCommand.Request) + cmvr.api.DexhandCommand.SetDexHandForceCommand.RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandForceCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandForceCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.SetDexHandForceCommand.Request.class, cmvr.api.DexhandCommand.SetDexHandForceCommand.Request.Builder.class); + } + + // Construct using cmvr.api.DexhandCommand.SetDexHandForceCommand.Request.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + if (valuesBuilder_ == null) { + values_ = java.util.Collections.emptyList(); + } else { + values_ = null; + valuesBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandForceCommand_Request_descriptor; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandForceCommand.Request getDefaultInstanceForType() { + return cmvr.api.DexhandCommand.SetDexHandForceCommand.Request.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandForceCommand.Request build() { + cmvr.api.DexhandCommand.SetDexHandForceCommand.Request result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandForceCommand.Request buildPartial() { + cmvr.api.DexhandCommand.SetDexHandForceCommand.Request result = new cmvr.api.DexhandCommand.SetDexHandForceCommand.Request(this); + int from_bitField0_ = bitField0_; + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + if (valuesBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0)) { + values_ = java.util.Collections.unmodifiableList(values_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.values_ = values_; + } else { + result.values_ = valuesBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.DexhandCommand.SetDexHandForceCommand.Request) { + return mergeFrom((cmvr.api.DexhandCommand.SetDexHandForceCommand.Request)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.DexhandCommand.SetDexHandForceCommand.Request other) { + if (other == cmvr.api.DexhandCommand.SetDexHandForceCommand.Request.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + if (valuesBuilder_ == null) { + if (!other.values_.isEmpty()) { + if (values_.isEmpty()) { + values_ = other.values_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureValuesIsMutable(); + values_.addAll(other.values_); + } + onChanged(); + } + } else { + if (!other.values_.isEmpty()) { + if (valuesBuilder_.isEmpty()) { + valuesBuilder_.dispose(); + valuesBuilder_ = null; + values_ = other.values_; + bitField0_ = (bitField0_ & ~0x00000001); + valuesBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? + getValuesFieldBuilder() : null; + } else { + valuesBuilder_.addAllMessages(other.values_); + } + } + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + case 18: { + cmvr.api.DexhandCommand.FreedomValue m = + input.readMessage( + cmvr.api.DexhandCommand.FreedomValue.parser(), + extensionRegistry); + if (valuesBuilder_ == null) { + ensureValuesIsMutable(); + values_.add(m); + } else { + valuesBuilder_.addMessage(m); + } + break; + } // case 18 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private cmvr.api.Common.CommandHeader.Request header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Request getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Request.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Request.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.Request.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + + private java.util.List values_ = + java.util.Collections.emptyList(); + private void ensureValuesIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + values_ = new java.util.ArrayList(values_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + cmvr.api.DexhandCommand.FreedomValue, cmvr.api.DexhandCommand.FreedomValue.Builder, cmvr.api.DexhandCommand.FreedomValueOrBuilder> valuesBuilder_; + + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public java.util.List getValuesList() { + if (valuesBuilder_ == null) { + return java.util.Collections.unmodifiableList(values_); + } else { + return valuesBuilder_.getMessageList(); + } + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public int getValuesCount() { + if (valuesBuilder_ == null) { + return values_.size(); + } else { + return valuesBuilder_.getCount(); + } + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public cmvr.api.DexhandCommand.FreedomValue getValues(int index) { + if (valuesBuilder_ == null) { + return values_.get(index); + } else { + return valuesBuilder_.getMessage(index); + } + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public Builder setValues( + int index, cmvr.api.DexhandCommand.FreedomValue value) { + if (valuesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureValuesIsMutable(); + values_.set(index, value); + onChanged(); + } else { + valuesBuilder_.setMessage(index, value); + } + return this; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public Builder setValues( + int index, cmvr.api.DexhandCommand.FreedomValue.Builder builderForValue) { + if (valuesBuilder_ == null) { + ensureValuesIsMutable(); + values_.set(index, builderForValue.build()); + onChanged(); + } else { + valuesBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public Builder addValues(cmvr.api.DexhandCommand.FreedomValue value) { + if (valuesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureValuesIsMutable(); + values_.add(value); + onChanged(); + } else { + valuesBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public Builder addValues( + int index, cmvr.api.DexhandCommand.FreedomValue value) { + if (valuesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureValuesIsMutable(); + values_.add(index, value); + onChanged(); + } else { + valuesBuilder_.addMessage(index, value); + } + return this; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public Builder addValues( + cmvr.api.DexhandCommand.FreedomValue.Builder builderForValue) { + if (valuesBuilder_ == null) { + ensureValuesIsMutable(); + values_.add(builderForValue.build()); + onChanged(); + } else { + valuesBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public Builder addValues( + int index, cmvr.api.DexhandCommand.FreedomValue.Builder builderForValue) { + if (valuesBuilder_ == null) { + ensureValuesIsMutable(); + values_.add(index, builderForValue.build()); + onChanged(); + } else { + valuesBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public Builder addAllValues( + java.lang.Iterable values) { + if (valuesBuilder_ == null) { + ensureValuesIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, values_); + onChanged(); + } else { + valuesBuilder_.addAllMessages(values); + } + return this; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public Builder clearValues() { + if (valuesBuilder_ == null) { + values_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + valuesBuilder_.clear(); + } + return this; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public Builder removeValues(int index) { + if (valuesBuilder_ == null) { + ensureValuesIsMutable(); + values_.remove(index); + onChanged(); + } else { + valuesBuilder_.remove(index); + } + return this; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public cmvr.api.DexhandCommand.FreedomValue.Builder getValuesBuilder( + int index) { + return getValuesFieldBuilder().getBuilder(index); + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public cmvr.api.DexhandCommand.FreedomValueOrBuilder getValuesOrBuilder( + int index) { + if (valuesBuilder_ == null) { + return values_.get(index); } else { + return valuesBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public java.util.List + getValuesOrBuilderList() { + if (valuesBuilder_ != null) { + return valuesBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(values_); + } + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public cmvr.api.DexhandCommand.FreedomValue.Builder addValuesBuilder() { + return getValuesFieldBuilder().addBuilder( + cmvr.api.DexhandCommand.FreedomValue.getDefaultInstance()); + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public cmvr.api.DexhandCommand.FreedomValue.Builder addValuesBuilder( + int index) { + return getValuesFieldBuilder().addBuilder( + index, cmvr.api.DexhandCommand.FreedomValue.getDefaultInstance()); + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public java.util.List + getValuesBuilderList() { + return getValuesFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilderV3< + cmvr.api.DexhandCommand.FreedomValue, cmvr.api.DexhandCommand.FreedomValue.Builder, cmvr.api.DexhandCommand.FreedomValueOrBuilder> + getValuesFieldBuilder() { + if (valuesBuilder_ == null) { + valuesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + cmvr.api.DexhandCommand.FreedomValue, cmvr.api.DexhandCommand.FreedomValue.Builder, cmvr.api.DexhandCommand.FreedomValueOrBuilder>( + values_, + ((bitField0_ & 0x00000001) != 0), + getParentForChildren(), + isClean()); + values_ = null; + } + return valuesBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.SetDexHandForceCommand.Request) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.SetDexHandForceCommand.Request) + private static final cmvr.api.DexhandCommand.SetDexHandForceCommand.Request DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.DexhandCommand.SetDexHandForceCommand.Request(); + } + + public static cmvr.api.DexhandCommand.SetDexHandForceCommand.Request getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandForceCommand.Request getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface FeedbackOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.SetDexHandForceCommand.Feedback) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Feedback getHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.SetDexHandForceCommand.Feedback} + */ + public static final class Feedback extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.SetDexHandForceCommand.Feedback) + FeedbackOrBuilder { + private static final long serialVersionUID = 0L; + // Use Feedback.newBuilder() to construct. + private Feedback(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Feedback() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Feedback(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandForceCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandForceCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.SetDexHandForceCommand.Feedback.class, cmvr.api.DexhandCommand.SetDexHandForceCommand.Feedback.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Feedback header_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.DexhandCommand.SetDexHandForceCommand.Feedback)) { + return super.equals(obj); + } + cmvr.api.DexhandCommand.SetDexHandForceCommand.Feedback other = (cmvr.api.DexhandCommand.SetDexHandForceCommand.Feedback) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.DexhandCommand.SetDexHandForceCommand.Feedback parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandForceCommand.Feedback parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandForceCommand.Feedback parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandForceCommand.Feedback parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandForceCommand.Feedback parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandForceCommand.Feedback parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandForceCommand.Feedback parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandForceCommand.Feedback parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandForceCommand.Feedback parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandForceCommand.Feedback parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandForceCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandForceCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.DexhandCommand.SetDexHandForceCommand.Feedback prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.SetDexHandForceCommand.Feedback} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.SetDexHandForceCommand.Feedback) + cmvr.api.DexhandCommand.SetDexHandForceCommand.FeedbackOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandForceCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandForceCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.SetDexHandForceCommand.Feedback.class, cmvr.api.DexhandCommand.SetDexHandForceCommand.Feedback.Builder.class); + } + + // Construct using cmvr.api.DexhandCommand.SetDexHandForceCommand.Feedback.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandForceCommand_Feedback_descriptor; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandForceCommand.Feedback getDefaultInstanceForType() { + return cmvr.api.DexhandCommand.SetDexHandForceCommand.Feedback.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandForceCommand.Feedback build() { + cmvr.api.DexhandCommand.SetDexHandForceCommand.Feedback result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandForceCommand.Feedback buildPartial() { + cmvr.api.DexhandCommand.SetDexHandForceCommand.Feedback result = new cmvr.api.DexhandCommand.SetDexHandForceCommand.Feedback(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.DexhandCommand.SetDexHandForceCommand.Feedback) { + return mergeFrom((cmvr.api.DexhandCommand.SetDexHandForceCommand.Feedback)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.DexhandCommand.SetDexHandForceCommand.Feedback other) { + if (other == cmvr.api.DexhandCommand.SetDexHandForceCommand.Feedback.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Feedback header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Feedback.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Feedback.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.Feedback.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.SetDexHandForceCommand.Feedback) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.SetDexHandForceCommand.Feedback) + private static final cmvr.api.DexhandCommand.SetDexHandForceCommand.Feedback DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.DexhandCommand.SetDexHandForceCommand.Feedback(); + } + + public static cmvr.api.DexhandCommand.SetDexHandForceCommand.Feedback getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Feedback parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandForceCommand.Feedback getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.DexhandCommand.SetDexHandForceCommand)) { + return super.equals(obj); + } + cmvr.api.DexhandCommand.SetDexHandForceCommand other = (cmvr.api.DexhandCommand.SetDexHandForceCommand) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.DexhandCommand.SetDexHandForceCommand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandForceCommand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandForceCommand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandForceCommand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandForceCommand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandForceCommand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandForceCommand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandForceCommand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandForceCommand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandForceCommand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandForceCommand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandForceCommand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.DexhandCommand.SetDexHandForceCommand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.SetDexHandForceCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.SetDexHandForceCommand) + cmvr.api.DexhandCommand.SetDexHandForceCommandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandForceCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandForceCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.SetDexHandForceCommand.class, cmvr.api.DexhandCommand.SetDexHandForceCommand.Builder.class); + } + + // Construct using cmvr.api.DexhandCommand.SetDexHandForceCommand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandForceCommand_descriptor; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandForceCommand getDefaultInstanceForType() { + return cmvr.api.DexhandCommand.SetDexHandForceCommand.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandForceCommand build() { + cmvr.api.DexhandCommand.SetDexHandForceCommand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandForceCommand buildPartial() { + cmvr.api.DexhandCommand.SetDexHandForceCommand result = new cmvr.api.DexhandCommand.SetDexHandForceCommand(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.DexhandCommand.SetDexHandForceCommand) { + return mergeFrom((cmvr.api.DexhandCommand.SetDexHandForceCommand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.DexhandCommand.SetDexHandForceCommand other) { + if (other == cmvr.api.DexhandCommand.SetDexHandForceCommand.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.SetDexHandForceCommand) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.SetDexHandForceCommand) + private static final cmvr.api.DexhandCommand.SetDexHandForceCommand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.DexhandCommand.SetDexHandForceCommand(); + } + + public static cmvr.api.DexhandCommand.SetDexHandForceCommand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public SetDexHandForceCommand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandForceCommand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface SetDexHandSpeedCommandOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.SetDexHandSpeedCommand) + com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code cmvr.api.SetDexHandSpeedCommand} + */ + public static final class SetDexHandSpeedCommand extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.SetDexHandSpeedCommand) + SetDexHandSpeedCommandOrBuilder { + private static final long serialVersionUID = 0L; + // Use SetDexHandSpeedCommand.newBuilder() to construct. + private SetDexHandSpeedCommand(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private SetDexHandSpeedCommand() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new SetDexHandSpeedCommand(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandSpeedCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandSpeedCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.SetDexHandSpeedCommand.class, cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Builder.class); + } + + public interface RequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.SetDexHandSpeedCommand.Request) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Request getHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder(); + + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + java.util.List + getValuesList(); + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + cmvr.api.DexhandCommand.FreedomValue getValues(int index); + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + int getValuesCount(); + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + java.util.List + getValuesOrBuilderList(); + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + cmvr.api.DexhandCommand.FreedomValueOrBuilder getValuesOrBuilder( + int index); + } + /** + * Protobuf type {@code cmvr.api.SetDexHandSpeedCommand.Request} + */ + public static final class Request extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.SetDexHandSpeedCommand.Request) + RequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use Request.newBuilder() to construct. + private Request(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Request() { + values_ = java.util.Collections.emptyList(); + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Request(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandSpeedCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandSpeedCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request.class, cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Request header_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + public static final int VALUES_FIELD_NUMBER = 2; + private java.util.List values_; + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + @java.lang.Override + public java.util.List getValuesList() { + return values_; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + @java.lang.Override + public java.util.List + getValuesOrBuilderList() { + return values_; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + @java.lang.Override + public int getValuesCount() { + return values_.size(); + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + @java.lang.Override + public cmvr.api.DexhandCommand.FreedomValue getValues(int index) { + return values_.get(index); + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + @java.lang.Override + public cmvr.api.DexhandCommand.FreedomValueOrBuilder getValuesOrBuilder( + int index) { + return values_.get(index); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + for (int i = 0; i < values_.size(); i++) { + output.writeMessage(2, values_.get(i)); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + for (int i = 0; i < values_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, values_.get(i)); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request)) { + return super.equals(obj); + } + cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request other = (cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getValuesList() + .equals(other.getValuesList())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + if (getValuesCount() > 0) { + hash = (37 * hash) + VALUES_FIELD_NUMBER; + hash = (53 * hash) + getValuesList().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.SetDexHandSpeedCommand.Request} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.SetDexHandSpeedCommand.Request) + cmvr.api.DexhandCommand.SetDexHandSpeedCommand.RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandSpeedCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandSpeedCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request.class, cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request.Builder.class); + } + + // Construct using cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + if (valuesBuilder_ == null) { + values_ = java.util.Collections.emptyList(); + } else { + values_ = null; + valuesBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandSpeedCommand_Request_descriptor; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request getDefaultInstanceForType() { + return cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request build() { + cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request buildPartial() { + cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request result = new cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request(this); + int from_bitField0_ = bitField0_; + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + if (valuesBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0)) { + values_ = java.util.Collections.unmodifiableList(values_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.values_ = values_; + } else { + result.values_ = valuesBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request) { + return mergeFrom((cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request other) { + if (other == cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + if (valuesBuilder_ == null) { + if (!other.values_.isEmpty()) { + if (values_.isEmpty()) { + values_ = other.values_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureValuesIsMutable(); + values_.addAll(other.values_); + } + onChanged(); + } + } else { + if (!other.values_.isEmpty()) { + if (valuesBuilder_.isEmpty()) { + valuesBuilder_.dispose(); + valuesBuilder_ = null; + values_ = other.values_; + bitField0_ = (bitField0_ & ~0x00000001); + valuesBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? + getValuesFieldBuilder() : null; + } else { + valuesBuilder_.addAllMessages(other.values_); + } + } + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + case 18: { + cmvr.api.DexhandCommand.FreedomValue m = + input.readMessage( + cmvr.api.DexhandCommand.FreedomValue.parser(), + extensionRegistry); + if (valuesBuilder_ == null) { + ensureValuesIsMutable(); + values_.add(m); + } else { + valuesBuilder_.addMessage(m); + } + break; + } // case 18 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private cmvr.api.Common.CommandHeader.Request header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Request getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Request.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Request.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.Request.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + + private java.util.List values_ = + java.util.Collections.emptyList(); + private void ensureValuesIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + values_ = new java.util.ArrayList(values_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + cmvr.api.DexhandCommand.FreedomValue, cmvr.api.DexhandCommand.FreedomValue.Builder, cmvr.api.DexhandCommand.FreedomValueOrBuilder> valuesBuilder_; + + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public java.util.List getValuesList() { + if (valuesBuilder_ == null) { + return java.util.Collections.unmodifiableList(values_); + } else { + return valuesBuilder_.getMessageList(); + } + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public int getValuesCount() { + if (valuesBuilder_ == null) { + return values_.size(); + } else { + return valuesBuilder_.getCount(); + } + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public cmvr.api.DexhandCommand.FreedomValue getValues(int index) { + if (valuesBuilder_ == null) { + return values_.get(index); + } else { + return valuesBuilder_.getMessage(index); + } + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public Builder setValues( + int index, cmvr.api.DexhandCommand.FreedomValue value) { + if (valuesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureValuesIsMutable(); + values_.set(index, value); + onChanged(); + } else { + valuesBuilder_.setMessage(index, value); + } + return this; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public Builder setValues( + int index, cmvr.api.DexhandCommand.FreedomValue.Builder builderForValue) { + if (valuesBuilder_ == null) { + ensureValuesIsMutable(); + values_.set(index, builderForValue.build()); + onChanged(); + } else { + valuesBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public Builder addValues(cmvr.api.DexhandCommand.FreedomValue value) { + if (valuesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureValuesIsMutable(); + values_.add(value); + onChanged(); + } else { + valuesBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public Builder addValues( + int index, cmvr.api.DexhandCommand.FreedomValue value) { + if (valuesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureValuesIsMutable(); + values_.add(index, value); + onChanged(); + } else { + valuesBuilder_.addMessage(index, value); + } + return this; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public Builder addValues( + cmvr.api.DexhandCommand.FreedomValue.Builder builderForValue) { + if (valuesBuilder_ == null) { + ensureValuesIsMutable(); + values_.add(builderForValue.build()); + onChanged(); + } else { + valuesBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public Builder addValues( + int index, cmvr.api.DexhandCommand.FreedomValue.Builder builderForValue) { + if (valuesBuilder_ == null) { + ensureValuesIsMutable(); + values_.add(index, builderForValue.build()); + onChanged(); + } else { + valuesBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public Builder addAllValues( + java.lang.Iterable values) { + if (valuesBuilder_ == null) { + ensureValuesIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, values_); + onChanged(); + } else { + valuesBuilder_.addAllMessages(values); + } + return this; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public Builder clearValues() { + if (valuesBuilder_ == null) { + values_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + valuesBuilder_.clear(); + } + return this; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public Builder removeValues(int index) { + if (valuesBuilder_ == null) { + ensureValuesIsMutable(); + values_.remove(index); + onChanged(); + } else { + valuesBuilder_.remove(index); + } + return this; + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public cmvr.api.DexhandCommand.FreedomValue.Builder getValuesBuilder( + int index) { + return getValuesFieldBuilder().getBuilder(index); + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public cmvr.api.DexhandCommand.FreedomValueOrBuilder getValuesOrBuilder( + int index) { + if (valuesBuilder_ == null) { + return values_.get(index); } else { + return valuesBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public java.util.List + getValuesOrBuilderList() { + if (valuesBuilder_ != null) { + return valuesBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(values_); + } + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public cmvr.api.DexhandCommand.FreedomValue.Builder addValuesBuilder() { + return getValuesFieldBuilder().addBuilder( + cmvr.api.DexhandCommand.FreedomValue.getDefaultInstance()); + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public cmvr.api.DexhandCommand.FreedomValue.Builder addValuesBuilder( + int index) { + return getValuesFieldBuilder().addBuilder( + index, cmvr.api.DexhandCommand.FreedomValue.getDefaultInstance()); + } + /** + * repeated .cmvr.api.FreedomValue values = 2; + */ + public java.util.List + getValuesBuilderList() { + return getValuesFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilderV3< + cmvr.api.DexhandCommand.FreedomValue, cmvr.api.DexhandCommand.FreedomValue.Builder, cmvr.api.DexhandCommand.FreedomValueOrBuilder> + getValuesFieldBuilder() { + if (valuesBuilder_ == null) { + valuesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + cmvr.api.DexhandCommand.FreedomValue, cmvr.api.DexhandCommand.FreedomValue.Builder, cmvr.api.DexhandCommand.FreedomValueOrBuilder>( + values_, + ((bitField0_ & 0x00000001) != 0), + getParentForChildren(), + isClean()); + values_ = null; + } + return valuesBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.SetDexHandSpeedCommand.Request) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.SetDexHandSpeedCommand.Request) + private static final cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request(); + } + + public static cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Request getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface FeedbackOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.SetDexHandSpeedCommand.Feedback) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Feedback getHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.SetDexHandSpeedCommand.Feedback} + */ + public static final class Feedback extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.SetDexHandSpeedCommand.Feedback) + FeedbackOrBuilder { + private static final long serialVersionUID = 0L; + // Use Feedback.newBuilder() to construct. + private Feedback(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Feedback() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Feedback(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandSpeedCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandSpeedCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Feedback.class, cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Feedback.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Feedback header_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Feedback)) { + return super.equals(obj); + } + cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Feedback other = (cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Feedback) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Feedback parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Feedback parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Feedback parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Feedback parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Feedback parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Feedback parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Feedback parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Feedback parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Feedback parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Feedback parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Feedback prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.SetDexHandSpeedCommand.Feedback} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.SetDexHandSpeedCommand.Feedback) + cmvr.api.DexhandCommand.SetDexHandSpeedCommand.FeedbackOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandSpeedCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandSpeedCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Feedback.class, cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Feedback.Builder.class); + } + + // Construct using cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Feedback.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandSpeedCommand_Feedback_descriptor; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Feedback getDefaultInstanceForType() { + return cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Feedback.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Feedback build() { + cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Feedback result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Feedback buildPartial() { + cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Feedback result = new cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Feedback(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Feedback) { + return mergeFrom((cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Feedback)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Feedback other) { + if (other == cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Feedback.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Feedback header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Feedback.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Feedback.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.Feedback.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.SetDexHandSpeedCommand.Feedback) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.SetDexHandSpeedCommand.Feedback) + private static final cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Feedback DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Feedback(); + } + + public static cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Feedback getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Feedback parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Feedback getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.DexhandCommand.SetDexHandSpeedCommand)) { + return super.equals(obj); + } + cmvr.api.DexhandCommand.SetDexHandSpeedCommand other = (cmvr.api.DexhandCommand.SetDexHandSpeedCommand) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.DexhandCommand.SetDexHandSpeedCommand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandSpeedCommand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandSpeedCommand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandSpeedCommand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandSpeedCommand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandSpeedCommand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandSpeedCommand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandSpeedCommand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandSpeedCommand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandSpeedCommand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandSpeedCommand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandSpeedCommand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.DexhandCommand.SetDexHandSpeedCommand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.SetDexHandSpeedCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.SetDexHandSpeedCommand) + cmvr.api.DexhandCommand.SetDexHandSpeedCommandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandSpeedCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandSpeedCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.SetDexHandSpeedCommand.class, cmvr.api.DexhandCommand.SetDexHandSpeedCommand.Builder.class); + } + + // Construct using cmvr.api.DexhandCommand.SetDexHandSpeedCommand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandSpeedCommand_descriptor; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandSpeedCommand getDefaultInstanceForType() { + return cmvr.api.DexhandCommand.SetDexHandSpeedCommand.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandSpeedCommand build() { + cmvr.api.DexhandCommand.SetDexHandSpeedCommand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandSpeedCommand buildPartial() { + cmvr.api.DexhandCommand.SetDexHandSpeedCommand result = new cmvr.api.DexhandCommand.SetDexHandSpeedCommand(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.DexhandCommand.SetDexHandSpeedCommand) { + return mergeFrom((cmvr.api.DexhandCommand.SetDexHandSpeedCommand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.DexhandCommand.SetDexHandSpeedCommand other) { + if (other == cmvr.api.DexhandCommand.SetDexHandSpeedCommand.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.SetDexHandSpeedCommand) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.SetDexHandSpeedCommand) + private static final cmvr.api.DexhandCommand.SetDexHandSpeedCommand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.DexhandCommand.SetDexHandSpeedCommand(); + } + + public static cmvr.api.DexhandCommand.SetDexHandSpeedCommand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public SetDexHandSpeedCommand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandSpeedCommand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface SetDexHandPresetActCommandOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.SetDexHandPresetActCommand) + com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code cmvr.api.SetDexHandPresetActCommand} + */ + public static final class SetDexHandPresetActCommand extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.SetDexHandPresetActCommand) + SetDexHandPresetActCommandOrBuilder { + private static final long serialVersionUID = 0L; + // Use SetDexHandPresetActCommand.newBuilder() to construct. + private SetDexHandPresetActCommand(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private SetDexHandPresetActCommand() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new SetDexHandPresetActCommand(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandPresetActCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandPresetActCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.SetDexHandPresetActCommand.class, cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Builder.class); + } + + public interface RequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.SetDexHandPresetActCommand.Request) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Request getHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder(); + + /** + * int32 presetActId = 2; + * @return The presetActId. + */ + int getPresetActId(); + } + /** + * Protobuf type {@code cmvr.api.SetDexHandPresetActCommand.Request} + */ + public static final class Request extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.SetDexHandPresetActCommand.Request) + RequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use Request.newBuilder() to construct. + private Request(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Request() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Request(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandPresetActCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandPresetActCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request.class, cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Request header_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + public static final int PRESETACTID_FIELD_NUMBER = 2; + private int presetActId_; + /** + * int32 presetActId = 2; + * @return The presetActId. + */ + @java.lang.Override + public int getPresetActId() { + return presetActId_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + if (presetActId_ != 0) { + output.writeInt32(2, presetActId_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + if (presetActId_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(2, presetActId_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request)) { + return super.equals(obj); + } + cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request other = (cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (getPresetActId() + != other.getPresetActId()) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (37 * hash) + PRESETACTID_FIELD_NUMBER; + hash = (53 * hash) + getPresetActId(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.SetDexHandPresetActCommand.Request} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.SetDexHandPresetActCommand.Request) + cmvr.api.DexhandCommand.SetDexHandPresetActCommand.RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandPresetActCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandPresetActCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request.class, cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request.Builder.class); + } + + // Construct using cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + presetActId_ = 0; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandPresetActCommand_Request_descriptor; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request getDefaultInstanceForType() { + return cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request build() { + cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request buildPartial() { + cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request result = new cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + result.presetActId_ = presetActId_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request) { + return mergeFrom((cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request other) { + if (other == cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + if (other.getPresetActId() != 0) { + setPresetActId(other.getPresetActId()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + case 16: { + presetActId_ = input.readInt32(); + + break; + } // case 16 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Request header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Request getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Request.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Request.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.Request.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + + private int presetActId_ ; + /** + * int32 presetActId = 2; + * @return The presetActId. + */ + @java.lang.Override + public int getPresetActId() { + return presetActId_; + } + /** + * int32 presetActId = 2; + * @param value The presetActId to set. + * @return This builder for chaining. + */ + public Builder setPresetActId(int value) { + + presetActId_ = value; + onChanged(); + return this; + } + /** + * int32 presetActId = 2; + * @return This builder for chaining. + */ + public Builder clearPresetActId() { + + presetActId_ = 0; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.SetDexHandPresetActCommand.Request) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.SetDexHandPresetActCommand.Request) + private static final cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request(); + } + + public static cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Request getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface FeedbackOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.SetDexHandPresetActCommand.Feedback) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Feedback getHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.SetDexHandPresetActCommand.Feedback} + */ + public static final class Feedback extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.SetDexHandPresetActCommand.Feedback) + FeedbackOrBuilder { + private static final long serialVersionUID = 0L; + // Use Feedback.newBuilder() to construct. + private Feedback(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Feedback() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Feedback(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandPresetActCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandPresetActCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Feedback.class, cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Feedback.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Feedback header_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Feedback)) { + return super.equals(obj); + } + cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Feedback other = (cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Feedback) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Feedback parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Feedback parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Feedback parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Feedback parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Feedback parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Feedback parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Feedback parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Feedback parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Feedback parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Feedback parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Feedback prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.SetDexHandPresetActCommand.Feedback} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.SetDexHandPresetActCommand.Feedback) + cmvr.api.DexhandCommand.SetDexHandPresetActCommand.FeedbackOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandPresetActCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandPresetActCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Feedback.class, cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Feedback.Builder.class); + } + + // Construct using cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Feedback.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandPresetActCommand_Feedback_descriptor; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Feedback getDefaultInstanceForType() { + return cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Feedback.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Feedback build() { + cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Feedback result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Feedback buildPartial() { + cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Feedback result = new cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Feedback(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Feedback) { + return mergeFrom((cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Feedback)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Feedback other) { + if (other == cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Feedback.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Feedback header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Feedback.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Feedback.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.Feedback.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.SetDexHandPresetActCommand.Feedback) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.SetDexHandPresetActCommand.Feedback) + private static final cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Feedback DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Feedback(); + } + + public static cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Feedback getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Feedback parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Feedback getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.DexhandCommand.SetDexHandPresetActCommand)) { + return super.equals(obj); + } + cmvr.api.DexhandCommand.SetDexHandPresetActCommand other = (cmvr.api.DexhandCommand.SetDexHandPresetActCommand) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.DexhandCommand.SetDexHandPresetActCommand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandPresetActCommand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandPresetActCommand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandPresetActCommand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandPresetActCommand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.SetDexHandPresetActCommand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandPresetActCommand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandPresetActCommand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandPresetActCommand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandPresetActCommand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.SetDexHandPresetActCommand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.SetDexHandPresetActCommand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.DexhandCommand.SetDexHandPresetActCommand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.SetDexHandPresetActCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.SetDexHandPresetActCommand) + cmvr.api.DexhandCommand.SetDexHandPresetActCommandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandPresetActCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandPresetActCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.SetDexHandPresetActCommand.class, cmvr.api.DexhandCommand.SetDexHandPresetActCommand.Builder.class); + } + + // Construct using cmvr.api.DexhandCommand.SetDexHandPresetActCommand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_SetDexHandPresetActCommand_descriptor; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandPresetActCommand getDefaultInstanceForType() { + return cmvr.api.DexhandCommand.SetDexHandPresetActCommand.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandPresetActCommand build() { + cmvr.api.DexhandCommand.SetDexHandPresetActCommand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandPresetActCommand buildPartial() { + cmvr.api.DexhandCommand.SetDexHandPresetActCommand result = new cmvr.api.DexhandCommand.SetDexHandPresetActCommand(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.DexhandCommand.SetDexHandPresetActCommand) { + return mergeFrom((cmvr.api.DexhandCommand.SetDexHandPresetActCommand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.DexhandCommand.SetDexHandPresetActCommand other) { + if (other == cmvr.api.DexhandCommand.SetDexHandPresetActCommand.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.SetDexHandPresetActCommand) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.SetDexHandPresetActCommand) + private static final cmvr.api.DexhandCommand.SetDexHandPresetActCommand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.DexhandCommand.SetDexHandPresetActCommand(); + } + + public static cmvr.api.DexhandCommand.SetDexHandPresetActCommand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public SetDexHandPresetActCommand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.SetDexHandPresetActCommand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface GetSensorDataCommandOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetSensorDataCommand) + com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code cmvr.api.GetSensorDataCommand} + */ + public static final class GetSensorDataCommand extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetSensorDataCommand) + GetSensorDataCommandOrBuilder { + private static final long serialVersionUID = 0L; + // Use GetSensorDataCommand.newBuilder() to construct. + private GetSensorDataCommand(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private GetSensorDataCommand() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new GetSensorDataCommand(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetSensorDataCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetSensorDataCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.GetSensorDataCommand.class, cmvr.api.DexhandCommand.GetSensorDataCommand.Builder.class); + } + + public interface RequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetSensorDataCommand.Request) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Request getHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.GetSensorDataCommand.Request} + */ + public static final class Request extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetSensorDataCommand.Request) + RequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use Request.newBuilder() to construct. + private Request(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Request() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Request(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetSensorDataCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetSensorDataCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.GetSensorDataCommand.Request.class, cmvr.api.DexhandCommand.GetSensorDataCommand.Request.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Request header_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.DexhandCommand.GetSensorDataCommand.Request)) { + return super.equals(obj); + } + cmvr.api.DexhandCommand.GetSensorDataCommand.Request other = (cmvr.api.DexhandCommand.GetSensorDataCommand.Request) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.DexhandCommand.GetSensorDataCommand.Request parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.GetSensorDataCommand.Request parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetSensorDataCommand.Request parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.GetSensorDataCommand.Request parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetSensorDataCommand.Request parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.GetSensorDataCommand.Request parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetSensorDataCommand.Request parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.GetSensorDataCommand.Request parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetSensorDataCommand.Request parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.GetSensorDataCommand.Request parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetSensorDataCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.GetSensorDataCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.DexhandCommand.GetSensorDataCommand.Request prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetSensorDataCommand.Request} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetSensorDataCommand.Request) + cmvr.api.DexhandCommand.GetSensorDataCommand.RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetSensorDataCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetSensorDataCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.GetSensorDataCommand.Request.class, cmvr.api.DexhandCommand.GetSensorDataCommand.Request.Builder.class); + } + + // Construct using cmvr.api.DexhandCommand.GetSensorDataCommand.Request.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetSensorDataCommand_Request_descriptor; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.GetSensorDataCommand.Request getDefaultInstanceForType() { + return cmvr.api.DexhandCommand.GetSensorDataCommand.Request.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.DexhandCommand.GetSensorDataCommand.Request build() { + cmvr.api.DexhandCommand.GetSensorDataCommand.Request result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.GetSensorDataCommand.Request buildPartial() { + cmvr.api.DexhandCommand.GetSensorDataCommand.Request result = new cmvr.api.DexhandCommand.GetSensorDataCommand.Request(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.DexhandCommand.GetSensorDataCommand.Request) { + return mergeFrom((cmvr.api.DexhandCommand.GetSensorDataCommand.Request)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.DexhandCommand.GetSensorDataCommand.Request other) { + if (other == cmvr.api.DexhandCommand.GetSensorDataCommand.Request.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Request header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Request getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Request.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Request.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.Request.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetSensorDataCommand.Request) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetSensorDataCommand.Request) + private static final cmvr.api.DexhandCommand.GetSensorDataCommand.Request DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.DexhandCommand.GetSensorDataCommand.Request(); + } + + public static cmvr.api.DexhandCommand.GetSensorDataCommand.Request getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.GetSensorDataCommand.Request getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface FeedbackOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetSensorDataCommand.Feedback) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Feedback getHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder(); + + /** + *
+       *所有传感器的数据
+       * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + java.util.List + getSensorList(); + /** + *
+       *所有传感器的数据
+       * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + cmvr.api.DexhandCommand.SensorData getSensor(int index); + /** + *
+       *所有传感器的数据
+       * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + int getSensorCount(); + /** + *
+       *所有传感器的数据
+       * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + java.util.List + getSensorOrBuilderList(); + /** + *
+       *所有传感器的数据
+       * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + cmvr.api.DexhandCommand.SensorDataOrBuilder getSensorOrBuilder( + int index); + } + /** + * Protobuf type {@code cmvr.api.GetSensorDataCommand.Feedback} + */ + public static final class Feedback extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetSensorDataCommand.Feedback) + FeedbackOrBuilder { + private static final long serialVersionUID = 0L; + // Use Feedback.newBuilder() to construct. + private Feedback(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Feedback() { + sensor_ = java.util.Collections.emptyList(); + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Feedback(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetSensorDataCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetSensorDataCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.GetSensorDataCommand.Feedback.class, cmvr.api.DexhandCommand.GetSensorDataCommand.Feedback.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Feedback header_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + public static final int SENSOR_FIELD_NUMBER = 2; + private java.util.List sensor_; + /** + *
+       *所有传感器的数据
+       * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + @java.lang.Override + public java.util.List getSensorList() { + return sensor_; + } + /** + *
+       *所有传感器的数据
+       * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + @java.lang.Override + public java.util.List + getSensorOrBuilderList() { + return sensor_; + } + /** + *
+       *所有传感器的数据
+       * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + @java.lang.Override + public int getSensorCount() { + return sensor_.size(); + } + /** + *
+       *所有传感器的数据
+       * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + @java.lang.Override + public cmvr.api.DexhandCommand.SensorData getSensor(int index) { + return sensor_.get(index); + } + /** + *
+       *所有传感器的数据
+       * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + @java.lang.Override + public cmvr.api.DexhandCommand.SensorDataOrBuilder getSensorOrBuilder( + int index) { + return sensor_.get(index); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + for (int i = 0; i < sensor_.size(); i++) { + output.writeMessage(2, sensor_.get(i)); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + for (int i = 0; i < sensor_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, sensor_.get(i)); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.DexhandCommand.GetSensorDataCommand.Feedback)) { + return super.equals(obj); + } + cmvr.api.DexhandCommand.GetSensorDataCommand.Feedback other = (cmvr.api.DexhandCommand.GetSensorDataCommand.Feedback) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getSensorList() + .equals(other.getSensorList())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + if (getSensorCount() > 0) { + hash = (37 * hash) + SENSOR_FIELD_NUMBER; + hash = (53 * hash) + getSensorList().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.DexhandCommand.GetSensorDataCommand.Feedback parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.GetSensorDataCommand.Feedback parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetSensorDataCommand.Feedback parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.GetSensorDataCommand.Feedback parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetSensorDataCommand.Feedback parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.GetSensorDataCommand.Feedback parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetSensorDataCommand.Feedback parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.GetSensorDataCommand.Feedback parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetSensorDataCommand.Feedback parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.GetSensorDataCommand.Feedback parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetSensorDataCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.GetSensorDataCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.DexhandCommand.GetSensorDataCommand.Feedback prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetSensorDataCommand.Feedback} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetSensorDataCommand.Feedback) + cmvr.api.DexhandCommand.GetSensorDataCommand.FeedbackOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetSensorDataCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetSensorDataCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.GetSensorDataCommand.Feedback.class, cmvr.api.DexhandCommand.GetSensorDataCommand.Feedback.Builder.class); + } + + // Construct using cmvr.api.DexhandCommand.GetSensorDataCommand.Feedback.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + if (sensorBuilder_ == null) { + sensor_ = java.util.Collections.emptyList(); + } else { + sensor_ = null; + sensorBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetSensorDataCommand_Feedback_descriptor; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.GetSensorDataCommand.Feedback getDefaultInstanceForType() { + return cmvr.api.DexhandCommand.GetSensorDataCommand.Feedback.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.DexhandCommand.GetSensorDataCommand.Feedback build() { + cmvr.api.DexhandCommand.GetSensorDataCommand.Feedback result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.GetSensorDataCommand.Feedback buildPartial() { + cmvr.api.DexhandCommand.GetSensorDataCommand.Feedback result = new cmvr.api.DexhandCommand.GetSensorDataCommand.Feedback(this); + int from_bitField0_ = bitField0_; + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + if (sensorBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0)) { + sensor_ = java.util.Collections.unmodifiableList(sensor_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.sensor_ = sensor_; + } else { + result.sensor_ = sensorBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.DexhandCommand.GetSensorDataCommand.Feedback) { + return mergeFrom((cmvr.api.DexhandCommand.GetSensorDataCommand.Feedback)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.DexhandCommand.GetSensorDataCommand.Feedback other) { + if (other == cmvr.api.DexhandCommand.GetSensorDataCommand.Feedback.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + if (sensorBuilder_ == null) { + if (!other.sensor_.isEmpty()) { + if (sensor_.isEmpty()) { + sensor_ = other.sensor_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureSensorIsMutable(); + sensor_.addAll(other.sensor_); + } + onChanged(); + } + } else { + if (!other.sensor_.isEmpty()) { + if (sensorBuilder_.isEmpty()) { + sensorBuilder_.dispose(); + sensorBuilder_ = null; + sensor_ = other.sensor_; + bitField0_ = (bitField0_ & ~0x00000001); + sensorBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? + getSensorFieldBuilder() : null; + } else { + sensorBuilder_.addAllMessages(other.sensor_); + } + } + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + case 18: { + cmvr.api.DexhandCommand.SensorData m = + input.readMessage( + cmvr.api.DexhandCommand.SensorData.parser(), + extensionRegistry); + if (sensorBuilder_ == null) { + ensureSensorIsMutable(); + sensor_.add(m); + } else { + sensorBuilder_.addMessage(m); + } + break; + } // case 18 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private cmvr.api.Common.CommandHeader.Feedback header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Feedback.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Feedback.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.Feedback.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + + private java.util.List sensor_ = + java.util.Collections.emptyList(); + private void ensureSensorIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + sensor_ = new java.util.ArrayList(sensor_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + cmvr.api.DexhandCommand.SensorData, cmvr.api.DexhandCommand.SensorData.Builder, cmvr.api.DexhandCommand.SensorDataOrBuilder> sensorBuilder_; + + /** + *
+         *所有传感器的数据
+         * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + public java.util.List getSensorList() { + if (sensorBuilder_ == null) { + return java.util.Collections.unmodifiableList(sensor_); + } else { + return sensorBuilder_.getMessageList(); + } + } + /** + *
+         *所有传感器的数据
+         * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + public int getSensorCount() { + if (sensorBuilder_ == null) { + return sensor_.size(); + } else { + return sensorBuilder_.getCount(); + } + } + /** + *
+         *所有传感器的数据
+         * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + public cmvr.api.DexhandCommand.SensorData getSensor(int index) { + if (sensorBuilder_ == null) { + return sensor_.get(index); + } else { + return sensorBuilder_.getMessage(index); + } + } + /** + *
+         *所有传感器的数据
+         * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + public Builder setSensor( + int index, cmvr.api.DexhandCommand.SensorData value) { + if (sensorBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureSensorIsMutable(); + sensor_.set(index, value); + onChanged(); + } else { + sensorBuilder_.setMessage(index, value); + } + return this; + } + /** + *
+         *所有传感器的数据
+         * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + public Builder setSensor( + int index, cmvr.api.DexhandCommand.SensorData.Builder builderForValue) { + if (sensorBuilder_ == null) { + ensureSensorIsMutable(); + sensor_.set(index, builderForValue.build()); + onChanged(); + } else { + sensorBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+         *所有传感器的数据
+         * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + public Builder addSensor(cmvr.api.DexhandCommand.SensorData value) { + if (sensorBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureSensorIsMutable(); + sensor_.add(value); + onChanged(); + } else { + sensorBuilder_.addMessage(value); + } + return this; + } + /** + *
+         *所有传感器的数据
+         * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + public Builder addSensor( + int index, cmvr.api.DexhandCommand.SensorData value) { + if (sensorBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureSensorIsMutable(); + sensor_.add(index, value); + onChanged(); + } else { + sensorBuilder_.addMessage(index, value); + } + return this; + } + /** + *
+         *所有传感器的数据
+         * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + public Builder addSensor( + cmvr.api.DexhandCommand.SensorData.Builder builderForValue) { + if (sensorBuilder_ == null) { + ensureSensorIsMutable(); + sensor_.add(builderForValue.build()); + onChanged(); + } else { + sensorBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + *
+         *所有传感器的数据
+         * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + public Builder addSensor( + int index, cmvr.api.DexhandCommand.SensorData.Builder builderForValue) { + if (sensorBuilder_ == null) { + ensureSensorIsMutable(); + sensor_.add(index, builderForValue.build()); + onChanged(); + } else { + sensorBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+         *所有传感器的数据
+         * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + public Builder addAllSensor( + java.lang.Iterable values) { + if (sensorBuilder_ == null) { + ensureSensorIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, sensor_); + onChanged(); + } else { + sensorBuilder_.addAllMessages(values); + } + return this; + } + /** + *
+         *所有传感器的数据
+         * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + public Builder clearSensor() { + if (sensorBuilder_ == null) { + sensor_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + sensorBuilder_.clear(); + } + return this; + } + /** + *
+         *所有传感器的数据
+         * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + public Builder removeSensor(int index) { + if (sensorBuilder_ == null) { + ensureSensorIsMutable(); + sensor_.remove(index); + onChanged(); + } else { + sensorBuilder_.remove(index); + } + return this; + } + /** + *
+         *所有传感器的数据
+         * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + public cmvr.api.DexhandCommand.SensorData.Builder getSensorBuilder( + int index) { + return getSensorFieldBuilder().getBuilder(index); + } + /** + *
+         *所有传感器的数据
+         * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + public cmvr.api.DexhandCommand.SensorDataOrBuilder getSensorOrBuilder( + int index) { + if (sensorBuilder_ == null) { + return sensor_.get(index); } else { + return sensorBuilder_.getMessageOrBuilder(index); + } + } + /** + *
+         *所有传感器的数据
+         * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + public java.util.List + getSensorOrBuilderList() { + if (sensorBuilder_ != null) { + return sensorBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(sensor_); + } + } + /** + *
+         *所有传感器的数据
+         * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + public cmvr.api.DexhandCommand.SensorData.Builder addSensorBuilder() { + return getSensorFieldBuilder().addBuilder( + cmvr.api.DexhandCommand.SensorData.getDefaultInstance()); + } + /** + *
+         *所有传感器的数据
+         * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + public cmvr.api.DexhandCommand.SensorData.Builder addSensorBuilder( + int index) { + return getSensorFieldBuilder().addBuilder( + index, cmvr.api.DexhandCommand.SensorData.getDefaultInstance()); + } + /** + *
+         *所有传感器的数据
+         * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + public java.util.List + getSensorBuilderList() { + return getSensorFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilderV3< + cmvr.api.DexhandCommand.SensorData, cmvr.api.DexhandCommand.SensorData.Builder, cmvr.api.DexhandCommand.SensorDataOrBuilder> + getSensorFieldBuilder() { + if (sensorBuilder_ == null) { + sensorBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + cmvr.api.DexhandCommand.SensorData, cmvr.api.DexhandCommand.SensorData.Builder, cmvr.api.DexhandCommand.SensorDataOrBuilder>( + sensor_, + ((bitField0_ & 0x00000001) != 0), + getParentForChildren(), + isClean()); + sensor_ = null; + } + return sensorBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetSensorDataCommand.Feedback) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetSensorDataCommand.Feedback) + private static final cmvr.api.DexhandCommand.GetSensorDataCommand.Feedback DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.DexhandCommand.GetSensorDataCommand.Feedback(); + } + + public static cmvr.api.DexhandCommand.GetSensorDataCommand.Feedback getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Feedback parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.GetSensorDataCommand.Feedback getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.DexhandCommand.GetSensorDataCommand)) { + return super.equals(obj); + } + cmvr.api.DexhandCommand.GetSensorDataCommand other = (cmvr.api.DexhandCommand.GetSensorDataCommand) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.DexhandCommand.GetSensorDataCommand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.GetSensorDataCommand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetSensorDataCommand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.GetSensorDataCommand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetSensorDataCommand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.GetSensorDataCommand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetSensorDataCommand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.GetSensorDataCommand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetSensorDataCommand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.GetSensorDataCommand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetSensorDataCommand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.GetSensorDataCommand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.DexhandCommand.GetSensorDataCommand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetSensorDataCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetSensorDataCommand) + cmvr.api.DexhandCommand.GetSensorDataCommandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetSensorDataCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetSensorDataCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.GetSensorDataCommand.class, cmvr.api.DexhandCommand.GetSensorDataCommand.Builder.class); + } + + // Construct using cmvr.api.DexhandCommand.GetSensorDataCommand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetSensorDataCommand_descriptor; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.GetSensorDataCommand getDefaultInstanceForType() { + return cmvr.api.DexhandCommand.GetSensorDataCommand.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.DexhandCommand.GetSensorDataCommand build() { + cmvr.api.DexhandCommand.GetSensorDataCommand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.GetSensorDataCommand buildPartial() { + cmvr.api.DexhandCommand.GetSensorDataCommand result = new cmvr.api.DexhandCommand.GetSensorDataCommand(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.DexhandCommand.GetSensorDataCommand) { + return mergeFrom((cmvr.api.DexhandCommand.GetSensorDataCommand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.DexhandCommand.GetSensorDataCommand other) { + if (other == cmvr.api.DexhandCommand.GetSensorDataCommand.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetSensorDataCommand) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetSensorDataCommand) + private static final cmvr.api.DexhandCommand.GetSensorDataCommand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.DexhandCommand.GetSensorDataCommand(); + } + + public static cmvr.api.DexhandCommand.GetSensorDataCommand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public GetSensorDataCommand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.GetSensorDataCommand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface GetSensorDataStreamCommandOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetSensorDataStreamCommand) + com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code cmvr.api.GetSensorDataStreamCommand} + */ + public static final class GetSensorDataStreamCommand extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetSensorDataStreamCommand) + GetSensorDataStreamCommandOrBuilder { + private static final long serialVersionUID = 0L; + // Use GetSensorDataStreamCommand.newBuilder() to construct. + private GetSensorDataStreamCommand(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private GetSensorDataStreamCommand() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new GetSensorDataStreamCommand(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetSensorDataStreamCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetSensorDataStreamCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.GetSensorDataStreamCommand.class, cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Builder.class); + } + + public interface RequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetSensorDataStreamCommand.Request) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Request getHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.GetSensorDataStreamCommand.Request} + */ + public static final class Request extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetSensorDataStreamCommand.Request) + RequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use Request.newBuilder() to construct. + private Request(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Request() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Request(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetSensorDataStreamCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetSensorDataStreamCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Request.class, cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Request.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Request header_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Request)) { + return super.equals(obj); + } + cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Request other = (cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Request) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Request parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Request parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Request parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Request parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Request parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Request parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Request parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Request parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Request parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Request parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Request prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetSensorDataStreamCommand.Request} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetSensorDataStreamCommand.Request) + cmvr.api.DexhandCommand.GetSensorDataStreamCommand.RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetSensorDataStreamCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetSensorDataStreamCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Request.class, cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Request.Builder.class); + } + + // Construct using cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Request.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetSensorDataStreamCommand_Request_descriptor; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Request getDefaultInstanceForType() { + return cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Request.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Request build() { + cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Request result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Request buildPartial() { + cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Request result = new cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Request(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Request) { + return mergeFrom((cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Request)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Request other) { + if (other == cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Request.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Request header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Request getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Request.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Request.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.Request.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetSensorDataStreamCommand.Request) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetSensorDataStreamCommand.Request) + private static final cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Request DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Request(); + } + + public static cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Request getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Request getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface FeedbackOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetSensorDataStreamCommand.Feedback) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Feedback getHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder(); + + /** + *
+       *所有传感器的数据
+       * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + java.util.List + getSensorList(); + /** + *
+       *所有传感器的数据
+       * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + cmvr.api.DexhandCommand.SensorData getSensor(int index); + /** + *
+       *所有传感器的数据
+       * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + int getSensorCount(); + /** + *
+       *所有传感器的数据
+       * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + java.util.List + getSensorOrBuilderList(); + /** + *
+       *所有传感器的数据
+       * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + cmvr.api.DexhandCommand.SensorDataOrBuilder getSensorOrBuilder( + int index); + } + /** + * Protobuf type {@code cmvr.api.GetSensorDataStreamCommand.Feedback} + */ + public static final class Feedback extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetSensorDataStreamCommand.Feedback) + FeedbackOrBuilder { + private static final long serialVersionUID = 0L; + // Use Feedback.newBuilder() to construct. + private Feedback(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Feedback() { + sensor_ = java.util.Collections.emptyList(); + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Feedback(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetSensorDataStreamCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetSensorDataStreamCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Feedback.class, cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Feedback.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Feedback header_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + public static final int SENSOR_FIELD_NUMBER = 2; + private java.util.List sensor_; + /** + *
+       *所有传感器的数据
+       * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + @java.lang.Override + public java.util.List getSensorList() { + return sensor_; + } + /** + *
+       *所有传感器的数据
+       * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + @java.lang.Override + public java.util.List + getSensorOrBuilderList() { + return sensor_; + } + /** + *
+       *所有传感器的数据
+       * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + @java.lang.Override + public int getSensorCount() { + return sensor_.size(); + } + /** + *
+       *所有传感器的数据
+       * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + @java.lang.Override + public cmvr.api.DexhandCommand.SensorData getSensor(int index) { + return sensor_.get(index); + } + /** + *
+       *所有传感器的数据
+       * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + @java.lang.Override + public cmvr.api.DexhandCommand.SensorDataOrBuilder getSensorOrBuilder( + int index) { + return sensor_.get(index); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + for (int i = 0; i < sensor_.size(); i++) { + output.writeMessage(2, sensor_.get(i)); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + for (int i = 0; i < sensor_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, sensor_.get(i)); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Feedback)) { + return super.equals(obj); + } + cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Feedback other = (cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Feedback) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getSensorList() + .equals(other.getSensorList())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + if (getSensorCount() > 0) { + hash = (37 * hash) + SENSOR_FIELD_NUMBER; + hash = (53 * hash) + getSensorList().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Feedback parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Feedback parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Feedback parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Feedback parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Feedback parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Feedback parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Feedback parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Feedback parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Feedback parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Feedback parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Feedback prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetSensorDataStreamCommand.Feedback} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetSensorDataStreamCommand.Feedback) + cmvr.api.DexhandCommand.GetSensorDataStreamCommand.FeedbackOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetSensorDataStreamCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetSensorDataStreamCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Feedback.class, cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Feedback.Builder.class); + } + + // Construct using cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Feedback.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + if (sensorBuilder_ == null) { + sensor_ = java.util.Collections.emptyList(); + } else { + sensor_ = null; + sensorBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetSensorDataStreamCommand_Feedback_descriptor; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Feedback getDefaultInstanceForType() { + return cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Feedback.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Feedback build() { + cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Feedback result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Feedback buildPartial() { + cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Feedback result = new cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Feedback(this); + int from_bitField0_ = bitField0_; + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + if (sensorBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0)) { + sensor_ = java.util.Collections.unmodifiableList(sensor_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.sensor_ = sensor_; + } else { + result.sensor_ = sensorBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Feedback) { + return mergeFrom((cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Feedback)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Feedback other) { + if (other == cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Feedback.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + if (sensorBuilder_ == null) { + if (!other.sensor_.isEmpty()) { + if (sensor_.isEmpty()) { + sensor_ = other.sensor_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureSensorIsMutable(); + sensor_.addAll(other.sensor_); + } + onChanged(); + } + } else { + if (!other.sensor_.isEmpty()) { + if (sensorBuilder_.isEmpty()) { + sensorBuilder_.dispose(); + sensorBuilder_ = null; + sensor_ = other.sensor_; + bitField0_ = (bitField0_ & ~0x00000001); + sensorBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? + getSensorFieldBuilder() : null; + } else { + sensorBuilder_.addAllMessages(other.sensor_); + } + } + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + case 18: { + cmvr.api.DexhandCommand.SensorData m = + input.readMessage( + cmvr.api.DexhandCommand.SensorData.parser(), + extensionRegistry); + if (sensorBuilder_ == null) { + ensureSensorIsMutable(); + sensor_.add(m); + } else { + sensorBuilder_.addMessage(m); + } + break; + } // case 18 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private cmvr.api.Common.CommandHeader.Feedback header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Feedback.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Feedback.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.Feedback.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + + private java.util.List sensor_ = + java.util.Collections.emptyList(); + private void ensureSensorIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + sensor_ = new java.util.ArrayList(sensor_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + cmvr.api.DexhandCommand.SensorData, cmvr.api.DexhandCommand.SensorData.Builder, cmvr.api.DexhandCommand.SensorDataOrBuilder> sensorBuilder_; + + /** + *
+         *所有传感器的数据
+         * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + public java.util.List getSensorList() { + if (sensorBuilder_ == null) { + return java.util.Collections.unmodifiableList(sensor_); + } else { + return sensorBuilder_.getMessageList(); + } + } + /** + *
+         *所有传感器的数据
+         * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + public int getSensorCount() { + if (sensorBuilder_ == null) { + return sensor_.size(); + } else { + return sensorBuilder_.getCount(); + } + } + /** + *
+         *所有传感器的数据
+         * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + public cmvr.api.DexhandCommand.SensorData getSensor(int index) { + if (sensorBuilder_ == null) { + return sensor_.get(index); + } else { + return sensorBuilder_.getMessage(index); + } + } + /** + *
+         *所有传感器的数据
+         * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + public Builder setSensor( + int index, cmvr.api.DexhandCommand.SensorData value) { + if (sensorBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureSensorIsMutable(); + sensor_.set(index, value); + onChanged(); + } else { + sensorBuilder_.setMessage(index, value); + } + return this; + } + /** + *
+         *所有传感器的数据
+         * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + public Builder setSensor( + int index, cmvr.api.DexhandCommand.SensorData.Builder builderForValue) { + if (sensorBuilder_ == null) { + ensureSensorIsMutable(); + sensor_.set(index, builderForValue.build()); + onChanged(); + } else { + sensorBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+         *所有传感器的数据
+         * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + public Builder addSensor(cmvr.api.DexhandCommand.SensorData value) { + if (sensorBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureSensorIsMutable(); + sensor_.add(value); + onChanged(); + } else { + sensorBuilder_.addMessage(value); + } + return this; + } + /** + *
+         *所有传感器的数据
+         * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + public Builder addSensor( + int index, cmvr.api.DexhandCommand.SensorData value) { + if (sensorBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureSensorIsMutable(); + sensor_.add(index, value); + onChanged(); + } else { + sensorBuilder_.addMessage(index, value); + } + return this; + } + /** + *
+         *所有传感器的数据
+         * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + public Builder addSensor( + cmvr.api.DexhandCommand.SensorData.Builder builderForValue) { + if (sensorBuilder_ == null) { + ensureSensorIsMutable(); + sensor_.add(builderForValue.build()); + onChanged(); + } else { + sensorBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + *
+         *所有传感器的数据
+         * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + public Builder addSensor( + int index, cmvr.api.DexhandCommand.SensorData.Builder builderForValue) { + if (sensorBuilder_ == null) { + ensureSensorIsMutable(); + sensor_.add(index, builderForValue.build()); + onChanged(); + } else { + sensorBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+         *所有传感器的数据
+         * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + public Builder addAllSensor( + java.lang.Iterable values) { + if (sensorBuilder_ == null) { + ensureSensorIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, sensor_); + onChanged(); + } else { + sensorBuilder_.addAllMessages(values); + } + return this; + } + /** + *
+         *所有传感器的数据
+         * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + public Builder clearSensor() { + if (sensorBuilder_ == null) { + sensor_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + sensorBuilder_.clear(); + } + return this; + } + /** + *
+         *所有传感器的数据
+         * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + public Builder removeSensor(int index) { + if (sensorBuilder_ == null) { + ensureSensorIsMutable(); + sensor_.remove(index); + onChanged(); + } else { + sensorBuilder_.remove(index); + } + return this; + } + /** + *
+         *所有传感器的数据
+         * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + public cmvr.api.DexhandCommand.SensorData.Builder getSensorBuilder( + int index) { + return getSensorFieldBuilder().getBuilder(index); + } + /** + *
+         *所有传感器的数据
+         * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + public cmvr.api.DexhandCommand.SensorDataOrBuilder getSensorOrBuilder( + int index) { + if (sensorBuilder_ == null) { + return sensor_.get(index); } else { + return sensorBuilder_.getMessageOrBuilder(index); + } + } + /** + *
+         *所有传感器的数据
+         * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + public java.util.List + getSensorOrBuilderList() { + if (sensorBuilder_ != null) { + return sensorBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(sensor_); + } + } + /** + *
+         *所有传感器的数据
+         * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + public cmvr.api.DexhandCommand.SensorData.Builder addSensorBuilder() { + return getSensorFieldBuilder().addBuilder( + cmvr.api.DexhandCommand.SensorData.getDefaultInstance()); + } + /** + *
+         *所有传感器的数据
+         * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + public cmvr.api.DexhandCommand.SensorData.Builder addSensorBuilder( + int index) { + return getSensorFieldBuilder().addBuilder( + index, cmvr.api.DexhandCommand.SensorData.getDefaultInstance()); + } + /** + *
+         *所有传感器的数据
+         * 
+ * + * repeated .cmvr.api.SensorData sensor = 2; + */ + public java.util.List + getSensorBuilderList() { + return getSensorFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilderV3< + cmvr.api.DexhandCommand.SensorData, cmvr.api.DexhandCommand.SensorData.Builder, cmvr.api.DexhandCommand.SensorDataOrBuilder> + getSensorFieldBuilder() { + if (sensorBuilder_ == null) { + sensorBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + cmvr.api.DexhandCommand.SensorData, cmvr.api.DexhandCommand.SensorData.Builder, cmvr.api.DexhandCommand.SensorDataOrBuilder>( + sensor_, + ((bitField0_ & 0x00000001) != 0), + getParentForChildren(), + isClean()); + sensor_ = null; + } + return sensorBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetSensorDataStreamCommand.Feedback) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetSensorDataStreamCommand.Feedback) + private static final cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Feedback DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Feedback(); + } + + public static cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Feedback getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Feedback parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Feedback getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.DexhandCommand.GetSensorDataStreamCommand)) { + return super.equals(obj); + } + cmvr.api.DexhandCommand.GetSensorDataStreamCommand other = (cmvr.api.DexhandCommand.GetSensorDataStreamCommand) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.DexhandCommand.GetSensorDataStreamCommand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.GetSensorDataStreamCommand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetSensorDataStreamCommand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.GetSensorDataStreamCommand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetSensorDataStreamCommand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.DexhandCommand.GetSensorDataStreamCommand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetSensorDataStreamCommand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.GetSensorDataStreamCommand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetSensorDataStreamCommand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.GetSensorDataStreamCommand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.DexhandCommand.GetSensorDataStreamCommand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.DexhandCommand.GetSensorDataStreamCommand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.DexhandCommand.GetSensorDataStreamCommand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetSensorDataStreamCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetSensorDataStreamCommand) + cmvr.api.DexhandCommand.GetSensorDataStreamCommandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetSensorDataStreamCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetSensorDataStreamCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.DexhandCommand.GetSensorDataStreamCommand.class, cmvr.api.DexhandCommand.GetSensorDataStreamCommand.Builder.class); + } + + // Construct using cmvr.api.DexhandCommand.GetSensorDataStreamCommand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.DexhandCommand.internal_static_cmvr_api_GetSensorDataStreamCommand_descriptor; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.GetSensorDataStreamCommand getDefaultInstanceForType() { + return cmvr.api.DexhandCommand.GetSensorDataStreamCommand.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.DexhandCommand.GetSensorDataStreamCommand build() { + cmvr.api.DexhandCommand.GetSensorDataStreamCommand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.GetSensorDataStreamCommand buildPartial() { + cmvr.api.DexhandCommand.GetSensorDataStreamCommand result = new cmvr.api.DexhandCommand.GetSensorDataStreamCommand(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.DexhandCommand.GetSensorDataStreamCommand) { + return mergeFrom((cmvr.api.DexhandCommand.GetSensorDataStreamCommand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.DexhandCommand.GetSensorDataStreamCommand other) { + if (other == cmvr.api.DexhandCommand.GetSensorDataStreamCommand.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetSensorDataStreamCommand) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetSensorDataStreamCommand) + private static final cmvr.api.DexhandCommand.GetSensorDataStreamCommand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.DexhandCommand.GetSensorDataStreamCommand(); + } + + public static cmvr.api.DexhandCommand.GetSensorDataStreamCommand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public GetSensorDataStreamCommand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.DexhandCommand.GetSensorDataStreamCommand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_FreedomValue_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_FreedomValue_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_RH56DFTPDexHand_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_RH56DFTPDexHand_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_SensorData_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_SensorData_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_SensorData_RowData_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_SensorData_RowData_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_DexHandState_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_DexHandState_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetDexHandStateCommand_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetDexHandStateCommand_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetDexHandStateCommand_Request_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetDexHandStateCommand_Request_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetDexHandStateCommand_Feedback_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetDexHandStateCommand_Feedback_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_SetDexHandPositionsCommand_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_SetDexHandPositionsCommand_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_SetDexHandPositionsCommand_Request_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_SetDexHandPositionsCommand_Request_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_SetDexHandPositionsCommand_Feedback_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_SetDexHandPositionsCommand_Feedback_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_SetDexHandAnglesCommand_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_SetDexHandAnglesCommand_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_SetDexHandAnglesCommand_Request_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_SetDexHandAnglesCommand_Request_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_SetDexHandAnglesCommand_Feedback_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_SetDexHandAnglesCommand_Feedback_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_SetDexHandForceCommand_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_SetDexHandForceCommand_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_SetDexHandForceCommand_Request_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_SetDexHandForceCommand_Request_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_SetDexHandForceCommand_Feedback_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_SetDexHandForceCommand_Feedback_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_SetDexHandSpeedCommand_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_SetDexHandSpeedCommand_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_SetDexHandSpeedCommand_Request_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_SetDexHandSpeedCommand_Request_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_SetDexHandSpeedCommand_Feedback_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_SetDexHandSpeedCommand_Feedback_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_SetDexHandPresetActCommand_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_SetDexHandPresetActCommand_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_SetDexHandPresetActCommand_Request_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_SetDexHandPresetActCommand_Request_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_SetDexHandPresetActCommand_Feedback_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_SetDexHandPresetActCommand_Feedback_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetSensorDataCommand_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetSensorDataCommand_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetSensorDataCommand_Request_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetSensorDataCommand_Request_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetSensorDataCommand_Feedback_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetSensorDataCommand_Feedback_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetSensorDataStreamCommand_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetSensorDataStreamCommand_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetSensorDataStreamCommand_Request_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetSensorDataStreamCommand_Request_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetSensorDataStreamCommand_Feedback_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetSensorDataStreamCommand_Feedback_fieldAccessorTable; + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n\036cmvr/api/dexhand_command.proto\022\010cmvr.a" + + "pi\032\025cmvr/api/common.proto\")\n\014FreedomValu" + + "e\022\n\n\002id\030\001 \001(\005\022\r\n\005value\030\002 \001(\002\"\254\001\n\017RH56DFT" + + "PDexHand\022\016\n\006dof_id\030\001 \001(\005\022\r\n\005angle\030\002 \001(\005\022" + + "\r\n\005speed\030\003 \001(\005\022\r\n\005force\030\004 \001(\005\022\020\n\010positio" + + "n\030\005 \001(\005\022\017\n\007current\030\006 \001(\005\022\023\n\013temperature\030" + + "\007 \001(\005\022\r\n\005error\030\010 \001(\005\022\025\n\rerror_message\030\t " + + "\003(\t\"\220\003\n\nSensorData\0224\n\013finger_type\030\004 \001(\0162" + + "\037.cmvr.api.SensorData.FingerType\0220\n\tpart" + + "_type\030\005 \001(\0162\035.cmvr.api.SensorData.PartTy" + + "pe\022\023\n\013sensor_name\030\006 \001(\t\022*\n\004data\030\001 \003(\0132\034." + + "cmvr.api.SensorData.RowData\022\014\n\004rows\030\002 \001(" + + "\005\022\014\n\004cols\030\003 \001(\005\032\035\n\007RowData\022\022\n\006values\030\001 \003" + + "(\005B\002\020\001\"T\n\nFingerType\022\t\n\005PINKY\020\000\022\010\n\004RING\020" + + "\001\022\021\n\rMIDDLE_FINGER\020\002\022\t\n\005INDEX\020\003\022\t\n\005THUMB" + + "\020\004\022\010\n\004PALM\020\005\"H\n\010PartType\022\007\n\003TIP\020\000\022\n\n\006FIN" + + "GER\020\001\022\007\n\003PAD\020\002\022\020\n\014THUMB_MIDDLE\020\003\022\014\n\010PALM" + + "_PAD\020\004\"P\n\014DexHandState\022\026\n\016is_initialized" + + "\030\001 \001(\010\022(\n\005hands\030\002 \003(\0132\031.cmvr.api.RH56DFT" + + "PDexHand\"\271\001\n\026GetDexHandStateCommand\032:\n\007R" + + "equest\022/\n\006header\030\001 \001(\0132\037.cmvr.api.Comman" + + "dHeader.Request\032c\n\010Feedback\0220\n\006header\030\001 " + + "\001(\0132 .cmvr.api.CommandHeader.Feedback\022%\n" + + "\005state\030\002 \001(\0132\026.cmvr.api.DexHandState\"\276\001\n" + + "\032SetDexHandPositionsCommand\032b\n\007Request\022/" + + "\n\006header\030\001 \001(\0132\037.cmvr.api.CommandHeader." + + "Request\022&\n\006values\030\002 \003(\0132\026.cmvr.api.Freed" + + "omValue\032<\n\010Feedback\0220\n\006header\030\001 \001(\0132 .cm" + + "vr.api.CommandHeader.Feedback\"\273\001\n\027SetDex" + + "HandAnglesCommand\032b\n\007Request\022/\n\006header\030\001" + + " \001(\0132\037.cmvr.api.CommandHeader.Request\022&\n" + + "\006values\030\002 \003(\0132\026.cmvr.api.FreedomValue\032<\n" + + "\010Feedback\0220\n\006header\030\001 \001(\0132 .cmvr.api.Com" + + "mandHeader.Feedback\"\272\001\n\026SetDexHandForceC" + + "ommand\032b\n\007Request\022/\n\006header\030\001 \001(\0132\037.cmvr" + + ".api.CommandHeader.Request\022&\n\006values\030\002 \003" + + "(\0132\026.cmvr.api.FreedomValue\032<\n\010Feedback\0220" + + "\n\006header\030\001 \001(\0132 .cmvr.api.CommandHeader." + + "Feedback\"\272\001\n\026SetDexHandSpeedCommand\032b\n\007R" + + "equest\022/\n\006header\030\001 \001(\0132\037.cmvr.api.Comman" + + "dHeader.Request\022&\n\006values\030\002 \003(\0132\026.cmvr.a" + + "pi.FreedomValue\032<\n\010Feedback\0220\n\006header\030\001 " + + "\001(\0132 .cmvr.api.CommandHeader.Feedback\"\253\001" + + "\n\032SetDexHandPresetActCommand\032O\n\007Request\022" + + "/\n\006header\030\001 \001(\0132\037.cmvr.api.CommandHeader" + + ".Request\022\023\n\013presetActId\030\002 \001(\005\032<\n\010Feedbac" + + "k\0220\n\006header\030\001 \001(\0132 .cmvr.api.CommandHead" + + "er.Feedback\"\266\001\n\024GetSensorDataCommand\032:\n\007" + + "Request\022/\n\006header\030\001 \001(\0132\037.cmvr.api.Comma" + + "ndHeader.Request\032b\n\010Feedback\0220\n\006header\030\001" + + " \001(\0132 .cmvr.api.CommandHeader.Feedback\022$" + + "\n\006sensor\030\002 \003(\0132\024.cmvr.api.SensorData\"\274\001\n" + + "\032GetSensorDataStreamCommand\032:\n\007Request\022/" + + "\n\006header\030\001 \001(\0132\037.cmvr.api.CommandHeader." + + "Request\032b\n\010Feedback\0220\n\006header\030\001 \001(\0132 .cm" + + "vr.api.CommandHeader.Feedback\022$\n\006sensor\030" + + "\002 \003(\0132\024.cmvr.api.SensorDatab\006proto3" + }; + descriptor = com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + cmvr.api.Common.getDescriptor(), + }); + internal_static_cmvr_api_FreedomValue_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_cmvr_api_FreedomValue_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_FreedomValue_descriptor, + new java.lang.String[] { "Id", "Value", }); + internal_static_cmvr_api_RH56DFTPDexHand_descriptor = + getDescriptor().getMessageTypes().get(1); + internal_static_cmvr_api_RH56DFTPDexHand_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_RH56DFTPDexHand_descriptor, + new java.lang.String[] { "DofId", "Angle", "Speed", "Force", "Position", "Current", "Temperature", "Error", "ErrorMessage", }); + internal_static_cmvr_api_SensorData_descriptor = + getDescriptor().getMessageTypes().get(2); + internal_static_cmvr_api_SensorData_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_SensorData_descriptor, + new java.lang.String[] { "FingerType", "PartType", "SensorName", "Data", "Rows", "Cols", }); + internal_static_cmvr_api_SensorData_RowData_descriptor = + internal_static_cmvr_api_SensorData_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_SensorData_RowData_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_SensorData_RowData_descriptor, + new java.lang.String[] { "Values", }); + internal_static_cmvr_api_DexHandState_descriptor = + getDescriptor().getMessageTypes().get(3); + internal_static_cmvr_api_DexHandState_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_DexHandState_descriptor, + new java.lang.String[] { "IsInitialized", "Hands", }); + internal_static_cmvr_api_GetDexHandStateCommand_descriptor = + getDescriptor().getMessageTypes().get(4); + internal_static_cmvr_api_GetDexHandStateCommand_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetDexHandStateCommand_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_GetDexHandStateCommand_Request_descriptor = + internal_static_cmvr_api_GetDexHandStateCommand_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_GetDexHandStateCommand_Request_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetDexHandStateCommand_Request_descriptor, + new java.lang.String[] { "Header", }); + internal_static_cmvr_api_GetDexHandStateCommand_Feedback_descriptor = + internal_static_cmvr_api_GetDexHandStateCommand_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_GetDexHandStateCommand_Feedback_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetDexHandStateCommand_Feedback_descriptor, + new java.lang.String[] { "Header", "State", }); + internal_static_cmvr_api_SetDexHandPositionsCommand_descriptor = + getDescriptor().getMessageTypes().get(5); + internal_static_cmvr_api_SetDexHandPositionsCommand_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_SetDexHandPositionsCommand_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_SetDexHandPositionsCommand_Request_descriptor = + internal_static_cmvr_api_SetDexHandPositionsCommand_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_SetDexHandPositionsCommand_Request_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_SetDexHandPositionsCommand_Request_descriptor, + new java.lang.String[] { "Header", "Values", }); + internal_static_cmvr_api_SetDexHandPositionsCommand_Feedback_descriptor = + internal_static_cmvr_api_SetDexHandPositionsCommand_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_SetDexHandPositionsCommand_Feedback_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_SetDexHandPositionsCommand_Feedback_descriptor, + new java.lang.String[] { "Header", }); + internal_static_cmvr_api_SetDexHandAnglesCommand_descriptor = + getDescriptor().getMessageTypes().get(6); + internal_static_cmvr_api_SetDexHandAnglesCommand_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_SetDexHandAnglesCommand_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_SetDexHandAnglesCommand_Request_descriptor = + internal_static_cmvr_api_SetDexHandAnglesCommand_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_SetDexHandAnglesCommand_Request_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_SetDexHandAnglesCommand_Request_descriptor, + new java.lang.String[] { "Header", "Values", }); + internal_static_cmvr_api_SetDexHandAnglesCommand_Feedback_descriptor = + internal_static_cmvr_api_SetDexHandAnglesCommand_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_SetDexHandAnglesCommand_Feedback_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_SetDexHandAnglesCommand_Feedback_descriptor, + new java.lang.String[] { "Header", }); + internal_static_cmvr_api_SetDexHandForceCommand_descriptor = + getDescriptor().getMessageTypes().get(7); + internal_static_cmvr_api_SetDexHandForceCommand_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_SetDexHandForceCommand_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_SetDexHandForceCommand_Request_descriptor = + internal_static_cmvr_api_SetDexHandForceCommand_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_SetDexHandForceCommand_Request_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_SetDexHandForceCommand_Request_descriptor, + new java.lang.String[] { "Header", "Values", }); + internal_static_cmvr_api_SetDexHandForceCommand_Feedback_descriptor = + internal_static_cmvr_api_SetDexHandForceCommand_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_SetDexHandForceCommand_Feedback_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_SetDexHandForceCommand_Feedback_descriptor, + new java.lang.String[] { "Header", }); + internal_static_cmvr_api_SetDexHandSpeedCommand_descriptor = + getDescriptor().getMessageTypes().get(8); + internal_static_cmvr_api_SetDexHandSpeedCommand_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_SetDexHandSpeedCommand_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_SetDexHandSpeedCommand_Request_descriptor = + internal_static_cmvr_api_SetDexHandSpeedCommand_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_SetDexHandSpeedCommand_Request_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_SetDexHandSpeedCommand_Request_descriptor, + new java.lang.String[] { "Header", "Values", }); + internal_static_cmvr_api_SetDexHandSpeedCommand_Feedback_descriptor = + internal_static_cmvr_api_SetDexHandSpeedCommand_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_SetDexHandSpeedCommand_Feedback_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_SetDexHandSpeedCommand_Feedback_descriptor, + new java.lang.String[] { "Header", }); + internal_static_cmvr_api_SetDexHandPresetActCommand_descriptor = + getDescriptor().getMessageTypes().get(9); + internal_static_cmvr_api_SetDexHandPresetActCommand_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_SetDexHandPresetActCommand_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_SetDexHandPresetActCommand_Request_descriptor = + internal_static_cmvr_api_SetDexHandPresetActCommand_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_SetDexHandPresetActCommand_Request_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_SetDexHandPresetActCommand_Request_descriptor, + new java.lang.String[] { "Header", "PresetActId", }); + internal_static_cmvr_api_SetDexHandPresetActCommand_Feedback_descriptor = + internal_static_cmvr_api_SetDexHandPresetActCommand_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_SetDexHandPresetActCommand_Feedback_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_SetDexHandPresetActCommand_Feedback_descriptor, + new java.lang.String[] { "Header", }); + internal_static_cmvr_api_GetSensorDataCommand_descriptor = + getDescriptor().getMessageTypes().get(10); + internal_static_cmvr_api_GetSensorDataCommand_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetSensorDataCommand_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_GetSensorDataCommand_Request_descriptor = + internal_static_cmvr_api_GetSensorDataCommand_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_GetSensorDataCommand_Request_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetSensorDataCommand_Request_descriptor, + new java.lang.String[] { "Header", }); + internal_static_cmvr_api_GetSensorDataCommand_Feedback_descriptor = + internal_static_cmvr_api_GetSensorDataCommand_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_GetSensorDataCommand_Feedback_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetSensorDataCommand_Feedback_descriptor, + new java.lang.String[] { "Header", "Sensor", }); + internal_static_cmvr_api_GetSensorDataStreamCommand_descriptor = + getDescriptor().getMessageTypes().get(11); + internal_static_cmvr_api_GetSensorDataStreamCommand_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetSensorDataStreamCommand_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_GetSensorDataStreamCommand_Request_descriptor = + internal_static_cmvr_api_GetSensorDataStreamCommand_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_GetSensorDataStreamCommand_Request_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetSensorDataStreamCommand_Request_descriptor, + new java.lang.String[] { "Header", }); + internal_static_cmvr_api_GetSensorDataStreamCommand_Feedback_descriptor = + internal_static_cmvr_api_GetSensorDataStreamCommand_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_GetSensorDataStreamCommand_Feedback_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetSensorDataStreamCommand_Feedback_descriptor, + new java.lang.String[] { "Header", "Sensor", }); + cmvr.api.Common.getDescriptor(); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/DexhandService.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/DexhandService.java new file mode 100644 index 0000000..7853d86 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/DexhandService.java @@ -0,0 +1,60 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: cmvr/api/dexhand_service.proto + +package cmvr.api; + +public final class DexhandService { + private DexhandService() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistryLite registry) { + } + + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + registerAllExtensions( + (com.google.protobuf.ExtensionRegistryLite) registry); + } + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n\036cmvr/api/dexhand_service.proto\022\010cmvr.a" + + "pi\032\036cmvr/api/dexhand_command.proto2\350\006\n\016D" + + "exHandService\022`\n\tGetStatus\022(.cmvr.api.Ge" + + "tDexHandStateCommand.Request\032).cmvr.api." + + "GetDexHandStateCommand.Feedback\022l\n\rSetDe" + + "xHandPos\022,.cmvr.api.SetDexHandPositionsC" + + "ommand.Request\032-.cmvr.api.SetDexHandPosi" + + "tionsCommand.Feedback\022h\n\017SetDexHandAngle" + + "\022).cmvr.api.SetDexHandAnglesCommand.Requ" + + "est\032*.cmvr.api.SetDexHandAnglesCommand.F" + + "eedback\022f\n\017SetDexHandForce\022(.cmvr.api.Se" + + "tDexHandForceCommand.Request\032).cmvr.api." + + "SetDexHandForceCommand.Feedback\022f\n\017SetDe" + + "xHandSpeed\022(.cmvr.api.SetDexHandSpeedCom" + + "mand.Request\032).cmvr.api.SetDexHandSpeedC" + + "ommand.Feedback\022r\n\023SetDexHandPresetAct\022," + + ".cmvr.api.SetDexHandPresetActCommand.Req" + + "uest\032-.cmvr.api.SetDexHandPresetActComma" + + "nd.Feedback\022`\n\rGetSensorData\022&.cmvr.api." + + "GetSensorDataCommand.Request\032\'.cmvr.api." + + "GetSensorDataCommand.Feedback\022v\n\023GetSens" + + "orDataStream\022,.cmvr.api.GetSensorDataStr" + + "eamCommand.Request\032-.cmvr.api.GetSensorD" + + "ataStreamCommand.Feedback(\0010\001b\006proto3" + }; + descriptor = com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + cmvr.api.DexhandCommand.getDescriptor(), + }); + cmvr.api.DexhandCommand.getDescriptor(); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/Geometry.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/Geometry.java new file mode 100644 index 0000000..ae11d02 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/Geometry.java @@ -0,0 +1,7139 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: cmvr/api/geometry.proto + +package cmvr.api; + +public final class Geometry { + private Geometry() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistryLite registry) { + } + + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + registerAllExtensions( + (com.google.protobuf.ExtensionRegistryLite) registry); + } + public interface Vec2OrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.Vec2) + com.google.protobuf.MessageOrBuilder { + + /** + * double x = 1; + * @return The x. + */ + double getX(); + + /** + * double y = 2; + * @return The y. + */ + double getY(); + } + /** + * Protobuf type {@code cmvr.api.Vec2} + */ + public static final class Vec2 extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.Vec2) + Vec2OrBuilder { + private static final long serialVersionUID = 0L; + // Use Vec2.newBuilder() to construct. + private Vec2(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Vec2() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Vec2(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.Geometry.internal_static_cmvr_api_Vec2_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.Geometry.internal_static_cmvr_api_Vec2_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.Geometry.Vec2.class, cmvr.api.Geometry.Vec2.Builder.class); + } + + public static final int X_FIELD_NUMBER = 1; + private double x_; + /** + * double x = 1; + * @return The x. + */ + @java.lang.Override + public double getX() { + return x_; + } + + public static final int Y_FIELD_NUMBER = 2; + private double y_; + /** + * double y = 2; + * @return The y. + */ + @java.lang.Override + public double getY() { + return y_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (java.lang.Double.doubleToRawLongBits(x_) != 0) { + output.writeDouble(1, x_); + } + if (java.lang.Double.doubleToRawLongBits(y_) != 0) { + output.writeDouble(2, y_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (java.lang.Double.doubleToRawLongBits(x_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeDoubleSize(1, x_); + } + if (java.lang.Double.doubleToRawLongBits(y_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeDoubleSize(2, y_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.Geometry.Vec2)) { + return super.equals(obj); + } + cmvr.api.Geometry.Vec2 other = (cmvr.api.Geometry.Vec2) obj; + + if (java.lang.Double.doubleToLongBits(getX()) + != java.lang.Double.doubleToLongBits( + other.getX())) return false; + if (java.lang.Double.doubleToLongBits(getY()) + != java.lang.Double.doubleToLongBits( + other.getY())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + X_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + java.lang.Double.doubleToLongBits(getX())); + hash = (37 * hash) + Y_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + java.lang.Double.doubleToLongBits(getY())); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.Geometry.Vec2 parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.Geometry.Vec2 parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.Geometry.Vec2 parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.Geometry.Vec2 parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.Geometry.Vec2 parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.Geometry.Vec2 parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.Geometry.Vec2 parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.Geometry.Vec2 parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.Geometry.Vec2 parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.Geometry.Vec2 parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.Geometry.Vec2 parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.Geometry.Vec2 parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.Geometry.Vec2 prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.Vec2} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.Vec2) + cmvr.api.Geometry.Vec2OrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.Geometry.internal_static_cmvr_api_Vec2_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.Geometry.internal_static_cmvr_api_Vec2_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.Geometry.Vec2.class, cmvr.api.Geometry.Vec2.Builder.class); + } + + // Construct using cmvr.api.Geometry.Vec2.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + x_ = 0D; + + y_ = 0D; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.Geometry.internal_static_cmvr_api_Vec2_descriptor; + } + + @java.lang.Override + public cmvr.api.Geometry.Vec2 getDefaultInstanceForType() { + return cmvr.api.Geometry.Vec2.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.Geometry.Vec2 build() { + cmvr.api.Geometry.Vec2 result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.Geometry.Vec2 buildPartial() { + cmvr.api.Geometry.Vec2 result = new cmvr.api.Geometry.Vec2(this); + result.x_ = x_; + result.y_ = y_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.Geometry.Vec2) { + return mergeFrom((cmvr.api.Geometry.Vec2)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.Geometry.Vec2 other) { + if (other == cmvr.api.Geometry.Vec2.getDefaultInstance()) return this; + if (other.getX() != 0D) { + setX(other.getX()); + } + if (other.getY() != 0D) { + setY(other.getY()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 9: { + x_ = input.readDouble(); + + break; + } // case 9 + case 17: { + y_ = input.readDouble(); + + break; + } // case 17 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private double x_ ; + /** + * double x = 1; + * @return The x. + */ + @java.lang.Override + public double getX() { + return x_; + } + /** + * double x = 1; + * @param value The x to set. + * @return This builder for chaining. + */ + public Builder setX(double value) { + + x_ = value; + onChanged(); + return this; + } + /** + * double x = 1; + * @return This builder for chaining. + */ + public Builder clearX() { + + x_ = 0D; + onChanged(); + return this; + } + + private double y_ ; + /** + * double y = 2; + * @return The y. + */ + @java.lang.Override + public double getY() { + return y_; + } + /** + * double y = 2; + * @param value The y to set. + * @return This builder for chaining. + */ + public Builder setY(double value) { + + y_ = value; + onChanged(); + return this; + } + /** + * double y = 2; + * @return This builder for chaining. + */ + public Builder clearY() { + + y_ = 0D; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.Vec2) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.Vec2) + private static final cmvr.api.Geometry.Vec2 DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.Geometry.Vec2(); + } + + public static cmvr.api.Geometry.Vec2 getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Vec2 parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.Geometry.Vec2 getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface Vec3OrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.Vec3) + com.google.protobuf.MessageOrBuilder { + + /** + * double x = 1; + * @return The x. + */ + double getX(); + + /** + * double y = 2; + * @return The y. + */ + double getY(); + + /** + * double z = 3; + * @return The z. + */ + double getZ(); + } + /** + * Protobuf type {@code cmvr.api.Vec3} + */ + public static final class Vec3 extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.Vec3) + Vec3OrBuilder { + private static final long serialVersionUID = 0L; + // Use Vec3.newBuilder() to construct. + private Vec3(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Vec3() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Vec3(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.Geometry.internal_static_cmvr_api_Vec3_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.Geometry.internal_static_cmvr_api_Vec3_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.Geometry.Vec3.class, cmvr.api.Geometry.Vec3.Builder.class); + } + + public static final int X_FIELD_NUMBER = 1; + private double x_; + /** + * double x = 1; + * @return The x. + */ + @java.lang.Override + public double getX() { + return x_; + } + + public static final int Y_FIELD_NUMBER = 2; + private double y_; + /** + * double y = 2; + * @return The y. + */ + @java.lang.Override + public double getY() { + return y_; + } + + public static final int Z_FIELD_NUMBER = 3; + private double z_; + /** + * double z = 3; + * @return The z. + */ + @java.lang.Override + public double getZ() { + return z_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (java.lang.Double.doubleToRawLongBits(x_) != 0) { + output.writeDouble(1, x_); + } + if (java.lang.Double.doubleToRawLongBits(y_) != 0) { + output.writeDouble(2, y_); + } + if (java.lang.Double.doubleToRawLongBits(z_) != 0) { + output.writeDouble(3, z_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (java.lang.Double.doubleToRawLongBits(x_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeDoubleSize(1, x_); + } + if (java.lang.Double.doubleToRawLongBits(y_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeDoubleSize(2, y_); + } + if (java.lang.Double.doubleToRawLongBits(z_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeDoubleSize(3, z_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.Geometry.Vec3)) { + return super.equals(obj); + } + cmvr.api.Geometry.Vec3 other = (cmvr.api.Geometry.Vec3) obj; + + if (java.lang.Double.doubleToLongBits(getX()) + != java.lang.Double.doubleToLongBits( + other.getX())) return false; + if (java.lang.Double.doubleToLongBits(getY()) + != java.lang.Double.doubleToLongBits( + other.getY())) return false; + if (java.lang.Double.doubleToLongBits(getZ()) + != java.lang.Double.doubleToLongBits( + other.getZ())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + X_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + java.lang.Double.doubleToLongBits(getX())); + hash = (37 * hash) + Y_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + java.lang.Double.doubleToLongBits(getY())); + hash = (37 * hash) + Z_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + java.lang.Double.doubleToLongBits(getZ())); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.Geometry.Vec3 parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.Geometry.Vec3 parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.Geometry.Vec3 parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.Geometry.Vec3 parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.Geometry.Vec3 parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.Geometry.Vec3 parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.Geometry.Vec3 parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.Geometry.Vec3 parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.Geometry.Vec3 parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.Geometry.Vec3 parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.Geometry.Vec3 parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.Geometry.Vec3 parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.Geometry.Vec3 prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.Vec3} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.Vec3) + cmvr.api.Geometry.Vec3OrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.Geometry.internal_static_cmvr_api_Vec3_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.Geometry.internal_static_cmvr_api_Vec3_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.Geometry.Vec3.class, cmvr.api.Geometry.Vec3.Builder.class); + } + + // Construct using cmvr.api.Geometry.Vec3.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + x_ = 0D; + + y_ = 0D; + + z_ = 0D; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.Geometry.internal_static_cmvr_api_Vec3_descriptor; + } + + @java.lang.Override + public cmvr.api.Geometry.Vec3 getDefaultInstanceForType() { + return cmvr.api.Geometry.Vec3.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.Geometry.Vec3 build() { + cmvr.api.Geometry.Vec3 result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.Geometry.Vec3 buildPartial() { + cmvr.api.Geometry.Vec3 result = new cmvr.api.Geometry.Vec3(this); + result.x_ = x_; + result.y_ = y_; + result.z_ = z_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.Geometry.Vec3) { + return mergeFrom((cmvr.api.Geometry.Vec3)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.Geometry.Vec3 other) { + if (other == cmvr.api.Geometry.Vec3.getDefaultInstance()) return this; + if (other.getX() != 0D) { + setX(other.getX()); + } + if (other.getY() != 0D) { + setY(other.getY()); + } + if (other.getZ() != 0D) { + setZ(other.getZ()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 9: { + x_ = input.readDouble(); + + break; + } // case 9 + case 17: { + y_ = input.readDouble(); + + break; + } // case 17 + case 25: { + z_ = input.readDouble(); + + break; + } // case 25 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private double x_ ; + /** + * double x = 1; + * @return The x. + */ + @java.lang.Override + public double getX() { + return x_; + } + /** + * double x = 1; + * @param value The x to set. + * @return This builder for chaining. + */ + public Builder setX(double value) { + + x_ = value; + onChanged(); + return this; + } + /** + * double x = 1; + * @return This builder for chaining. + */ + public Builder clearX() { + + x_ = 0D; + onChanged(); + return this; + } + + private double y_ ; + /** + * double y = 2; + * @return The y. + */ + @java.lang.Override + public double getY() { + return y_; + } + /** + * double y = 2; + * @param value The y to set. + * @return This builder for chaining. + */ + public Builder setY(double value) { + + y_ = value; + onChanged(); + return this; + } + /** + * double y = 2; + * @return This builder for chaining. + */ + public Builder clearY() { + + y_ = 0D; + onChanged(); + return this; + } + + private double z_ ; + /** + * double z = 3; + * @return The z. + */ + @java.lang.Override + public double getZ() { + return z_; + } + /** + * double z = 3; + * @param value The z to set. + * @return This builder for chaining. + */ + public Builder setZ(double value) { + + z_ = value; + onChanged(); + return this; + } + /** + * double z = 3; + * @return This builder for chaining. + */ + public Builder clearZ() { + + z_ = 0D; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.Vec3) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.Vec3) + private static final cmvr.api.Geometry.Vec3 DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.Geometry.Vec3(); + } + + public static cmvr.api.Geometry.Vec3 getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Vec3 parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.Geometry.Vec3 getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface SE2PoseOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.SE2Pose) + com.google.protobuf.MessageOrBuilder { + + /** + *
+     * (m)
+     * 
+ * + * .cmvr.api.Vec2 position = 1; + * @return Whether the position field is set. + */ + boolean hasPosition(); + /** + *
+     * (m)
+     * 
+ * + * .cmvr.api.Vec2 position = 1; + * @return The position. + */ + cmvr.api.Geometry.Vec2 getPosition(); + /** + *
+     * (m)
+     * 
+ * + * .cmvr.api.Vec2 position = 1; + */ + cmvr.api.Geometry.Vec2OrBuilder getPositionOrBuilder(); + + /** + *
+     * (rad)
+     * 
+ * + * double angle = 2; + * @return The angle. + */ + double getAngle(); + } + /** + * Protobuf type {@code cmvr.api.SE2Pose} + */ + public static final class SE2Pose extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.SE2Pose) + SE2PoseOrBuilder { + private static final long serialVersionUID = 0L; + // Use SE2Pose.newBuilder() to construct. + private SE2Pose(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private SE2Pose() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new SE2Pose(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.Geometry.internal_static_cmvr_api_SE2Pose_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.Geometry.internal_static_cmvr_api_SE2Pose_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.Geometry.SE2Pose.class, cmvr.api.Geometry.SE2Pose.Builder.class); + } + + public static final int POSITION_FIELD_NUMBER = 1; + private cmvr.api.Geometry.Vec2 position_; + /** + *
+     * (m)
+     * 
+ * + * .cmvr.api.Vec2 position = 1; + * @return Whether the position field is set. + */ + @java.lang.Override + public boolean hasPosition() { + return position_ != null; + } + /** + *
+     * (m)
+     * 
+ * + * .cmvr.api.Vec2 position = 1; + * @return The position. + */ + @java.lang.Override + public cmvr.api.Geometry.Vec2 getPosition() { + return position_ == null ? cmvr.api.Geometry.Vec2.getDefaultInstance() : position_; + } + /** + *
+     * (m)
+     * 
+ * + * .cmvr.api.Vec2 position = 1; + */ + @java.lang.Override + public cmvr.api.Geometry.Vec2OrBuilder getPositionOrBuilder() { + return getPosition(); + } + + public static final int ANGLE_FIELD_NUMBER = 2; + private double angle_; + /** + *
+     * (rad)
+     * 
+ * + * double angle = 2; + * @return The angle. + */ + @java.lang.Override + public double getAngle() { + return angle_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (position_ != null) { + output.writeMessage(1, getPosition()); + } + if (java.lang.Double.doubleToRawLongBits(angle_) != 0) { + output.writeDouble(2, angle_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (position_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getPosition()); + } + if (java.lang.Double.doubleToRawLongBits(angle_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeDoubleSize(2, angle_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.Geometry.SE2Pose)) { + return super.equals(obj); + } + cmvr.api.Geometry.SE2Pose other = (cmvr.api.Geometry.SE2Pose) obj; + + if (hasPosition() != other.hasPosition()) return false; + if (hasPosition()) { + if (!getPosition() + .equals(other.getPosition())) return false; + } + if (java.lang.Double.doubleToLongBits(getAngle()) + != java.lang.Double.doubleToLongBits( + other.getAngle())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasPosition()) { + hash = (37 * hash) + POSITION_FIELD_NUMBER; + hash = (53 * hash) + getPosition().hashCode(); + } + hash = (37 * hash) + ANGLE_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + java.lang.Double.doubleToLongBits(getAngle())); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.Geometry.SE2Pose parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.Geometry.SE2Pose parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.Geometry.SE2Pose parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.Geometry.SE2Pose parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.Geometry.SE2Pose parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.Geometry.SE2Pose parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.Geometry.SE2Pose parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.Geometry.SE2Pose parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.Geometry.SE2Pose parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.Geometry.SE2Pose parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.Geometry.SE2Pose parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.Geometry.SE2Pose parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.Geometry.SE2Pose prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.SE2Pose} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.SE2Pose) + cmvr.api.Geometry.SE2PoseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.Geometry.internal_static_cmvr_api_SE2Pose_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.Geometry.internal_static_cmvr_api_SE2Pose_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.Geometry.SE2Pose.class, cmvr.api.Geometry.SE2Pose.Builder.class); + } + + // Construct using cmvr.api.Geometry.SE2Pose.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (positionBuilder_ == null) { + position_ = null; + } else { + position_ = null; + positionBuilder_ = null; + } + angle_ = 0D; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.Geometry.internal_static_cmvr_api_SE2Pose_descriptor; + } + + @java.lang.Override + public cmvr.api.Geometry.SE2Pose getDefaultInstanceForType() { + return cmvr.api.Geometry.SE2Pose.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.Geometry.SE2Pose build() { + cmvr.api.Geometry.SE2Pose result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.Geometry.SE2Pose buildPartial() { + cmvr.api.Geometry.SE2Pose result = new cmvr.api.Geometry.SE2Pose(this); + if (positionBuilder_ == null) { + result.position_ = position_; + } else { + result.position_ = positionBuilder_.build(); + } + result.angle_ = angle_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.Geometry.SE2Pose) { + return mergeFrom((cmvr.api.Geometry.SE2Pose)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.Geometry.SE2Pose other) { + if (other == cmvr.api.Geometry.SE2Pose.getDefaultInstance()) return this; + if (other.hasPosition()) { + mergePosition(other.getPosition()); + } + if (other.getAngle() != 0D) { + setAngle(other.getAngle()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getPositionFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + case 17: { + angle_ = input.readDouble(); + + break; + } // case 17 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Geometry.Vec2 position_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Geometry.Vec2, cmvr.api.Geometry.Vec2.Builder, cmvr.api.Geometry.Vec2OrBuilder> positionBuilder_; + /** + *
+       * (m)
+       * 
+ * + * .cmvr.api.Vec2 position = 1; + * @return Whether the position field is set. + */ + public boolean hasPosition() { + return positionBuilder_ != null || position_ != null; + } + /** + *
+       * (m)
+       * 
+ * + * .cmvr.api.Vec2 position = 1; + * @return The position. + */ + public cmvr.api.Geometry.Vec2 getPosition() { + if (positionBuilder_ == null) { + return position_ == null ? cmvr.api.Geometry.Vec2.getDefaultInstance() : position_; + } else { + return positionBuilder_.getMessage(); + } + } + /** + *
+       * (m)
+       * 
+ * + * .cmvr.api.Vec2 position = 1; + */ + public Builder setPosition(cmvr.api.Geometry.Vec2 value) { + if (positionBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + position_ = value; + onChanged(); + } else { + positionBuilder_.setMessage(value); + } + + return this; + } + /** + *
+       * (m)
+       * 
+ * + * .cmvr.api.Vec2 position = 1; + */ + public Builder setPosition( + cmvr.api.Geometry.Vec2.Builder builderForValue) { + if (positionBuilder_ == null) { + position_ = builderForValue.build(); + onChanged(); + } else { + positionBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+       * (m)
+       * 
+ * + * .cmvr.api.Vec2 position = 1; + */ + public Builder mergePosition(cmvr.api.Geometry.Vec2 value) { + if (positionBuilder_ == null) { + if (position_ != null) { + position_ = + cmvr.api.Geometry.Vec2.newBuilder(position_).mergeFrom(value).buildPartial(); + } else { + position_ = value; + } + onChanged(); + } else { + positionBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+       * (m)
+       * 
+ * + * .cmvr.api.Vec2 position = 1; + */ + public Builder clearPosition() { + if (positionBuilder_ == null) { + position_ = null; + onChanged(); + } else { + position_ = null; + positionBuilder_ = null; + } + + return this; + } + /** + *
+       * (m)
+       * 
+ * + * .cmvr.api.Vec2 position = 1; + */ + public cmvr.api.Geometry.Vec2.Builder getPositionBuilder() { + + onChanged(); + return getPositionFieldBuilder().getBuilder(); + } + /** + *
+       * (m)
+       * 
+ * + * .cmvr.api.Vec2 position = 1; + */ + public cmvr.api.Geometry.Vec2OrBuilder getPositionOrBuilder() { + if (positionBuilder_ != null) { + return positionBuilder_.getMessageOrBuilder(); + } else { + return position_ == null ? + cmvr.api.Geometry.Vec2.getDefaultInstance() : position_; + } + } + /** + *
+       * (m)
+       * 
+ * + * .cmvr.api.Vec2 position = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Geometry.Vec2, cmvr.api.Geometry.Vec2.Builder, cmvr.api.Geometry.Vec2OrBuilder> + getPositionFieldBuilder() { + if (positionBuilder_ == null) { + positionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Geometry.Vec2, cmvr.api.Geometry.Vec2.Builder, cmvr.api.Geometry.Vec2OrBuilder>( + getPosition(), + getParentForChildren(), + isClean()); + position_ = null; + } + return positionBuilder_; + } + + private double angle_ ; + /** + *
+       * (rad)
+       * 
+ * + * double angle = 2; + * @return The angle. + */ + @java.lang.Override + public double getAngle() { + return angle_; + } + /** + *
+       * (rad)
+       * 
+ * + * double angle = 2; + * @param value The angle to set. + * @return This builder for chaining. + */ + public Builder setAngle(double value) { + + angle_ = value; + onChanged(); + return this; + } + /** + *
+       * (rad)
+       * 
+ * + * double angle = 2; + * @return This builder for chaining. + */ + public Builder clearAngle() { + + angle_ = 0D; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.SE2Pose) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.SE2Pose) + private static final cmvr.api.Geometry.SE2Pose DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.Geometry.SE2Pose(); + } + + public static cmvr.api.Geometry.SE2Pose getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public SE2Pose parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.Geometry.SE2Pose getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface SE2VelocityOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.SE2Velocity) + com.google.protobuf.MessageOrBuilder { + + /** + *
+     * (m/s)
+     * 
+ * + * .cmvr.api.Vec2 linear = 1; + * @return Whether the linear field is set. + */ + boolean hasLinear(); + /** + *
+     * (m/s)
+     * 
+ * + * .cmvr.api.Vec2 linear = 1; + * @return The linear. + */ + cmvr.api.Geometry.Vec2 getLinear(); + /** + *
+     * (m/s)
+     * 
+ * + * .cmvr.api.Vec2 linear = 1; + */ + cmvr.api.Geometry.Vec2OrBuilder getLinearOrBuilder(); + + /** + *
+     * (rad/s)
+     * 
+ * + * double angular = 2; + * @return The angular. + */ + double getAngular(); + } + /** + * Protobuf type {@code cmvr.api.SE2Velocity} + */ + public static final class SE2Velocity extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.SE2Velocity) + SE2VelocityOrBuilder { + private static final long serialVersionUID = 0L; + // Use SE2Velocity.newBuilder() to construct. + private SE2Velocity(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private SE2Velocity() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new SE2Velocity(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.Geometry.internal_static_cmvr_api_SE2Velocity_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.Geometry.internal_static_cmvr_api_SE2Velocity_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.Geometry.SE2Velocity.class, cmvr.api.Geometry.SE2Velocity.Builder.class); + } + + public static final int LINEAR_FIELD_NUMBER = 1; + private cmvr.api.Geometry.Vec2 linear_; + /** + *
+     * (m/s)
+     * 
+ * + * .cmvr.api.Vec2 linear = 1; + * @return Whether the linear field is set. + */ + @java.lang.Override + public boolean hasLinear() { + return linear_ != null; + } + /** + *
+     * (m/s)
+     * 
+ * + * .cmvr.api.Vec2 linear = 1; + * @return The linear. + */ + @java.lang.Override + public cmvr.api.Geometry.Vec2 getLinear() { + return linear_ == null ? cmvr.api.Geometry.Vec2.getDefaultInstance() : linear_; + } + /** + *
+     * (m/s)
+     * 
+ * + * .cmvr.api.Vec2 linear = 1; + */ + @java.lang.Override + public cmvr.api.Geometry.Vec2OrBuilder getLinearOrBuilder() { + return getLinear(); + } + + public static final int ANGULAR_FIELD_NUMBER = 2; + private double angular_; + /** + *
+     * (rad/s)
+     * 
+ * + * double angular = 2; + * @return The angular. + */ + @java.lang.Override + public double getAngular() { + return angular_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (linear_ != null) { + output.writeMessage(1, getLinear()); + } + if (java.lang.Double.doubleToRawLongBits(angular_) != 0) { + output.writeDouble(2, angular_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (linear_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getLinear()); + } + if (java.lang.Double.doubleToRawLongBits(angular_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeDoubleSize(2, angular_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.Geometry.SE2Velocity)) { + return super.equals(obj); + } + cmvr.api.Geometry.SE2Velocity other = (cmvr.api.Geometry.SE2Velocity) obj; + + if (hasLinear() != other.hasLinear()) return false; + if (hasLinear()) { + if (!getLinear() + .equals(other.getLinear())) return false; + } + if (java.lang.Double.doubleToLongBits(getAngular()) + != java.lang.Double.doubleToLongBits( + other.getAngular())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasLinear()) { + hash = (37 * hash) + LINEAR_FIELD_NUMBER; + hash = (53 * hash) + getLinear().hashCode(); + } + hash = (37 * hash) + ANGULAR_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + java.lang.Double.doubleToLongBits(getAngular())); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.Geometry.SE2Velocity parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.Geometry.SE2Velocity parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.Geometry.SE2Velocity parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.Geometry.SE2Velocity parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.Geometry.SE2Velocity parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.Geometry.SE2Velocity parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.Geometry.SE2Velocity parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.Geometry.SE2Velocity parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.Geometry.SE2Velocity parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.Geometry.SE2Velocity parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.Geometry.SE2Velocity parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.Geometry.SE2Velocity parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.Geometry.SE2Velocity prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.SE2Velocity} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.SE2Velocity) + cmvr.api.Geometry.SE2VelocityOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.Geometry.internal_static_cmvr_api_SE2Velocity_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.Geometry.internal_static_cmvr_api_SE2Velocity_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.Geometry.SE2Velocity.class, cmvr.api.Geometry.SE2Velocity.Builder.class); + } + + // Construct using cmvr.api.Geometry.SE2Velocity.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (linearBuilder_ == null) { + linear_ = null; + } else { + linear_ = null; + linearBuilder_ = null; + } + angular_ = 0D; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.Geometry.internal_static_cmvr_api_SE2Velocity_descriptor; + } + + @java.lang.Override + public cmvr.api.Geometry.SE2Velocity getDefaultInstanceForType() { + return cmvr.api.Geometry.SE2Velocity.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.Geometry.SE2Velocity build() { + cmvr.api.Geometry.SE2Velocity result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.Geometry.SE2Velocity buildPartial() { + cmvr.api.Geometry.SE2Velocity result = new cmvr.api.Geometry.SE2Velocity(this); + if (linearBuilder_ == null) { + result.linear_ = linear_; + } else { + result.linear_ = linearBuilder_.build(); + } + result.angular_ = angular_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.Geometry.SE2Velocity) { + return mergeFrom((cmvr.api.Geometry.SE2Velocity)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.Geometry.SE2Velocity other) { + if (other == cmvr.api.Geometry.SE2Velocity.getDefaultInstance()) return this; + if (other.hasLinear()) { + mergeLinear(other.getLinear()); + } + if (other.getAngular() != 0D) { + setAngular(other.getAngular()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getLinearFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + case 17: { + angular_ = input.readDouble(); + + break; + } // case 17 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Geometry.Vec2 linear_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Geometry.Vec2, cmvr.api.Geometry.Vec2.Builder, cmvr.api.Geometry.Vec2OrBuilder> linearBuilder_; + /** + *
+       * (m/s)
+       * 
+ * + * .cmvr.api.Vec2 linear = 1; + * @return Whether the linear field is set. + */ + public boolean hasLinear() { + return linearBuilder_ != null || linear_ != null; + } + /** + *
+       * (m/s)
+       * 
+ * + * .cmvr.api.Vec2 linear = 1; + * @return The linear. + */ + public cmvr.api.Geometry.Vec2 getLinear() { + if (linearBuilder_ == null) { + return linear_ == null ? cmvr.api.Geometry.Vec2.getDefaultInstance() : linear_; + } else { + return linearBuilder_.getMessage(); + } + } + /** + *
+       * (m/s)
+       * 
+ * + * .cmvr.api.Vec2 linear = 1; + */ + public Builder setLinear(cmvr.api.Geometry.Vec2 value) { + if (linearBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + linear_ = value; + onChanged(); + } else { + linearBuilder_.setMessage(value); + } + + return this; + } + /** + *
+       * (m/s)
+       * 
+ * + * .cmvr.api.Vec2 linear = 1; + */ + public Builder setLinear( + cmvr.api.Geometry.Vec2.Builder builderForValue) { + if (linearBuilder_ == null) { + linear_ = builderForValue.build(); + onChanged(); + } else { + linearBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+       * (m/s)
+       * 
+ * + * .cmvr.api.Vec2 linear = 1; + */ + public Builder mergeLinear(cmvr.api.Geometry.Vec2 value) { + if (linearBuilder_ == null) { + if (linear_ != null) { + linear_ = + cmvr.api.Geometry.Vec2.newBuilder(linear_).mergeFrom(value).buildPartial(); + } else { + linear_ = value; + } + onChanged(); + } else { + linearBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+       * (m/s)
+       * 
+ * + * .cmvr.api.Vec2 linear = 1; + */ + public Builder clearLinear() { + if (linearBuilder_ == null) { + linear_ = null; + onChanged(); + } else { + linear_ = null; + linearBuilder_ = null; + } + + return this; + } + /** + *
+       * (m/s)
+       * 
+ * + * .cmvr.api.Vec2 linear = 1; + */ + public cmvr.api.Geometry.Vec2.Builder getLinearBuilder() { + + onChanged(); + return getLinearFieldBuilder().getBuilder(); + } + /** + *
+       * (m/s)
+       * 
+ * + * .cmvr.api.Vec2 linear = 1; + */ + public cmvr.api.Geometry.Vec2OrBuilder getLinearOrBuilder() { + if (linearBuilder_ != null) { + return linearBuilder_.getMessageOrBuilder(); + } else { + return linear_ == null ? + cmvr.api.Geometry.Vec2.getDefaultInstance() : linear_; + } + } + /** + *
+       * (m/s)
+       * 
+ * + * .cmvr.api.Vec2 linear = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Geometry.Vec2, cmvr.api.Geometry.Vec2.Builder, cmvr.api.Geometry.Vec2OrBuilder> + getLinearFieldBuilder() { + if (linearBuilder_ == null) { + linearBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Geometry.Vec2, cmvr.api.Geometry.Vec2.Builder, cmvr.api.Geometry.Vec2OrBuilder>( + getLinear(), + getParentForChildren(), + isClean()); + linear_ = null; + } + return linearBuilder_; + } + + private double angular_ ; + /** + *
+       * (rad/s)
+       * 
+ * + * double angular = 2; + * @return The angular. + */ + @java.lang.Override + public double getAngular() { + return angular_; + } + /** + *
+       * (rad/s)
+       * 
+ * + * double angular = 2; + * @param value The angular to set. + * @return This builder for chaining. + */ + public Builder setAngular(double value) { + + angular_ = value; + onChanged(); + return this; + } + /** + *
+       * (rad/s)
+       * 
+ * + * double angular = 2; + * @return This builder for chaining. + */ + public Builder clearAngular() { + + angular_ = 0D; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.SE2Velocity) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.SE2Velocity) + private static final cmvr.api.Geometry.SE2Velocity DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.Geometry.SE2Velocity(); + } + + public static cmvr.api.Geometry.SE2Velocity getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public SE2Velocity parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.Geometry.SE2Velocity getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface QuaternionOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.Quaternion) + com.google.protobuf.MessageOrBuilder { + + /** + * double x = 1; + * @return The x. + */ + double getX(); + + /** + * double y = 2; + * @return The y. + */ + double getY(); + + /** + * double z = 3; + * @return The z. + */ + double getZ(); + + /** + * double w = 4; + * @return The w. + */ + double getW(); + } + /** + * Protobuf type {@code cmvr.api.Quaternion} + */ + public static final class Quaternion extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.Quaternion) + QuaternionOrBuilder { + private static final long serialVersionUID = 0L; + // Use Quaternion.newBuilder() to construct. + private Quaternion(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Quaternion() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Quaternion(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.Geometry.internal_static_cmvr_api_Quaternion_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.Geometry.internal_static_cmvr_api_Quaternion_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.Geometry.Quaternion.class, cmvr.api.Geometry.Quaternion.Builder.class); + } + + public static final int X_FIELD_NUMBER = 1; + private double x_; + /** + * double x = 1; + * @return The x. + */ + @java.lang.Override + public double getX() { + return x_; + } + + public static final int Y_FIELD_NUMBER = 2; + private double y_; + /** + * double y = 2; + * @return The y. + */ + @java.lang.Override + public double getY() { + return y_; + } + + public static final int Z_FIELD_NUMBER = 3; + private double z_; + /** + * double z = 3; + * @return The z. + */ + @java.lang.Override + public double getZ() { + return z_; + } + + public static final int W_FIELD_NUMBER = 4; + private double w_; + /** + * double w = 4; + * @return The w. + */ + @java.lang.Override + public double getW() { + return w_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (java.lang.Double.doubleToRawLongBits(x_) != 0) { + output.writeDouble(1, x_); + } + if (java.lang.Double.doubleToRawLongBits(y_) != 0) { + output.writeDouble(2, y_); + } + if (java.lang.Double.doubleToRawLongBits(z_) != 0) { + output.writeDouble(3, z_); + } + if (java.lang.Double.doubleToRawLongBits(w_) != 0) { + output.writeDouble(4, w_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (java.lang.Double.doubleToRawLongBits(x_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeDoubleSize(1, x_); + } + if (java.lang.Double.doubleToRawLongBits(y_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeDoubleSize(2, y_); + } + if (java.lang.Double.doubleToRawLongBits(z_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeDoubleSize(3, z_); + } + if (java.lang.Double.doubleToRawLongBits(w_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeDoubleSize(4, w_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.Geometry.Quaternion)) { + return super.equals(obj); + } + cmvr.api.Geometry.Quaternion other = (cmvr.api.Geometry.Quaternion) obj; + + if (java.lang.Double.doubleToLongBits(getX()) + != java.lang.Double.doubleToLongBits( + other.getX())) return false; + if (java.lang.Double.doubleToLongBits(getY()) + != java.lang.Double.doubleToLongBits( + other.getY())) return false; + if (java.lang.Double.doubleToLongBits(getZ()) + != java.lang.Double.doubleToLongBits( + other.getZ())) return false; + if (java.lang.Double.doubleToLongBits(getW()) + != java.lang.Double.doubleToLongBits( + other.getW())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + X_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + java.lang.Double.doubleToLongBits(getX())); + hash = (37 * hash) + Y_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + java.lang.Double.doubleToLongBits(getY())); + hash = (37 * hash) + Z_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + java.lang.Double.doubleToLongBits(getZ())); + hash = (37 * hash) + W_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + java.lang.Double.doubleToLongBits(getW())); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.Geometry.Quaternion parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.Geometry.Quaternion parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.Geometry.Quaternion parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.Geometry.Quaternion parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.Geometry.Quaternion parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.Geometry.Quaternion parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.Geometry.Quaternion parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.Geometry.Quaternion parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.Geometry.Quaternion parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.Geometry.Quaternion parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.Geometry.Quaternion parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.Geometry.Quaternion parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.Geometry.Quaternion prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.Quaternion} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.Quaternion) + cmvr.api.Geometry.QuaternionOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.Geometry.internal_static_cmvr_api_Quaternion_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.Geometry.internal_static_cmvr_api_Quaternion_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.Geometry.Quaternion.class, cmvr.api.Geometry.Quaternion.Builder.class); + } + + // Construct using cmvr.api.Geometry.Quaternion.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + x_ = 0D; + + y_ = 0D; + + z_ = 0D; + + w_ = 0D; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.Geometry.internal_static_cmvr_api_Quaternion_descriptor; + } + + @java.lang.Override + public cmvr.api.Geometry.Quaternion getDefaultInstanceForType() { + return cmvr.api.Geometry.Quaternion.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.Geometry.Quaternion build() { + cmvr.api.Geometry.Quaternion result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.Geometry.Quaternion buildPartial() { + cmvr.api.Geometry.Quaternion result = new cmvr.api.Geometry.Quaternion(this); + result.x_ = x_; + result.y_ = y_; + result.z_ = z_; + result.w_ = w_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.Geometry.Quaternion) { + return mergeFrom((cmvr.api.Geometry.Quaternion)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.Geometry.Quaternion other) { + if (other == cmvr.api.Geometry.Quaternion.getDefaultInstance()) return this; + if (other.getX() != 0D) { + setX(other.getX()); + } + if (other.getY() != 0D) { + setY(other.getY()); + } + if (other.getZ() != 0D) { + setZ(other.getZ()); + } + if (other.getW() != 0D) { + setW(other.getW()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 9: { + x_ = input.readDouble(); + + break; + } // case 9 + case 17: { + y_ = input.readDouble(); + + break; + } // case 17 + case 25: { + z_ = input.readDouble(); + + break; + } // case 25 + case 33: { + w_ = input.readDouble(); + + break; + } // case 33 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private double x_ ; + /** + * double x = 1; + * @return The x. + */ + @java.lang.Override + public double getX() { + return x_; + } + /** + * double x = 1; + * @param value The x to set. + * @return This builder for chaining. + */ + public Builder setX(double value) { + + x_ = value; + onChanged(); + return this; + } + /** + * double x = 1; + * @return This builder for chaining. + */ + public Builder clearX() { + + x_ = 0D; + onChanged(); + return this; + } + + private double y_ ; + /** + * double y = 2; + * @return The y. + */ + @java.lang.Override + public double getY() { + return y_; + } + /** + * double y = 2; + * @param value The y to set. + * @return This builder for chaining. + */ + public Builder setY(double value) { + + y_ = value; + onChanged(); + return this; + } + /** + * double y = 2; + * @return This builder for chaining. + */ + public Builder clearY() { + + y_ = 0D; + onChanged(); + return this; + } + + private double z_ ; + /** + * double z = 3; + * @return The z. + */ + @java.lang.Override + public double getZ() { + return z_; + } + /** + * double z = 3; + * @param value The z to set. + * @return This builder for chaining. + */ + public Builder setZ(double value) { + + z_ = value; + onChanged(); + return this; + } + /** + * double z = 3; + * @return This builder for chaining. + */ + public Builder clearZ() { + + z_ = 0D; + onChanged(); + return this; + } + + private double w_ ; + /** + * double w = 4; + * @return The w. + */ + @java.lang.Override + public double getW() { + return w_; + } + /** + * double w = 4; + * @param value The w to set. + * @return This builder for chaining. + */ + public Builder setW(double value) { + + w_ = value; + onChanged(); + return this; + } + /** + * double w = 4; + * @return This builder for chaining. + */ + public Builder clearW() { + + w_ = 0D; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.Quaternion) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.Quaternion) + private static final cmvr.api.Geometry.Quaternion DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.Geometry.Quaternion(); + } + + public static cmvr.api.Geometry.Quaternion getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Quaternion parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.Geometry.Quaternion getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface EulerAngleZYXOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.EulerAngleZYX) + com.google.protobuf.MessageOrBuilder { + + /** + * double z = 1; + * @return The z. + */ + double getZ(); + + /** + * double y = 2; + * @return The y. + */ + double getY(); + + /** + * double x = 3; + * @return The x. + */ + double getX(); + } + /** + * Protobuf type {@code cmvr.api.EulerAngleZYX} + */ + public static final class EulerAngleZYX extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.EulerAngleZYX) + EulerAngleZYXOrBuilder { + private static final long serialVersionUID = 0L; + // Use EulerAngleZYX.newBuilder() to construct. + private EulerAngleZYX(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private EulerAngleZYX() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new EulerAngleZYX(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.Geometry.internal_static_cmvr_api_EulerAngleZYX_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.Geometry.internal_static_cmvr_api_EulerAngleZYX_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.Geometry.EulerAngleZYX.class, cmvr.api.Geometry.EulerAngleZYX.Builder.class); + } + + public static final int Z_FIELD_NUMBER = 1; + private double z_; + /** + * double z = 1; + * @return The z. + */ + @java.lang.Override + public double getZ() { + return z_; + } + + public static final int Y_FIELD_NUMBER = 2; + private double y_; + /** + * double y = 2; + * @return The y. + */ + @java.lang.Override + public double getY() { + return y_; + } + + public static final int X_FIELD_NUMBER = 3; + private double x_; + /** + * double x = 3; + * @return The x. + */ + @java.lang.Override + public double getX() { + return x_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (java.lang.Double.doubleToRawLongBits(z_) != 0) { + output.writeDouble(1, z_); + } + if (java.lang.Double.doubleToRawLongBits(y_) != 0) { + output.writeDouble(2, y_); + } + if (java.lang.Double.doubleToRawLongBits(x_) != 0) { + output.writeDouble(3, x_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (java.lang.Double.doubleToRawLongBits(z_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeDoubleSize(1, z_); + } + if (java.lang.Double.doubleToRawLongBits(y_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeDoubleSize(2, y_); + } + if (java.lang.Double.doubleToRawLongBits(x_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeDoubleSize(3, x_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.Geometry.EulerAngleZYX)) { + return super.equals(obj); + } + cmvr.api.Geometry.EulerAngleZYX other = (cmvr.api.Geometry.EulerAngleZYX) obj; + + if (java.lang.Double.doubleToLongBits(getZ()) + != java.lang.Double.doubleToLongBits( + other.getZ())) return false; + if (java.lang.Double.doubleToLongBits(getY()) + != java.lang.Double.doubleToLongBits( + other.getY())) return false; + if (java.lang.Double.doubleToLongBits(getX()) + != java.lang.Double.doubleToLongBits( + other.getX())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + Z_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + java.lang.Double.doubleToLongBits(getZ())); + hash = (37 * hash) + Y_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + java.lang.Double.doubleToLongBits(getY())); + hash = (37 * hash) + X_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + java.lang.Double.doubleToLongBits(getX())); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.Geometry.EulerAngleZYX parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.Geometry.EulerAngleZYX parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.Geometry.EulerAngleZYX parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.Geometry.EulerAngleZYX parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.Geometry.EulerAngleZYX parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.Geometry.EulerAngleZYX parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.Geometry.EulerAngleZYX parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.Geometry.EulerAngleZYX parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.Geometry.EulerAngleZYX parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.Geometry.EulerAngleZYX parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.Geometry.EulerAngleZYX parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.Geometry.EulerAngleZYX parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.Geometry.EulerAngleZYX prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.EulerAngleZYX} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.EulerAngleZYX) + cmvr.api.Geometry.EulerAngleZYXOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.Geometry.internal_static_cmvr_api_EulerAngleZYX_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.Geometry.internal_static_cmvr_api_EulerAngleZYX_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.Geometry.EulerAngleZYX.class, cmvr.api.Geometry.EulerAngleZYX.Builder.class); + } + + // Construct using cmvr.api.Geometry.EulerAngleZYX.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + z_ = 0D; + + y_ = 0D; + + x_ = 0D; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.Geometry.internal_static_cmvr_api_EulerAngleZYX_descriptor; + } + + @java.lang.Override + public cmvr.api.Geometry.EulerAngleZYX getDefaultInstanceForType() { + return cmvr.api.Geometry.EulerAngleZYX.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.Geometry.EulerAngleZYX build() { + cmvr.api.Geometry.EulerAngleZYX result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.Geometry.EulerAngleZYX buildPartial() { + cmvr.api.Geometry.EulerAngleZYX result = new cmvr.api.Geometry.EulerAngleZYX(this); + result.z_ = z_; + result.y_ = y_; + result.x_ = x_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.Geometry.EulerAngleZYX) { + return mergeFrom((cmvr.api.Geometry.EulerAngleZYX)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.Geometry.EulerAngleZYX other) { + if (other == cmvr.api.Geometry.EulerAngleZYX.getDefaultInstance()) return this; + if (other.getZ() != 0D) { + setZ(other.getZ()); + } + if (other.getY() != 0D) { + setY(other.getY()); + } + if (other.getX() != 0D) { + setX(other.getX()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 9: { + z_ = input.readDouble(); + + break; + } // case 9 + case 17: { + y_ = input.readDouble(); + + break; + } // case 17 + case 25: { + x_ = input.readDouble(); + + break; + } // case 25 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private double z_ ; + /** + * double z = 1; + * @return The z. + */ + @java.lang.Override + public double getZ() { + return z_; + } + /** + * double z = 1; + * @param value The z to set. + * @return This builder for chaining. + */ + public Builder setZ(double value) { + + z_ = value; + onChanged(); + return this; + } + /** + * double z = 1; + * @return This builder for chaining. + */ + public Builder clearZ() { + + z_ = 0D; + onChanged(); + return this; + } + + private double y_ ; + /** + * double y = 2; + * @return The y. + */ + @java.lang.Override + public double getY() { + return y_; + } + /** + * double y = 2; + * @param value The y to set. + * @return This builder for chaining. + */ + public Builder setY(double value) { + + y_ = value; + onChanged(); + return this; + } + /** + * double y = 2; + * @return This builder for chaining. + */ + public Builder clearY() { + + y_ = 0D; + onChanged(); + return this; + } + + private double x_ ; + /** + * double x = 3; + * @return The x. + */ + @java.lang.Override + public double getX() { + return x_; + } + /** + * double x = 3; + * @param value The x to set. + * @return This builder for chaining. + */ + public Builder setX(double value) { + + x_ = value; + onChanged(); + return this; + } + /** + * double x = 3; + * @return This builder for chaining. + */ + public Builder clearX() { + + x_ = 0D; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.EulerAngleZYX) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.EulerAngleZYX) + private static final cmvr.api.Geometry.EulerAngleZYX DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.Geometry.EulerAngleZYX(); + } + + public static cmvr.api.Geometry.EulerAngleZYX getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public EulerAngleZYX parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.Geometry.EulerAngleZYX getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface SE3PoseOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.SE3Pose) + com.google.protobuf.MessageOrBuilder { + + /** + *
+     * (m)
+     * 
+ * + * .cmvr.api.Vec3 position = 1; + * @return Whether the position field is set. + */ + boolean hasPosition(); + /** + *
+     * (m)
+     * 
+ * + * .cmvr.api.Vec3 position = 1; + * @return The position. + */ + cmvr.api.Geometry.Vec3 getPosition(); + /** + *
+     * (m)
+     * 
+ * + * .cmvr.api.Vec3 position = 1; + */ + cmvr.api.Geometry.Vec3OrBuilder getPositionOrBuilder(); + + /** + * .cmvr.api.Quaternion quaternion = 2; + * @return Whether the quaternion field is set. + */ + boolean hasQuaternion(); + /** + * .cmvr.api.Quaternion quaternion = 2; + * @return The quaternion. + */ + cmvr.api.Geometry.Quaternion getQuaternion(); + /** + * .cmvr.api.Quaternion quaternion = 2; + */ + cmvr.api.Geometry.QuaternionOrBuilder getQuaternionOrBuilder(); + + /** + * .cmvr.api.EulerAngleZYX euler = 3; + * @return Whether the euler field is set. + */ + boolean hasEuler(); + /** + * .cmvr.api.EulerAngleZYX euler = 3; + * @return The euler. + */ + cmvr.api.Geometry.EulerAngleZYX getEuler(); + /** + * .cmvr.api.EulerAngleZYX euler = 3; + */ + cmvr.api.Geometry.EulerAngleZYXOrBuilder getEulerOrBuilder(); + + public cmvr.api.Geometry.SE3Pose.RotationCase getRotationCase(); + } + /** + * Protobuf type {@code cmvr.api.SE3Pose} + */ + public static final class SE3Pose extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.SE3Pose) + SE3PoseOrBuilder { + private static final long serialVersionUID = 0L; + // Use SE3Pose.newBuilder() to construct. + private SE3Pose(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private SE3Pose() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new SE3Pose(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.Geometry.internal_static_cmvr_api_SE3Pose_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.Geometry.internal_static_cmvr_api_SE3Pose_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.Geometry.SE3Pose.class, cmvr.api.Geometry.SE3Pose.Builder.class); + } + + private int rotationCase_ = 0; + private java.lang.Object rotation_; + public enum RotationCase + implements com.google.protobuf.Internal.EnumLite, + com.google.protobuf.AbstractMessage.InternalOneOfEnum { + QUATERNION(2), + EULER(3), + ROTATION_NOT_SET(0); + private final int value; + private RotationCase(int value) { + this.value = value; + } + /** + * @param value The number of the enum to look for. + * @return The enum associated with the given number. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static RotationCase valueOf(int value) { + return forNumber(value); + } + + public static RotationCase forNumber(int value) { + switch (value) { + case 2: return QUATERNION; + case 3: return EULER; + case 0: return ROTATION_NOT_SET; + default: return null; + } + } + public int getNumber() { + return this.value; + } + }; + + public RotationCase + getRotationCase() { + return RotationCase.forNumber( + rotationCase_); + } + + public static final int POSITION_FIELD_NUMBER = 1; + private cmvr.api.Geometry.Vec3 position_; + /** + *
+     * (m)
+     * 
+ * + * .cmvr.api.Vec3 position = 1; + * @return Whether the position field is set. + */ + @java.lang.Override + public boolean hasPosition() { + return position_ != null; + } + /** + *
+     * (m)
+     * 
+ * + * .cmvr.api.Vec3 position = 1; + * @return The position. + */ + @java.lang.Override + public cmvr.api.Geometry.Vec3 getPosition() { + return position_ == null ? cmvr.api.Geometry.Vec3.getDefaultInstance() : position_; + } + /** + *
+     * (m)
+     * 
+ * + * .cmvr.api.Vec3 position = 1; + */ + @java.lang.Override + public cmvr.api.Geometry.Vec3OrBuilder getPositionOrBuilder() { + return getPosition(); + } + + public static final int QUATERNION_FIELD_NUMBER = 2; + /** + * .cmvr.api.Quaternion quaternion = 2; + * @return Whether the quaternion field is set. + */ + @java.lang.Override + public boolean hasQuaternion() { + return rotationCase_ == 2; + } + /** + * .cmvr.api.Quaternion quaternion = 2; + * @return The quaternion. + */ + @java.lang.Override + public cmvr.api.Geometry.Quaternion getQuaternion() { + if (rotationCase_ == 2) { + return (cmvr.api.Geometry.Quaternion) rotation_; + } + return cmvr.api.Geometry.Quaternion.getDefaultInstance(); + } + /** + * .cmvr.api.Quaternion quaternion = 2; + */ + @java.lang.Override + public cmvr.api.Geometry.QuaternionOrBuilder getQuaternionOrBuilder() { + if (rotationCase_ == 2) { + return (cmvr.api.Geometry.Quaternion) rotation_; + } + return cmvr.api.Geometry.Quaternion.getDefaultInstance(); + } + + public static final int EULER_FIELD_NUMBER = 3; + /** + * .cmvr.api.EulerAngleZYX euler = 3; + * @return Whether the euler field is set. + */ + @java.lang.Override + public boolean hasEuler() { + return rotationCase_ == 3; + } + /** + * .cmvr.api.EulerAngleZYX euler = 3; + * @return The euler. + */ + @java.lang.Override + public cmvr.api.Geometry.EulerAngleZYX getEuler() { + if (rotationCase_ == 3) { + return (cmvr.api.Geometry.EulerAngleZYX) rotation_; + } + return cmvr.api.Geometry.EulerAngleZYX.getDefaultInstance(); + } + /** + * .cmvr.api.EulerAngleZYX euler = 3; + */ + @java.lang.Override + public cmvr.api.Geometry.EulerAngleZYXOrBuilder getEulerOrBuilder() { + if (rotationCase_ == 3) { + return (cmvr.api.Geometry.EulerAngleZYX) rotation_; + } + return cmvr.api.Geometry.EulerAngleZYX.getDefaultInstance(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (position_ != null) { + output.writeMessage(1, getPosition()); + } + if (rotationCase_ == 2) { + output.writeMessage(2, (cmvr.api.Geometry.Quaternion) rotation_); + } + if (rotationCase_ == 3) { + output.writeMessage(3, (cmvr.api.Geometry.EulerAngleZYX) rotation_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (position_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getPosition()); + } + if (rotationCase_ == 2) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, (cmvr.api.Geometry.Quaternion) rotation_); + } + if (rotationCase_ == 3) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(3, (cmvr.api.Geometry.EulerAngleZYX) rotation_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.Geometry.SE3Pose)) { + return super.equals(obj); + } + cmvr.api.Geometry.SE3Pose other = (cmvr.api.Geometry.SE3Pose) obj; + + if (hasPosition() != other.hasPosition()) return false; + if (hasPosition()) { + if (!getPosition() + .equals(other.getPosition())) return false; + } + if (!getRotationCase().equals(other.getRotationCase())) return false; + switch (rotationCase_) { + case 2: + if (!getQuaternion() + .equals(other.getQuaternion())) return false; + break; + case 3: + if (!getEuler() + .equals(other.getEuler())) return false; + break; + case 0: + default: + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasPosition()) { + hash = (37 * hash) + POSITION_FIELD_NUMBER; + hash = (53 * hash) + getPosition().hashCode(); + } + switch (rotationCase_) { + case 2: + hash = (37 * hash) + QUATERNION_FIELD_NUMBER; + hash = (53 * hash) + getQuaternion().hashCode(); + break; + case 3: + hash = (37 * hash) + EULER_FIELD_NUMBER; + hash = (53 * hash) + getEuler().hashCode(); + break; + case 0: + default: + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.Geometry.SE3Pose parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.Geometry.SE3Pose parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.Geometry.SE3Pose parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.Geometry.SE3Pose parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.Geometry.SE3Pose parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.Geometry.SE3Pose parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.Geometry.SE3Pose parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.Geometry.SE3Pose parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.Geometry.SE3Pose parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.Geometry.SE3Pose parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.Geometry.SE3Pose parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.Geometry.SE3Pose parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.Geometry.SE3Pose prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.SE3Pose} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.SE3Pose) + cmvr.api.Geometry.SE3PoseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.Geometry.internal_static_cmvr_api_SE3Pose_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.Geometry.internal_static_cmvr_api_SE3Pose_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.Geometry.SE3Pose.class, cmvr.api.Geometry.SE3Pose.Builder.class); + } + + // Construct using cmvr.api.Geometry.SE3Pose.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (positionBuilder_ == null) { + position_ = null; + } else { + position_ = null; + positionBuilder_ = null; + } + if (quaternionBuilder_ != null) { + quaternionBuilder_.clear(); + } + if (eulerBuilder_ != null) { + eulerBuilder_.clear(); + } + rotationCase_ = 0; + rotation_ = null; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.Geometry.internal_static_cmvr_api_SE3Pose_descriptor; + } + + @java.lang.Override + public cmvr.api.Geometry.SE3Pose getDefaultInstanceForType() { + return cmvr.api.Geometry.SE3Pose.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.Geometry.SE3Pose build() { + cmvr.api.Geometry.SE3Pose result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.Geometry.SE3Pose buildPartial() { + cmvr.api.Geometry.SE3Pose result = new cmvr.api.Geometry.SE3Pose(this); + if (positionBuilder_ == null) { + result.position_ = position_; + } else { + result.position_ = positionBuilder_.build(); + } + if (rotationCase_ == 2) { + if (quaternionBuilder_ == null) { + result.rotation_ = rotation_; + } else { + result.rotation_ = quaternionBuilder_.build(); + } + } + if (rotationCase_ == 3) { + if (eulerBuilder_ == null) { + result.rotation_ = rotation_; + } else { + result.rotation_ = eulerBuilder_.build(); + } + } + result.rotationCase_ = rotationCase_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.Geometry.SE3Pose) { + return mergeFrom((cmvr.api.Geometry.SE3Pose)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.Geometry.SE3Pose other) { + if (other == cmvr.api.Geometry.SE3Pose.getDefaultInstance()) return this; + if (other.hasPosition()) { + mergePosition(other.getPosition()); + } + switch (other.getRotationCase()) { + case QUATERNION: { + mergeQuaternion(other.getQuaternion()); + break; + } + case EULER: { + mergeEuler(other.getEuler()); + break; + } + case ROTATION_NOT_SET: { + break; + } + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getPositionFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + case 18: { + input.readMessage( + getQuaternionFieldBuilder().getBuilder(), + extensionRegistry); + rotationCase_ = 2; + break; + } // case 18 + case 26: { + input.readMessage( + getEulerFieldBuilder().getBuilder(), + extensionRegistry); + rotationCase_ = 3; + break; + } // case 26 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int rotationCase_ = 0; + private java.lang.Object rotation_; + public RotationCase + getRotationCase() { + return RotationCase.forNumber( + rotationCase_); + } + + public Builder clearRotation() { + rotationCase_ = 0; + rotation_ = null; + onChanged(); + return this; + } + + + private cmvr.api.Geometry.Vec3 position_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Geometry.Vec3, cmvr.api.Geometry.Vec3.Builder, cmvr.api.Geometry.Vec3OrBuilder> positionBuilder_; + /** + *
+       * (m)
+       * 
+ * + * .cmvr.api.Vec3 position = 1; + * @return Whether the position field is set. + */ + public boolean hasPosition() { + return positionBuilder_ != null || position_ != null; + } + /** + *
+       * (m)
+       * 
+ * + * .cmvr.api.Vec3 position = 1; + * @return The position. + */ + public cmvr.api.Geometry.Vec3 getPosition() { + if (positionBuilder_ == null) { + return position_ == null ? cmvr.api.Geometry.Vec3.getDefaultInstance() : position_; + } else { + return positionBuilder_.getMessage(); + } + } + /** + *
+       * (m)
+       * 
+ * + * .cmvr.api.Vec3 position = 1; + */ + public Builder setPosition(cmvr.api.Geometry.Vec3 value) { + if (positionBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + position_ = value; + onChanged(); + } else { + positionBuilder_.setMessage(value); + } + + return this; + } + /** + *
+       * (m)
+       * 
+ * + * .cmvr.api.Vec3 position = 1; + */ + public Builder setPosition( + cmvr.api.Geometry.Vec3.Builder builderForValue) { + if (positionBuilder_ == null) { + position_ = builderForValue.build(); + onChanged(); + } else { + positionBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+       * (m)
+       * 
+ * + * .cmvr.api.Vec3 position = 1; + */ + public Builder mergePosition(cmvr.api.Geometry.Vec3 value) { + if (positionBuilder_ == null) { + if (position_ != null) { + position_ = + cmvr.api.Geometry.Vec3.newBuilder(position_).mergeFrom(value).buildPartial(); + } else { + position_ = value; + } + onChanged(); + } else { + positionBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+       * (m)
+       * 
+ * + * .cmvr.api.Vec3 position = 1; + */ + public Builder clearPosition() { + if (positionBuilder_ == null) { + position_ = null; + onChanged(); + } else { + position_ = null; + positionBuilder_ = null; + } + + return this; + } + /** + *
+       * (m)
+       * 
+ * + * .cmvr.api.Vec3 position = 1; + */ + public cmvr.api.Geometry.Vec3.Builder getPositionBuilder() { + + onChanged(); + return getPositionFieldBuilder().getBuilder(); + } + /** + *
+       * (m)
+       * 
+ * + * .cmvr.api.Vec3 position = 1; + */ + public cmvr.api.Geometry.Vec3OrBuilder getPositionOrBuilder() { + if (positionBuilder_ != null) { + return positionBuilder_.getMessageOrBuilder(); + } else { + return position_ == null ? + cmvr.api.Geometry.Vec3.getDefaultInstance() : position_; + } + } + /** + *
+       * (m)
+       * 
+ * + * .cmvr.api.Vec3 position = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Geometry.Vec3, cmvr.api.Geometry.Vec3.Builder, cmvr.api.Geometry.Vec3OrBuilder> + getPositionFieldBuilder() { + if (positionBuilder_ == null) { + positionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Geometry.Vec3, cmvr.api.Geometry.Vec3.Builder, cmvr.api.Geometry.Vec3OrBuilder>( + getPosition(), + getParentForChildren(), + isClean()); + position_ = null; + } + return positionBuilder_; + } + + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Geometry.Quaternion, cmvr.api.Geometry.Quaternion.Builder, cmvr.api.Geometry.QuaternionOrBuilder> quaternionBuilder_; + /** + * .cmvr.api.Quaternion quaternion = 2; + * @return Whether the quaternion field is set. + */ + @java.lang.Override + public boolean hasQuaternion() { + return rotationCase_ == 2; + } + /** + * .cmvr.api.Quaternion quaternion = 2; + * @return The quaternion. + */ + @java.lang.Override + public cmvr.api.Geometry.Quaternion getQuaternion() { + if (quaternionBuilder_ == null) { + if (rotationCase_ == 2) { + return (cmvr.api.Geometry.Quaternion) rotation_; + } + return cmvr.api.Geometry.Quaternion.getDefaultInstance(); + } else { + if (rotationCase_ == 2) { + return quaternionBuilder_.getMessage(); + } + return cmvr.api.Geometry.Quaternion.getDefaultInstance(); + } + } + /** + * .cmvr.api.Quaternion quaternion = 2; + */ + public Builder setQuaternion(cmvr.api.Geometry.Quaternion value) { + if (quaternionBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + rotation_ = value; + onChanged(); + } else { + quaternionBuilder_.setMessage(value); + } + rotationCase_ = 2; + return this; + } + /** + * .cmvr.api.Quaternion quaternion = 2; + */ + public Builder setQuaternion( + cmvr.api.Geometry.Quaternion.Builder builderForValue) { + if (quaternionBuilder_ == null) { + rotation_ = builderForValue.build(); + onChanged(); + } else { + quaternionBuilder_.setMessage(builderForValue.build()); + } + rotationCase_ = 2; + return this; + } + /** + * .cmvr.api.Quaternion quaternion = 2; + */ + public Builder mergeQuaternion(cmvr.api.Geometry.Quaternion value) { + if (quaternionBuilder_ == null) { + if (rotationCase_ == 2 && + rotation_ != cmvr.api.Geometry.Quaternion.getDefaultInstance()) { + rotation_ = cmvr.api.Geometry.Quaternion.newBuilder((cmvr.api.Geometry.Quaternion) rotation_) + .mergeFrom(value).buildPartial(); + } else { + rotation_ = value; + } + onChanged(); + } else { + if (rotationCase_ == 2) { + quaternionBuilder_.mergeFrom(value); + } else { + quaternionBuilder_.setMessage(value); + } + } + rotationCase_ = 2; + return this; + } + /** + * .cmvr.api.Quaternion quaternion = 2; + */ + public Builder clearQuaternion() { + if (quaternionBuilder_ == null) { + if (rotationCase_ == 2) { + rotationCase_ = 0; + rotation_ = null; + onChanged(); + } + } else { + if (rotationCase_ == 2) { + rotationCase_ = 0; + rotation_ = null; + } + quaternionBuilder_.clear(); + } + return this; + } + /** + * .cmvr.api.Quaternion quaternion = 2; + */ + public cmvr.api.Geometry.Quaternion.Builder getQuaternionBuilder() { + return getQuaternionFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.Quaternion quaternion = 2; + */ + @java.lang.Override + public cmvr.api.Geometry.QuaternionOrBuilder getQuaternionOrBuilder() { + if ((rotationCase_ == 2) && (quaternionBuilder_ != null)) { + return quaternionBuilder_.getMessageOrBuilder(); + } else { + if (rotationCase_ == 2) { + return (cmvr.api.Geometry.Quaternion) rotation_; + } + return cmvr.api.Geometry.Quaternion.getDefaultInstance(); + } + } + /** + * .cmvr.api.Quaternion quaternion = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Geometry.Quaternion, cmvr.api.Geometry.Quaternion.Builder, cmvr.api.Geometry.QuaternionOrBuilder> + getQuaternionFieldBuilder() { + if (quaternionBuilder_ == null) { + if (!(rotationCase_ == 2)) { + rotation_ = cmvr.api.Geometry.Quaternion.getDefaultInstance(); + } + quaternionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Geometry.Quaternion, cmvr.api.Geometry.Quaternion.Builder, cmvr.api.Geometry.QuaternionOrBuilder>( + (cmvr.api.Geometry.Quaternion) rotation_, + getParentForChildren(), + isClean()); + rotation_ = null; + } + rotationCase_ = 2; + onChanged();; + return quaternionBuilder_; + } + + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Geometry.EulerAngleZYX, cmvr.api.Geometry.EulerAngleZYX.Builder, cmvr.api.Geometry.EulerAngleZYXOrBuilder> eulerBuilder_; + /** + * .cmvr.api.EulerAngleZYX euler = 3; + * @return Whether the euler field is set. + */ + @java.lang.Override + public boolean hasEuler() { + return rotationCase_ == 3; + } + /** + * .cmvr.api.EulerAngleZYX euler = 3; + * @return The euler. + */ + @java.lang.Override + public cmvr.api.Geometry.EulerAngleZYX getEuler() { + if (eulerBuilder_ == null) { + if (rotationCase_ == 3) { + return (cmvr.api.Geometry.EulerAngleZYX) rotation_; + } + return cmvr.api.Geometry.EulerAngleZYX.getDefaultInstance(); + } else { + if (rotationCase_ == 3) { + return eulerBuilder_.getMessage(); + } + return cmvr.api.Geometry.EulerAngleZYX.getDefaultInstance(); + } + } + /** + * .cmvr.api.EulerAngleZYX euler = 3; + */ + public Builder setEuler(cmvr.api.Geometry.EulerAngleZYX value) { + if (eulerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + rotation_ = value; + onChanged(); + } else { + eulerBuilder_.setMessage(value); + } + rotationCase_ = 3; + return this; + } + /** + * .cmvr.api.EulerAngleZYX euler = 3; + */ + public Builder setEuler( + cmvr.api.Geometry.EulerAngleZYX.Builder builderForValue) { + if (eulerBuilder_ == null) { + rotation_ = builderForValue.build(); + onChanged(); + } else { + eulerBuilder_.setMessage(builderForValue.build()); + } + rotationCase_ = 3; + return this; + } + /** + * .cmvr.api.EulerAngleZYX euler = 3; + */ + public Builder mergeEuler(cmvr.api.Geometry.EulerAngleZYX value) { + if (eulerBuilder_ == null) { + if (rotationCase_ == 3 && + rotation_ != cmvr.api.Geometry.EulerAngleZYX.getDefaultInstance()) { + rotation_ = cmvr.api.Geometry.EulerAngleZYX.newBuilder((cmvr.api.Geometry.EulerAngleZYX) rotation_) + .mergeFrom(value).buildPartial(); + } else { + rotation_ = value; + } + onChanged(); + } else { + if (rotationCase_ == 3) { + eulerBuilder_.mergeFrom(value); + } else { + eulerBuilder_.setMessage(value); + } + } + rotationCase_ = 3; + return this; + } + /** + * .cmvr.api.EulerAngleZYX euler = 3; + */ + public Builder clearEuler() { + if (eulerBuilder_ == null) { + if (rotationCase_ == 3) { + rotationCase_ = 0; + rotation_ = null; + onChanged(); + } + } else { + if (rotationCase_ == 3) { + rotationCase_ = 0; + rotation_ = null; + } + eulerBuilder_.clear(); + } + return this; + } + /** + * .cmvr.api.EulerAngleZYX euler = 3; + */ + public cmvr.api.Geometry.EulerAngleZYX.Builder getEulerBuilder() { + return getEulerFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.EulerAngleZYX euler = 3; + */ + @java.lang.Override + public cmvr.api.Geometry.EulerAngleZYXOrBuilder getEulerOrBuilder() { + if ((rotationCase_ == 3) && (eulerBuilder_ != null)) { + return eulerBuilder_.getMessageOrBuilder(); + } else { + if (rotationCase_ == 3) { + return (cmvr.api.Geometry.EulerAngleZYX) rotation_; + } + return cmvr.api.Geometry.EulerAngleZYX.getDefaultInstance(); + } + } + /** + * .cmvr.api.EulerAngleZYX euler = 3; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Geometry.EulerAngleZYX, cmvr.api.Geometry.EulerAngleZYX.Builder, cmvr.api.Geometry.EulerAngleZYXOrBuilder> + getEulerFieldBuilder() { + if (eulerBuilder_ == null) { + if (!(rotationCase_ == 3)) { + rotation_ = cmvr.api.Geometry.EulerAngleZYX.getDefaultInstance(); + } + eulerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Geometry.EulerAngleZYX, cmvr.api.Geometry.EulerAngleZYX.Builder, cmvr.api.Geometry.EulerAngleZYXOrBuilder>( + (cmvr.api.Geometry.EulerAngleZYX) rotation_, + getParentForChildren(), + isClean()); + rotation_ = null; + } + rotationCase_ = 3; + onChanged();; + return eulerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.SE3Pose) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.SE3Pose) + private static final cmvr.api.Geometry.SE3Pose DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.Geometry.SE3Pose(); + } + + public static cmvr.api.Geometry.SE3Pose getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public SE3Pose parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.Geometry.SE3Pose getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface InertialOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.Inertial) + com.google.protobuf.MessageOrBuilder { + + /** + *
+     * Mass (kg)
+     * 
+ * + * double mass = 1; + * @return The mass. + */ + double getMass(); + + /** + *
+     * Center of mass (m)
+     * 
+ * + * .cmvr.api.Vec3 center_of_mass = 2; + * @return Whether the centerOfMass field is set. + */ + boolean hasCenterOfMass(); + /** + *
+     * Center of mass (m)
+     * 
+ * + * .cmvr.api.Vec3 center_of_mass = 2; + * @return The centerOfMass. + */ + cmvr.api.Geometry.Vec3 getCenterOfMass(); + /** + *
+     * Center of mass (m)
+     * 
+ * + * .cmvr.api.Vec3 center_of_mass = 2; + */ + cmvr.api.Geometry.Vec3OrBuilder getCenterOfMassOrBuilder(); + + /** + *
+     * Inertia tensor
+     * 
+ * + * .cmvr.api.Inertia inertia = 3; + * @return Whether the inertia field is set. + */ + boolean hasInertia(); + /** + *
+     * Inertia tensor
+     * 
+ * + * .cmvr.api.Inertia inertia = 3; + * @return The inertia. + */ + cmvr.api.Geometry.Inertia getInertia(); + /** + *
+     * Inertia tensor
+     * 
+ * + * .cmvr.api.Inertia inertia = 3; + */ + cmvr.api.Geometry.InertiaOrBuilder getInertiaOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.Inertial} + */ + public static final class Inertial extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.Inertial) + InertialOrBuilder { + private static final long serialVersionUID = 0L; + // Use Inertial.newBuilder() to construct. + private Inertial(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Inertial() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Inertial(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.Geometry.internal_static_cmvr_api_Inertial_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.Geometry.internal_static_cmvr_api_Inertial_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.Geometry.Inertial.class, cmvr.api.Geometry.Inertial.Builder.class); + } + + public static final int MASS_FIELD_NUMBER = 1; + private double mass_; + /** + *
+     * Mass (kg)
+     * 
+ * + * double mass = 1; + * @return The mass. + */ + @java.lang.Override + public double getMass() { + return mass_; + } + + public static final int CENTER_OF_MASS_FIELD_NUMBER = 2; + private cmvr.api.Geometry.Vec3 centerOfMass_; + /** + *
+     * Center of mass (m)
+     * 
+ * + * .cmvr.api.Vec3 center_of_mass = 2; + * @return Whether the centerOfMass field is set. + */ + @java.lang.Override + public boolean hasCenterOfMass() { + return centerOfMass_ != null; + } + /** + *
+     * Center of mass (m)
+     * 
+ * + * .cmvr.api.Vec3 center_of_mass = 2; + * @return The centerOfMass. + */ + @java.lang.Override + public cmvr.api.Geometry.Vec3 getCenterOfMass() { + return centerOfMass_ == null ? cmvr.api.Geometry.Vec3.getDefaultInstance() : centerOfMass_; + } + /** + *
+     * Center of mass (m)
+     * 
+ * + * .cmvr.api.Vec3 center_of_mass = 2; + */ + @java.lang.Override + public cmvr.api.Geometry.Vec3OrBuilder getCenterOfMassOrBuilder() { + return getCenterOfMass(); + } + + public static final int INERTIA_FIELD_NUMBER = 3; + private cmvr.api.Geometry.Inertia inertia_; + /** + *
+     * Inertia tensor
+     * 
+ * + * .cmvr.api.Inertia inertia = 3; + * @return Whether the inertia field is set. + */ + @java.lang.Override + public boolean hasInertia() { + return inertia_ != null; + } + /** + *
+     * Inertia tensor
+     * 
+ * + * .cmvr.api.Inertia inertia = 3; + * @return The inertia. + */ + @java.lang.Override + public cmvr.api.Geometry.Inertia getInertia() { + return inertia_ == null ? cmvr.api.Geometry.Inertia.getDefaultInstance() : inertia_; + } + /** + *
+     * Inertia tensor
+     * 
+ * + * .cmvr.api.Inertia inertia = 3; + */ + @java.lang.Override + public cmvr.api.Geometry.InertiaOrBuilder getInertiaOrBuilder() { + return getInertia(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (java.lang.Double.doubleToRawLongBits(mass_) != 0) { + output.writeDouble(1, mass_); + } + if (centerOfMass_ != null) { + output.writeMessage(2, getCenterOfMass()); + } + if (inertia_ != null) { + output.writeMessage(3, getInertia()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (java.lang.Double.doubleToRawLongBits(mass_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeDoubleSize(1, mass_); + } + if (centerOfMass_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, getCenterOfMass()); + } + if (inertia_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(3, getInertia()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.Geometry.Inertial)) { + return super.equals(obj); + } + cmvr.api.Geometry.Inertial other = (cmvr.api.Geometry.Inertial) obj; + + if (java.lang.Double.doubleToLongBits(getMass()) + != java.lang.Double.doubleToLongBits( + other.getMass())) return false; + if (hasCenterOfMass() != other.hasCenterOfMass()) return false; + if (hasCenterOfMass()) { + if (!getCenterOfMass() + .equals(other.getCenterOfMass())) return false; + } + if (hasInertia() != other.hasInertia()) return false; + if (hasInertia()) { + if (!getInertia() + .equals(other.getInertia())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + MASS_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + java.lang.Double.doubleToLongBits(getMass())); + if (hasCenterOfMass()) { + hash = (37 * hash) + CENTER_OF_MASS_FIELD_NUMBER; + hash = (53 * hash) + getCenterOfMass().hashCode(); + } + if (hasInertia()) { + hash = (37 * hash) + INERTIA_FIELD_NUMBER; + hash = (53 * hash) + getInertia().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.Geometry.Inertial parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.Geometry.Inertial parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.Geometry.Inertial parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.Geometry.Inertial parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.Geometry.Inertial parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.Geometry.Inertial parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.Geometry.Inertial parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.Geometry.Inertial parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.Geometry.Inertial parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.Geometry.Inertial parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.Geometry.Inertial parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.Geometry.Inertial parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.Geometry.Inertial prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.Inertial} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.Inertial) + cmvr.api.Geometry.InertialOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.Geometry.internal_static_cmvr_api_Inertial_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.Geometry.internal_static_cmvr_api_Inertial_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.Geometry.Inertial.class, cmvr.api.Geometry.Inertial.Builder.class); + } + + // Construct using cmvr.api.Geometry.Inertial.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + mass_ = 0D; + + if (centerOfMassBuilder_ == null) { + centerOfMass_ = null; + } else { + centerOfMass_ = null; + centerOfMassBuilder_ = null; + } + if (inertiaBuilder_ == null) { + inertia_ = null; + } else { + inertia_ = null; + inertiaBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.Geometry.internal_static_cmvr_api_Inertial_descriptor; + } + + @java.lang.Override + public cmvr.api.Geometry.Inertial getDefaultInstanceForType() { + return cmvr.api.Geometry.Inertial.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.Geometry.Inertial build() { + cmvr.api.Geometry.Inertial result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.Geometry.Inertial buildPartial() { + cmvr.api.Geometry.Inertial result = new cmvr.api.Geometry.Inertial(this); + result.mass_ = mass_; + if (centerOfMassBuilder_ == null) { + result.centerOfMass_ = centerOfMass_; + } else { + result.centerOfMass_ = centerOfMassBuilder_.build(); + } + if (inertiaBuilder_ == null) { + result.inertia_ = inertia_; + } else { + result.inertia_ = inertiaBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.Geometry.Inertial) { + return mergeFrom((cmvr.api.Geometry.Inertial)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.Geometry.Inertial other) { + if (other == cmvr.api.Geometry.Inertial.getDefaultInstance()) return this; + if (other.getMass() != 0D) { + setMass(other.getMass()); + } + if (other.hasCenterOfMass()) { + mergeCenterOfMass(other.getCenterOfMass()); + } + if (other.hasInertia()) { + mergeInertia(other.getInertia()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 9: { + mass_ = input.readDouble(); + + break; + } // case 9 + case 18: { + input.readMessage( + getCenterOfMassFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 18 + case 26: { + input.readMessage( + getInertiaFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 26 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private double mass_ ; + /** + *
+       * Mass (kg)
+       * 
+ * + * double mass = 1; + * @return The mass. + */ + @java.lang.Override + public double getMass() { + return mass_; + } + /** + *
+       * Mass (kg)
+       * 
+ * + * double mass = 1; + * @param value The mass to set. + * @return This builder for chaining. + */ + public Builder setMass(double value) { + + mass_ = value; + onChanged(); + return this; + } + /** + *
+       * Mass (kg)
+       * 
+ * + * double mass = 1; + * @return This builder for chaining. + */ + public Builder clearMass() { + + mass_ = 0D; + onChanged(); + return this; + } + + private cmvr.api.Geometry.Vec3 centerOfMass_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Geometry.Vec3, cmvr.api.Geometry.Vec3.Builder, cmvr.api.Geometry.Vec3OrBuilder> centerOfMassBuilder_; + /** + *
+       * Center of mass (m)
+       * 
+ * + * .cmvr.api.Vec3 center_of_mass = 2; + * @return Whether the centerOfMass field is set. + */ + public boolean hasCenterOfMass() { + return centerOfMassBuilder_ != null || centerOfMass_ != null; + } + /** + *
+       * Center of mass (m)
+       * 
+ * + * .cmvr.api.Vec3 center_of_mass = 2; + * @return The centerOfMass. + */ + public cmvr.api.Geometry.Vec3 getCenterOfMass() { + if (centerOfMassBuilder_ == null) { + return centerOfMass_ == null ? cmvr.api.Geometry.Vec3.getDefaultInstance() : centerOfMass_; + } else { + return centerOfMassBuilder_.getMessage(); + } + } + /** + *
+       * Center of mass (m)
+       * 
+ * + * .cmvr.api.Vec3 center_of_mass = 2; + */ + public Builder setCenterOfMass(cmvr.api.Geometry.Vec3 value) { + if (centerOfMassBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + centerOfMass_ = value; + onChanged(); + } else { + centerOfMassBuilder_.setMessage(value); + } + + return this; + } + /** + *
+       * Center of mass (m)
+       * 
+ * + * .cmvr.api.Vec3 center_of_mass = 2; + */ + public Builder setCenterOfMass( + cmvr.api.Geometry.Vec3.Builder builderForValue) { + if (centerOfMassBuilder_ == null) { + centerOfMass_ = builderForValue.build(); + onChanged(); + } else { + centerOfMassBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+       * Center of mass (m)
+       * 
+ * + * .cmvr.api.Vec3 center_of_mass = 2; + */ + public Builder mergeCenterOfMass(cmvr.api.Geometry.Vec3 value) { + if (centerOfMassBuilder_ == null) { + if (centerOfMass_ != null) { + centerOfMass_ = + cmvr.api.Geometry.Vec3.newBuilder(centerOfMass_).mergeFrom(value).buildPartial(); + } else { + centerOfMass_ = value; + } + onChanged(); + } else { + centerOfMassBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+       * Center of mass (m)
+       * 
+ * + * .cmvr.api.Vec3 center_of_mass = 2; + */ + public Builder clearCenterOfMass() { + if (centerOfMassBuilder_ == null) { + centerOfMass_ = null; + onChanged(); + } else { + centerOfMass_ = null; + centerOfMassBuilder_ = null; + } + + return this; + } + /** + *
+       * Center of mass (m)
+       * 
+ * + * .cmvr.api.Vec3 center_of_mass = 2; + */ + public cmvr.api.Geometry.Vec3.Builder getCenterOfMassBuilder() { + + onChanged(); + return getCenterOfMassFieldBuilder().getBuilder(); + } + /** + *
+       * Center of mass (m)
+       * 
+ * + * .cmvr.api.Vec3 center_of_mass = 2; + */ + public cmvr.api.Geometry.Vec3OrBuilder getCenterOfMassOrBuilder() { + if (centerOfMassBuilder_ != null) { + return centerOfMassBuilder_.getMessageOrBuilder(); + } else { + return centerOfMass_ == null ? + cmvr.api.Geometry.Vec3.getDefaultInstance() : centerOfMass_; + } + } + /** + *
+       * Center of mass (m)
+       * 
+ * + * .cmvr.api.Vec3 center_of_mass = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Geometry.Vec3, cmvr.api.Geometry.Vec3.Builder, cmvr.api.Geometry.Vec3OrBuilder> + getCenterOfMassFieldBuilder() { + if (centerOfMassBuilder_ == null) { + centerOfMassBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Geometry.Vec3, cmvr.api.Geometry.Vec3.Builder, cmvr.api.Geometry.Vec3OrBuilder>( + getCenterOfMass(), + getParentForChildren(), + isClean()); + centerOfMass_ = null; + } + return centerOfMassBuilder_; + } + + private cmvr.api.Geometry.Inertia inertia_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Geometry.Inertia, cmvr.api.Geometry.Inertia.Builder, cmvr.api.Geometry.InertiaOrBuilder> inertiaBuilder_; + /** + *
+       * Inertia tensor
+       * 
+ * + * .cmvr.api.Inertia inertia = 3; + * @return Whether the inertia field is set. + */ + public boolean hasInertia() { + return inertiaBuilder_ != null || inertia_ != null; + } + /** + *
+       * Inertia tensor
+       * 
+ * + * .cmvr.api.Inertia inertia = 3; + * @return The inertia. + */ + public cmvr.api.Geometry.Inertia getInertia() { + if (inertiaBuilder_ == null) { + return inertia_ == null ? cmvr.api.Geometry.Inertia.getDefaultInstance() : inertia_; + } else { + return inertiaBuilder_.getMessage(); + } + } + /** + *
+       * Inertia tensor
+       * 
+ * + * .cmvr.api.Inertia inertia = 3; + */ + public Builder setInertia(cmvr.api.Geometry.Inertia value) { + if (inertiaBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + inertia_ = value; + onChanged(); + } else { + inertiaBuilder_.setMessage(value); + } + + return this; + } + /** + *
+       * Inertia tensor
+       * 
+ * + * .cmvr.api.Inertia inertia = 3; + */ + public Builder setInertia( + cmvr.api.Geometry.Inertia.Builder builderForValue) { + if (inertiaBuilder_ == null) { + inertia_ = builderForValue.build(); + onChanged(); + } else { + inertiaBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+       * Inertia tensor
+       * 
+ * + * .cmvr.api.Inertia inertia = 3; + */ + public Builder mergeInertia(cmvr.api.Geometry.Inertia value) { + if (inertiaBuilder_ == null) { + if (inertia_ != null) { + inertia_ = + cmvr.api.Geometry.Inertia.newBuilder(inertia_).mergeFrom(value).buildPartial(); + } else { + inertia_ = value; + } + onChanged(); + } else { + inertiaBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+       * Inertia tensor
+       * 
+ * + * .cmvr.api.Inertia inertia = 3; + */ + public Builder clearInertia() { + if (inertiaBuilder_ == null) { + inertia_ = null; + onChanged(); + } else { + inertia_ = null; + inertiaBuilder_ = null; + } + + return this; + } + /** + *
+       * Inertia tensor
+       * 
+ * + * .cmvr.api.Inertia inertia = 3; + */ + public cmvr.api.Geometry.Inertia.Builder getInertiaBuilder() { + + onChanged(); + return getInertiaFieldBuilder().getBuilder(); + } + /** + *
+       * Inertia tensor
+       * 
+ * + * .cmvr.api.Inertia inertia = 3; + */ + public cmvr.api.Geometry.InertiaOrBuilder getInertiaOrBuilder() { + if (inertiaBuilder_ != null) { + return inertiaBuilder_.getMessageOrBuilder(); + } else { + return inertia_ == null ? + cmvr.api.Geometry.Inertia.getDefaultInstance() : inertia_; + } + } + /** + *
+       * Inertia tensor
+       * 
+ * + * .cmvr.api.Inertia inertia = 3; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Geometry.Inertia, cmvr.api.Geometry.Inertia.Builder, cmvr.api.Geometry.InertiaOrBuilder> + getInertiaFieldBuilder() { + if (inertiaBuilder_ == null) { + inertiaBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Geometry.Inertia, cmvr.api.Geometry.Inertia.Builder, cmvr.api.Geometry.InertiaOrBuilder>( + getInertia(), + getParentForChildren(), + isClean()); + inertia_ = null; + } + return inertiaBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.Inertial) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.Inertial) + private static final cmvr.api.Geometry.Inertial DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.Geometry.Inertial(); + } + + public static cmvr.api.Geometry.Inertial getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Inertial parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.Geometry.Inertial getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface InertiaOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.Inertia) + com.google.protobuf.MessageOrBuilder { + + /** + * double ixx = 1; + * @return The ixx. + */ + double getIxx(); + + /** + * double iyy = 2; + * @return The iyy. + */ + double getIyy(); + + /** + * double izz = 3; + * @return The izz. + */ + double getIzz(); + + /** + * double ixy = 4; + * @return The ixy. + */ + double getIxy(); + + /** + * double ixz = 5; + * @return The ixz. + */ + double getIxz(); + + /** + * double iyz = 6; + * @return The iyz. + */ + double getIyz(); + } + /** + *
+   * Inertia tensor components (kg*m^2)
+   * 
+ * + * Protobuf type {@code cmvr.api.Inertia} + */ + public static final class Inertia extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.Inertia) + InertiaOrBuilder { + private static final long serialVersionUID = 0L; + // Use Inertia.newBuilder() to construct. + private Inertia(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Inertia() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Inertia(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.Geometry.internal_static_cmvr_api_Inertia_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.Geometry.internal_static_cmvr_api_Inertia_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.Geometry.Inertia.class, cmvr.api.Geometry.Inertia.Builder.class); + } + + public static final int IXX_FIELD_NUMBER = 1; + private double ixx_; + /** + * double ixx = 1; + * @return The ixx. + */ + @java.lang.Override + public double getIxx() { + return ixx_; + } + + public static final int IYY_FIELD_NUMBER = 2; + private double iyy_; + /** + * double iyy = 2; + * @return The iyy. + */ + @java.lang.Override + public double getIyy() { + return iyy_; + } + + public static final int IZZ_FIELD_NUMBER = 3; + private double izz_; + /** + * double izz = 3; + * @return The izz. + */ + @java.lang.Override + public double getIzz() { + return izz_; + } + + public static final int IXY_FIELD_NUMBER = 4; + private double ixy_; + /** + * double ixy = 4; + * @return The ixy. + */ + @java.lang.Override + public double getIxy() { + return ixy_; + } + + public static final int IXZ_FIELD_NUMBER = 5; + private double ixz_; + /** + * double ixz = 5; + * @return The ixz. + */ + @java.lang.Override + public double getIxz() { + return ixz_; + } + + public static final int IYZ_FIELD_NUMBER = 6; + private double iyz_; + /** + * double iyz = 6; + * @return The iyz. + */ + @java.lang.Override + public double getIyz() { + return iyz_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (java.lang.Double.doubleToRawLongBits(ixx_) != 0) { + output.writeDouble(1, ixx_); + } + if (java.lang.Double.doubleToRawLongBits(iyy_) != 0) { + output.writeDouble(2, iyy_); + } + if (java.lang.Double.doubleToRawLongBits(izz_) != 0) { + output.writeDouble(3, izz_); + } + if (java.lang.Double.doubleToRawLongBits(ixy_) != 0) { + output.writeDouble(4, ixy_); + } + if (java.lang.Double.doubleToRawLongBits(ixz_) != 0) { + output.writeDouble(5, ixz_); + } + if (java.lang.Double.doubleToRawLongBits(iyz_) != 0) { + output.writeDouble(6, iyz_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (java.lang.Double.doubleToRawLongBits(ixx_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeDoubleSize(1, ixx_); + } + if (java.lang.Double.doubleToRawLongBits(iyy_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeDoubleSize(2, iyy_); + } + if (java.lang.Double.doubleToRawLongBits(izz_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeDoubleSize(3, izz_); + } + if (java.lang.Double.doubleToRawLongBits(ixy_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeDoubleSize(4, ixy_); + } + if (java.lang.Double.doubleToRawLongBits(ixz_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeDoubleSize(5, ixz_); + } + if (java.lang.Double.doubleToRawLongBits(iyz_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeDoubleSize(6, iyz_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.Geometry.Inertia)) { + return super.equals(obj); + } + cmvr.api.Geometry.Inertia other = (cmvr.api.Geometry.Inertia) obj; + + if (java.lang.Double.doubleToLongBits(getIxx()) + != java.lang.Double.doubleToLongBits( + other.getIxx())) return false; + if (java.lang.Double.doubleToLongBits(getIyy()) + != java.lang.Double.doubleToLongBits( + other.getIyy())) return false; + if (java.lang.Double.doubleToLongBits(getIzz()) + != java.lang.Double.doubleToLongBits( + other.getIzz())) return false; + if (java.lang.Double.doubleToLongBits(getIxy()) + != java.lang.Double.doubleToLongBits( + other.getIxy())) return false; + if (java.lang.Double.doubleToLongBits(getIxz()) + != java.lang.Double.doubleToLongBits( + other.getIxz())) return false; + if (java.lang.Double.doubleToLongBits(getIyz()) + != java.lang.Double.doubleToLongBits( + other.getIyz())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + IXX_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + java.lang.Double.doubleToLongBits(getIxx())); + hash = (37 * hash) + IYY_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + java.lang.Double.doubleToLongBits(getIyy())); + hash = (37 * hash) + IZZ_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + java.lang.Double.doubleToLongBits(getIzz())); + hash = (37 * hash) + IXY_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + java.lang.Double.doubleToLongBits(getIxy())); + hash = (37 * hash) + IXZ_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + java.lang.Double.doubleToLongBits(getIxz())); + hash = (37 * hash) + IYZ_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + java.lang.Double.doubleToLongBits(getIyz())); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.Geometry.Inertia parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.Geometry.Inertia parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.Geometry.Inertia parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.Geometry.Inertia parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.Geometry.Inertia parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.Geometry.Inertia parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.Geometry.Inertia parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.Geometry.Inertia parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.Geometry.Inertia parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.Geometry.Inertia parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.Geometry.Inertia parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.Geometry.Inertia parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.Geometry.Inertia prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * Inertia tensor components (kg*m^2)
+     * 
+ * + * Protobuf type {@code cmvr.api.Inertia} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.Inertia) + cmvr.api.Geometry.InertiaOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.Geometry.internal_static_cmvr_api_Inertia_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.Geometry.internal_static_cmvr_api_Inertia_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.Geometry.Inertia.class, cmvr.api.Geometry.Inertia.Builder.class); + } + + // Construct using cmvr.api.Geometry.Inertia.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + ixx_ = 0D; + + iyy_ = 0D; + + izz_ = 0D; + + ixy_ = 0D; + + ixz_ = 0D; + + iyz_ = 0D; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.Geometry.internal_static_cmvr_api_Inertia_descriptor; + } + + @java.lang.Override + public cmvr.api.Geometry.Inertia getDefaultInstanceForType() { + return cmvr.api.Geometry.Inertia.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.Geometry.Inertia build() { + cmvr.api.Geometry.Inertia result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.Geometry.Inertia buildPartial() { + cmvr.api.Geometry.Inertia result = new cmvr.api.Geometry.Inertia(this); + result.ixx_ = ixx_; + result.iyy_ = iyy_; + result.izz_ = izz_; + result.ixy_ = ixy_; + result.ixz_ = ixz_; + result.iyz_ = iyz_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.Geometry.Inertia) { + return mergeFrom((cmvr.api.Geometry.Inertia)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.Geometry.Inertia other) { + if (other == cmvr.api.Geometry.Inertia.getDefaultInstance()) return this; + if (other.getIxx() != 0D) { + setIxx(other.getIxx()); + } + if (other.getIyy() != 0D) { + setIyy(other.getIyy()); + } + if (other.getIzz() != 0D) { + setIzz(other.getIzz()); + } + if (other.getIxy() != 0D) { + setIxy(other.getIxy()); + } + if (other.getIxz() != 0D) { + setIxz(other.getIxz()); + } + if (other.getIyz() != 0D) { + setIyz(other.getIyz()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 9: { + ixx_ = input.readDouble(); + + break; + } // case 9 + case 17: { + iyy_ = input.readDouble(); + + break; + } // case 17 + case 25: { + izz_ = input.readDouble(); + + break; + } // case 25 + case 33: { + ixy_ = input.readDouble(); + + break; + } // case 33 + case 41: { + ixz_ = input.readDouble(); + + break; + } // case 41 + case 49: { + iyz_ = input.readDouble(); + + break; + } // case 49 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private double ixx_ ; + /** + * double ixx = 1; + * @return The ixx. + */ + @java.lang.Override + public double getIxx() { + return ixx_; + } + /** + * double ixx = 1; + * @param value The ixx to set. + * @return This builder for chaining. + */ + public Builder setIxx(double value) { + + ixx_ = value; + onChanged(); + return this; + } + /** + * double ixx = 1; + * @return This builder for chaining. + */ + public Builder clearIxx() { + + ixx_ = 0D; + onChanged(); + return this; + } + + private double iyy_ ; + /** + * double iyy = 2; + * @return The iyy. + */ + @java.lang.Override + public double getIyy() { + return iyy_; + } + /** + * double iyy = 2; + * @param value The iyy to set. + * @return This builder for chaining. + */ + public Builder setIyy(double value) { + + iyy_ = value; + onChanged(); + return this; + } + /** + * double iyy = 2; + * @return This builder for chaining. + */ + public Builder clearIyy() { + + iyy_ = 0D; + onChanged(); + return this; + } + + private double izz_ ; + /** + * double izz = 3; + * @return The izz. + */ + @java.lang.Override + public double getIzz() { + return izz_; + } + /** + * double izz = 3; + * @param value The izz to set. + * @return This builder for chaining. + */ + public Builder setIzz(double value) { + + izz_ = value; + onChanged(); + return this; + } + /** + * double izz = 3; + * @return This builder for chaining. + */ + public Builder clearIzz() { + + izz_ = 0D; + onChanged(); + return this; + } + + private double ixy_ ; + /** + * double ixy = 4; + * @return The ixy. + */ + @java.lang.Override + public double getIxy() { + return ixy_; + } + /** + * double ixy = 4; + * @param value The ixy to set. + * @return This builder for chaining. + */ + public Builder setIxy(double value) { + + ixy_ = value; + onChanged(); + return this; + } + /** + * double ixy = 4; + * @return This builder for chaining. + */ + public Builder clearIxy() { + + ixy_ = 0D; + onChanged(); + return this; + } + + private double ixz_ ; + /** + * double ixz = 5; + * @return The ixz. + */ + @java.lang.Override + public double getIxz() { + return ixz_; + } + /** + * double ixz = 5; + * @param value The ixz to set. + * @return This builder for chaining. + */ + public Builder setIxz(double value) { + + ixz_ = value; + onChanged(); + return this; + } + /** + * double ixz = 5; + * @return This builder for chaining. + */ + public Builder clearIxz() { + + ixz_ = 0D; + onChanged(); + return this; + } + + private double iyz_ ; + /** + * double iyz = 6; + * @return The iyz. + */ + @java.lang.Override + public double getIyz() { + return iyz_; + } + /** + * double iyz = 6; + * @param value The iyz to set. + * @return This builder for chaining. + */ + public Builder setIyz(double value) { + + iyz_ = value; + onChanged(); + return this; + } + /** + * double iyz = 6; + * @return This builder for chaining. + */ + public Builder clearIyz() { + + iyz_ = 0D; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.Inertia) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.Inertia) + private static final cmvr.api.Geometry.Inertia DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.Geometry.Inertia(); + } + + public static cmvr.api.Geometry.Inertia getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Inertia parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.Geometry.Inertia getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_Vec2_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_Vec2_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_Vec3_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_Vec3_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_SE2Pose_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_SE2Pose_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_SE2Velocity_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_SE2Velocity_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_Quaternion_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_Quaternion_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_EulerAngleZYX_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_EulerAngleZYX_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_SE3Pose_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_SE3Pose_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_Inertial_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_Inertial_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_Inertia_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_Inertia_fieldAccessorTable; + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n\027cmvr/api/geometry.proto\022\010cmvr.api\"\034\n\004V" + + "ec2\022\t\n\001x\030\001 \001(\001\022\t\n\001y\030\002 \001(\001\"\'\n\004Vec3\022\t\n\001x\030\001" + + " \001(\001\022\t\n\001y\030\002 \001(\001\022\t\n\001z\030\003 \001(\001\":\n\007SE2Pose\022 \n" + + "\010position\030\001 \001(\0132\016.cmvr.api.Vec2\022\r\n\005angle" + + "\030\002 \001(\001\">\n\013SE2Velocity\022\036\n\006linear\030\001 \001(\0132\016." + + "cmvr.api.Vec2\022\017\n\007angular\030\002 \001(\001\"8\n\nQuater" + + "nion\022\t\n\001x\030\001 \001(\001\022\t\n\001y\030\002 \001(\001\022\t\n\001z\030\003 \001(\001\022\t\n" + + "\001w\030\004 \001(\001\"0\n\rEulerAngleZYX\022\t\n\001z\030\001 \001(\001\022\t\n\001" + + "y\030\002 \001(\001\022\t\n\001x\030\003 \001(\001\"\215\001\n\007SE3Pose\022 \n\010positi" + + "on\030\001 \001(\0132\016.cmvr.api.Vec3\022*\n\nquaternion\030\002" + + " \001(\0132\024.cmvr.api.QuaternionH\000\022(\n\005euler\030\003 " + + "\001(\0132\027.cmvr.api.EulerAngleZYXH\000B\n\n\010rotati" + + "on\"d\n\010Inertial\022\014\n\004mass\030\001 \001(\001\022&\n\016center_o" + + "f_mass\030\002 \001(\0132\016.cmvr.api.Vec3\022\"\n\007inertia\030" + + "\003 \001(\0132\021.cmvr.api.Inertia\"W\n\007Inertia\022\013\n\003i" + + "xx\030\001 \001(\001\022\013\n\003iyy\030\002 \001(\001\022\013\n\003izz\030\003 \001(\001\022\013\n\003ix" + + "y\030\004 \001(\001\022\013\n\003ixz\030\005 \001(\001\022\013\n\003iyz\030\006 \001(\001b\006proto" + + "3" + }; + descriptor = com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + }); + internal_static_cmvr_api_Vec2_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_cmvr_api_Vec2_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_Vec2_descriptor, + new java.lang.String[] { "X", "Y", }); + internal_static_cmvr_api_Vec3_descriptor = + getDescriptor().getMessageTypes().get(1); + internal_static_cmvr_api_Vec3_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_Vec3_descriptor, + new java.lang.String[] { "X", "Y", "Z", }); + internal_static_cmvr_api_SE2Pose_descriptor = + getDescriptor().getMessageTypes().get(2); + internal_static_cmvr_api_SE2Pose_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_SE2Pose_descriptor, + new java.lang.String[] { "Position", "Angle", }); + internal_static_cmvr_api_SE2Velocity_descriptor = + getDescriptor().getMessageTypes().get(3); + internal_static_cmvr_api_SE2Velocity_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_SE2Velocity_descriptor, + new java.lang.String[] { "Linear", "Angular", }); + internal_static_cmvr_api_Quaternion_descriptor = + getDescriptor().getMessageTypes().get(4); + internal_static_cmvr_api_Quaternion_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_Quaternion_descriptor, + new java.lang.String[] { "X", "Y", "Z", "W", }); + internal_static_cmvr_api_EulerAngleZYX_descriptor = + getDescriptor().getMessageTypes().get(5); + internal_static_cmvr_api_EulerAngleZYX_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_EulerAngleZYX_descriptor, + new java.lang.String[] { "Z", "Y", "X", }); + internal_static_cmvr_api_SE3Pose_descriptor = + getDescriptor().getMessageTypes().get(6); + internal_static_cmvr_api_SE3Pose_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_SE3Pose_descriptor, + new java.lang.String[] { "Position", "Quaternion", "Euler", "Rotation", }); + internal_static_cmvr_api_Inertial_descriptor = + getDescriptor().getMessageTypes().get(7); + internal_static_cmvr_api_Inertial_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_Inertial_descriptor, + new java.lang.String[] { "Mass", "CenterOfMass", "Inertia", }); + internal_static_cmvr_api_Inertia_descriptor = + getDescriptor().getMessageTypes().get(8); + internal_static_cmvr_api_Inertia_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_Inertia_descriptor, + new java.lang.String[] { "Ixx", "Iyy", "Izz", "Ixy", "Ixz", "Iyz", }); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/MicPhoneServiceGrpc.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/MicPhoneServiceGrpc.java new file mode 100644 index 0000000..9b37300 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/MicPhoneServiceGrpc.java @@ -0,0 +1,744 @@ +package cmvr.api; + +import static io.grpc.MethodDescriptor.generateFullMethodName; + +/** + */ +@javax.annotation.Generated( + value = "by gRPC proto compiler (version 1.52.0)", + comments = "Source: cmvr/api/microphone_service.proto") +@io.grpc.stub.annotations.GrpcGenerated +public final class MicPhoneServiceGrpc { + + private MicPhoneServiceGrpc() {} + + public static final String SERVICE_NAME = "cmvr.api.MicPhoneService"; + + // Static method descriptors that strictly reflect the proto. + private static volatile io.grpc.MethodDescriptor getGetStatusMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "GetStatus", + requestType = cmvr.api.MicrophoneCommand.GetMicStateCommand.Request.class, + responseType = cmvr.api.MicrophoneCommand.GetMicStateCommand.Feedback.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getGetStatusMethod() { + io.grpc.MethodDescriptor getGetStatusMethod; + if ((getGetStatusMethod = MicPhoneServiceGrpc.getGetStatusMethod) == null) { + synchronized (MicPhoneServiceGrpc.class) { + if ((getGetStatusMethod = MicPhoneServiceGrpc.getGetStatusMethod) == null) { + MicPhoneServiceGrpc.getGetStatusMethod = getGetStatusMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetStatus")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.MicrophoneCommand.GetMicStateCommand.Request.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.MicrophoneCommand.GetMicStateCommand.Feedback.getDefaultInstance())) + .setSchemaDescriptor(new MicPhoneServiceMethodDescriptorSupplier("GetStatus")) + .build(); + } + } + } + return getGetStatusMethod; + } + + private static volatile io.grpc.MethodDescriptor getStartRecordMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "StartRecord", + requestType = cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request.class, + responseType = cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Feedback.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getStartRecordMethod() { + io.grpc.MethodDescriptor getStartRecordMethod; + if ((getStartRecordMethod = MicPhoneServiceGrpc.getStartRecordMethod) == null) { + synchronized (MicPhoneServiceGrpc.class) { + if ((getStartRecordMethod = MicPhoneServiceGrpc.getStartRecordMethod) == null) { + MicPhoneServiceGrpc.getStartRecordMethod = getStartRecordMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "StartRecord")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Feedback.getDefaultInstance())) + .setSchemaDescriptor(new MicPhoneServiceMethodDescriptorSupplier("StartRecord")) + .build(); + } + } + } + return getStartRecordMethod; + } + + private static volatile io.grpc.MethodDescriptor getStopRecordMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "StopRecord", + requestType = cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request.class, + responseType = cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Feedback.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getStopRecordMethod() { + io.grpc.MethodDescriptor getStopRecordMethod; + if ((getStopRecordMethod = MicPhoneServiceGrpc.getStopRecordMethod) == null) { + synchronized (MicPhoneServiceGrpc.class) { + if ((getStopRecordMethod = MicPhoneServiceGrpc.getStopRecordMethod) == null) { + MicPhoneServiceGrpc.getStopRecordMethod = getStopRecordMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "StopRecord")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Feedback.getDefaultInstance())) + .setSchemaDescriptor(new MicPhoneServiceMethodDescriptorSupplier("StopRecord")) + .build(); + } + } + } + return getStopRecordMethod; + } + + private static volatile io.grpc.MethodDescriptor getPauseRecordMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "PauseRecord", + requestType = cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request.class, + responseType = cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Feedback.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getPauseRecordMethod() { + io.grpc.MethodDescriptor getPauseRecordMethod; + if ((getPauseRecordMethod = MicPhoneServiceGrpc.getPauseRecordMethod) == null) { + synchronized (MicPhoneServiceGrpc.class) { + if ((getPauseRecordMethod = MicPhoneServiceGrpc.getPauseRecordMethod) == null) { + MicPhoneServiceGrpc.getPauseRecordMethod = getPauseRecordMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "PauseRecord")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Feedback.getDefaultInstance())) + .setSchemaDescriptor(new MicPhoneServiceMethodDescriptorSupplier("PauseRecord")) + .build(); + } + } + } + return getPauseRecordMethod; + } + + private static volatile io.grpc.MethodDescriptor getResumeRecordMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "ResumeRecord", + requestType = cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request.class, + responseType = cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Feedback.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getResumeRecordMethod() { + io.grpc.MethodDescriptor getResumeRecordMethod; + if ((getResumeRecordMethod = MicPhoneServiceGrpc.getResumeRecordMethod) == null) { + synchronized (MicPhoneServiceGrpc.class) { + if ((getResumeRecordMethod = MicPhoneServiceGrpc.getResumeRecordMethod) == null) { + MicPhoneServiceGrpc.getResumeRecordMethod = getResumeRecordMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "ResumeRecord")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Feedback.getDefaultInstance())) + .setSchemaDescriptor(new MicPhoneServiceMethodDescriptorSupplier("ResumeRecord")) + .build(); + } + } + } + return getResumeRecordMethod; + } + + private static volatile io.grpc.MethodDescriptor getSetVolumeMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "SetVolume", + requestType = cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request.class, + responseType = cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Feedback.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getSetVolumeMethod() { + io.grpc.MethodDescriptor getSetVolumeMethod; + if ((getSetVolumeMethod = MicPhoneServiceGrpc.getSetVolumeMethod) == null) { + synchronized (MicPhoneServiceGrpc.class) { + if ((getSetVolumeMethod = MicPhoneServiceGrpc.getSetVolumeMethod) == null) { + MicPhoneServiceGrpc.getSetVolumeMethod = getSetVolumeMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "SetVolume")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Feedback.getDefaultInstance())) + .setSchemaDescriptor(new MicPhoneServiceMethodDescriptorSupplier("SetVolume")) + .build(); + } + } + } + return getSetVolumeMethod; + } + + private static volatile io.grpc.MethodDescriptor getGetVolumeMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "GetVolume", + requestType = cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request.class, + responseType = cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Feedback.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getGetVolumeMethod() { + io.grpc.MethodDescriptor getGetVolumeMethod; + if ((getGetVolumeMethod = MicPhoneServiceGrpc.getGetVolumeMethod) == null) { + synchronized (MicPhoneServiceGrpc.class) { + if ((getGetVolumeMethod = MicPhoneServiceGrpc.getGetVolumeMethod) == null) { + MicPhoneServiceGrpc.getGetVolumeMethod = getGetVolumeMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetVolume")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Feedback.getDefaultInstance())) + .setSchemaDescriptor(new MicPhoneServiceMethodDescriptorSupplier("GetVolume")) + .build(); + } + } + } + return getGetVolumeMethod; + } + + /** + * Creates a new async stub that supports all call types for the service + */ + public static MicPhoneServiceStub newStub(io.grpc.Channel channel) { + io.grpc.stub.AbstractStub.StubFactory factory = + new io.grpc.stub.AbstractStub.StubFactory() { + @java.lang.Override + public MicPhoneServiceStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new MicPhoneServiceStub(channel, callOptions); + } + }; + return MicPhoneServiceStub.newStub(factory, channel); + } + + /** + * Creates a new blocking-style stub that supports unary and streaming output calls on the service + */ + public static MicPhoneServiceBlockingStub newBlockingStub( + io.grpc.Channel channel) { + io.grpc.stub.AbstractStub.StubFactory factory = + new io.grpc.stub.AbstractStub.StubFactory() { + @java.lang.Override + public MicPhoneServiceBlockingStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new MicPhoneServiceBlockingStub(channel, callOptions); + } + }; + return MicPhoneServiceBlockingStub.newStub(factory, channel); + } + + /** + * Creates a new ListenableFuture-style stub that supports unary calls on the service + */ + public static MicPhoneServiceFutureStub newFutureStub( + io.grpc.Channel channel) { + io.grpc.stub.AbstractStub.StubFactory factory = + new io.grpc.stub.AbstractStub.StubFactory() { + @java.lang.Override + public MicPhoneServiceFutureStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new MicPhoneServiceFutureStub(channel, callOptions); + } + }; + return MicPhoneServiceFutureStub.newStub(factory, channel); + } + + /** + */ + public static abstract class MicPhoneServiceImplBase implements io.grpc.BindableService { + + /** + *
+     * 基本控制
+     * 
+ */ + public void getStatus(cmvr.api.MicrophoneCommand.GetMicStateCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetStatusMethod(), responseObserver); + } + + /** + */ + public void startRecord(cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getStartRecordMethod(), responseObserver); + } + + /** + */ + public void stopRecord(cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getStopRecordMethod(), responseObserver); + } + + /** + */ + public void pauseRecord(cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getPauseRecordMethod(), responseObserver); + } + + /** + */ + public void resumeRecord(cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getResumeRecordMethod(), responseObserver); + } + + /** + *
+     * 音量控制
+     * 
+ */ + public void setVolume(cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetVolumeMethod(), responseObserver); + } + + /** + */ + public void getVolume(cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetVolumeMethod(), responseObserver); + } + + @java.lang.Override public final io.grpc.ServerServiceDefinition bindService() { + return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()) + .addMethod( + getGetStatusMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + cmvr.api.MicrophoneCommand.GetMicStateCommand.Request, + cmvr.api.MicrophoneCommand.GetMicStateCommand.Feedback>( + this, METHODID_GET_STATUS))) + .addMethod( + getStartRecordMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request, + cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Feedback>( + this, METHODID_START_RECORD))) + .addMethod( + getStopRecordMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request, + cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Feedback>( + this, METHODID_STOP_RECORD))) + .addMethod( + getPauseRecordMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request, + cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Feedback>( + this, METHODID_PAUSE_RECORD))) + .addMethod( + getResumeRecordMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request, + cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Feedback>( + this, METHODID_RESUME_RECORD))) + .addMethod( + getSetVolumeMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request, + cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Feedback>( + this, METHODID_SET_VOLUME))) + .addMethod( + getGetVolumeMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request, + cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Feedback>( + this, METHODID_GET_VOLUME))) + .build(); + } + } + + /** + */ + public static final class MicPhoneServiceStub extends io.grpc.stub.AbstractAsyncStub { + private MicPhoneServiceStub( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + super(channel, callOptions); + } + + @java.lang.Override + protected MicPhoneServiceStub build( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new MicPhoneServiceStub(channel, callOptions); + } + + /** + *
+     * 基本控制
+     * 
+ */ + public void getStatus(cmvr.api.MicrophoneCommand.GetMicStateCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getGetStatusMethod(), getCallOptions()), request, responseObserver); + } + + /** + */ + public void startRecord(cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getStartRecordMethod(), getCallOptions()), request, responseObserver); + } + + /** + */ + public void stopRecord(cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getStopRecordMethod(), getCallOptions()), request, responseObserver); + } + + /** + */ + public void pauseRecord(cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getPauseRecordMethod(), getCallOptions()), request, responseObserver); + } + + /** + */ + public void resumeRecord(cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getResumeRecordMethod(), getCallOptions()), request, responseObserver); + } + + /** + *
+     * 音量控制
+     * 
+ */ + public void setVolume(cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getSetVolumeMethod(), getCallOptions()), request, responseObserver); + } + + /** + */ + public void getVolume(cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getGetVolumeMethod(), getCallOptions()), request, responseObserver); + } + } + + /** + */ + public static final class MicPhoneServiceBlockingStub extends io.grpc.stub.AbstractBlockingStub { + private MicPhoneServiceBlockingStub( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + super(channel, callOptions); + } + + @java.lang.Override + protected MicPhoneServiceBlockingStub build( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new MicPhoneServiceBlockingStub(channel, callOptions); + } + + /** + *
+     * 基本控制
+     * 
+ */ + public cmvr.api.MicrophoneCommand.GetMicStateCommand.Feedback getStatus(cmvr.api.MicrophoneCommand.GetMicStateCommand.Request request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getGetStatusMethod(), getCallOptions(), request); + } + + /** + */ + public cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Feedback startRecord(cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getStartRecordMethod(), getCallOptions(), request); + } + + /** + */ + public cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Feedback stopRecord(cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getStopRecordMethod(), getCallOptions(), request); + } + + /** + */ + public cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Feedback pauseRecord(cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getPauseRecordMethod(), getCallOptions(), request); + } + + /** + */ + public cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Feedback resumeRecord(cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getResumeRecordMethod(), getCallOptions(), request); + } + + /** + *
+     * 音量控制
+     * 
+ */ + public cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Feedback setVolume(cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getSetVolumeMethod(), getCallOptions(), request); + } + + /** + */ + public cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Feedback getVolume(cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getGetVolumeMethod(), getCallOptions(), request); + } + } + + /** + */ + public static final class MicPhoneServiceFutureStub extends io.grpc.stub.AbstractFutureStub { + private MicPhoneServiceFutureStub( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + super(channel, callOptions); + } + + @java.lang.Override + protected MicPhoneServiceFutureStub build( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new MicPhoneServiceFutureStub(channel, callOptions); + } + + /** + *
+     * 基本控制
+     * 
+ */ + public com.google.common.util.concurrent.ListenableFuture getStatus( + cmvr.api.MicrophoneCommand.GetMicStateCommand.Request request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getGetStatusMethod(), getCallOptions()), request); + } + + /** + */ + public com.google.common.util.concurrent.ListenableFuture startRecord( + cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getStartRecordMethod(), getCallOptions()), request); + } + + /** + */ + public com.google.common.util.concurrent.ListenableFuture stopRecord( + cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getStopRecordMethod(), getCallOptions()), request); + } + + /** + */ + public com.google.common.util.concurrent.ListenableFuture pauseRecord( + cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getPauseRecordMethod(), getCallOptions()), request); + } + + /** + */ + public com.google.common.util.concurrent.ListenableFuture resumeRecord( + cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getResumeRecordMethod(), getCallOptions()), request); + } + + /** + *
+     * 音量控制
+     * 
+ */ + public com.google.common.util.concurrent.ListenableFuture setVolume( + cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getSetVolumeMethod(), getCallOptions()), request); + } + + /** + */ + public com.google.common.util.concurrent.ListenableFuture getVolume( + cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getGetVolumeMethod(), getCallOptions()), request); + } + } + + private static final int METHODID_GET_STATUS = 0; + private static final int METHODID_START_RECORD = 1; + private static final int METHODID_STOP_RECORD = 2; + private static final int METHODID_PAUSE_RECORD = 3; + private static final int METHODID_RESUME_RECORD = 4; + private static final int METHODID_SET_VOLUME = 5; + private static final int METHODID_GET_VOLUME = 6; + + private static final class MethodHandlers implements + io.grpc.stub.ServerCalls.UnaryMethod, + io.grpc.stub.ServerCalls.ServerStreamingMethod, + io.grpc.stub.ServerCalls.ClientStreamingMethod, + io.grpc.stub.ServerCalls.BidiStreamingMethod { + private final MicPhoneServiceImplBase serviceImpl; + private final int methodId; + + MethodHandlers(MicPhoneServiceImplBase serviceImpl, int methodId) { + this.serviceImpl = serviceImpl; + this.methodId = methodId; + } + + @java.lang.Override + @java.lang.SuppressWarnings("unchecked") + public void invoke(Req request, io.grpc.stub.StreamObserver responseObserver) { + switch (methodId) { + case METHODID_GET_STATUS: + serviceImpl.getStatus((cmvr.api.MicrophoneCommand.GetMicStateCommand.Request) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; + case METHODID_START_RECORD: + serviceImpl.startRecord((cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; + case METHODID_STOP_RECORD: + serviceImpl.stopRecord((cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; + case METHODID_PAUSE_RECORD: + serviceImpl.pauseRecord((cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; + case METHODID_RESUME_RECORD: + serviceImpl.resumeRecord((cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; + case METHODID_SET_VOLUME: + serviceImpl.setVolume((cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; + case METHODID_GET_VOLUME: + serviceImpl.getVolume((cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; + default: + throw new AssertionError(); + } + } + + @java.lang.Override + @java.lang.SuppressWarnings("unchecked") + public io.grpc.stub.StreamObserver invoke( + io.grpc.stub.StreamObserver responseObserver) { + switch (methodId) { + default: + throw new AssertionError(); + } + } + } + + private static abstract class MicPhoneServiceBaseDescriptorSupplier + implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier { + MicPhoneServiceBaseDescriptorSupplier() {} + + @java.lang.Override + public com.google.protobuf.Descriptors.FileDescriptor getFileDescriptor() { + return cmvr.api.MicrophoneService.getDescriptor(); + } + + @java.lang.Override + public com.google.protobuf.Descriptors.ServiceDescriptor getServiceDescriptor() { + return getFileDescriptor().findServiceByName("MicPhoneService"); + } + } + + private static final class MicPhoneServiceFileDescriptorSupplier + extends MicPhoneServiceBaseDescriptorSupplier { + MicPhoneServiceFileDescriptorSupplier() {} + } + + private static final class MicPhoneServiceMethodDescriptorSupplier + extends MicPhoneServiceBaseDescriptorSupplier + implements io.grpc.protobuf.ProtoMethodDescriptorSupplier { + private final String methodName; + + MicPhoneServiceMethodDescriptorSupplier(String methodName) { + this.methodName = methodName; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.MethodDescriptor getMethodDescriptor() { + return getServiceDescriptor().findMethodByName(methodName); + } + } + + private static volatile io.grpc.ServiceDescriptor serviceDescriptor; + + public static io.grpc.ServiceDescriptor getServiceDescriptor() { + io.grpc.ServiceDescriptor result = serviceDescriptor; + if (result == null) { + synchronized (MicPhoneServiceGrpc.class) { + result = serviceDescriptor; + if (result == null) { + serviceDescriptor = result = io.grpc.ServiceDescriptor.newBuilder(SERVICE_NAME) + .setSchemaDescriptor(new MicPhoneServiceFileDescriptorSupplier()) + .addMethod(getGetStatusMethod()) + .addMethod(getStartRecordMethod()) + .addMethod(getStopRecordMethod()) + .addMethod(getPauseRecordMethod()) + .addMethod(getResumeRecordMethod()) + .addMethod(getSetVolumeMethod()) + .addMethod(getGetVolumeMethod()) + .build(); + } + } + } + return result; + } +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/MicrophoneCommand.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/MicrophoneCommand.java new file mode 100644 index 0000000..4030ae1 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/MicrophoneCommand.java @@ -0,0 +1,12828 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: cmvr/api/microphone_command.proto + +package cmvr.api; + +public final class MicrophoneCommand { + private MicrophoneCommand() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistryLite registry) { + } + + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + registerAllExtensions( + (com.google.protobuf.ExtensionRegistryLite) registry); + } + public interface MicStateOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.MicState) + com.google.protobuf.MessageOrBuilder { + + /** + * bool is_initialized = 1; + * @return The isInitialized. + */ + boolean getIsInitialized(); + + /** + * bool is_running = 2; + * @return The isRunning. + */ + boolean getIsRunning(); + + /** + * bool is_recording = 3; + * @return The isRecording. + */ + boolean getIsRecording(); + + /** + * int32 volume = 4; + * @return The volume. + */ + int getVolume(); + + /** + * string error_message = 5; + * @return The errorMessage. + */ + java.lang.String getErrorMessage(); + /** + * string error_message = 5; + * @return The bytes for errorMessage. + */ + com.google.protobuf.ByteString + getErrorMessageBytes(); + } + /** + * Protobuf type {@code cmvr.api.MicState} + */ + public static final class MicState extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.MicState) + MicStateOrBuilder { + private static final long serialVersionUID = 0L; + // Use MicState.newBuilder() to construct. + private MicState(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private MicState() { + errorMessage_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new MicState(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_MicState_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_MicState_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.MicState.class, cmvr.api.MicrophoneCommand.MicState.Builder.class); + } + + public static final int IS_INITIALIZED_FIELD_NUMBER = 1; + private boolean isInitialized_; + /** + * bool is_initialized = 1; + * @return The isInitialized. + */ + @java.lang.Override + public boolean getIsInitialized() { + return isInitialized_; + } + + public static final int IS_RUNNING_FIELD_NUMBER = 2; + private boolean isRunning_; + /** + * bool is_running = 2; + * @return The isRunning. + */ + @java.lang.Override + public boolean getIsRunning() { + return isRunning_; + } + + public static final int IS_RECORDING_FIELD_NUMBER = 3; + private boolean isRecording_; + /** + * bool is_recording = 3; + * @return The isRecording. + */ + @java.lang.Override + public boolean getIsRecording() { + return isRecording_; + } + + public static final int VOLUME_FIELD_NUMBER = 4; + private int volume_; + /** + * int32 volume = 4; + * @return The volume. + */ + @java.lang.Override + public int getVolume() { + return volume_; + } + + public static final int ERROR_MESSAGE_FIELD_NUMBER = 5; + private volatile java.lang.Object errorMessage_; + /** + * string error_message = 5; + * @return The errorMessage. + */ + @java.lang.Override + public java.lang.String getErrorMessage() { + java.lang.Object ref = errorMessage_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + errorMessage_ = s; + return s; + } + } + /** + * string error_message = 5; + * @return The bytes for errorMessage. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getErrorMessageBytes() { + java.lang.Object ref = errorMessage_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + errorMessage_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (isInitialized_ != false) { + output.writeBool(1, isInitialized_); + } + if (isRunning_ != false) { + output.writeBool(2, isRunning_); + } + if (isRecording_ != false) { + output.writeBool(3, isRecording_); + } + if (volume_ != 0) { + output.writeInt32(4, volume_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(errorMessage_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 5, errorMessage_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (isInitialized_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(1, isInitialized_); + } + if (isRunning_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(2, isRunning_); + } + if (isRecording_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(3, isRecording_); + } + if (volume_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(4, volume_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(errorMessage_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, errorMessage_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.MicrophoneCommand.MicState)) { + return super.equals(obj); + } + cmvr.api.MicrophoneCommand.MicState other = (cmvr.api.MicrophoneCommand.MicState) obj; + + if (getIsInitialized() + != other.getIsInitialized()) return false; + if (getIsRunning() + != other.getIsRunning()) return false; + if (getIsRecording() + != other.getIsRecording()) return false; + if (getVolume() + != other.getVolume()) return false; + if (!getErrorMessage() + .equals(other.getErrorMessage())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + IS_INITIALIZED_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getIsInitialized()); + hash = (37 * hash) + IS_RUNNING_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getIsRunning()); + hash = (37 * hash) + IS_RECORDING_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getIsRecording()); + hash = (37 * hash) + VOLUME_FIELD_NUMBER; + hash = (53 * hash) + getVolume(); + hash = (37 * hash) + ERROR_MESSAGE_FIELD_NUMBER; + hash = (53 * hash) + getErrorMessage().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.MicrophoneCommand.MicState parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.MicState parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.MicState parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.MicState parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.MicState parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.MicState parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.MicState parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.MicState parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.MicState parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.MicState parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.MicState parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.MicState parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.MicrophoneCommand.MicState prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.MicState} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.MicState) + cmvr.api.MicrophoneCommand.MicStateOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_MicState_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_MicState_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.MicState.class, cmvr.api.MicrophoneCommand.MicState.Builder.class); + } + + // Construct using cmvr.api.MicrophoneCommand.MicState.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + isInitialized_ = false; + + isRunning_ = false; + + isRecording_ = false; + + volume_ = 0; + + errorMessage_ = ""; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_MicState_descriptor; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.MicState getDefaultInstanceForType() { + return cmvr.api.MicrophoneCommand.MicState.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.MicState build() { + cmvr.api.MicrophoneCommand.MicState result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.MicState buildPartial() { + cmvr.api.MicrophoneCommand.MicState result = new cmvr.api.MicrophoneCommand.MicState(this); + result.isInitialized_ = isInitialized_; + result.isRunning_ = isRunning_; + result.isRecording_ = isRecording_; + result.volume_ = volume_; + result.errorMessage_ = errorMessage_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.MicrophoneCommand.MicState) { + return mergeFrom((cmvr.api.MicrophoneCommand.MicState)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.MicrophoneCommand.MicState other) { + if (other == cmvr.api.MicrophoneCommand.MicState.getDefaultInstance()) return this; + if (other.getIsInitialized() != false) { + setIsInitialized(other.getIsInitialized()); + } + if (other.getIsRunning() != false) { + setIsRunning(other.getIsRunning()); + } + if (other.getIsRecording() != false) { + setIsRecording(other.getIsRecording()); + } + if (other.getVolume() != 0) { + setVolume(other.getVolume()); + } + if (!other.getErrorMessage().isEmpty()) { + errorMessage_ = other.errorMessage_; + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + isInitialized_ = input.readBool(); + + break; + } // case 8 + case 16: { + isRunning_ = input.readBool(); + + break; + } // case 16 + case 24: { + isRecording_ = input.readBool(); + + break; + } // case 24 + case 32: { + volume_ = input.readInt32(); + + break; + } // case 32 + case 42: { + errorMessage_ = input.readStringRequireUtf8(); + + break; + } // case 42 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private boolean isInitialized_ ; + /** + * bool is_initialized = 1; + * @return The isInitialized. + */ + @java.lang.Override + public boolean getIsInitialized() { + return isInitialized_; + } + /** + * bool is_initialized = 1; + * @param value The isInitialized to set. + * @return This builder for chaining. + */ + public Builder setIsInitialized(boolean value) { + + isInitialized_ = value; + onChanged(); + return this; + } + /** + * bool is_initialized = 1; + * @return This builder for chaining. + */ + public Builder clearIsInitialized() { + + isInitialized_ = false; + onChanged(); + return this; + } + + private boolean isRunning_ ; + /** + * bool is_running = 2; + * @return The isRunning. + */ + @java.lang.Override + public boolean getIsRunning() { + return isRunning_; + } + /** + * bool is_running = 2; + * @param value The isRunning to set. + * @return This builder for chaining. + */ + public Builder setIsRunning(boolean value) { + + isRunning_ = value; + onChanged(); + return this; + } + /** + * bool is_running = 2; + * @return This builder for chaining. + */ + public Builder clearIsRunning() { + + isRunning_ = false; + onChanged(); + return this; + } + + private boolean isRecording_ ; + /** + * bool is_recording = 3; + * @return The isRecording. + */ + @java.lang.Override + public boolean getIsRecording() { + return isRecording_; + } + /** + * bool is_recording = 3; + * @param value The isRecording to set. + * @return This builder for chaining. + */ + public Builder setIsRecording(boolean value) { + + isRecording_ = value; + onChanged(); + return this; + } + /** + * bool is_recording = 3; + * @return This builder for chaining. + */ + public Builder clearIsRecording() { + + isRecording_ = false; + onChanged(); + return this; + } + + private int volume_ ; + /** + * int32 volume = 4; + * @return The volume. + */ + @java.lang.Override + public int getVolume() { + return volume_; + } + /** + * int32 volume = 4; + * @param value The volume to set. + * @return This builder for chaining. + */ + public Builder setVolume(int value) { + + volume_ = value; + onChanged(); + return this; + } + /** + * int32 volume = 4; + * @return This builder for chaining. + */ + public Builder clearVolume() { + + volume_ = 0; + onChanged(); + return this; + } + + private java.lang.Object errorMessage_ = ""; + /** + * string error_message = 5; + * @return The errorMessage. + */ + public java.lang.String getErrorMessage() { + java.lang.Object ref = errorMessage_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + errorMessage_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string error_message = 5; + * @return The bytes for errorMessage. + */ + public com.google.protobuf.ByteString + getErrorMessageBytes() { + java.lang.Object ref = errorMessage_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + errorMessage_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string error_message = 5; + * @param value The errorMessage to set. + * @return This builder for chaining. + */ + public Builder setErrorMessage( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + errorMessage_ = value; + onChanged(); + return this; + } + /** + * string error_message = 5; + * @return This builder for chaining. + */ + public Builder clearErrorMessage() { + + errorMessage_ = getDefaultInstance().getErrorMessage(); + onChanged(); + return this; + } + /** + * string error_message = 5; + * @param value The bytes for errorMessage to set. + * @return This builder for chaining. + */ + public Builder setErrorMessageBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + errorMessage_ = value; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.MicState) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.MicState) + private static final cmvr.api.MicrophoneCommand.MicState DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.MicrophoneCommand.MicState(); + } + + public static cmvr.api.MicrophoneCommand.MicState getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public MicState parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.MicState getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface GetMicStateCommandOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetMicStateCommand) + com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code cmvr.api.GetMicStateCommand} + */ + public static final class GetMicStateCommand extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetMicStateCommand) + GetMicStateCommandOrBuilder { + private static final long serialVersionUID = 0L; + // Use GetMicStateCommand.newBuilder() to construct. + private GetMicStateCommand(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private GetMicStateCommand() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new GetMicStateCommand(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_GetMicStateCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_GetMicStateCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.GetMicStateCommand.class, cmvr.api.MicrophoneCommand.GetMicStateCommand.Builder.class); + } + + public interface RequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetMicStateCommand.Request) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Request getHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.GetMicStateCommand.Request} + */ + public static final class Request extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetMicStateCommand.Request) + RequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use Request.newBuilder() to construct. + private Request(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Request() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Request(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_GetMicStateCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_GetMicStateCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.GetMicStateCommand.Request.class, cmvr.api.MicrophoneCommand.GetMicStateCommand.Request.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Request header_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.MicrophoneCommand.GetMicStateCommand.Request)) { + return super.equals(obj); + } + cmvr.api.MicrophoneCommand.GetMicStateCommand.Request other = (cmvr.api.MicrophoneCommand.GetMicStateCommand.Request) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.MicrophoneCommand.GetMicStateCommand.Request parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.GetMicStateCommand.Request parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.GetMicStateCommand.Request parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.GetMicStateCommand.Request parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.GetMicStateCommand.Request parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.GetMicStateCommand.Request parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.GetMicStateCommand.Request parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.GetMicStateCommand.Request parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.GetMicStateCommand.Request parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.GetMicStateCommand.Request parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.GetMicStateCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.GetMicStateCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.MicrophoneCommand.GetMicStateCommand.Request prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetMicStateCommand.Request} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetMicStateCommand.Request) + cmvr.api.MicrophoneCommand.GetMicStateCommand.RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_GetMicStateCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_GetMicStateCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.GetMicStateCommand.Request.class, cmvr.api.MicrophoneCommand.GetMicStateCommand.Request.Builder.class); + } + + // Construct using cmvr.api.MicrophoneCommand.GetMicStateCommand.Request.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_GetMicStateCommand_Request_descriptor; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.GetMicStateCommand.Request getDefaultInstanceForType() { + return cmvr.api.MicrophoneCommand.GetMicStateCommand.Request.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.GetMicStateCommand.Request build() { + cmvr.api.MicrophoneCommand.GetMicStateCommand.Request result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.GetMicStateCommand.Request buildPartial() { + cmvr.api.MicrophoneCommand.GetMicStateCommand.Request result = new cmvr.api.MicrophoneCommand.GetMicStateCommand.Request(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.MicrophoneCommand.GetMicStateCommand.Request) { + return mergeFrom((cmvr.api.MicrophoneCommand.GetMicStateCommand.Request)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.MicrophoneCommand.GetMicStateCommand.Request other) { + if (other == cmvr.api.MicrophoneCommand.GetMicStateCommand.Request.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Request header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Request getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Request.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Request.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.Request.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetMicStateCommand.Request) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetMicStateCommand.Request) + private static final cmvr.api.MicrophoneCommand.GetMicStateCommand.Request DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.MicrophoneCommand.GetMicStateCommand.Request(); + } + + public static cmvr.api.MicrophoneCommand.GetMicStateCommand.Request getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.GetMicStateCommand.Request getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface FeedbackOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetMicStateCommand.Feedback) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Feedback getHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder(); + + /** + * .cmvr.api.MicState state = 2; + * @return Whether the state field is set. + */ + boolean hasState(); + /** + * .cmvr.api.MicState state = 2; + * @return The state. + */ + cmvr.api.MicrophoneCommand.MicState getState(); + /** + * .cmvr.api.MicState state = 2; + */ + cmvr.api.MicrophoneCommand.MicStateOrBuilder getStateOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.GetMicStateCommand.Feedback} + */ + public static final class Feedback extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetMicStateCommand.Feedback) + FeedbackOrBuilder { + private static final long serialVersionUID = 0L; + // Use Feedback.newBuilder() to construct. + private Feedback(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Feedback() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Feedback(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_GetMicStateCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_GetMicStateCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.GetMicStateCommand.Feedback.class, cmvr.api.MicrophoneCommand.GetMicStateCommand.Feedback.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Feedback header_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + public static final int STATE_FIELD_NUMBER = 2; + private cmvr.api.MicrophoneCommand.MicState state_; + /** + * .cmvr.api.MicState state = 2; + * @return Whether the state field is set. + */ + @java.lang.Override + public boolean hasState() { + return state_ != null; + } + /** + * .cmvr.api.MicState state = 2; + * @return The state. + */ + @java.lang.Override + public cmvr.api.MicrophoneCommand.MicState getState() { + return state_ == null ? cmvr.api.MicrophoneCommand.MicState.getDefaultInstance() : state_; + } + /** + * .cmvr.api.MicState state = 2; + */ + @java.lang.Override + public cmvr.api.MicrophoneCommand.MicStateOrBuilder getStateOrBuilder() { + return getState(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + if (state_ != null) { + output.writeMessage(2, getState()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + if (state_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, getState()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.MicrophoneCommand.GetMicStateCommand.Feedback)) { + return super.equals(obj); + } + cmvr.api.MicrophoneCommand.GetMicStateCommand.Feedback other = (cmvr.api.MicrophoneCommand.GetMicStateCommand.Feedback) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (hasState() != other.hasState()) return false; + if (hasState()) { + if (!getState() + .equals(other.getState())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + if (hasState()) { + hash = (37 * hash) + STATE_FIELD_NUMBER; + hash = (53 * hash) + getState().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.MicrophoneCommand.GetMicStateCommand.Feedback parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.GetMicStateCommand.Feedback parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.GetMicStateCommand.Feedback parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.GetMicStateCommand.Feedback parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.GetMicStateCommand.Feedback parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.GetMicStateCommand.Feedback parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.GetMicStateCommand.Feedback parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.GetMicStateCommand.Feedback parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.GetMicStateCommand.Feedback parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.GetMicStateCommand.Feedback parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.GetMicStateCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.GetMicStateCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.MicrophoneCommand.GetMicStateCommand.Feedback prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetMicStateCommand.Feedback} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetMicStateCommand.Feedback) + cmvr.api.MicrophoneCommand.GetMicStateCommand.FeedbackOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_GetMicStateCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_GetMicStateCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.GetMicStateCommand.Feedback.class, cmvr.api.MicrophoneCommand.GetMicStateCommand.Feedback.Builder.class); + } + + // Construct using cmvr.api.MicrophoneCommand.GetMicStateCommand.Feedback.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + if (stateBuilder_ == null) { + state_ = null; + } else { + state_ = null; + stateBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_GetMicStateCommand_Feedback_descriptor; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.GetMicStateCommand.Feedback getDefaultInstanceForType() { + return cmvr.api.MicrophoneCommand.GetMicStateCommand.Feedback.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.GetMicStateCommand.Feedback build() { + cmvr.api.MicrophoneCommand.GetMicStateCommand.Feedback result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.GetMicStateCommand.Feedback buildPartial() { + cmvr.api.MicrophoneCommand.GetMicStateCommand.Feedback result = new cmvr.api.MicrophoneCommand.GetMicStateCommand.Feedback(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + if (stateBuilder_ == null) { + result.state_ = state_; + } else { + result.state_ = stateBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.MicrophoneCommand.GetMicStateCommand.Feedback) { + return mergeFrom((cmvr.api.MicrophoneCommand.GetMicStateCommand.Feedback)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.MicrophoneCommand.GetMicStateCommand.Feedback other) { + if (other == cmvr.api.MicrophoneCommand.GetMicStateCommand.Feedback.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + if (other.hasState()) { + mergeState(other.getState()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + case 18: { + input.readMessage( + getStateFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 18 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Feedback header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Feedback.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Feedback.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.Feedback.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + + private cmvr.api.MicrophoneCommand.MicState state_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.MicrophoneCommand.MicState, cmvr.api.MicrophoneCommand.MicState.Builder, cmvr.api.MicrophoneCommand.MicStateOrBuilder> stateBuilder_; + /** + * .cmvr.api.MicState state = 2; + * @return Whether the state field is set. + */ + public boolean hasState() { + return stateBuilder_ != null || state_ != null; + } + /** + * .cmvr.api.MicState state = 2; + * @return The state. + */ + public cmvr.api.MicrophoneCommand.MicState getState() { + if (stateBuilder_ == null) { + return state_ == null ? cmvr.api.MicrophoneCommand.MicState.getDefaultInstance() : state_; + } else { + return stateBuilder_.getMessage(); + } + } + /** + * .cmvr.api.MicState state = 2; + */ + public Builder setState(cmvr.api.MicrophoneCommand.MicState value) { + if (stateBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + state_ = value; + onChanged(); + } else { + stateBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.MicState state = 2; + */ + public Builder setState( + cmvr.api.MicrophoneCommand.MicState.Builder builderForValue) { + if (stateBuilder_ == null) { + state_ = builderForValue.build(); + onChanged(); + } else { + stateBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.MicState state = 2; + */ + public Builder mergeState(cmvr.api.MicrophoneCommand.MicState value) { + if (stateBuilder_ == null) { + if (state_ != null) { + state_ = + cmvr.api.MicrophoneCommand.MicState.newBuilder(state_).mergeFrom(value).buildPartial(); + } else { + state_ = value; + } + onChanged(); + } else { + stateBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.MicState state = 2; + */ + public Builder clearState() { + if (stateBuilder_ == null) { + state_ = null; + onChanged(); + } else { + state_ = null; + stateBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.MicState state = 2; + */ + public cmvr.api.MicrophoneCommand.MicState.Builder getStateBuilder() { + + onChanged(); + return getStateFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.MicState state = 2; + */ + public cmvr.api.MicrophoneCommand.MicStateOrBuilder getStateOrBuilder() { + if (stateBuilder_ != null) { + return stateBuilder_.getMessageOrBuilder(); + } else { + return state_ == null ? + cmvr.api.MicrophoneCommand.MicState.getDefaultInstance() : state_; + } + } + /** + * .cmvr.api.MicState state = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.MicrophoneCommand.MicState, cmvr.api.MicrophoneCommand.MicState.Builder, cmvr.api.MicrophoneCommand.MicStateOrBuilder> + getStateFieldBuilder() { + if (stateBuilder_ == null) { + stateBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.MicrophoneCommand.MicState, cmvr.api.MicrophoneCommand.MicState.Builder, cmvr.api.MicrophoneCommand.MicStateOrBuilder>( + getState(), + getParentForChildren(), + isClean()); + state_ = null; + } + return stateBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetMicStateCommand.Feedback) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetMicStateCommand.Feedback) + private static final cmvr.api.MicrophoneCommand.GetMicStateCommand.Feedback DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.MicrophoneCommand.GetMicStateCommand.Feedback(); + } + + public static cmvr.api.MicrophoneCommand.GetMicStateCommand.Feedback getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Feedback parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.GetMicStateCommand.Feedback getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.MicrophoneCommand.GetMicStateCommand)) { + return super.equals(obj); + } + cmvr.api.MicrophoneCommand.GetMicStateCommand other = (cmvr.api.MicrophoneCommand.GetMicStateCommand) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.MicrophoneCommand.GetMicStateCommand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.GetMicStateCommand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.GetMicStateCommand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.GetMicStateCommand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.GetMicStateCommand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.GetMicStateCommand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.GetMicStateCommand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.GetMicStateCommand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.GetMicStateCommand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.GetMicStateCommand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.GetMicStateCommand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.GetMicStateCommand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.MicrophoneCommand.GetMicStateCommand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetMicStateCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetMicStateCommand) + cmvr.api.MicrophoneCommand.GetMicStateCommandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_GetMicStateCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_GetMicStateCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.GetMicStateCommand.class, cmvr.api.MicrophoneCommand.GetMicStateCommand.Builder.class); + } + + // Construct using cmvr.api.MicrophoneCommand.GetMicStateCommand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_GetMicStateCommand_descriptor; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.GetMicStateCommand getDefaultInstanceForType() { + return cmvr.api.MicrophoneCommand.GetMicStateCommand.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.GetMicStateCommand build() { + cmvr.api.MicrophoneCommand.GetMicStateCommand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.GetMicStateCommand buildPartial() { + cmvr.api.MicrophoneCommand.GetMicStateCommand result = new cmvr.api.MicrophoneCommand.GetMicStateCommand(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.MicrophoneCommand.GetMicStateCommand) { + return mergeFrom((cmvr.api.MicrophoneCommand.GetMicStateCommand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.MicrophoneCommand.GetMicStateCommand other) { + if (other == cmvr.api.MicrophoneCommand.GetMicStateCommand.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetMicStateCommand) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetMicStateCommand) + private static final cmvr.api.MicrophoneCommand.GetMicStateCommand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.MicrophoneCommand.GetMicStateCommand(); + } + + public static cmvr.api.MicrophoneCommand.GetMicStateCommand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public GetMicStateCommand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.GetMicStateCommand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface StartMicRecordingCommandOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.StartMicRecordingCommand) + com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code cmvr.api.StartMicRecordingCommand} + */ + public static final class StartMicRecordingCommand extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.StartMicRecordingCommand) + StartMicRecordingCommandOrBuilder { + private static final long serialVersionUID = 0L; + // Use StartMicRecordingCommand.newBuilder() to construct. + private StartMicRecordingCommand(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private StartMicRecordingCommand() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new StartMicRecordingCommand(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_StartMicRecordingCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_StartMicRecordingCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.StartMicRecordingCommand.class, cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Builder.class); + } + + public interface RequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.StartMicRecordingCommand.Request) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Request getHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder(); + + /** + * string file_path = 2; + * @return The filePath. + */ + java.lang.String getFilePath(); + /** + * string file_path = 2; + * @return The bytes for filePath. + */ + com.google.protobuf.ByteString + getFilePathBytes(); + } + /** + * Protobuf type {@code cmvr.api.StartMicRecordingCommand.Request} + */ + public static final class Request extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.StartMicRecordingCommand.Request) + RequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use Request.newBuilder() to construct. + private Request(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Request() { + filePath_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Request(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_StartMicRecordingCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_StartMicRecordingCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request.class, cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Request header_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + public static final int FILE_PATH_FIELD_NUMBER = 2; + private volatile java.lang.Object filePath_; + /** + * string file_path = 2; + * @return The filePath. + */ + @java.lang.Override + public java.lang.String getFilePath() { + java.lang.Object ref = filePath_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + filePath_ = s; + return s; + } + } + /** + * string file_path = 2; + * @return The bytes for filePath. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getFilePathBytes() { + java.lang.Object ref = filePath_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + filePath_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(filePath_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, filePath_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(filePath_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, filePath_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request)) { + return super.equals(obj); + } + cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request other = (cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getFilePath() + .equals(other.getFilePath())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (37 * hash) + FILE_PATH_FIELD_NUMBER; + hash = (53 * hash) + getFilePath().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.StartMicRecordingCommand.Request} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.StartMicRecordingCommand.Request) + cmvr.api.MicrophoneCommand.StartMicRecordingCommand.RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_StartMicRecordingCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_StartMicRecordingCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request.class, cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request.Builder.class); + } + + // Construct using cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + filePath_ = ""; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_StartMicRecordingCommand_Request_descriptor; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request getDefaultInstanceForType() { + return cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request build() { + cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request buildPartial() { + cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request result = new cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + result.filePath_ = filePath_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request) { + return mergeFrom((cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request other) { + if (other == cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + if (!other.getFilePath().isEmpty()) { + filePath_ = other.filePath_; + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + case 18: { + filePath_ = input.readStringRequireUtf8(); + + break; + } // case 18 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Request header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Request getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Request.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Request.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.Request.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + + private java.lang.Object filePath_ = ""; + /** + * string file_path = 2; + * @return The filePath. + */ + public java.lang.String getFilePath() { + java.lang.Object ref = filePath_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + filePath_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string file_path = 2; + * @return The bytes for filePath. + */ + public com.google.protobuf.ByteString + getFilePathBytes() { + java.lang.Object ref = filePath_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + filePath_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string file_path = 2; + * @param value The filePath to set. + * @return This builder for chaining. + */ + public Builder setFilePath( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + filePath_ = value; + onChanged(); + return this; + } + /** + * string file_path = 2; + * @return This builder for chaining. + */ + public Builder clearFilePath() { + + filePath_ = getDefaultInstance().getFilePath(); + onChanged(); + return this; + } + /** + * string file_path = 2; + * @param value The bytes for filePath to set. + * @return This builder for chaining. + */ + public Builder setFilePathBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + filePath_ = value; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.StartMicRecordingCommand.Request) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.StartMicRecordingCommand.Request) + private static final cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request(); + } + + public static cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Request getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface FeedbackOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.StartMicRecordingCommand.Feedback) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Feedback getHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.StartMicRecordingCommand.Feedback} + */ + public static final class Feedback extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.StartMicRecordingCommand.Feedback) + FeedbackOrBuilder { + private static final long serialVersionUID = 0L; + // Use Feedback.newBuilder() to construct. + private Feedback(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Feedback() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Feedback(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_StartMicRecordingCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_StartMicRecordingCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Feedback.class, cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Feedback.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Feedback header_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Feedback)) { + return super.equals(obj); + } + cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Feedback other = (cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Feedback) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Feedback parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Feedback parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Feedback parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Feedback parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Feedback parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Feedback parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Feedback parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Feedback parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Feedback parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Feedback parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Feedback prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.StartMicRecordingCommand.Feedback} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.StartMicRecordingCommand.Feedback) + cmvr.api.MicrophoneCommand.StartMicRecordingCommand.FeedbackOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_StartMicRecordingCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_StartMicRecordingCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Feedback.class, cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Feedback.Builder.class); + } + + // Construct using cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Feedback.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_StartMicRecordingCommand_Feedback_descriptor; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Feedback getDefaultInstanceForType() { + return cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Feedback.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Feedback build() { + cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Feedback result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Feedback buildPartial() { + cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Feedback result = new cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Feedback(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Feedback) { + return mergeFrom((cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Feedback)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Feedback other) { + if (other == cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Feedback.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Feedback header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Feedback.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Feedback.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.Feedback.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.StartMicRecordingCommand.Feedback) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.StartMicRecordingCommand.Feedback) + private static final cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Feedback DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Feedback(); + } + + public static cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Feedback getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Feedback parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Feedback getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.MicrophoneCommand.StartMicRecordingCommand)) { + return super.equals(obj); + } + cmvr.api.MicrophoneCommand.StartMicRecordingCommand other = (cmvr.api.MicrophoneCommand.StartMicRecordingCommand) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.MicrophoneCommand.StartMicRecordingCommand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.StartMicRecordingCommand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.StartMicRecordingCommand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.StartMicRecordingCommand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.StartMicRecordingCommand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.StartMicRecordingCommand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.StartMicRecordingCommand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.StartMicRecordingCommand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.StartMicRecordingCommand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.StartMicRecordingCommand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.StartMicRecordingCommand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.StartMicRecordingCommand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.MicrophoneCommand.StartMicRecordingCommand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.StartMicRecordingCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.StartMicRecordingCommand) + cmvr.api.MicrophoneCommand.StartMicRecordingCommandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_StartMicRecordingCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_StartMicRecordingCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.StartMicRecordingCommand.class, cmvr.api.MicrophoneCommand.StartMicRecordingCommand.Builder.class); + } + + // Construct using cmvr.api.MicrophoneCommand.StartMicRecordingCommand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_StartMicRecordingCommand_descriptor; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.StartMicRecordingCommand getDefaultInstanceForType() { + return cmvr.api.MicrophoneCommand.StartMicRecordingCommand.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.StartMicRecordingCommand build() { + cmvr.api.MicrophoneCommand.StartMicRecordingCommand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.StartMicRecordingCommand buildPartial() { + cmvr.api.MicrophoneCommand.StartMicRecordingCommand result = new cmvr.api.MicrophoneCommand.StartMicRecordingCommand(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.MicrophoneCommand.StartMicRecordingCommand) { + return mergeFrom((cmvr.api.MicrophoneCommand.StartMicRecordingCommand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.MicrophoneCommand.StartMicRecordingCommand other) { + if (other == cmvr.api.MicrophoneCommand.StartMicRecordingCommand.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.StartMicRecordingCommand) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.StartMicRecordingCommand) + private static final cmvr.api.MicrophoneCommand.StartMicRecordingCommand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.MicrophoneCommand.StartMicRecordingCommand(); + } + + public static cmvr.api.MicrophoneCommand.StartMicRecordingCommand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public StartMicRecordingCommand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.StartMicRecordingCommand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface StopMicRecordingCommandOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.StopMicRecordingCommand) + com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code cmvr.api.StopMicRecordingCommand} + */ + public static final class StopMicRecordingCommand extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.StopMicRecordingCommand) + StopMicRecordingCommandOrBuilder { + private static final long serialVersionUID = 0L; + // Use StopMicRecordingCommand.newBuilder() to construct. + private StopMicRecordingCommand(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private StopMicRecordingCommand() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new StopMicRecordingCommand(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_StopMicRecordingCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_StopMicRecordingCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.StopMicRecordingCommand.class, cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Builder.class); + } + + public interface RequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.StopMicRecordingCommand.Request) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Request getHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.StopMicRecordingCommand.Request} + */ + public static final class Request extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.StopMicRecordingCommand.Request) + RequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use Request.newBuilder() to construct. + private Request(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Request() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Request(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_StopMicRecordingCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_StopMicRecordingCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request.class, cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Request header_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request)) { + return super.equals(obj); + } + cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request other = (cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.StopMicRecordingCommand.Request} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.StopMicRecordingCommand.Request) + cmvr.api.MicrophoneCommand.StopMicRecordingCommand.RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_StopMicRecordingCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_StopMicRecordingCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request.class, cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request.Builder.class); + } + + // Construct using cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_StopMicRecordingCommand_Request_descriptor; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request getDefaultInstanceForType() { + return cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request build() { + cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request buildPartial() { + cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request result = new cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request) { + return mergeFrom((cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request other) { + if (other == cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Request header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Request getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Request.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Request.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.Request.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.StopMicRecordingCommand.Request) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.StopMicRecordingCommand.Request) + private static final cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request(); + } + + public static cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Request getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface FeedbackOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.StopMicRecordingCommand.Feedback) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Feedback getHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.StopMicRecordingCommand.Feedback} + */ + public static final class Feedback extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.StopMicRecordingCommand.Feedback) + FeedbackOrBuilder { + private static final long serialVersionUID = 0L; + // Use Feedback.newBuilder() to construct. + private Feedback(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Feedback() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Feedback(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_StopMicRecordingCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_StopMicRecordingCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Feedback.class, cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Feedback.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Feedback header_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Feedback)) { + return super.equals(obj); + } + cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Feedback other = (cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Feedback) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Feedback parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Feedback parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Feedback parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Feedback parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Feedback parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Feedback parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Feedback parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Feedback parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Feedback parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Feedback parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Feedback prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.StopMicRecordingCommand.Feedback} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.StopMicRecordingCommand.Feedback) + cmvr.api.MicrophoneCommand.StopMicRecordingCommand.FeedbackOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_StopMicRecordingCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_StopMicRecordingCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Feedback.class, cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Feedback.Builder.class); + } + + // Construct using cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Feedback.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_StopMicRecordingCommand_Feedback_descriptor; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Feedback getDefaultInstanceForType() { + return cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Feedback.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Feedback build() { + cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Feedback result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Feedback buildPartial() { + cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Feedback result = new cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Feedback(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Feedback) { + return mergeFrom((cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Feedback)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Feedback other) { + if (other == cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Feedback.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Feedback header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Feedback.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Feedback.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.Feedback.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.StopMicRecordingCommand.Feedback) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.StopMicRecordingCommand.Feedback) + private static final cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Feedback DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Feedback(); + } + + public static cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Feedback getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Feedback parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Feedback getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.MicrophoneCommand.StopMicRecordingCommand)) { + return super.equals(obj); + } + cmvr.api.MicrophoneCommand.StopMicRecordingCommand other = (cmvr.api.MicrophoneCommand.StopMicRecordingCommand) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.MicrophoneCommand.StopMicRecordingCommand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.StopMicRecordingCommand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.StopMicRecordingCommand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.StopMicRecordingCommand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.StopMicRecordingCommand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.StopMicRecordingCommand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.StopMicRecordingCommand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.StopMicRecordingCommand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.StopMicRecordingCommand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.StopMicRecordingCommand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.StopMicRecordingCommand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.StopMicRecordingCommand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.MicrophoneCommand.StopMicRecordingCommand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.StopMicRecordingCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.StopMicRecordingCommand) + cmvr.api.MicrophoneCommand.StopMicRecordingCommandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_StopMicRecordingCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_StopMicRecordingCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.StopMicRecordingCommand.class, cmvr.api.MicrophoneCommand.StopMicRecordingCommand.Builder.class); + } + + // Construct using cmvr.api.MicrophoneCommand.StopMicRecordingCommand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_StopMicRecordingCommand_descriptor; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.StopMicRecordingCommand getDefaultInstanceForType() { + return cmvr.api.MicrophoneCommand.StopMicRecordingCommand.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.StopMicRecordingCommand build() { + cmvr.api.MicrophoneCommand.StopMicRecordingCommand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.StopMicRecordingCommand buildPartial() { + cmvr.api.MicrophoneCommand.StopMicRecordingCommand result = new cmvr.api.MicrophoneCommand.StopMicRecordingCommand(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.MicrophoneCommand.StopMicRecordingCommand) { + return mergeFrom((cmvr.api.MicrophoneCommand.StopMicRecordingCommand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.MicrophoneCommand.StopMicRecordingCommand other) { + if (other == cmvr.api.MicrophoneCommand.StopMicRecordingCommand.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.StopMicRecordingCommand) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.StopMicRecordingCommand) + private static final cmvr.api.MicrophoneCommand.StopMicRecordingCommand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.MicrophoneCommand.StopMicRecordingCommand(); + } + + public static cmvr.api.MicrophoneCommand.StopMicRecordingCommand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public StopMicRecordingCommand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.StopMicRecordingCommand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface PauseMicRecordingCommandOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.PauseMicRecordingCommand) + com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code cmvr.api.PauseMicRecordingCommand} + */ + public static final class PauseMicRecordingCommand extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.PauseMicRecordingCommand) + PauseMicRecordingCommandOrBuilder { + private static final long serialVersionUID = 0L; + // Use PauseMicRecordingCommand.newBuilder() to construct. + private PauseMicRecordingCommand(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private PauseMicRecordingCommand() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new PauseMicRecordingCommand(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_PauseMicRecordingCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_PauseMicRecordingCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.class, cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Builder.class); + } + + public interface RequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.PauseMicRecordingCommand.Request) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Request getHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.PauseMicRecordingCommand.Request} + */ + public static final class Request extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.PauseMicRecordingCommand.Request) + RequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use Request.newBuilder() to construct. + private Request(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Request() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Request(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_PauseMicRecordingCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_PauseMicRecordingCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request.class, cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Request header_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request)) { + return super.equals(obj); + } + cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request other = (cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.PauseMicRecordingCommand.Request} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.PauseMicRecordingCommand.Request) + cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_PauseMicRecordingCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_PauseMicRecordingCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request.class, cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request.Builder.class); + } + + // Construct using cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_PauseMicRecordingCommand_Request_descriptor; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request getDefaultInstanceForType() { + return cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request build() { + cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request buildPartial() { + cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request result = new cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request) { + return mergeFrom((cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request other) { + if (other == cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Request header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Request getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Request.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Request.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.Request.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.PauseMicRecordingCommand.Request) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.PauseMicRecordingCommand.Request) + private static final cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request(); + } + + public static cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Request getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface FeedbackOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.PauseMicRecordingCommand.Feedback) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Feedback getHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.PauseMicRecordingCommand.Feedback} + */ + public static final class Feedback extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.PauseMicRecordingCommand.Feedback) + FeedbackOrBuilder { + private static final long serialVersionUID = 0L; + // Use Feedback.newBuilder() to construct. + private Feedback(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Feedback() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Feedback(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_PauseMicRecordingCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_PauseMicRecordingCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Feedback.class, cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Feedback.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Feedback header_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Feedback)) { + return super.equals(obj); + } + cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Feedback other = (cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Feedback) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Feedback parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Feedback parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Feedback parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Feedback parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Feedback parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Feedback parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Feedback parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Feedback parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Feedback parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Feedback parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Feedback prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.PauseMicRecordingCommand.Feedback} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.PauseMicRecordingCommand.Feedback) + cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.FeedbackOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_PauseMicRecordingCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_PauseMicRecordingCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Feedback.class, cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Feedback.Builder.class); + } + + // Construct using cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Feedback.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_PauseMicRecordingCommand_Feedback_descriptor; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Feedback getDefaultInstanceForType() { + return cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Feedback.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Feedback build() { + cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Feedback result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Feedback buildPartial() { + cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Feedback result = new cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Feedback(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Feedback) { + return mergeFrom((cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Feedback)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Feedback other) { + if (other == cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Feedback.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Feedback header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Feedback.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Feedback.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.Feedback.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.PauseMicRecordingCommand.Feedback) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.PauseMicRecordingCommand.Feedback) + private static final cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Feedback DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Feedback(); + } + + public static cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Feedback getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Feedback parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Feedback getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.MicrophoneCommand.PauseMicRecordingCommand)) { + return super.equals(obj); + } + cmvr.api.MicrophoneCommand.PauseMicRecordingCommand other = (cmvr.api.MicrophoneCommand.PauseMicRecordingCommand) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.MicrophoneCommand.PauseMicRecordingCommand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.PauseMicRecordingCommand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.PauseMicRecordingCommand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.PauseMicRecordingCommand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.PauseMicRecordingCommand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.PauseMicRecordingCommand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.PauseMicRecordingCommand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.PauseMicRecordingCommand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.PauseMicRecordingCommand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.PauseMicRecordingCommand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.PauseMicRecordingCommand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.PauseMicRecordingCommand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.MicrophoneCommand.PauseMicRecordingCommand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.PauseMicRecordingCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.PauseMicRecordingCommand) + cmvr.api.MicrophoneCommand.PauseMicRecordingCommandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_PauseMicRecordingCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_PauseMicRecordingCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.class, cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.Builder.class); + } + + // Construct using cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_PauseMicRecordingCommand_descriptor; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.PauseMicRecordingCommand getDefaultInstanceForType() { + return cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.PauseMicRecordingCommand build() { + cmvr.api.MicrophoneCommand.PauseMicRecordingCommand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.PauseMicRecordingCommand buildPartial() { + cmvr.api.MicrophoneCommand.PauseMicRecordingCommand result = new cmvr.api.MicrophoneCommand.PauseMicRecordingCommand(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.MicrophoneCommand.PauseMicRecordingCommand) { + return mergeFrom((cmvr.api.MicrophoneCommand.PauseMicRecordingCommand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.MicrophoneCommand.PauseMicRecordingCommand other) { + if (other == cmvr.api.MicrophoneCommand.PauseMicRecordingCommand.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.PauseMicRecordingCommand) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.PauseMicRecordingCommand) + private static final cmvr.api.MicrophoneCommand.PauseMicRecordingCommand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.MicrophoneCommand.PauseMicRecordingCommand(); + } + + public static cmvr.api.MicrophoneCommand.PauseMicRecordingCommand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public PauseMicRecordingCommand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.PauseMicRecordingCommand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface ResumeMicRecordingCommandOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.ResumeMicRecordingCommand) + com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code cmvr.api.ResumeMicRecordingCommand} + */ + public static final class ResumeMicRecordingCommand extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.ResumeMicRecordingCommand) + ResumeMicRecordingCommandOrBuilder { + private static final long serialVersionUID = 0L; + // Use ResumeMicRecordingCommand.newBuilder() to construct. + private ResumeMicRecordingCommand(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private ResumeMicRecordingCommand() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new ResumeMicRecordingCommand(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_ResumeMicRecordingCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_ResumeMicRecordingCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.class, cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Builder.class); + } + + public interface RequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.ResumeMicRecordingCommand.Request) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Request getHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.ResumeMicRecordingCommand.Request} + */ + public static final class Request extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.ResumeMicRecordingCommand.Request) + RequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use Request.newBuilder() to construct. + private Request(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Request() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Request(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_ResumeMicRecordingCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_ResumeMicRecordingCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request.class, cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Request header_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request)) { + return super.equals(obj); + } + cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request other = (cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.ResumeMicRecordingCommand.Request} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.ResumeMicRecordingCommand.Request) + cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_ResumeMicRecordingCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_ResumeMicRecordingCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request.class, cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request.Builder.class); + } + + // Construct using cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_ResumeMicRecordingCommand_Request_descriptor; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request getDefaultInstanceForType() { + return cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request build() { + cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request buildPartial() { + cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request result = new cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request) { + return mergeFrom((cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request other) { + if (other == cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Request header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Request getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Request.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Request.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.Request.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.ResumeMicRecordingCommand.Request) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.ResumeMicRecordingCommand.Request) + private static final cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request(); + } + + public static cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Request getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface FeedbackOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.ResumeMicRecordingCommand.Feedback) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Feedback getHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.ResumeMicRecordingCommand.Feedback} + */ + public static final class Feedback extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.ResumeMicRecordingCommand.Feedback) + FeedbackOrBuilder { + private static final long serialVersionUID = 0L; + // Use Feedback.newBuilder() to construct. + private Feedback(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Feedback() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Feedback(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_ResumeMicRecordingCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_ResumeMicRecordingCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Feedback.class, cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Feedback.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Feedback header_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Feedback)) { + return super.equals(obj); + } + cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Feedback other = (cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Feedback) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Feedback parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Feedback parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Feedback parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Feedback parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Feedback parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Feedback parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Feedback parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Feedback parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Feedback parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Feedback parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Feedback prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.ResumeMicRecordingCommand.Feedback} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.ResumeMicRecordingCommand.Feedback) + cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.FeedbackOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_ResumeMicRecordingCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_ResumeMicRecordingCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Feedback.class, cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Feedback.Builder.class); + } + + // Construct using cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Feedback.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_ResumeMicRecordingCommand_Feedback_descriptor; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Feedback getDefaultInstanceForType() { + return cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Feedback.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Feedback build() { + cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Feedback result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Feedback buildPartial() { + cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Feedback result = new cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Feedback(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Feedback) { + return mergeFrom((cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Feedback)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Feedback other) { + if (other == cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Feedback.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Feedback header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Feedback.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Feedback.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.Feedback.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.ResumeMicRecordingCommand.Feedback) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.ResumeMicRecordingCommand.Feedback) + private static final cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Feedback DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Feedback(); + } + + public static cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Feedback getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Feedback parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Feedback getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand)) { + return super.equals(obj); + } + cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand other = (cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.ResumeMicRecordingCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.ResumeMicRecordingCommand) + cmvr.api.MicrophoneCommand.ResumeMicRecordingCommandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_ResumeMicRecordingCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_ResumeMicRecordingCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.class, cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.Builder.class); + } + + // Construct using cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_ResumeMicRecordingCommand_descriptor; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand getDefaultInstanceForType() { + return cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand build() { + cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand buildPartial() { + cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand result = new cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand) { + return mergeFrom((cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand other) { + if (other == cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.ResumeMicRecordingCommand) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.ResumeMicRecordingCommand) + private static final cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand(); + } + + public static cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public ResumeMicRecordingCommand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.ResumeMicRecordingCommand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface SetMicPhoneVolumeCommandOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.SetMicPhoneVolumeCommand) + com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code cmvr.api.SetMicPhoneVolumeCommand} + */ + public static final class SetMicPhoneVolumeCommand extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.SetMicPhoneVolumeCommand) + SetMicPhoneVolumeCommandOrBuilder { + private static final long serialVersionUID = 0L; + // Use SetMicPhoneVolumeCommand.newBuilder() to construct. + private SetMicPhoneVolumeCommand(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private SetMicPhoneVolumeCommand() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new SetMicPhoneVolumeCommand(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_SetMicPhoneVolumeCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_SetMicPhoneVolumeCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.class, cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Builder.class); + } + + public interface RequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.SetMicPhoneVolumeCommand.Request) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Request getHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder(); + + /** + *
+       * 音量值(0 ~ 100)
+       * 
+ * + * int32 volume = 2; + * @return The volume. + */ + int getVolume(); + } + /** + * Protobuf type {@code cmvr.api.SetMicPhoneVolumeCommand.Request} + */ + public static final class Request extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.SetMicPhoneVolumeCommand.Request) + RequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use Request.newBuilder() to construct. + private Request(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Request() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Request(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_SetMicPhoneVolumeCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_SetMicPhoneVolumeCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request.class, cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Request header_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + public static final int VOLUME_FIELD_NUMBER = 2; + private int volume_; + /** + *
+       * 音量值(0 ~ 100)
+       * 
+ * + * int32 volume = 2; + * @return The volume. + */ + @java.lang.Override + public int getVolume() { + return volume_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + if (volume_ != 0) { + output.writeInt32(2, volume_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + if (volume_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(2, volume_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request)) { + return super.equals(obj); + } + cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request other = (cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (getVolume() + != other.getVolume()) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (37 * hash) + VOLUME_FIELD_NUMBER; + hash = (53 * hash) + getVolume(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.SetMicPhoneVolumeCommand.Request} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.SetMicPhoneVolumeCommand.Request) + cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_SetMicPhoneVolumeCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_SetMicPhoneVolumeCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request.class, cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request.Builder.class); + } + + // Construct using cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + volume_ = 0; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_SetMicPhoneVolumeCommand_Request_descriptor; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request getDefaultInstanceForType() { + return cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request build() { + cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request buildPartial() { + cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request result = new cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + result.volume_ = volume_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request) { + return mergeFrom((cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request other) { + if (other == cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + if (other.getVolume() != 0) { + setVolume(other.getVolume()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + case 16: { + volume_ = input.readInt32(); + + break; + } // case 16 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Request header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Request getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Request.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Request.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.Request.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + + private int volume_ ; + /** + *
+         * 音量值(0 ~ 100)
+         * 
+ * + * int32 volume = 2; + * @return The volume. + */ + @java.lang.Override + public int getVolume() { + return volume_; + } + /** + *
+         * 音量值(0 ~ 100)
+         * 
+ * + * int32 volume = 2; + * @param value The volume to set. + * @return This builder for chaining. + */ + public Builder setVolume(int value) { + + volume_ = value; + onChanged(); + return this; + } + /** + *
+         * 音量值(0 ~ 100)
+         * 
+ * + * int32 volume = 2; + * @return This builder for chaining. + */ + public Builder clearVolume() { + + volume_ = 0; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.SetMicPhoneVolumeCommand.Request) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.SetMicPhoneVolumeCommand.Request) + private static final cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request(); + } + + public static cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Request getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface FeedbackOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.SetMicPhoneVolumeCommand.Feedback) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Feedback getHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.SetMicPhoneVolumeCommand.Feedback} + */ + public static final class Feedback extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.SetMicPhoneVolumeCommand.Feedback) + FeedbackOrBuilder { + private static final long serialVersionUID = 0L; + // Use Feedback.newBuilder() to construct. + private Feedback(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Feedback() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Feedback(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_SetMicPhoneVolumeCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_SetMicPhoneVolumeCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Feedback.class, cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Feedback.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Feedback header_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Feedback)) { + return super.equals(obj); + } + cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Feedback other = (cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Feedback) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Feedback parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Feedback parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Feedback parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Feedback parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Feedback parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Feedback parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Feedback parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Feedback parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Feedback parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Feedback parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Feedback prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.SetMicPhoneVolumeCommand.Feedback} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.SetMicPhoneVolumeCommand.Feedback) + cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.FeedbackOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_SetMicPhoneVolumeCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_SetMicPhoneVolumeCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Feedback.class, cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Feedback.Builder.class); + } + + // Construct using cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Feedback.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_SetMicPhoneVolumeCommand_Feedback_descriptor; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Feedback getDefaultInstanceForType() { + return cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Feedback.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Feedback build() { + cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Feedback result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Feedback buildPartial() { + cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Feedback result = new cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Feedback(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Feedback) { + return mergeFrom((cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Feedback)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Feedback other) { + if (other == cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Feedback.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Feedback header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Feedback.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Feedback.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.Feedback.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.SetMicPhoneVolumeCommand.Feedback) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.SetMicPhoneVolumeCommand.Feedback) + private static final cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Feedback DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Feedback(); + } + + public static cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Feedback getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Feedback parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Feedback getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand)) { + return super.equals(obj); + } + cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand other = (cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.SetMicPhoneVolumeCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.SetMicPhoneVolumeCommand) + cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_SetMicPhoneVolumeCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_SetMicPhoneVolumeCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.class, cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.Builder.class); + } + + // Construct using cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_SetMicPhoneVolumeCommand_descriptor; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand getDefaultInstanceForType() { + return cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand build() { + cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand buildPartial() { + cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand result = new cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand) { + return mergeFrom((cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand other) { + if (other == cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.SetMicPhoneVolumeCommand) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.SetMicPhoneVolumeCommand) + private static final cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand(); + } + + public static cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public SetMicPhoneVolumeCommand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.SetMicPhoneVolumeCommand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface GetMicPhoneVolumeCommandOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetMicPhoneVolumeCommand) + com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code cmvr.api.GetMicPhoneVolumeCommand} + */ + public static final class GetMicPhoneVolumeCommand extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetMicPhoneVolumeCommand) + GetMicPhoneVolumeCommandOrBuilder { + private static final long serialVersionUID = 0L; + // Use GetMicPhoneVolumeCommand.newBuilder() to construct. + private GetMicPhoneVolumeCommand(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private GetMicPhoneVolumeCommand() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new GetMicPhoneVolumeCommand(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_GetMicPhoneVolumeCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_GetMicPhoneVolumeCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.class, cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Builder.class); + } + + public interface RequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetMicPhoneVolumeCommand.Request) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Request getHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.GetMicPhoneVolumeCommand.Request} + */ + public static final class Request extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetMicPhoneVolumeCommand.Request) + RequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use Request.newBuilder() to construct. + private Request(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Request() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Request(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_GetMicPhoneVolumeCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_GetMicPhoneVolumeCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request.class, cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Request header_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request)) { + return super.equals(obj); + } + cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request other = (cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetMicPhoneVolumeCommand.Request} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetMicPhoneVolumeCommand.Request) + cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_GetMicPhoneVolumeCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_GetMicPhoneVolumeCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request.class, cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request.Builder.class); + } + + // Construct using cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_GetMicPhoneVolumeCommand_Request_descriptor; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request getDefaultInstanceForType() { + return cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request build() { + cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request buildPartial() { + cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request result = new cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request) { + return mergeFrom((cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request other) { + if (other == cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Request header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Request getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Request.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Request.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.Request.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetMicPhoneVolumeCommand.Request) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetMicPhoneVolumeCommand.Request) + private static final cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request(); + } + + public static cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Request getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface FeedbackOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetMicPhoneVolumeCommand.Feedback) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Feedback getHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder(); + + /** + *
+       * 当前音量值
+       * 
+ * + * int32 volume = 2; + * @return The volume. + */ + int getVolume(); + } + /** + * Protobuf type {@code cmvr.api.GetMicPhoneVolumeCommand.Feedback} + */ + public static final class Feedback extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetMicPhoneVolumeCommand.Feedback) + FeedbackOrBuilder { + private static final long serialVersionUID = 0L; + // Use Feedback.newBuilder() to construct. + private Feedback(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Feedback() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Feedback(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_GetMicPhoneVolumeCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_GetMicPhoneVolumeCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Feedback.class, cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Feedback.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Feedback header_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + public static final int VOLUME_FIELD_NUMBER = 2; + private int volume_; + /** + *
+       * 当前音量值
+       * 
+ * + * int32 volume = 2; + * @return The volume. + */ + @java.lang.Override + public int getVolume() { + return volume_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + if (volume_ != 0) { + output.writeInt32(2, volume_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + if (volume_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(2, volume_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Feedback)) { + return super.equals(obj); + } + cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Feedback other = (cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Feedback) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (getVolume() + != other.getVolume()) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (37 * hash) + VOLUME_FIELD_NUMBER; + hash = (53 * hash) + getVolume(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Feedback parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Feedback parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Feedback parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Feedback parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Feedback parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Feedback parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Feedback parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Feedback parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Feedback parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Feedback parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Feedback prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetMicPhoneVolumeCommand.Feedback} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetMicPhoneVolumeCommand.Feedback) + cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.FeedbackOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_GetMicPhoneVolumeCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_GetMicPhoneVolumeCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Feedback.class, cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Feedback.Builder.class); + } + + // Construct using cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Feedback.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + volume_ = 0; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_GetMicPhoneVolumeCommand_Feedback_descriptor; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Feedback getDefaultInstanceForType() { + return cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Feedback.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Feedback build() { + cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Feedback result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Feedback buildPartial() { + cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Feedback result = new cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Feedback(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + result.volume_ = volume_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Feedback) { + return mergeFrom((cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Feedback)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Feedback other) { + if (other == cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Feedback.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + if (other.getVolume() != 0) { + setVolume(other.getVolume()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + case 16: { + volume_ = input.readInt32(); + + break; + } // case 16 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Feedback header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Feedback.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Feedback.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.Feedback.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + + private int volume_ ; + /** + *
+         * 当前音量值
+         * 
+ * + * int32 volume = 2; + * @return The volume. + */ + @java.lang.Override + public int getVolume() { + return volume_; + } + /** + *
+         * 当前音量值
+         * 
+ * + * int32 volume = 2; + * @param value The volume to set. + * @return This builder for chaining. + */ + public Builder setVolume(int value) { + + volume_ = value; + onChanged(); + return this; + } + /** + *
+         * 当前音量值
+         * 
+ * + * int32 volume = 2; + * @return This builder for chaining. + */ + public Builder clearVolume() { + + volume_ = 0; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetMicPhoneVolumeCommand.Feedback) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetMicPhoneVolumeCommand.Feedback) + private static final cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Feedback DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Feedback(); + } + + public static cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Feedback getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Feedback parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Feedback getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand)) { + return super.equals(obj); + } + cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand other = (cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetMicPhoneVolumeCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetMicPhoneVolumeCommand) + cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_GetMicPhoneVolumeCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_GetMicPhoneVolumeCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.class, cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.Builder.class); + } + + // Construct using cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.MicrophoneCommand.internal_static_cmvr_api_GetMicPhoneVolumeCommand_descriptor; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand getDefaultInstanceForType() { + return cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand build() { + cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand buildPartial() { + cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand result = new cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand) { + return mergeFrom((cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand other) { + if (other == cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetMicPhoneVolumeCommand) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetMicPhoneVolumeCommand) + private static final cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand(); + } + + public static cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public GetMicPhoneVolumeCommand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.MicrophoneCommand.GetMicPhoneVolumeCommand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_MicState_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_MicState_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetMicStateCommand_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetMicStateCommand_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetMicStateCommand_Request_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetMicStateCommand_Request_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetMicStateCommand_Feedback_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetMicStateCommand_Feedback_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_StartMicRecordingCommand_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_StartMicRecordingCommand_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_StartMicRecordingCommand_Request_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_StartMicRecordingCommand_Request_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_StartMicRecordingCommand_Feedback_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_StartMicRecordingCommand_Feedback_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_StopMicRecordingCommand_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_StopMicRecordingCommand_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_StopMicRecordingCommand_Request_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_StopMicRecordingCommand_Request_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_StopMicRecordingCommand_Feedback_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_StopMicRecordingCommand_Feedback_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_PauseMicRecordingCommand_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_PauseMicRecordingCommand_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_PauseMicRecordingCommand_Request_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_PauseMicRecordingCommand_Request_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_PauseMicRecordingCommand_Feedback_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_PauseMicRecordingCommand_Feedback_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_ResumeMicRecordingCommand_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_ResumeMicRecordingCommand_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_ResumeMicRecordingCommand_Request_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_ResumeMicRecordingCommand_Request_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_ResumeMicRecordingCommand_Feedback_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_ResumeMicRecordingCommand_Feedback_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_SetMicPhoneVolumeCommand_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_SetMicPhoneVolumeCommand_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_SetMicPhoneVolumeCommand_Request_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_SetMicPhoneVolumeCommand_Request_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_SetMicPhoneVolumeCommand_Feedback_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_SetMicPhoneVolumeCommand_Feedback_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetMicPhoneVolumeCommand_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetMicPhoneVolumeCommand_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetMicPhoneVolumeCommand_Request_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetMicPhoneVolumeCommand_Request_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetMicPhoneVolumeCommand_Feedback_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetMicPhoneVolumeCommand_Feedback_fieldAccessorTable; + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n!cmvr/api/microphone_command.proto\022\010cmv" + + "r.api\032\025cmvr/api/common.proto\"s\n\010MicState" + + "\022\026\n\016is_initialized\030\001 \001(\010\022\022\n\nis_running\030\002" + + " \001(\010\022\024\n\014is_recording\030\003 \001(\010\022\016\n\006volume\030\004 \001" + + "(\005\022\025\n\rerror_message\030\005 \001(\t\"\261\001\n\022GetMicStat" + + "eCommand\032:\n\007Request\022/\n\006header\030\001 \001(\0132\037.cm" + + "vr.api.CommandHeader.Request\032_\n\010Feedback" + + "\0220\n\006header\030\001 \001(\0132 .cmvr.api.CommandHeade" + + "r.Feedback\022!\n\005state\030\002 \001(\0132\022.cmvr.api.Mic" + + "State\"\247\001\n\030StartMicRecordingCommand\032M\n\007Re" + + "quest\022/\n\006header\030\001 \001(\0132\037.cmvr.api.Command" + + "Header.Request\022\021\n\tfile_path\030\002 \001(\t\032<\n\010Fee" + + "dback\0220\n\006header\030\001 \001(\0132 .cmvr.api.Command" + + "Header.Feedback\"\223\001\n\027StopMicRecordingComm" + + "and\032:\n\007Request\022/\n\006header\030\001 \001(\0132\037.cmvr.ap" + + "i.CommandHeader.Request\032<\n\010Feedback\0220\n\006h" + + "eader\030\001 \001(\0132 .cmvr.api.CommandHeader.Fee" + + "dback\"\224\001\n\030PauseMicRecordingCommand\032:\n\007Re" + + "quest\022/\n\006header\030\001 \001(\0132\037.cmvr.api.Command" + + "Header.Request\032<\n\010Feedback\0220\n\006header\030\001 \001" + + "(\0132 .cmvr.api.CommandHeader.Feedback\"\225\001\n" + + "\031ResumeMicRecordingCommand\032:\n\007Request\022/\n" + + "\006header\030\001 \001(\0132\037.cmvr.api.CommandHeader.R" + + "equest\032<\n\010Feedback\0220\n\006header\030\001 \001(\0132 .cmv" + + "r.api.CommandHeader.Feedback\"\244\001\n\030SetMicP" + + "honeVolumeCommand\032J\n\007Request\022/\n\006header\030\001" + + " \001(\0132\037.cmvr.api.CommandHeader.Request\022\016\n" + + "\006volume\030\002 \001(\005\032<\n\010Feedback\0220\n\006header\030\001 \001(" + + "\0132 .cmvr.api.CommandHeader.Feedback\"\244\001\n\030" + + "GetMicPhoneVolumeCommand\032:\n\007Request\022/\n\006h" + + "eader\030\001 \001(\0132\037.cmvr.api.CommandHeader.Req" + + "uest\032L\n\010Feedback\0220\n\006header\030\001 \001(\0132 .cmvr." + + "api.CommandHeader.Feedback\022\016\n\006volume\030\002 \001" + + "(\005b\006proto3" + }; + descriptor = com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + cmvr.api.Common.getDescriptor(), + }); + internal_static_cmvr_api_MicState_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_cmvr_api_MicState_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_MicState_descriptor, + new java.lang.String[] { "IsInitialized", "IsRunning", "IsRecording", "Volume", "ErrorMessage", }); + internal_static_cmvr_api_GetMicStateCommand_descriptor = + getDescriptor().getMessageTypes().get(1); + internal_static_cmvr_api_GetMicStateCommand_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetMicStateCommand_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_GetMicStateCommand_Request_descriptor = + internal_static_cmvr_api_GetMicStateCommand_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_GetMicStateCommand_Request_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetMicStateCommand_Request_descriptor, + new java.lang.String[] { "Header", }); + internal_static_cmvr_api_GetMicStateCommand_Feedback_descriptor = + internal_static_cmvr_api_GetMicStateCommand_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_GetMicStateCommand_Feedback_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetMicStateCommand_Feedback_descriptor, + new java.lang.String[] { "Header", "State", }); + internal_static_cmvr_api_StartMicRecordingCommand_descriptor = + getDescriptor().getMessageTypes().get(2); + internal_static_cmvr_api_StartMicRecordingCommand_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_StartMicRecordingCommand_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_StartMicRecordingCommand_Request_descriptor = + internal_static_cmvr_api_StartMicRecordingCommand_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_StartMicRecordingCommand_Request_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_StartMicRecordingCommand_Request_descriptor, + new java.lang.String[] { "Header", "FilePath", }); + internal_static_cmvr_api_StartMicRecordingCommand_Feedback_descriptor = + internal_static_cmvr_api_StartMicRecordingCommand_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_StartMicRecordingCommand_Feedback_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_StartMicRecordingCommand_Feedback_descriptor, + new java.lang.String[] { "Header", }); + internal_static_cmvr_api_StopMicRecordingCommand_descriptor = + getDescriptor().getMessageTypes().get(3); + internal_static_cmvr_api_StopMicRecordingCommand_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_StopMicRecordingCommand_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_StopMicRecordingCommand_Request_descriptor = + internal_static_cmvr_api_StopMicRecordingCommand_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_StopMicRecordingCommand_Request_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_StopMicRecordingCommand_Request_descriptor, + new java.lang.String[] { "Header", }); + internal_static_cmvr_api_StopMicRecordingCommand_Feedback_descriptor = + internal_static_cmvr_api_StopMicRecordingCommand_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_StopMicRecordingCommand_Feedback_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_StopMicRecordingCommand_Feedback_descriptor, + new java.lang.String[] { "Header", }); + internal_static_cmvr_api_PauseMicRecordingCommand_descriptor = + getDescriptor().getMessageTypes().get(4); + internal_static_cmvr_api_PauseMicRecordingCommand_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_PauseMicRecordingCommand_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_PauseMicRecordingCommand_Request_descriptor = + internal_static_cmvr_api_PauseMicRecordingCommand_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_PauseMicRecordingCommand_Request_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_PauseMicRecordingCommand_Request_descriptor, + new java.lang.String[] { "Header", }); + internal_static_cmvr_api_PauseMicRecordingCommand_Feedback_descriptor = + internal_static_cmvr_api_PauseMicRecordingCommand_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_PauseMicRecordingCommand_Feedback_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_PauseMicRecordingCommand_Feedback_descriptor, + new java.lang.String[] { "Header", }); + internal_static_cmvr_api_ResumeMicRecordingCommand_descriptor = + getDescriptor().getMessageTypes().get(5); + internal_static_cmvr_api_ResumeMicRecordingCommand_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_ResumeMicRecordingCommand_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_ResumeMicRecordingCommand_Request_descriptor = + internal_static_cmvr_api_ResumeMicRecordingCommand_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_ResumeMicRecordingCommand_Request_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_ResumeMicRecordingCommand_Request_descriptor, + new java.lang.String[] { "Header", }); + internal_static_cmvr_api_ResumeMicRecordingCommand_Feedback_descriptor = + internal_static_cmvr_api_ResumeMicRecordingCommand_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_ResumeMicRecordingCommand_Feedback_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_ResumeMicRecordingCommand_Feedback_descriptor, + new java.lang.String[] { "Header", }); + internal_static_cmvr_api_SetMicPhoneVolumeCommand_descriptor = + getDescriptor().getMessageTypes().get(6); + internal_static_cmvr_api_SetMicPhoneVolumeCommand_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_SetMicPhoneVolumeCommand_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_SetMicPhoneVolumeCommand_Request_descriptor = + internal_static_cmvr_api_SetMicPhoneVolumeCommand_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_SetMicPhoneVolumeCommand_Request_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_SetMicPhoneVolumeCommand_Request_descriptor, + new java.lang.String[] { "Header", "Volume", }); + internal_static_cmvr_api_SetMicPhoneVolumeCommand_Feedback_descriptor = + internal_static_cmvr_api_SetMicPhoneVolumeCommand_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_SetMicPhoneVolumeCommand_Feedback_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_SetMicPhoneVolumeCommand_Feedback_descriptor, + new java.lang.String[] { "Header", }); + internal_static_cmvr_api_GetMicPhoneVolumeCommand_descriptor = + getDescriptor().getMessageTypes().get(7); + internal_static_cmvr_api_GetMicPhoneVolumeCommand_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetMicPhoneVolumeCommand_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_GetMicPhoneVolumeCommand_Request_descriptor = + internal_static_cmvr_api_GetMicPhoneVolumeCommand_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_GetMicPhoneVolumeCommand_Request_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetMicPhoneVolumeCommand_Request_descriptor, + new java.lang.String[] { "Header", }); + internal_static_cmvr_api_GetMicPhoneVolumeCommand_Feedback_descriptor = + internal_static_cmvr_api_GetMicPhoneVolumeCommand_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_GetMicPhoneVolumeCommand_Feedback_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetMicPhoneVolumeCommand_Feedback_descriptor, + new java.lang.String[] { "Header", "Volume", }); + cmvr.api.Common.getDescriptor(); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/MicrophoneService.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/MicrophoneService.java new file mode 100644 index 0000000..3a47a36 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/MicrophoneService.java @@ -0,0 +1,57 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: cmvr/api/microphone_service.proto + +package cmvr.api; + +public final class MicrophoneService { + private MicrophoneService() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistryLite registry) { + } + + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + registerAllExtensions( + (com.google.protobuf.ExtensionRegistryLite) registry); + } + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n!cmvr/api/microphone_service.proto\022\010cmv" + + "r.api\032!cmvr/api/microphone_command.proto" + + "2\327\005\n\017MicPhoneService\022X\n\tGetStatus\022$.cmvr" + + ".api.GetMicStateCommand.Request\032%.cmvr.a" + + "pi.GetMicStateCommand.Feedback\022f\n\013StartR" + + "ecord\022*.cmvr.api.StartMicRecordingComman" + + "d.Request\032+.cmvr.api.StartMicRecordingCo" + + "mmand.Feedback\022c\n\nStopRecord\022).cmvr.api." + + "StopMicRecordingCommand.Request\032*.cmvr.a" + + "pi.StopMicRecordingCommand.Feedback\022f\n\013P" + + "auseRecord\022*.cmvr.api.PauseMicRecordingC" + + "ommand.Request\032+.cmvr.api.PauseMicRecord" + + "ingCommand.Feedback\022i\n\014ResumeRecord\022+.cm" + + "vr.api.ResumeMicRecordingCommand.Request" + + "\032,.cmvr.api.ResumeMicRecordingCommand.Fe" + + "edback\022d\n\tSetVolume\022*.cmvr.api.SetMicPho" + + "neVolumeCommand.Request\032+.cmvr.api.SetMi" + + "cPhoneVolumeCommand.Feedback\022d\n\tGetVolum" + + "e\022*.cmvr.api.GetMicPhoneVolumeCommand.Re" + + "quest\032+.cmvr.api.GetMicPhoneVolumeComman" + + "d.Feedbackb\006proto3" + }; + descriptor = com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + cmvr.api.MicrophoneCommand.getDescriptor(), + }); + cmvr.api.MicrophoneCommand.getDescriptor(); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/SpeakerCommand.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/SpeakerCommand.java new file mode 100644 index 0000000..90d4b6f --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/SpeakerCommand.java @@ -0,0 +1,14161 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: cmvr/api/speaker_command.proto + +package cmvr.api; + +public final class SpeakerCommand { + private SpeakerCommand() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistryLite registry) { + } + + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + registerAllExtensions( + (com.google.protobuf.ExtensionRegistryLite) registry); + } + public interface AudioDataOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.AudioData) + com.google.protobuf.MessageOrBuilder { + + /** + *
+     * 音频二进制数据
+     * 
+ * + * bytes data = 1; + * @return The data. + */ + com.google.protobuf.ByteString getData(); + + /** + *
+     * 采样率(Hz)
+     * 
+ * + * int32 sample_rate = 2; + * @return The sampleRate. + */ + int getSampleRate(); + + /** + *
+     * 声道数
+     * 
+ * + * int32 channels = 3; + * @return The channels. + */ + int getChannels(); + + /** + *
+     * 音频格式
+     * 
+ * + * .cmvr.api.AudioData.AudioFormat format = 4; + * @return The enum numeric value on the wire for format. + */ + int getFormatValue(); + /** + *
+     * 音频格式
+     * 
+ * + * .cmvr.api.AudioData.AudioFormat format = 4; + * @return The format. + */ + cmvr.api.SpeakerCommand.AudioData.AudioFormat getFormat(); + + /** + *
+     * 编码方式
+     * 
+ * + * string codec = 5; + * @return The codec. + */ + java.lang.String getCodec(); + /** + *
+     * 编码方式
+     * 
+ * + * string codec = 5; + * @return The bytes for codec. + */ + com.google.protobuf.ByteString + getCodecBytes(); + } + /** + *
+   * 音频数据格式(与麦克风类似,但用于输出)
+   * 
+ * + * Protobuf type {@code cmvr.api.AudioData} + */ + public static final class AudioData extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.AudioData) + AudioDataOrBuilder { + private static final long serialVersionUID = 0L; + // Use AudioData.newBuilder() to construct. + private AudioData(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private AudioData() { + data_ = com.google.protobuf.ByteString.EMPTY; + format_ = 0; + codec_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new AudioData(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_AudioData_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_AudioData_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.AudioData.class, cmvr.api.SpeakerCommand.AudioData.Builder.class); + } + + /** + * Protobuf enum {@code cmvr.api.AudioData.AudioFormat} + */ + public enum AudioFormat + implements com.google.protobuf.ProtocolMessageEnum { + /** + * PCM = 0; + */ + PCM(0), + /** + * MP3 = 1; + */ + MP3(1), + /** + * AAC = 2; + */ + AAC(2), + /** + * WAV = 3; + */ + WAV(3), + UNRECOGNIZED(-1), + ; + + /** + * PCM = 0; + */ + public static final int PCM_VALUE = 0; + /** + * MP3 = 1; + */ + public static final int MP3_VALUE = 1; + /** + * AAC = 2; + */ + public static final int AAC_VALUE = 2; + /** + * WAV = 3; + */ + public static final int WAV_VALUE = 3; + + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static AudioFormat valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static AudioFormat forNumber(int value) { + switch (value) { + case 0: return PCM; + case 1: return MP3; + case 2: return AAC; + case 3: return WAV; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + AudioFormat> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public AudioFormat findValueByNumber(int number) { + return AudioFormat.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(ordinal()); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.AudioData.getDescriptor().getEnumTypes().get(0); + } + + private static final AudioFormat[] VALUES = values(); + + public static AudioFormat valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private AudioFormat(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:cmvr.api.AudioData.AudioFormat) + } + + public static final int DATA_FIELD_NUMBER = 1; + private com.google.protobuf.ByteString data_; + /** + *
+     * 音频二进制数据
+     * 
+ * + * bytes data = 1; + * @return The data. + */ + @java.lang.Override + public com.google.protobuf.ByteString getData() { + return data_; + } + + public static final int SAMPLE_RATE_FIELD_NUMBER = 2; + private int sampleRate_; + /** + *
+     * 采样率(Hz)
+     * 
+ * + * int32 sample_rate = 2; + * @return The sampleRate. + */ + @java.lang.Override + public int getSampleRate() { + return sampleRate_; + } + + public static final int CHANNELS_FIELD_NUMBER = 3; + private int channels_; + /** + *
+     * 声道数
+     * 
+ * + * int32 channels = 3; + * @return The channels. + */ + @java.lang.Override + public int getChannels() { + return channels_; + } + + public static final int FORMAT_FIELD_NUMBER = 4; + private int format_; + /** + *
+     * 音频格式
+     * 
+ * + * .cmvr.api.AudioData.AudioFormat format = 4; + * @return The enum numeric value on the wire for format. + */ + @java.lang.Override public int getFormatValue() { + return format_; + } + /** + *
+     * 音频格式
+     * 
+ * + * .cmvr.api.AudioData.AudioFormat format = 4; + * @return The format. + */ + @java.lang.Override public cmvr.api.SpeakerCommand.AudioData.AudioFormat getFormat() { + @SuppressWarnings("deprecation") + cmvr.api.SpeakerCommand.AudioData.AudioFormat result = cmvr.api.SpeakerCommand.AudioData.AudioFormat.valueOf(format_); + return result == null ? cmvr.api.SpeakerCommand.AudioData.AudioFormat.UNRECOGNIZED : result; + } + + public static final int CODEC_FIELD_NUMBER = 5; + private volatile java.lang.Object codec_; + /** + *
+     * 编码方式
+     * 
+ * + * string codec = 5; + * @return The codec. + */ + @java.lang.Override + public java.lang.String getCodec() { + java.lang.Object ref = codec_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + codec_ = s; + return s; + } + } + /** + *
+     * 编码方式
+     * 
+ * + * string codec = 5; + * @return The bytes for codec. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getCodecBytes() { + java.lang.Object ref = codec_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + codec_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!data_.isEmpty()) { + output.writeBytes(1, data_); + } + if (sampleRate_ != 0) { + output.writeInt32(2, sampleRate_); + } + if (channels_ != 0) { + output.writeInt32(3, channels_); + } + if (format_ != cmvr.api.SpeakerCommand.AudioData.AudioFormat.PCM.getNumber()) { + output.writeEnum(4, format_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(codec_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 5, codec_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!data_.isEmpty()) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(1, data_); + } + if (sampleRate_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(2, sampleRate_); + } + if (channels_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(3, channels_); + } + if (format_ != cmvr.api.SpeakerCommand.AudioData.AudioFormat.PCM.getNumber()) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(4, format_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(codec_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, codec_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.SpeakerCommand.AudioData)) { + return super.equals(obj); + } + cmvr.api.SpeakerCommand.AudioData other = (cmvr.api.SpeakerCommand.AudioData) obj; + + if (!getData() + .equals(other.getData())) return false; + if (getSampleRate() + != other.getSampleRate()) return false; + if (getChannels() + != other.getChannels()) return false; + if (format_ != other.format_) return false; + if (!getCodec() + .equals(other.getCodec())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + DATA_FIELD_NUMBER; + hash = (53 * hash) + getData().hashCode(); + hash = (37 * hash) + SAMPLE_RATE_FIELD_NUMBER; + hash = (53 * hash) + getSampleRate(); + hash = (37 * hash) + CHANNELS_FIELD_NUMBER; + hash = (53 * hash) + getChannels(); + hash = (37 * hash) + FORMAT_FIELD_NUMBER; + hash = (53 * hash) + format_; + hash = (37 * hash) + CODEC_FIELD_NUMBER; + hash = (53 * hash) + getCodec().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.SpeakerCommand.AudioData parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.AudioData parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.AudioData parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.AudioData parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.AudioData parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.AudioData parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.AudioData parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.AudioData parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.AudioData parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.AudioData parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.AudioData parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.AudioData parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.SpeakerCommand.AudioData prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * 音频数据格式(与麦克风类似,但用于输出)
+     * 
+ * + * Protobuf type {@code cmvr.api.AudioData} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.AudioData) + cmvr.api.SpeakerCommand.AudioDataOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_AudioData_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_AudioData_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.AudioData.class, cmvr.api.SpeakerCommand.AudioData.Builder.class); + } + + // Construct using cmvr.api.SpeakerCommand.AudioData.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + data_ = com.google.protobuf.ByteString.EMPTY; + + sampleRate_ = 0; + + channels_ = 0; + + format_ = 0; + + codec_ = ""; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_AudioData_descriptor; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.AudioData getDefaultInstanceForType() { + return cmvr.api.SpeakerCommand.AudioData.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.AudioData build() { + cmvr.api.SpeakerCommand.AudioData result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.AudioData buildPartial() { + cmvr.api.SpeakerCommand.AudioData result = new cmvr.api.SpeakerCommand.AudioData(this); + result.data_ = data_; + result.sampleRate_ = sampleRate_; + result.channels_ = channels_; + result.format_ = format_; + result.codec_ = codec_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.SpeakerCommand.AudioData) { + return mergeFrom((cmvr.api.SpeakerCommand.AudioData)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.SpeakerCommand.AudioData other) { + if (other == cmvr.api.SpeakerCommand.AudioData.getDefaultInstance()) return this; + if (other.getData() != com.google.protobuf.ByteString.EMPTY) { + setData(other.getData()); + } + if (other.getSampleRate() != 0) { + setSampleRate(other.getSampleRate()); + } + if (other.getChannels() != 0) { + setChannels(other.getChannels()); + } + if (other.format_ != 0) { + setFormatValue(other.getFormatValue()); + } + if (!other.getCodec().isEmpty()) { + codec_ = other.codec_; + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + data_ = input.readBytes(); + + break; + } // case 10 + case 16: { + sampleRate_ = input.readInt32(); + + break; + } // case 16 + case 24: { + channels_ = input.readInt32(); + + break; + } // case 24 + case 32: { + format_ = input.readEnum(); + + break; + } // case 32 + case 42: { + codec_ = input.readStringRequireUtf8(); + + break; + } // case 42 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private com.google.protobuf.ByteString data_ = com.google.protobuf.ByteString.EMPTY; + /** + *
+       * 音频二进制数据
+       * 
+ * + * bytes data = 1; + * @return The data. + */ + @java.lang.Override + public com.google.protobuf.ByteString getData() { + return data_; + } + /** + *
+       * 音频二进制数据
+       * 
+ * + * bytes data = 1; + * @param value The data to set. + * @return This builder for chaining. + */ + public Builder setData(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + + data_ = value; + onChanged(); + return this; + } + /** + *
+       * 音频二进制数据
+       * 
+ * + * bytes data = 1; + * @return This builder for chaining. + */ + public Builder clearData() { + + data_ = getDefaultInstance().getData(); + onChanged(); + return this; + } + + private int sampleRate_ ; + /** + *
+       * 采样率(Hz)
+       * 
+ * + * int32 sample_rate = 2; + * @return The sampleRate. + */ + @java.lang.Override + public int getSampleRate() { + return sampleRate_; + } + /** + *
+       * 采样率(Hz)
+       * 
+ * + * int32 sample_rate = 2; + * @param value The sampleRate to set. + * @return This builder for chaining. + */ + public Builder setSampleRate(int value) { + + sampleRate_ = value; + onChanged(); + return this; + } + /** + *
+       * 采样率(Hz)
+       * 
+ * + * int32 sample_rate = 2; + * @return This builder for chaining. + */ + public Builder clearSampleRate() { + + sampleRate_ = 0; + onChanged(); + return this; + } + + private int channels_ ; + /** + *
+       * 声道数
+       * 
+ * + * int32 channels = 3; + * @return The channels. + */ + @java.lang.Override + public int getChannels() { + return channels_; + } + /** + *
+       * 声道数
+       * 
+ * + * int32 channels = 3; + * @param value The channels to set. + * @return This builder for chaining. + */ + public Builder setChannels(int value) { + + channels_ = value; + onChanged(); + return this; + } + /** + *
+       * 声道数
+       * 
+ * + * int32 channels = 3; + * @return This builder for chaining. + */ + public Builder clearChannels() { + + channels_ = 0; + onChanged(); + return this; + } + + private int format_ = 0; + /** + *
+       * 音频格式
+       * 
+ * + * .cmvr.api.AudioData.AudioFormat format = 4; + * @return The enum numeric value on the wire for format. + */ + @java.lang.Override public int getFormatValue() { + return format_; + } + /** + *
+       * 音频格式
+       * 
+ * + * .cmvr.api.AudioData.AudioFormat format = 4; + * @param value The enum numeric value on the wire for format to set. + * @return This builder for chaining. + */ + public Builder setFormatValue(int value) { + + format_ = value; + onChanged(); + return this; + } + /** + *
+       * 音频格式
+       * 
+ * + * .cmvr.api.AudioData.AudioFormat format = 4; + * @return The format. + */ + @java.lang.Override + public cmvr.api.SpeakerCommand.AudioData.AudioFormat getFormat() { + @SuppressWarnings("deprecation") + cmvr.api.SpeakerCommand.AudioData.AudioFormat result = cmvr.api.SpeakerCommand.AudioData.AudioFormat.valueOf(format_); + return result == null ? cmvr.api.SpeakerCommand.AudioData.AudioFormat.UNRECOGNIZED : result; + } + /** + *
+       * 音频格式
+       * 
+ * + * .cmvr.api.AudioData.AudioFormat format = 4; + * @param value The format to set. + * @return This builder for chaining. + */ + public Builder setFormat(cmvr.api.SpeakerCommand.AudioData.AudioFormat value) { + if (value == null) { + throw new NullPointerException(); + } + + format_ = value.getNumber(); + onChanged(); + return this; + } + /** + *
+       * 音频格式
+       * 
+ * + * .cmvr.api.AudioData.AudioFormat format = 4; + * @return This builder for chaining. + */ + public Builder clearFormat() { + + format_ = 0; + onChanged(); + return this; + } + + private java.lang.Object codec_ = ""; + /** + *
+       * 编码方式
+       * 
+ * + * string codec = 5; + * @return The codec. + */ + public java.lang.String getCodec() { + java.lang.Object ref = codec_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + codec_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * 编码方式
+       * 
+ * + * string codec = 5; + * @return The bytes for codec. + */ + public com.google.protobuf.ByteString + getCodecBytes() { + java.lang.Object ref = codec_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + codec_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * 编码方式
+       * 
+ * + * string codec = 5; + * @param value The codec to set. + * @return This builder for chaining. + */ + public Builder setCodec( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + codec_ = value; + onChanged(); + return this; + } + /** + *
+       * 编码方式
+       * 
+ * + * string codec = 5; + * @return This builder for chaining. + */ + public Builder clearCodec() { + + codec_ = getDefaultInstance().getCodec(); + onChanged(); + return this; + } + /** + *
+       * 编码方式
+       * 
+ * + * string codec = 5; + * @param value The bytes for codec to set. + * @return This builder for chaining. + */ + public Builder setCodecBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + codec_ = value; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.AudioData) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.AudioData) + private static final cmvr.api.SpeakerCommand.AudioData DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.SpeakerCommand.AudioData(); + } + + public static cmvr.api.SpeakerCommand.AudioData getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public AudioData parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.AudioData getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface SpeakerStateOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.SpeakerState) + com.google.protobuf.MessageOrBuilder { + + /** + *
+     * 是否已初始化
+     * 
+ * + * bool is_initialized = 1; + * @return The isInitialized. + */ + boolean getIsInitialized(); + + /** + *
+     * 是否正在播放
+     * 
+ * + * bool is_running = 2; + * @return The isRunning. + */ + boolean getIsRunning(); + + /** + * bool is_decoding = 3; + * @return The isDecoding. + */ + boolean getIsDecoding(); + + /** + * bool is_paused = 5; + * @return The isPaused. + */ + boolean getIsPaused(); + + /** + *
+     * 当前音量(0 ~ 100)
+     * 
+ * + * int32 volume = 6; + * @return The volume. + */ + int getVolume(); + + /** + *
+     * 错误信息
+     * 
+ * + * string error_message = 7; + * @return The errorMessage. + */ + java.lang.String getErrorMessage(); + /** + *
+     * 错误信息
+     * 
+ * + * string error_message = 7; + * @return The bytes for errorMessage. + */ + com.google.protobuf.ByteString + getErrorMessageBytes(); + } + /** + *
+   * 扬声器状态
+   * 
+ * + * Protobuf type {@code cmvr.api.SpeakerState} + */ + public static final class SpeakerState extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.SpeakerState) + SpeakerStateOrBuilder { + private static final long serialVersionUID = 0L; + // Use SpeakerState.newBuilder() to construct. + private SpeakerState(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private SpeakerState() { + errorMessage_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new SpeakerState(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_SpeakerState_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_SpeakerState_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.SpeakerState.class, cmvr.api.SpeakerCommand.SpeakerState.Builder.class); + } + + public static final int IS_INITIALIZED_FIELD_NUMBER = 1; + private boolean isInitialized_; + /** + *
+     * 是否已初始化
+     * 
+ * + * bool is_initialized = 1; + * @return The isInitialized. + */ + @java.lang.Override + public boolean getIsInitialized() { + return isInitialized_; + } + + public static final int IS_RUNNING_FIELD_NUMBER = 2; + private boolean isRunning_; + /** + *
+     * 是否正在播放
+     * 
+ * + * bool is_running = 2; + * @return The isRunning. + */ + @java.lang.Override + public boolean getIsRunning() { + return isRunning_; + } + + public static final int IS_DECODING_FIELD_NUMBER = 3; + private boolean isDecoding_; + /** + * bool is_decoding = 3; + * @return The isDecoding. + */ + @java.lang.Override + public boolean getIsDecoding() { + return isDecoding_; + } + + public static final int IS_PAUSED_FIELD_NUMBER = 5; + private boolean isPaused_; + /** + * bool is_paused = 5; + * @return The isPaused. + */ + @java.lang.Override + public boolean getIsPaused() { + return isPaused_; + } + + public static final int VOLUME_FIELD_NUMBER = 6; + private int volume_; + /** + *
+     * 当前音量(0 ~ 100)
+     * 
+ * + * int32 volume = 6; + * @return The volume. + */ + @java.lang.Override + public int getVolume() { + return volume_; + } + + public static final int ERROR_MESSAGE_FIELD_NUMBER = 7; + private volatile java.lang.Object errorMessage_; + /** + *
+     * 错误信息
+     * 
+ * + * string error_message = 7; + * @return The errorMessage. + */ + @java.lang.Override + public java.lang.String getErrorMessage() { + java.lang.Object ref = errorMessage_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + errorMessage_ = s; + return s; + } + } + /** + *
+     * 错误信息
+     * 
+ * + * string error_message = 7; + * @return The bytes for errorMessage. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getErrorMessageBytes() { + java.lang.Object ref = errorMessage_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + errorMessage_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (isInitialized_ != false) { + output.writeBool(1, isInitialized_); + } + if (isRunning_ != false) { + output.writeBool(2, isRunning_); + } + if (isDecoding_ != false) { + output.writeBool(3, isDecoding_); + } + if (isPaused_ != false) { + output.writeBool(5, isPaused_); + } + if (volume_ != 0) { + output.writeInt32(6, volume_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(errorMessage_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 7, errorMessage_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (isInitialized_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(1, isInitialized_); + } + if (isRunning_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(2, isRunning_); + } + if (isDecoding_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(3, isDecoding_); + } + if (isPaused_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(5, isPaused_); + } + if (volume_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(6, volume_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(errorMessage_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, errorMessage_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.SpeakerCommand.SpeakerState)) { + return super.equals(obj); + } + cmvr.api.SpeakerCommand.SpeakerState other = (cmvr.api.SpeakerCommand.SpeakerState) obj; + + if (getIsInitialized() + != other.getIsInitialized()) return false; + if (getIsRunning() + != other.getIsRunning()) return false; + if (getIsDecoding() + != other.getIsDecoding()) return false; + if (getIsPaused() + != other.getIsPaused()) return false; + if (getVolume() + != other.getVolume()) return false; + if (!getErrorMessage() + .equals(other.getErrorMessage())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + IS_INITIALIZED_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getIsInitialized()); + hash = (37 * hash) + IS_RUNNING_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getIsRunning()); + hash = (37 * hash) + IS_DECODING_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getIsDecoding()); + hash = (37 * hash) + IS_PAUSED_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getIsPaused()); + hash = (37 * hash) + VOLUME_FIELD_NUMBER; + hash = (53 * hash) + getVolume(); + hash = (37 * hash) + ERROR_MESSAGE_FIELD_NUMBER; + hash = (53 * hash) + getErrorMessage().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.SpeakerCommand.SpeakerState parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.SpeakerState parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.SpeakerState parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.SpeakerState parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.SpeakerState parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.SpeakerState parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.SpeakerState parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.SpeakerState parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.SpeakerState parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.SpeakerState parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.SpeakerState parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.SpeakerState parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.SpeakerCommand.SpeakerState prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * 扬声器状态
+     * 
+ * + * Protobuf type {@code cmvr.api.SpeakerState} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.SpeakerState) + cmvr.api.SpeakerCommand.SpeakerStateOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_SpeakerState_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_SpeakerState_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.SpeakerState.class, cmvr.api.SpeakerCommand.SpeakerState.Builder.class); + } + + // Construct using cmvr.api.SpeakerCommand.SpeakerState.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + isInitialized_ = false; + + isRunning_ = false; + + isDecoding_ = false; + + isPaused_ = false; + + volume_ = 0; + + errorMessage_ = ""; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_SpeakerState_descriptor; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.SpeakerState getDefaultInstanceForType() { + return cmvr.api.SpeakerCommand.SpeakerState.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.SpeakerState build() { + cmvr.api.SpeakerCommand.SpeakerState result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.SpeakerState buildPartial() { + cmvr.api.SpeakerCommand.SpeakerState result = new cmvr.api.SpeakerCommand.SpeakerState(this); + result.isInitialized_ = isInitialized_; + result.isRunning_ = isRunning_; + result.isDecoding_ = isDecoding_; + result.isPaused_ = isPaused_; + result.volume_ = volume_; + result.errorMessage_ = errorMessage_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.SpeakerCommand.SpeakerState) { + return mergeFrom((cmvr.api.SpeakerCommand.SpeakerState)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.SpeakerCommand.SpeakerState other) { + if (other == cmvr.api.SpeakerCommand.SpeakerState.getDefaultInstance()) return this; + if (other.getIsInitialized() != false) { + setIsInitialized(other.getIsInitialized()); + } + if (other.getIsRunning() != false) { + setIsRunning(other.getIsRunning()); + } + if (other.getIsDecoding() != false) { + setIsDecoding(other.getIsDecoding()); + } + if (other.getIsPaused() != false) { + setIsPaused(other.getIsPaused()); + } + if (other.getVolume() != 0) { + setVolume(other.getVolume()); + } + if (!other.getErrorMessage().isEmpty()) { + errorMessage_ = other.errorMessage_; + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + isInitialized_ = input.readBool(); + + break; + } // case 8 + case 16: { + isRunning_ = input.readBool(); + + break; + } // case 16 + case 24: { + isDecoding_ = input.readBool(); + + break; + } // case 24 + case 40: { + isPaused_ = input.readBool(); + + break; + } // case 40 + case 48: { + volume_ = input.readInt32(); + + break; + } // case 48 + case 58: { + errorMessage_ = input.readStringRequireUtf8(); + + break; + } // case 58 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private boolean isInitialized_ ; + /** + *
+       * 是否已初始化
+       * 
+ * + * bool is_initialized = 1; + * @return The isInitialized. + */ + @java.lang.Override + public boolean getIsInitialized() { + return isInitialized_; + } + /** + *
+       * 是否已初始化
+       * 
+ * + * bool is_initialized = 1; + * @param value The isInitialized to set. + * @return This builder for chaining. + */ + public Builder setIsInitialized(boolean value) { + + isInitialized_ = value; + onChanged(); + return this; + } + /** + *
+       * 是否已初始化
+       * 
+ * + * bool is_initialized = 1; + * @return This builder for chaining. + */ + public Builder clearIsInitialized() { + + isInitialized_ = false; + onChanged(); + return this; + } + + private boolean isRunning_ ; + /** + *
+       * 是否正在播放
+       * 
+ * + * bool is_running = 2; + * @return The isRunning. + */ + @java.lang.Override + public boolean getIsRunning() { + return isRunning_; + } + /** + *
+       * 是否正在播放
+       * 
+ * + * bool is_running = 2; + * @param value The isRunning to set. + * @return This builder for chaining. + */ + public Builder setIsRunning(boolean value) { + + isRunning_ = value; + onChanged(); + return this; + } + /** + *
+       * 是否正在播放
+       * 
+ * + * bool is_running = 2; + * @return This builder for chaining. + */ + public Builder clearIsRunning() { + + isRunning_ = false; + onChanged(); + return this; + } + + private boolean isDecoding_ ; + /** + * bool is_decoding = 3; + * @return The isDecoding. + */ + @java.lang.Override + public boolean getIsDecoding() { + return isDecoding_; + } + /** + * bool is_decoding = 3; + * @param value The isDecoding to set. + * @return This builder for chaining. + */ + public Builder setIsDecoding(boolean value) { + + isDecoding_ = value; + onChanged(); + return this; + } + /** + * bool is_decoding = 3; + * @return This builder for chaining. + */ + public Builder clearIsDecoding() { + + isDecoding_ = false; + onChanged(); + return this; + } + + private boolean isPaused_ ; + /** + * bool is_paused = 5; + * @return The isPaused. + */ + @java.lang.Override + public boolean getIsPaused() { + return isPaused_; + } + /** + * bool is_paused = 5; + * @param value The isPaused to set. + * @return This builder for chaining. + */ + public Builder setIsPaused(boolean value) { + + isPaused_ = value; + onChanged(); + return this; + } + /** + * bool is_paused = 5; + * @return This builder for chaining. + */ + public Builder clearIsPaused() { + + isPaused_ = false; + onChanged(); + return this; + } + + private int volume_ ; + /** + *
+       * 当前音量(0 ~ 100)
+       * 
+ * + * int32 volume = 6; + * @return The volume. + */ + @java.lang.Override + public int getVolume() { + return volume_; + } + /** + *
+       * 当前音量(0 ~ 100)
+       * 
+ * + * int32 volume = 6; + * @param value The volume to set. + * @return This builder for chaining. + */ + public Builder setVolume(int value) { + + volume_ = value; + onChanged(); + return this; + } + /** + *
+       * 当前音量(0 ~ 100)
+       * 
+ * + * int32 volume = 6; + * @return This builder for chaining. + */ + public Builder clearVolume() { + + volume_ = 0; + onChanged(); + return this; + } + + private java.lang.Object errorMessage_ = ""; + /** + *
+       * 错误信息
+       * 
+ * + * string error_message = 7; + * @return The errorMessage. + */ + public java.lang.String getErrorMessage() { + java.lang.Object ref = errorMessage_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + errorMessage_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * 错误信息
+       * 
+ * + * string error_message = 7; + * @return The bytes for errorMessage. + */ + public com.google.protobuf.ByteString + getErrorMessageBytes() { + java.lang.Object ref = errorMessage_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + errorMessage_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * 错误信息
+       * 
+ * + * string error_message = 7; + * @param value The errorMessage to set. + * @return This builder for chaining. + */ + public Builder setErrorMessage( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + errorMessage_ = value; + onChanged(); + return this; + } + /** + *
+       * 错误信息
+       * 
+ * + * string error_message = 7; + * @return This builder for chaining. + */ + public Builder clearErrorMessage() { + + errorMessage_ = getDefaultInstance().getErrorMessage(); + onChanged(); + return this; + } + /** + *
+       * 错误信息
+       * 
+ * + * string error_message = 7; + * @param value The bytes for errorMessage to set. + * @return This builder for chaining. + */ + public Builder setErrorMessageBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + errorMessage_ = value; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.SpeakerState) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.SpeakerState) + private static final cmvr.api.SpeakerCommand.SpeakerState DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.SpeakerCommand.SpeakerState(); + } + + public static cmvr.api.SpeakerCommand.SpeakerState getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public SpeakerState parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.SpeakerState getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface GetSpeakerStateCommandOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetSpeakerStateCommand) + com.google.protobuf.MessageOrBuilder { + } + /** + *
+   * 各种扬声器命令
+   * 
+ * + * Protobuf type {@code cmvr.api.GetSpeakerStateCommand} + */ + public static final class GetSpeakerStateCommand extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetSpeakerStateCommand) + GetSpeakerStateCommandOrBuilder { + private static final long serialVersionUID = 0L; + // Use GetSpeakerStateCommand.newBuilder() to construct. + private GetSpeakerStateCommand(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private GetSpeakerStateCommand() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new GetSpeakerStateCommand(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_GetSpeakerStateCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_GetSpeakerStateCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.GetSpeakerStateCommand.class, cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Builder.class); + } + + public interface RequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetSpeakerStateCommand.Request) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Request getHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.GetSpeakerStateCommand.Request} + */ + public static final class Request extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetSpeakerStateCommand.Request) + RequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use Request.newBuilder() to construct. + private Request(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Request() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Request(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_GetSpeakerStateCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_GetSpeakerStateCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request.class, cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Request header_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request)) { + return super.equals(obj); + } + cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request other = (cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetSpeakerStateCommand.Request} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetSpeakerStateCommand.Request) + cmvr.api.SpeakerCommand.GetSpeakerStateCommand.RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_GetSpeakerStateCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_GetSpeakerStateCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request.class, cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request.Builder.class); + } + + // Construct using cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_GetSpeakerStateCommand_Request_descriptor; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request getDefaultInstanceForType() { + return cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request build() { + cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request buildPartial() { + cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request result = new cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request) { + return mergeFrom((cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request other) { + if (other == cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Request header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Request getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Request.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Request.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.Request.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetSpeakerStateCommand.Request) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetSpeakerStateCommand.Request) + private static final cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request(); + } + + public static cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface FeedbackOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetSpeakerStateCommand.Feedback) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Feedback getHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder(); + + /** + * .cmvr.api.SpeakerState state = 2; + * @return Whether the state field is set. + */ + boolean hasState(); + /** + * .cmvr.api.SpeakerState state = 2; + * @return The state. + */ + cmvr.api.SpeakerCommand.SpeakerState getState(); + /** + * .cmvr.api.SpeakerState state = 2; + */ + cmvr.api.SpeakerCommand.SpeakerStateOrBuilder getStateOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.GetSpeakerStateCommand.Feedback} + */ + public static final class Feedback extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetSpeakerStateCommand.Feedback) + FeedbackOrBuilder { + private static final long serialVersionUID = 0L; + // Use Feedback.newBuilder() to construct. + private Feedback(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Feedback() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Feedback(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_GetSpeakerStateCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_GetSpeakerStateCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Feedback.class, cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Feedback.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Feedback header_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + public static final int STATE_FIELD_NUMBER = 2; + private cmvr.api.SpeakerCommand.SpeakerState state_; + /** + * .cmvr.api.SpeakerState state = 2; + * @return Whether the state field is set. + */ + @java.lang.Override + public boolean hasState() { + return state_ != null; + } + /** + * .cmvr.api.SpeakerState state = 2; + * @return The state. + */ + @java.lang.Override + public cmvr.api.SpeakerCommand.SpeakerState getState() { + return state_ == null ? cmvr.api.SpeakerCommand.SpeakerState.getDefaultInstance() : state_; + } + /** + * .cmvr.api.SpeakerState state = 2; + */ + @java.lang.Override + public cmvr.api.SpeakerCommand.SpeakerStateOrBuilder getStateOrBuilder() { + return getState(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + if (state_ != null) { + output.writeMessage(2, getState()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + if (state_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, getState()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Feedback)) { + return super.equals(obj); + } + cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Feedback other = (cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Feedback) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (hasState() != other.hasState()) return false; + if (hasState()) { + if (!getState() + .equals(other.getState())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + if (hasState()) { + hash = (37 * hash) + STATE_FIELD_NUMBER; + hash = (53 * hash) + getState().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Feedback parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Feedback parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Feedback parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Feedback parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Feedback parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Feedback parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Feedback parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Feedback parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Feedback parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Feedback parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Feedback prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetSpeakerStateCommand.Feedback} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetSpeakerStateCommand.Feedback) + cmvr.api.SpeakerCommand.GetSpeakerStateCommand.FeedbackOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_GetSpeakerStateCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_GetSpeakerStateCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Feedback.class, cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Feedback.Builder.class); + } + + // Construct using cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Feedback.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + if (stateBuilder_ == null) { + state_ = null; + } else { + state_ = null; + stateBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_GetSpeakerStateCommand_Feedback_descriptor; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Feedback getDefaultInstanceForType() { + return cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Feedback.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Feedback build() { + cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Feedback result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Feedback buildPartial() { + cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Feedback result = new cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Feedback(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + if (stateBuilder_ == null) { + result.state_ = state_; + } else { + result.state_ = stateBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Feedback) { + return mergeFrom((cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Feedback)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Feedback other) { + if (other == cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Feedback.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + if (other.hasState()) { + mergeState(other.getState()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + case 18: { + input.readMessage( + getStateFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 18 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Feedback header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Feedback.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Feedback.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.Feedback.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + + private cmvr.api.SpeakerCommand.SpeakerState state_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.SpeakerCommand.SpeakerState, cmvr.api.SpeakerCommand.SpeakerState.Builder, cmvr.api.SpeakerCommand.SpeakerStateOrBuilder> stateBuilder_; + /** + * .cmvr.api.SpeakerState state = 2; + * @return Whether the state field is set. + */ + public boolean hasState() { + return stateBuilder_ != null || state_ != null; + } + /** + * .cmvr.api.SpeakerState state = 2; + * @return The state. + */ + public cmvr.api.SpeakerCommand.SpeakerState getState() { + if (stateBuilder_ == null) { + return state_ == null ? cmvr.api.SpeakerCommand.SpeakerState.getDefaultInstance() : state_; + } else { + return stateBuilder_.getMessage(); + } + } + /** + * .cmvr.api.SpeakerState state = 2; + */ + public Builder setState(cmvr.api.SpeakerCommand.SpeakerState value) { + if (stateBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + state_ = value; + onChanged(); + } else { + stateBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.SpeakerState state = 2; + */ + public Builder setState( + cmvr.api.SpeakerCommand.SpeakerState.Builder builderForValue) { + if (stateBuilder_ == null) { + state_ = builderForValue.build(); + onChanged(); + } else { + stateBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.SpeakerState state = 2; + */ + public Builder mergeState(cmvr.api.SpeakerCommand.SpeakerState value) { + if (stateBuilder_ == null) { + if (state_ != null) { + state_ = + cmvr.api.SpeakerCommand.SpeakerState.newBuilder(state_).mergeFrom(value).buildPartial(); + } else { + state_ = value; + } + onChanged(); + } else { + stateBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.SpeakerState state = 2; + */ + public Builder clearState() { + if (stateBuilder_ == null) { + state_ = null; + onChanged(); + } else { + state_ = null; + stateBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.SpeakerState state = 2; + */ + public cmvr.api.SpeakerCommand.SpeakerState.Builder getStateBuilder() { + + onChanged(); + return getStateFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.SpeakerState state = 2; + */ + public cmvr.api.SpeakerCommand.SpeakerStateOrBuilder getStateOrBuilder() { + if (stateBuilder_ != null) { + return stateBuilder_.getMessageOrBuilder(); + } else { + return state_ == null ? + cmvr.api.SpeakerCommand.SpeakerState.getDefaultInstance() : state_; + } + } + /** + * .cmvr.api.SpeakerState state = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.SpeakerCommand.SpeakerState, cmvr.api.SpeakerCommand.SpeakerState.Builder, cmvr.api.SpeakerCommand.SpeakerStateOrBuilder> + getStateFieldBuilder() { + if (stateBuilder_ == null) { + stateBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.SpeakerCommand.SpeakerState, cmvr.api.SpeakerCommand.SpeakerState.Builder, cmvr.api.SpeakerCommand.SpeakerStateOrBuilder>( + getState(), + getParentForChildren(), + isClean()); + state_ = null; + } + return stateBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetSpeakerStateCommand.Feedback) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetSpeakerStateCommand.Feedback) + private static final cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Feedback DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Feedback(); + } + + public static cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Feedback getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Feedback parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Feedback getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.SpeakerCommand.GetSpeakerStateCommand)) { + return super.equals(obj); + } + cmvr.api.SpeakerCommand.GetSpeakerStateCommand other = (cmvr.api.SpeakerCommand.GetSpeakerStateCommand) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.SpeakerCommand.GetSpeakerStateCommand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.GetSpeakerStateCommand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.GetSpeakerStateCommand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.GetSpeakerStateCommand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.GetSpeakerStateCommand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.GetSpeakerStateCommand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.GetSpeakerStateCommand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.GetSpeakerStateCommand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.GetSpeakerStateCommand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.GetSpeakerStateCommand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.GetSpeakerStateCommand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.GetSpeakerStateCommand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.SpeakerCommand.GetSpeakerStateCommand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * 各种扬声器命令
+     * 
+ * + * Protobuf type {@code cmvr.api.GetSpeakerStateCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetSpeakerStateCommand) + cmvr.api.SpeakerCommand.GetSpeakerStateCommandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_GetSpeakerStateCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_GetSpeakerStateCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.GetSpeakerStateCommand.class, cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Builder.class); + } + + // Construct using cmvr.api.SpeakerCommand.GetSpeakerStateCommand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_GetSpeakerStateCommand_descriptor; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.GetSpeakerStateCommand getDefaultInstanceForType() { + return cmvr.api.SpeakerCommand.GetSpeakerStateCommand.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.GetSpeakerStateCommand build() { + cmvr.api.SpeakerCommand.GetSpeakerStateCommand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.GetSpeakerStateCommand buildPartial() { + cmvr.api.SpeakerCommand.GetSpeakerStateCommand result = new cmvr.api.SpeakerCommand.GetSpeakerStateCommand(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.SpeakerCommand.GetSpeakerStateCommand) { + return mergeFrom((cmvr.api.SpeakerCommand.GetSpeakerStateCommand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.SpeakerCommand.GetSpeakerStateCommand other) { + if (other == cmvr.api.SpeakerCommand.GetSpeakerStateCommand.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetSpeakerStateCommand) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetSpeakerStateCommand) + private static final cmvr.api.SpeakerCommand.GetSpeakerStateCommand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.SpeakerCommand.GetSpeakerStateCommand(); + } + + public static cmvr.api.SpeakerCommand.GetSpeakerStateCommand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public GetSpeakerStateCommand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.GetSpeakerStateCommand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface PlayAudioCommandOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.PlayAudioCommand) + com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code cmvr.api.PlayAudioCommand} + */ + public static final class PlayAudioCommand extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.PlayAudioCommand) + PlayAudioCommandOrBuilder { + private static final long serialVersionUID = 0L; + // Use PlayAudioCommand.newBuilder() to construct. + private PlayAudioCommand(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private PlayAudioCommand() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new PlayAudioCommand(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_PlayAudioCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_PlayAudioCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.PlayAudioCommand.class, cmvr.api.SpeakerCommand.PlayAudioCommand.Builder.class); + } + + public interface RequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.PlayAudioCommand.Request) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Request getHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder(); + + /** + * string audio_path = 2; + * @return The audioPath. + */ + java.lang.String getAudioPath(); + /** + * string audio_path = 2; + * @return The bytes for audioPath. + */ + com.google.protobuf.ByteString + getAudioPathBytes(); + } + /** + * Protobuf type {@code cmvr.api.PlayAudioCommand.Request} + */ + public static final class Request extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.PlayAudioCommand.Request) + RequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use Request.newBuilder() to construct. + private Request(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Request() { + audioPath_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Request(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_PlayAudioCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_PlayAudioCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.PlayAudioCommand.Request.class, cmvr.api.SpeakerCommand.PlayAudioCommand.Request.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Request header_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + public static final int AUDIO_PATH_FIELD_NUMBER = 2; + private volatile java.lang.Object audioPath_; + /** + * string audio_path = 2; + * @return The audioPath. + */ + @java.lang.Override + public java.lang.String getAudioPath() { + java.lang.Object ref = audioPath_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + audioPath_ = s; + return s; + } + } + /** + * string audio_path = 2; + * @return The bytes for audioPath. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getAudioPathBytes() { + java.lang.Object ref = audioPath_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + audioPath_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(audioPath_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, audioPath_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(audioPath_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, audioPath_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.SpeakerCommand.PlayAudioCommand.Request)) { + return super.equals(obj); + } + cmvr.api.SpeakerCommand.PlayAudioCommand.Request other = (cmvr.api.SpeakerCommand.PlayAudioCommand.Request) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getAudioPath() + .equals(other.getAudioPath())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (37 * hash) + AUDIO_PATH_FIELD_NUMBER; + hash = (53 * hash) + getAudioPath().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.SpeakerCommand.PlayAudioCommand.Request parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.PlayAudioCommand.Request parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.PlayAudioCommand.Request parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.PlayAudioCommand.Request parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.PlayAudioCommand.Request parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.PlayAudioCommand.Request parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.PlayAudioCommand.Request parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.PlayAudioCommand.Request parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.PlayAudioCommand.Request parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.PlayAudioCommand.Request parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.PlayAudioCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.PlayAudioCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.SpeakerCommand.PlayAudioCommand.Request prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.PlayAudioCommand.Request} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.PlayAudioCommand.Request) + cmvr.api.SpeakerCommand.PlayAudioCommand.RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_PlayAudioCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_PlayAudioCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.PlayAudioCommand.Request.class, cmvr.api.SpeakerCommand.PlayAudioCommand.Request.Builder.class); + } + + // Construct using cmvr.api.SpeakerCommand.PlayAudioCommand.Request.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + audioPath_ = ""; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_PlayAudioCommand_Request_descriptor; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.PlayAudioCommand.Request getDefaultInstanceForType() { + return cmvr.api.SpeakerCommand.PlayAudioCommand.Request.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.PlayAudioCommand.Request build() { + cmvr.api.SpeakerCommand.PlayAudioCommand.Request result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.PlayAudioCommand.Request buildPartial() { + cmvr.api.SpeakerCommand.PlayAudioCommand.Request result = new cmvr.api.SpeakerCommand.PlayAudioCommand.Request(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + result.audioPath_ = audioPath_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.SpeakerCommand.PlayAudioCommand.Request) { + return mergeFrom((cmvr.api.SpeakerCommand.PlayAudioCommand.Request)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.SpeakerCommand.PlayAudioCommand.Request other) { + if (other == cmvr.api.SpeakerCommand.PlayAudioCommand.Request.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + if (!other.getAudioPath().isEmpty()) { + audioPath_ = other.audioPath_; + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + case 18: { + audioPath_ = input.readStringRequireUtf8(); + + break; + } // case 18 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Request header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Request getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Request.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Request.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.Request.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + + private java.lang.Object audioPath_ = ""; + /** + * string audio_path = 2; + * @return The audioPath. + */ + public java.lang.String getAudioPath() { + java.lang.Object ref = audioPath_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + audioPath_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string audio_path = 2; + * @return The bytes for audioPath. + */ + public com.google.protobuf.ByteString + getAudioPathBytes() { + java.lang.Object ref = audioPath_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + audioPath_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string audio_path = 2; + * @param value The audioPath to set. + * @return This builder for chaining. + */ + public Builder setAudioPath( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + audioPath_ = value; + onChanged(); + return this; + } + /** + * string audio_path = 2; + * @return This builder for chaining. + */ + public Builder clearAudioPath() { + + audioPath_ = getDefaultInstance().getAudioPath(); + onChanged(); + return this; + } + /** + * string audio_path = 2; + * @param value The bytes for audioPath to set. + * @return This builder for chaining. + */ + public Builder setAudioPathBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + audioPath_ = value; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.PlayAudioCommand.Request) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.PlayAudioCommand.Request) + private static final cmvr.api.SpeakerCommand.PlayAudioCommand.Request DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.SpeakerCommand.PlayAudioCommand.Request(); + } + + public static cmvr.api.SpeakerCommand.PlayAudioCommand.Request getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.PlayAudioCommand.Request getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface FeedbackOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.PlayAudioCommand.Feedback) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Feedback getHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.PlayAudioCommand.Feedback} + */ + public static final class Feedback extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.PlayAudioCommand.Feedback) + FeedbackOrBuilder { + private static final long serialVersionUID = 0L; + // Use Feedback.newBuilder() to construct. + private Feedback(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Feedback() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Feedback(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_PlayAudioCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_PlayAudioCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.PlayAudioCommand.Feedback.class, cmvr.api.SpeakerCommand.PlayAudioCommand.Feedback.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Feedback header_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.SpeakerCommand.PlayAudioCommand.Feedback)) { + return super.equals(obj); + } + cmvr.api.SpeakerCommand.PlayAudioCommand.Feedback other = (cmvr.api.SpeakerCommand.PlayAudioCommand.Feedback) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.SpeakerCommand.PlayAudioCommand.Feedback parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.PlayAudioCommand.Feedback parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.PlayAudioCommand.Feedback parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.PlayAudioCommand.Feedback parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.PlayAudioCommand.Feedback parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.PlayAudioCommand.Feedback parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.PlayAudioCommand.Feedback parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.PlayAudioCommand.Feedback parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.PlayAudioCommand.Feedback parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.PlayAudioCommand.Feedback parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.PlayAudioCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.PlayAudioCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.SpeakerCommand.PlayAudioCommand.Feedback prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.PlayAudioCommand.Feedback} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.PlayAudioCommand.Feedback) + cmvr.api.SpeakerCommand.PlayAudioCommand.FeedbackOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_PlayAudioCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_PlayAudioCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.PlayAudioCommand.Feedback.class, cmvr.api.SpeakerCommand.PlayAudioCommand.Feedback.Builder.class); + } + + // Construct using cmvr.api.SpeakerCommand.PlayAudioCommand.Feedback.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_PlayAudioCommand_Feedback_descriptor; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.PlayAudioCommand.Feedback getDefaultInstanceForType() { + return cmvr.api.SpeakerCommand.PlayAudioCommand.Feedback.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.PlayAudioCommand.Feedback build() { + cmvr.api.SpeakerCommand.PlayAudioCommand.Feedback result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.PlayAudioCommand.Feedback buildPartial() { + cmvr.api.SpeakerCommand.PlayAudioCommand.Feedback result = new cmvr.api.SpeakerCommand.PlayAudioCommand.Feedback(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.SpeakerCommand.PlayAudioCommand.Feedback) { + return mergeFrom((cmvr.api.SpeakerCommand.PlayAudioCommand.Feedback)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.SpeakerCommand.PlayAudioCommand.Feedback other) { + if (other == cmvr.api.SpeakerCommand.PlayAudioCommand.Feedback.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Feedback header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Feedback.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Feedback.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.Feedback.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.PlayAudioCommand.Feedback) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.PlayAudioCommand.Feedback) + private static final cmvr.api.SpeakerCommand.PlayAudioCommand.Feedback DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.SpeakerCommand.PlayAudioCommand.Feedback(); + } + + public static cmvr.api.SpeakerCommand.PlayAudioCommand.Feedback getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Feedback parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.PlayAudioCommand.Feedback getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.SpeakerCommand.PlayAudioCommand)) { + return super.equals(obj); + } + cmvr.api.SpeakerCommand.PlayAudioCommand other = (cmvr.api.SpeakerCommand.PlayAudioCommand) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.SpeakerCommand.PlayAudioCommand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.PlayAudioCommand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.PlayAudioCommand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.PlayAudioCommand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.PlayAudioCommand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.PlayAudioCommand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.PlayAudioCommand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.PlayAudioCommand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.PlayAudioCommand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.PlayAudioCommand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.PlayAudioCommand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.PlayAudioCommand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.SpeakerCommand.PlayAudioCommand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.PlayAudioCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.PlayAudioCommand) + cmvr.api.SpeakerCommand.PlayAudioCommandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_PlayAudioCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_PlayAudioCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.PlayAudioCommand.class, cmvr.api.SpeakerCommand.PlayAudioCommand.Builder.class); + } + + // Construct using cmvr.api.SpeakerCommand.PlayAudioCommand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_PlayAudioCommand_descriptor; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.PlayAudioCommand getDefaultInstanceForType() { + return cmvr.api.SpeakerCommand.PlayAudioCommand.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.PlayAudioCommand build() { + cmvr.api.SpeakerCommand.PlayAudioCommand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.PlayAudioCommand buildPartial() { + cmvr.api.SpeakerCommand.PlayAudioCommand result = new cmvr.api.SpeakerCommand.PlayAudioCommand(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.SpeakerCommand.PlayAudioCommand) { + return mergeFrom((cmvr.api.SpeakerCommand.PlayAudioCommand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.SpeakerCommand.PlayAudioCommand other) { + if (other == cmvr.api.SpeakerCommand.PlayAudioCommand.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.PlayAudioCommand) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.PlayAudioCommand) + private static final cmvr.api.SpeakerCommand.PlayAudioCommand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.SpeakerCommand.PlayAudioCommand(); + } + + public static cmvr.api.SpeakerCommand.PlayAudioCommand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public PlayAudioCommand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.PlayAudioCommand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface StopSpeakerCommandOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.StopSpeakerCommand) + com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code cmvr.api.StopSpeakerCommand} + */ + public static final class StopSpeakerCommand extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.StopSpeakerCommand) + StopSpeakerCommandOrBuilder { + private static final long serialVersionUID = 0L; + // Use StopSpeakerCommand.newBuilder() to construct. + private StopSpeakerCommand(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private StopSpeakerCommand() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new StopSpeakerCommand(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_StopSpeakerCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_StopSpeakerCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.StopSpeakerCommand.class, cmvr.api.SpeakerCommand.StopSpeakerCommand.Builder.class); + } + + public interface RequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.StopSpeakerCommand.Request) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Request getHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.StopSpeakerCommand.Request} + */ + public static final class Request extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.StopSpeakerCommand.Request) + RequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use Request.newBuilder() to construct. + private Request(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Request() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Request(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_StopSpeakerCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_StopSpeakerCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.StopSpeakerCommand.Request.class, cmvr.api.SpeakerCommand.StopSpeakerCommand.Request.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Request header_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.SpeakerCommand.StopSpeakerCommand.Request)) { + return super.equals(obj); + } + cmvr.api.SpeakerCommand.StopSpeakerCommand.Request other = (cmvr.api.SpeakerCommand.StopSpeakerCommand.Request) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.SpeakerCommand.StopSpeakerCommand.Request parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.StopSpeakerCommand.Request parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.StopSpeakerCommand.Request parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.StopSpeakerCommand.Request parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.StopSpeakerCommand.Request parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.StopSpeakerCommand.Request parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.StopSpeakerCommand.Request parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.StopSpeakerCommand.Request parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.StopSpeakerCommand.Request parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.StopSpeakerCommand.Request parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.StopSpeakerCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.StopSpeakerCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.SpeakerCommand.StopSpeakerCommand.Request prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.StopSpeakerCommand.Request} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.StopSpeakerCommand.Request) + cmvr.api.SpeakerCommand.StopSpeakerCommand.RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_StopSpeakerCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_StopSpeakerCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.StopSpeakerCommand.Request.class, cmvr.api.SpeakerCommand.StopSpeakerCommand.Request.Builder.class); + } + + // Construct using cmvr.api.SpeakerCommand.StopSpeakerCommand.Request.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_StopSpeakerCommand_Request_descriptor; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.StopSpeakerCommand.Request getDefaultInstanceForType() { + return cmvr.api.SpeakerCommand.StopSpeakerCommand.Request.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.StopSpeakerCommand.Request build() { + cmvr.api.SpeakerCommand.StopSpeakerCommand.Request result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.StopSpeakerCommand.Request buildPartial() { + cmvr.api.SpeakerCommand.StopSpeakerCommand.Request result = new cmvr.api.SpeakerCommand.StopSpeakerCommand.Request(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.SpeakerCommand.StopSpeakerCommand.Request) { + return mergeFrom((cmvr.api.SpeakerCommand.StopSpeakerCommand.Request)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.SpeakerCommand.StopSpeakerCommand.Request other) { + if (other == cmvr.api.SpeakerCommand.StopSpeakerCommand.Request.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Request header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Request getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Request.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Request.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.Request.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.StopSpeakerCommand.Request) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.StopSpeakerCommand.Request) + private static final cmvr.api.SpeakerCommand.StopSpeakerCommand.Request DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.SpeakerCommand.StopSpeakerCommand.Request(); + } + + public static cmvr.api.SpeakerCommand.StopSpeakerCommand.Request getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.StopSpeakerCommand.Request getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface FeedbackOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.StopSpeakerCommand.Feedback) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Feedback getHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.StopSpeakerCommand.Feedback} + */ + public static final class Feedback extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.StopSpeakerCommand.Feedback) + FeedbackOrBuilder { + private static final long serialVersionUID = 0L; + // Use Feedback.newBuilder() to construct. + private Feedback(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Feedback() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Feedback(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_StopSpeakerCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_StopSpeakerCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.StopSpeakerCommand.Feedback.class, cmvr.api.SpeakerCommand.StopSpeakerCommand.Feedback.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Feedback header_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.SpeakerCommand.StopSpeakerCommand.Feedback)) { + return super.equals(obj); + } + cmvr.api.SpeakerCommand.StopSpeakerCommand.Feedback other = (cmvr.api.SpeakerCommand.StopSpeakerCommand.Feedback) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.SpeakerCommand.StopSpeakerCommand.Feedback parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.StopSpeakerCommand.Feedback parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.StopSpeakerCommand.Feedback parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.StopSpeakerCommand.Feedback parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.StopSpeakerCommand.Feedback parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.StopSpeakerCommand.Feedback parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.StopSpeakerCommand.Feedback parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.StopSpeakerCommand.Feedback parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.StopSpeakerCommand.Feedback parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.StopSpeakerCommand.Feedback parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.StopSpeakerCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.StopSpeakerCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.SpeakerCommand.StopSpeakerCommand.Feedback prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.StopSpeakerCommand.Feedback} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.StopSpeakerCommand.Feedback) + cmvr.api.SpeakerCommand.StopSpeakerCommand.FeedbackOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_StopSpeakerCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_StopSpeakerCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.StopSpeakerCommand.Feedback.class, cmvr.api.SpeakerCommand.StopSpeakerCommand.Feedback.Builder.class); + } + + // Construct using cmvr.api.SpeakerCommand.StopSpeakerCommand.Feedback.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_StopSpeakerCommand_Feedback_descriptor; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.StopSpeakerCommand.Feedback getDefaultInstanceForType() { + return cmvr.api.SpeakerCommand.StopSpeakerCommand.Feedback.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.StopSpeakerCommand.Feedback build() { + cmvr.api.SpeakerCommand.StopSpeakerCommand.Feedback result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.StopSpeakerCommand.Feedback buildPartial() { + cmvr.api.SpeakerCommand.StopSpeakerCommand.Feedback result = new cmvr.api.SpeakerCommand.StopSpeakerCommand.Feedback(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.SpeakerCommand.StopSpeakerCommand.Feedback) { + return mergeFrom((cmvr.api.SpeakerCommand.StopSpeakerCommand.Feedback)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.SpeakerCommand.StopSpeakerCommand.Feedback other) { + if (other == cmvr.api.SpeakerCommand.StopSpeakerCommand.Feedback.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Feedback header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Feedback.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Feedback.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.Feedback.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.StopSpeakerCommand.Feedback) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.StopSpeakerCommand.Feedback) + private static final cmvr.api.SpeakerCommand.StopSpeakerCommand.Feedback DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.SpeakerCommand.StopSpeakerCommand.Feedback(); + } + + public static cmvr.api.SpeakerCommand.StopSpeakerCommand.Feedback getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Feedback parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.StopSpeakerCommand.Feedback getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.SpeakerCommand.StopSpeakerCommand)) { + return super.equals(obj); + } + cmvr.api.SpeakerCommand.StopSpeakerCommand other = (cmvr.api.SpeakerCommand.StopSpeakerCommand) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.SpeakerCommand.StopSpeakerCommand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.StopSpeakerCommand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.StopSpeakerCommand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.StopSpeakerCommand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.StopSpeakerCommand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.StopSpeakerCommand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.StopSpeakerCommand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.StopSpeakerCommand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.StopSpeakerCommand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.StopSpeakerCommand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.StopSpeakerCommand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.StopSpeakerCommand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.SpeakerCommand.StopSpeakerCommand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.StopSpeakerCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.StopSpeakerCommand) + cmvr.api.SpeakerCommand.StopSpeakerCommandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_StopSpeakerCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_StopSpeakerCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.StopSpeakerCommand.class, cmvr.api.SpeakerCommand.StopSpeakerCommand.Builder.class); + } + + // Construct using cmvr.api.SpeakerCommand.StopSpeakerCommand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_StopSpeakerCommand_descriptor; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.StopSpeakerCommand getDefaultInstanceForType() { + return cmvr.api.SpeakerCommand.StopSpeakerCommand.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.StopSpeakerCommand build() { + cmvr.api.SpeakerCommand.StopSpeakerCommand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.StopSpeakerCommand buildPartial() { + cmvr.api.SpeakerCommand.StopSpeakerCommand result = new cmvr.api.SpeakerCommand.StopSpeakerCommand(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.SpeakerCommand.StopSpeakerCommand) { + return mergeFrom((cmvr.api.SpeakerCommand.StopSpeakerCommand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.SpeakerCommand.StopSpeakerCommand other) { + if (other == cmvr.api.SpeakerCommand.StopSpeakerCommand.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.StopSpeakerCommand) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.StopSpeakerCommand) + private static final cmvr.api.SpeakerCommand.StopSpeakerCommand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.SpeakerCommand.StopSpeakerCommand(); + } + + public static cmvr.api.SpeakerCommand.StopSpeakerCommand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public StopSpeakerCommand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.StopSpeakerCommand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface PauseSpeakerCommandOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.PauseSpeakerCommand) + com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code cmvr.api.PauseSpeakerCommand} + */ + public static final class PauseSpeakerCommand extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.PauseSpeakerCommand) + PauseSpeakerCommandOrBuilder { + private static final long serialVersionUID = 0L; + // Use PauseSpeakerCommand.newBuilder() to construct. + private PauseSpeakerCommand(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private PauseSpeakerCommand() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new PauseSpeakerCommand(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_PauseSpeakerCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_PauseSpeakerCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.PauseSpeakerCommand.class, cmvr.api.SpeakerCommand.PauseSpeakerCommand.Builder.class); + } + + public interface RequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.PauseSpeakerCommand.Request) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Request getHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.PauseSpeakerCommand.Request} + */ + public static final class Request extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.PauseSpeakerCommand.Request) + RequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use Request.newBuilder() to construct. + private Request(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Request() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Request(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_PauseSpeakerCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_PauseSpeakerCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request.class, cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Request header_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request)) { + return super.equals(obj); + } + cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request other = (cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.PauseSpeakerCommand.Request} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.PauseSpeakerCommand.Request) + cmvr.api.SpeakerCommand.PauseSpeakerCommand.RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_PauseSpeakerCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_PauseSpeakerCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request.class, cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request.Builder.class); + } + + // Construct using cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_PauseSpeakerCommand_Request_descriptor; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request getDefaultInstanceForType() { + return cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request build() { + cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request buildPartial() { + cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request result = new cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request) { + return mergeFrom((cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request other) { + if (other == cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Request header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Request getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Request.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Request.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.Request.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.PauseSpeakerCommand.Request) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.PauseSpeakerCommand.Request) + private static final cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request(); + } + + public static cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface FeedbackOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.PauseSpeakerCommand.Feedback) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Feedback getHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.PauseSpeakerCommand.Feedback} + */ + public static final class Feedback extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.PauseSpeakerCommand.Feedback) + FeedbackOrBuilder { + private static final long serialVersionUID = 0L; + // Use Feedback.newBuilder() to construct. + private Feedback(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Feedback() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Feedback(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_PauseSpeakerCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_PauseSpeakerCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.PauseSpeakerCommand.Feedback.class, cmvr.api.SpeakerCommand.PauseSpeakerCommand.Feedback.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Feedback header_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.SpeakerCommand.PauseSpeakerCommand.Feedback)) { + return super.equals(obj); + } + cmvr.api.SpeakerCommand.PauseSpeakerCommand.Feedback other = (cmvr.api.SpeakerCommand.PauseSpeakerCommand.Feedback) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.SpeakerCommand.PauseSpeakerCommand.Feedback parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.PauseSpeakerCommand.Feedback parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.PauseSpeakerCommand.Feedback parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.PauseSpeakerCommand.Feedback parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.PauseSpeakerCommand.Feedback parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.PauseSpeakerCommand.Feedback parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.PauseSpeakerCommand.Feedback parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.PauseSpeakerCommand.Feedback parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.PauseSpeakerCommand.Feedback parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.PauseSpeakerCommand.Feedback parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.PauseSpeakerCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.PauseSpeakerCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.SpeakerCommand.PauseSpeakerCommand.Feedback prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.PauseSpeakerCommand.Feedback} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.PauseSpeakerCommand.Feedback) + cmvr.api.SpeakerCommand.PauseSpeakerCommand.FeedbackOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_PauseSpeakerCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_PauseSpeakerCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.PauseSpeakerCommand.Feedback.class, cmvr.api.SpeakerCommand.PauseSpeakerCommand.Feedback.Builder.class); + } + + // Construct using cmvr.api.SpeakerCommand.PauseSpeakerCommand.Feedback.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_PauseSpeakerCommand_Feedback_descriptor; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.PauseSpeakerCommand.Feedback getDefaultInstanceForType() { + return cmvr.api.SpeakerCommand.PauseSpeakerCommand.Feedback.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.PauseSpeakerCommand.Feedback build() { + cmvr.api.SpeakerCommand.PauseSpeakerCommand.Feedback result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.PauseSpeakerCommand.Feedback buildPartial() { + cmvr.api.SpeakerCommand.PauseSpeakerCommand.Feedback result = new cmvr.api.SpeakerCommand.PauseSpeakerCommand.Feedback(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.SpeakerCommand.PauseSpeakerCommand.Feedback) { + return mergeFrom((cmvr.api.SpeakerCommand.PauseSpeakerCommand.Feedback)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.SpeakerCommand.PauseSpeakerCommand.Feedback other) { + if (other == cmvr.api.SpeakerCommand.PauseSpeakerCommand.Feedback.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Feedback header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Feedback.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Feedback.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.Feedback.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.PauseSpeakerCommand.Feedback) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.PauseSpeakerCommand.Feedback) + private static final cmvr.api.SpeakerCommand.PauseSpeakerCommand.Feedback DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.SpeakerCommand.PauseSpeakerCommand.Feedback(); + } + + public static cmvr.api.SpeakerCommand.PauseSpeakerCommand.Feedback getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Feedback parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.PauseSpeakerCommand.Feedback getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.SpeakerCommand.PauseSpeakerCommand)) { + return super.equals(obj); + } + cmvr.api.SpeakerCommand.PauseSpeakerCommand other = (cmvr.api.SpeakerCommand.PauseSpeakerCommand) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.SpeakerCommand.PauseSpeakerCommand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.PauseSpeakerCommand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.PauseSpeakerCommand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.PauseSpeakerCommand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.PauseSpeakerCommand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.PauseSpeakerCommand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.PauseSpeakerCommand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.PauseSpeakerCommand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.PauseSpeakerCommand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.PauseSpeakerCommand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.PauseSpeakerCommand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.PauseSpeakerCommand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.SpeakerCommand.PauseSpeakerCommand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.PauseSpeakerCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.PauseSpeakerCommand) + cmvr.api.SpeakerCommand.PauseSpeakerCommandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_PauseSpeakerCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_PauseSpeakerCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.PauseSpeakerCommand.class, cmvr.api.SpeakerCommand.PauseSpeakerCommand.Builder.class); + } + + // Construct using cmvr.api.SpeakerCommand.PauseSpeakerCommand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_PauseSpeakerCommand_descriptor; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.PauseSpeakerCommand getDefaultInstanceForType() { + return cmvr.api.SpeakerCommand.PauseSpeakerCommand.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.PauseSpeakerCommand build() { + cmvr.api.SpeakerCommand.PauseSpeakerCommand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.PauseSpeakerCommand buildPartial() { + cmvr.api.SpeakerCommand.PauseSpeakerCommand result = new cmvr.api.SpeakerCommand.PauseSpeakerCommand(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.SpeakerCommand.PauseSpeakerCommand) { + return mergeFrom((cmvr.api.SpeakerCommand.PauseSpeakerCommand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.SpeakerCommand.PauseSpeakerCommand other) { + if (other == cmvr.api.SpeakerCommand.PauseSpeakerCommand.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.PauseSpeakerCommand) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.PauseSpeakerCommand) + private static final cmvr.api.SpeakerCommand.PauseSpeakerCommand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.SpeakerCommand.PauseSpeakerCommand(); + } + + public static cmvr.api.SpeakerCommand.PauseSpeakerCommand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public PauseSpeakerCommand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.PauseSpeakerCommand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface ResumeSpeakerCommandOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.ResumeSpeakerCommand) + com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code cmvr.api.ResumeSpeakerCommand} + */ + public static final class ResumeSpeakerCommand extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.ResumeSpeakerCommand) + ResumeSpeakerCommandOrBuilder { + private static final long serialVersionUID = 0L; + // Use ResumeSpeakerCommand.newBuilder() to construct. + private ResumeSpeakerCommand(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private ResumeSpeakerCommand() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new ResumeSpeakerCommand(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_ResumeSpeakerCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_ResumeSpeakerCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.ResumeSpeakerCommand.class, cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Builder.class); + } + + public interface RequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.ResumeSpeakerCommand.Request) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Request getHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.ResumeSpeakerCommand.Request} + */ + public static final class Request extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.ResumeSpeakerCommand.Request) + RequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use Request.newBuilder() to construct. + private Request(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Request() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Request(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_ResumeSpeakerCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_ResumeSpeakerCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request.class, cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Request header_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request)) { + return super.equals(obj); + } + cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request other = (cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.ResumeSpeakerCommand.Request} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.ResumeSpeakerCommand.Request) + cmvr.api.SpeakerCommand.ResumeSpeakerCommand.RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_ResumeSpeakerCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_ResumeSpeakerCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request.class, cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request.Builder.class); + } + + // Construct using cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_ResumeSpeakerCommand_Request_descriptor; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request getDefaultInstanceForType() { + return cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request build() { + cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request buildPartial() { + cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request result = new cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request) { + return mergeFrom((cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request other) { + if (other == cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Request header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Request getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Request.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Request.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.Request.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.ResumeSpeakerCommand.Request) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.ResumeSpeakerCommand.Request) + private static final cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request(); + } + + public static cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface FeedbackOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.ResumeSpeakerCommand.Feedback) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Feedback getHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.ResumeSpeakerCommand.Feedback} + */ + public static final class Feedback extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.ResumeSpeakerCommand.Feedback) + FeedbackOrBuilder { + private static final long serialVersionUID = 0L; + // Use Feedback.newBuilder() to construct. + private Feedback(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Feedback() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Feedback(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_ResumeSpeakerCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_ResumeSpeakerCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Feedback.class, cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Feedback.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Feedback header_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Feedback)) { + return super.equals(obj); + } + cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Feedback other = (cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Feedback) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Feedback parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Feedback parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Feedback parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Feedback parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Feedback parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Feedback parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Feedback parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Feedback parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Feedback parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Feedback parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Feedback prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.ResumeSpeakerCommand.Feedback} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.ResumeSpeakerCommand.Feedback) + cmvr.api.SpeakerCommand.ResumeSpeakerCommand.FeedbackOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_ResumeSpeakerCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_ResumeSpeakerCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Feedback.class, cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Feedback.Builder.class); + } + + // Construct using cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Feedback.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_ResumeSpeakerCommand_Feedback_descriptor; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Feedback getDefaultInstanceForType() { + return cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Feedback.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Feedback build() { + cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Feedback result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Feedback buildPartial() { + cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Feedback result = new cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Feedback(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Feedback) { + return mergeFrom((cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Feedback)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Feedback other) { + if (other == cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Feedback.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Feedback header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Feedback.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Feedback.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.Feedback.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.ResumeSpeakerCommand.Feedback) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.ResumeSpeakerCommand.Feedback) + private static final cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Feedback DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Feedback(); + } + + public static cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Feedback getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Feedback parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Feedback getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.SpeakerCommand.ResumeSpeakerCommand)) { + return super.equals(obj); + } + cmvr.api.SpeakerCommand.ResumeSpeakerCommand other = (cmvr.api.SpeakerCommand.ResumeSpeakerCommand) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.SpeakerCommand.ResumeSpeakerCommand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.ResumeSpeakerCommand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.ResumeSpeakerCommand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.ResumeSpeakerCommand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.ResumeSpeakerCommand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.ResumeSpeakerCommand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.ResumeSpeakerCommand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.ResumeSpeakerCommand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.ResumeSpeakerCommand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.ResumeSpeakerCommand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.ResumeSpeakerCommand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.ResumeSpeakerCommand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.SpeakerCommand.ResumeSpeakerCommand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.ResumeSpeakerCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.ResumeSpeakerCommand) + cmvr.api.SpeakerCommand.ResumeSpeakerCommandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_ResumeSpeakerCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_ResumeSpeakerCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.ResumeSpeakerCommand.class, cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Builder.class); + } + + // Construct using cmvr.api.SpeakerCommand.ResumeSpeakerCommand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_ResumeSpeakerCommand_descriptor; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.ResumeSpeakerCommand getDefaultInstanceForType() { + return cmvr.api.SpeakerCommand.ResumeSpeakerCommand.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.ResumeSpeakerCommand build() { + cmvr.api.SpeakerCommand.ResumeSpeakerCommand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.ResumeSpeakerCommand buildPartial() { + cmvr.api.SpeakerCommand.ResumeSpeakerCommand result = new cmvr.api.SpeakerCommand.ResumeSpeakerCommand(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.SpeakerCommand.ResumeSpeakerCommand) { + return mergeFrom((cmvr.api.SpeakerCommand.ResumeSpeakerCommand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.SpeakerCommand.ResumeSpeakerCommand other) { + if (other == cmvr.api.SpeakerCommand.ResumeSpeakerCommand.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.ResumeSpeakerCommand) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.ResumeSpeakerCommand) + private static final cmvr.api.SpeakerCommand.ResumeSpeakerCommand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.SpeakerCommand.ResumeSpeakerCommand(); + } + + public static cmvr.api.SpeakerCommand.ResumeSpeakerCommand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public ResumeSpeakerCommand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.ResumeSpeakerCommand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface SetSpeakerVolumeCommandOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.SetSpeakerVolumeCommand) + com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code cmvr.api.SetSpeakerVolumeCommand} + */ + public static final class SetSpeakerVolumeCommand extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.SetSpeakerVolumeCommand) + SetSpeakerVolumeCommandOrBuilder { + private static final long serialVersionUID = 0L; + // Use SetSpeakerVolumeCommand.newBuilder() to construct. + private SetSpeakerVolumeCommand(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private SetSpeakerVolumeCommand() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new SetSpeakerVolumeCommand(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_SetSpeakerVolumeCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_SetSpeakerVolumeCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.class, cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Builder.class); + } + + public interface RequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.SetSpeakerVolumeCommand.Request) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Request getHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder(); + + /** + *
+       * 音量值(0 ~ 100)
+       * 
+ * + * int32 volume = 2; + * @return The volume. + */ + int getVolume(); + } + /** + * Protobuf type {@code cmvr.api.SetSpeakerVolumeCommand.Request} + */ + public static final class Request extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.SetSpeakerVolumeCommand.Request) + RequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use Request.newBuilder() to construct. + private Request(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Request() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Request(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_SetSpeakerVolumeCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_SetSpeakerVolumeCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request.class, cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Request header_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + public static final int VOLUME_FIELD_NUMBER = 2; + private int volume_; + /** + *
+       * 音量值(0 ~ 100)
+       * 
+ * + * int32 volume = 2; + * @return The volume. + */ + @java.lang.Override + public int getVolume() { + return volume_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + if (volume_ != 0) { + output.writeInt32(2, volume_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + if (volume_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(2, volume_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request)) { + return super.equals(obj); + } + cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request other = (cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (getVolume() + != other.getVolume()) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (37 * hash) + VOLUME_FIELD_NUMBER; + hash = (53 * hash) + getVolume(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.SetSpeakerVolumeCommand.Request} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.SetSpeakerVolumeCommand.Request) + cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_SetSpeakerVolumeCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_SetSpeakerVolumeCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request.class, cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request.Builder.class); + } + + // Construct using cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + volume_ = 0; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_SetSpeakerVolumeCommand_Request_descriptor; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request getDefaultInstanceForType() { + return cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request build() { + cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request buildPartial() { + cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request result = new cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + result.volume_ = volume_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request) { + return mergeFrom((cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request other) { + if (other == cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + if (other.getVolume() != 0) { + setVolume(other.getVolume()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + case 16: { + volume_ = input.readInt32(); + + break; + } // case 16 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Request header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Request getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Request.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Request.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.Request.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + + private int volume_ ; + /** + *
+         * 音量值(0 ~ 100)
+         * 
+ * + * int32 volume = 2; + * @return The volume. + */ + @java.lang.Override + public int getVolume() { + return volume_; + } + /** + *
+         * 音量值(0 ~ 100)
+         * 
+ * + * int32 volume = 2; + * @param value The volume to set. + * @return This builder for chaining. + */ + public Builder setVolume(int value) { + + volume_ = value; + onChanged(); + return this; + } + /** + *
+         * 音量值(0 ~ 100)
+         * 
+ * + * int32 volume = 2; + * @return This builder for chaining. + */ + public Builder clearVolume() { + + volume_ = 0; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.SetSpeakerVolumeCommand.Request) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.SetSpeakerVolumeCommand.Request) + private static final cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request(); + } + + public static cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface FeedbackOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.SetSpeakerVolumeCommand.Feedback) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Feedback getHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.SetSpeakerVolumeCommand.Feedback} + */ + public static final class Feedback extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.SetSpeakerVolumeCommand.Feedback) + FeedbackOrBuilder { + private static final long serialVersionUID = 0L; + // Use Feedback.newBuilder() to construct. + private Feedback(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Feedback() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Feedback(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_SetSpeakerVolumeCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_SetSpeakerVolumeCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Feedback.class, cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Feedback.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Feedback header_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Feedback)) { + return super.equals(obj); + } + cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Feedback other = (cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Feedback) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Feedback parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Feedback parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Feedback parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Feedback parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Feedback parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Feedback parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Feedback parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Feedback parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Feedback parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Feedback parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Feedback prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.SetSpeakerVolumeCommand.Feedback} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.SetSpeakerVolumeCommand.Feedback) + cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.FeedbackOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_SetSpeakerVolumeCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_SetSpeakerVolumeCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Feedback.class, cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Feedback.Builder.class); + } + + // Construct using cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Feedback.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_SetSpeakerVolumeCommand_Feedback_descriptor; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Feedback getDefaultInstanceForType() { + return cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Feedback.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Feedback build() { + cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Feedback result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Feedback buildPartial() { + cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Feedback result = new cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Feedback(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Feedback) { + return mergeFrom((cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Feedback)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Feedback other) { + if (other == cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Feedback.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Feedback header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Feedback.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Feedback.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.Feedback.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.SetSpeakerVolumeCommand.Feedback) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.SetSpeakerVolumeCommand.Feedback) + private static final cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Feedback DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Feedback(); + } + + public static cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Feedback getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Feedback parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Feedback getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand)) { + return super.equals(obj); + } + cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand other = (cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.SetSpeakerVolumeCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.SetSpeakerVolumeCommand) + cmvr.api.SpeakerCommand.SetSpeakerVolumeCommandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_SetSpeakerVolumeCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_SetSpeakerVolumeCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.class, cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Builder.class); + } + + // Construct using cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_SetSpeakerVolumeCommand_descriptor; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand getDefaultInstanceForType() { + return cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand build() { + cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand buildPartial() { + cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand result = new cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand) { + return mergeFrom((cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand other) { + if (other == cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.SetSpeakerVolumeCommand) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.SetSpeakerVolumeCommand) + private static final cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand(); + } + + public static cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public SetSpeakerVolumeCommand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface GetSpeakerVolumeCommandOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetSpeakerVolumeCommand) + com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code cmvr.api.GetSpeakerVolumeCommand} + */ + public static final class GetSpeakerVolumeCommand extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetSpeakerVolumeCommand) + GetSpeakerVolumeCommandOrBuilder { + private static final long serialVersionUID = 0L; + // Use GetSpeakerVolumeCommand.newBuilder() to construct. + private GetSpeakerVolumeCommand(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private GetSpeakerVolumeCommand() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new GetSpeakerVolumeCommand(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_GetSpeakerVolumeCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_GetSpeakerVolumeCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.class, cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Builder.class); + } + + public interface RequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetSpeakerVolumeCommand.Request) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Request getHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.GetSpeakerVolumeCommand.Request} + */ + public static final class Request extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetSpeakerVolumeCommand.Request) + RequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use Request.newBuilder() to construct. + private Request(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Request() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Request(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_GetSpeakerVolumeCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_GetSpeakerVolumeCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request.class, cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Request header_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request)) { + return super.equals(obj); + } + cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request other = (cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetSpeakerVolumeCommand.Request} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetSpeakerVolumeCommand.Request) + cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_GetSpeakerVolumeCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_GetSpeakerVolumeCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request.class, cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request.Builder.class); + } + + // Construct using cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_GetSpeakerVolumeCommand_Request_descriptor; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request getDefaultInstanceForType() { + return cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request build() { + cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request buildPartial() { + cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request result = new cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request) { + return mergeFrom((cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request other) { + if (other == cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Request header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Request getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Request.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Request.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.Request.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetSpeakerVolumeCommand.Request) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetSpeakerVolumeCommand.Request) + private static final cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request(); + } + + public static cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface FeedbackOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetSpeakerVolumeCommand.Feedback) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Feedback getHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder(); + + /** + *
+       * 当前音量值
+       * 
+ * + * int32 volume = 2; + * @return The volume. + */ + int getVolume(); + } + /** + * Protobuf type {@code cmvr.api.GetSpeakerVolumeCommand.Feedback} + */ + public static final class Feedback extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetSpeakerVolumeCommand.Feedback) + FeedbackOrBuilder { + private static final long serialVersionUID = 0L; + // Use Feedback.newBuilder() to construct. + private Feedback(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Feedback() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Feedback(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_GetSpeakerVolumeCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_GetSpeakerVolumeCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Feedback.class, cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Feedback.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Feedback header_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + public static final int VOLUME_FIELD_NUMBER = 2; + private int volume_; + /** + *
+       * 当前音量值
+       * 
+ * + * int32 volume = 2; + * @return The volume. + */ + @java.lang.Override + public int getVolume() { + return volume_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + if (volume_ != 0) { + output.writeInt32(2, volume_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + if (volume_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(2, volume_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Feedback)) { + return super.equals(obj); + } + cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Feedback other = (cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Feedback) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (getVolume() + != other.getVolume()) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (37 * hash) + VOLUME_FIELD_NUMBER; + hash = (53 * hash) + getVolume(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Feedback parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Feedback parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Feedback parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Feedback parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Feedback parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Feedback parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Feedback parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Feedback parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Feedback parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Feedback parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Feedback prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetSpeakerVolumeCommand.Feedback} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetSpeakerVolumeCommand.Feedback) + cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.FeedbackOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_GetSpeakerVolumeCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_GetSpeakerVolumeCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Feedback.class, cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Feedback.Builder.class); + } + + // Construct using cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Feedback.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + volume_ = 0; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_GetSpeakerVolumeCommand_Feedback_descriptor; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Feedback getDefaultInstanceForType() { + return cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Feedback.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Feedback build() { + cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Feedback result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Feedback buildPartial() { + cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Feedback result = new cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Feedback(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + result.volume_ = volume_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Feedback) { + return mergeFrom((cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Feedback)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Feedback other) { + if (other == cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Feedback.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + if (other.getVolume() != 0) { + setVolume(other.getVolume()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + case 16: { + volume_ = input.readInt32(); + + break; + } // case 16 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Feedback header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Feedback.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Feedback.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.Feedback.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + + private int volume_ ; + /** + *
+         * 当前音量值
+         * 
+ * + * int32 volume = 2; + * @return The volume. + */ + @java.lang.Override + public int getVolume() { + return volume_; + } + /** + *
+         * 当前音量值
+         * 
+ * + * int32 volume = 2; + * @param value The volume to set. + * @return This builder for chaining. + */ + public Builder setVolume(int value) { + + volume_ = value; + onChanged(); + return this; + } + /** + *
+         * 当前音量值
+         * 
+ * + * int32 volume = 2; + * @return This builder for chaining. + */ + public Builder clearVolume() { + + volume_ = 0; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetSpeakerVolumeCommand.Feedback) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetSpeakerVolumeCommand.Feedback) + private static final cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Feedback DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Feedback(); + } + + public static cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Feedback getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Feedback parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Feedback getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand)) { + return super.equals(obj); + } + cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand other = (cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetSpeakerVolumeCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetSpeakerVolumeCommand) + cmvr.api.SpeakerCommand.GetSpeakerVolumeCommandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_GetSpeakerVolumeCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_GetSpeakerVolumeCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.class, cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Builder.class); + } + + // Construct using cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.SpeakerCommand.internal_static_cmvr_api_GetSpeakerVolumeCommand_descriptor; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand getDefaultInstanceForType() { + return cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand build() { + cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand buildPartial() { + cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand result = new cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand) { + return mergeFrom((cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand other) { + if (other == cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetSpeakerVolumeCommand) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetSpeakerVolumeCommand) + private static final cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand(); + } + + public static cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public GetSpeakerVolumeCommand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_AudioData_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_AudioData_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_SpeakerState_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_SpeakerState_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetSpeakerStateCommand_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetSpeakerStateCommand_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetSpeakerStateCommand_Request_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetSpeakerStateCommand_Request_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetSpeakerStateCommand_Feedback_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetSpeakerStateCommand_Feedback_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_PlayAudioCommand_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_PlayAudioCommand_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_PlayAudioCommand_Request_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_PlayAudioCommand_Request_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_PlayAudioCommand_Feedback_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_PlayAudioCommand_Feedback_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_StopSpeakerCommand_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_StopSpeakerCommand_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_StopSpeakerCommand_Request_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_StopSpeakerCommand_Request_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_StopSpeakerCommand_Feedback_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_StopSpeakerCommand_Feedback_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_PauseSpeakerCommand_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_PauseSpeakerCommand_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_PauseSpeakerCommand_Request_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_PauseSpeakerCommand_Request_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_PauseSpeakerCommand_Feedback_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_PauseSpeakerCommand_Feedback_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_ResumeSpeakerCommand_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_ResumeSpeakerCommand_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_ResumeSpeakerCommand_Request_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_ResumeSpeakerCommand_Request_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_ResumeSpeakerCommand_Feedback_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_ResumeSpeakerCommand_Feedback_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_SetSpeakerVolumeCommand_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_SetSpeakerVolumeCommand_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_SetSpeakerVolumeCommand_Request_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_SetSpeakerVolumeCommand_Request_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_SetSpeakerVolumeCommand_Feedback_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_SetSpeakerVolumeCommand_Feedback_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetSpeakerVolumeCommand_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetSpeakerVolumeCommand_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetSpeakerVolumeCommand_Request_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetSpeakerVolumeCommand_Request_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetSpeakerVolumeCommand_Feedback_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetSpeakerVolumeCommand_Feedback_fieldAccessorTable; + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n\036cmvr/api/speaker_command.proto\022\010cmvr.a" + + "pi\032\025cmvr/api/common.proto\"\263\001\n\tAudioData\022" + + "\014\n\004data\030\001 \001(\014\022\023\n\013sample_rate\030\002 \001(\005\022\020\n\010ch" + + "annels\030\003 \001(\005\022/\n\006format\030\004 \001(\0162\037.cmvr.api." + + "AudioData.AudioFormat\022\r\n\005codec\030\005 \001(\t\"1\n\013" + + "AudioFormat\022\007\n\003PCM\020\000\022\007\n\003MP3\020\001\022\007\n\003AAC\020\002\022\007" + + "\n\003WAV\020\003\"\211\001\n\014SpeakerState\022\026\n\016is_initializ" + + "ed\030\001 \001(\010\022\022\n\nis_running\030\002 \001(\010\022\023\n\013is_decod" + + "ing\030\003 \001(\010\022\021\n\tis_paused\030\005 \001(\010\022\016\n\006volume\030\006" + + " \001(\005\022\025\n\rerror_message\030\007 \001(\t\"\271\001\n\026GetSpeak" + + "erStateCommand\032:\n\007Request\022/\n\006header\030\001 \001(" + + "\0132\037.cmvr.api.CommandHeader.Request\032c\n\010Fe" + + "edback\0220\n\006header\030\001 \001(\0132 .cmvr.api.Comman" + + "dHeader.Feedback\022%\n\005state\030\002 \001(\0132\026.cmvr.a" + + "pi.SpeakerState\"\240\001\n\020PlayAudioCommand\032N\n\007" + + "Request\022/\n\006header\030\001 \001(\0132\037.cmvr.api.Comma" + + "ndHeader.Request\022\022\n\naudio_path\030\002 \001(\t\032<\n\010" + + "Feedback\0220\n\006header\030\001 \001(\0132 .cmvr.api.Comm" + + "andHeader.Feedback\"\216\001\n\022StopSpeakerComman" + + "d\032:\n\007Request\022/\n\006header\030\001 \001(\0132\037.cmvr.api." + + "CommandHeader.Request\032<\n\010Feedback\0220\n\006hea" + + "der\030\001 \001(\0132 .cmvr.api.CommandHeader.Feedb" + + "ack\"\217\001\n\023PauseSpeakerCommand\032:\n\007Request\022/" + + "\n\006header\030\001 \001(\0132\037.cmvr.api.CommandHeader." + + "Request\032<\n\010Feedback\0220\n\006header\030\001 \001(\0132 .cm" + + "vr.api.CommandHeader.Feedback\"\220\001\n\024Resume" + + "SpeakerCommand\032:\n\007Request\022/\n\006header\030\001 \001(" + + "\0132\037.cmvr.api.CommandHeader.Request\032<\n\010Fe" + + "edback\0220\n\006header\030\001 \001(\0132 .cmvr.api.Comman" + + "dHeader.Feedback\"\243\001\n\027SetSpeakerVolumeCom" + + "mand\032J\n\007Request\022/\n\006header\030\001 \001(\0132\037.cmvr.a" + + "pi.CommandHeader.Request\022\016\n\006volume\030\002 \001(\005" + + "\032<\n\010Feedback\0220\n\006header\030\001 \001(\0132 .cmvr.api." + + "CommandHeader.Feedback\"\243\001\n\027GetSpeakerVol" + + "umeCommand\032:\n\007Request\022/\n\006header\030\001 \001(\0132\037." + + "cmvr.api.CommandHeader.Request\032L\n\010Feedba" + + "ck\0220\n\006header\030\001 \001(\0132 .cmvr.api.CommandHea" + + "der.Feedback\022\016\n\006volume\030\002 \001(\005b\006proto3" + }; + descriptor = com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + cmvr.api.Common.getDescriptor(), + }); + internal_static_cmvr_api_AudioData_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_cmvr_api_AudioData_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_AudioData_descriptor, + new java.lang.String[] { "Data", "SampleRate", "Channels", "Format", "Codec", }); + internal_static_cmvr_api_SpeakerState_descriptor = + getDescriptor().getMessageTypes().get(1); + internal_static_cmvr_api_SpeakerState_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_SpeakerState_descriptor, + new java.lang.String[] { "IsInitialized", "IsRunning", "IsDecoding", "IsPaused", "Volume", "ErrorMessage", }); + internal_static_cmvr_api_GetSpeakerStateCommand_descriptor = + getDescriptor().getMessageTypes().get(2); + internal_static_cmvr_api_GetSpeakerStateCommand_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetSpeakerStateCommand_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_GetSpeakerStateCommand_Request_descriptor = + internal_static_cmvr_api_GetSpeakerStateCommand_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_GetSpeakerStateCommand_Request_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetSpeakerStateCommand_Request_descriptor, + new java.lang.String[] { "Header", }); + internal_static_cmvr_api_GetSpeakerStateCommand_Feedback_descriptor = + internal_static_cmvr_api_GetSpeakerStateCommand_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_GetSpeakerStateCommand_Feedback_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetSpeakerStateCommand_Feedback_descriptor, + new java.lang.String[] { "Header", "State", }); + internal_static_cmvr_api_PlayAudioCommand_descriptor = + getDescriptor().getMessageTypes().get(3); + internal_static_cmvr_api_PlayAudioCommand_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_PlayAudioCommand_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_PlayAudioCommand_Request_descriptor = + internal_static_cmvr_api_PlayAudioCommand_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_PlayAudioCommand_Request_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_PlayAudioCommand_Request_descriptor, + new java.lang.String[] { "Header", "AudioPath", }); + internal_static_cmvr_api_PlayAudioCommand_Feedback_descriptor = + internal_static_cmvr_api_PlayAudioCommand_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_PlayAudioCommand_Feedback_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_PlayAudioCommand_Feedback_descriptor, + new java.lang.String[] { "Header", }); + internal_static_cmvr_api_StopSpeakerCommand_descriptor = + getDescriptor().getMessageTypes().get(4); + internal_static_cmvr_api_StopSpeakerCommand_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_StopSpeakerCommand_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_StopSpeakerCommand_Request_descriptor = + internal_static_cmvr_api_StopSpeakerCommand_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_StopSpeakerCommand_Request_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_StopSpeakerCommand_Request_descriptor, + new java.lang.String[] { "Header", }); + internal_static_cmvr_api_StopSpeakerCommand_Feedback_descriptor = + internal_static_cmvr_api_StopSpeakerCommand_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_StopSpeakerCommand_Feedback_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_StopSpeakerCommand_Feedback_descriptor, + new java.lang.String[] { "Header", }); + internal_static_cmvr_api_PauseSpeakerCommand_descriptor = + getDescriptor().getMessageTypes().get(5); + internal_static_cmvr_api_PauseSpeakerCommand_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_PauseSpeakerCommand_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_PauseSpeakerCommand_Request_descriptor = + internal_static_cmvr_api_PauseSpeakerCommand_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_PauseSpeakerCommand_Request_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_PauseSpeakerCommand_Request_descriptor, + new java.lang.String[] { "Header", }); + internal_static_cmvr_api_PauseSpeakerCommand_Feedback_descriptor = + internal_static_cmvr_api_PauseSpeakerCommand_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_PauseSpeakerCommand_Feedback_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_PauseSpeakerCommand_Feedback_descriptor, + new java.lang.String[] { "Header", }); + internal_static_cmvr_api_ResumeSpeakerCommand_descriptor = + getDescriptor().getMessageTypes().get(6); + internal_static_cmvr_api_ResumeSpeakerCommand_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_ResumeSpeakerCommand_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_ResumeSpeakerCommand_Request_descriptor = + internal_static_cmvr_api_ResumeSpeakerCommand_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_ResumeSpeakerCommand_Request_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_ResumeSpeakerCommand_Request_descriptor, + new java.lang.String[] { "Header", }); + internal_static_cmvr_api_ResumeSpeakerCommand_Feedback_descriptor = + internal_static_cmvr_api_ResumeSpeakerCommand_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_ResumeSpeakerCommand_Feedback_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_ResumeSpeakerCommand_Feedback_descriptor, + new java.lang.String[] { "Header", }); + internal_static_cmvr_api_SetSpeakerVolumeCommand_descriptor = + getDescriptor().getMessageTypes().get(7); + internal_static_cmvr_api_SetSpeakerVolumeCommand_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_SetSpeakerVolumeCommand_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_SetSpeakerVolumeCommand_Request_descriptor = + internal_static_cmvr_api_SetSpeakerVolumeCommand_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_SetSpeakerVolumeCommand_Request_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_SetSpeakerVolumeCommand_Request_descriptor, + new java.lang.String[] { "Header", "Volume", }); + internal_static_cmvr_api_SetSpeakerVolumeCommand_Feedback_descriptor = + internal_static_cmvr_api_SetSpeakerVolumeCommand_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_SetSpeakerVolumeCommand_Feedback_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_SetSpeakerVolumeCommand_Feedback_descriptor, + new java.lang.String[] { "Header", }); + internal_static_cmvr_api_GetSpeakerVolumeCommand_descriptor = + getDescriptor().getMessageTypes().get(8); + internal_static_cmvr_api_GetSpeakerVolumeCommand_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetSpeakerVolumeCommand_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_GetSpeakerVolumeCommand_Request_descriptor = + internal_static_cmvr_api_GetSpeakerVolumeCommand_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_GetSpeakerVolumeCommand_Request_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetSpeakerVolumeCommand_Request_descriptor, + new java.lang.String[] { "Header", }); + internal_static_cmvr_api_GetSpeakerVolumeCommand_Feedback_descriptor = + internal_static_cmvr_api_GetSpeakerVolumeCommand_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_GetSpeakerVolumeCommand_Feedback_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetSpeakerVolumeCommand_Feedback_descriptor, + new java.lang.String[] { "Header", "Volume", }); + cmvr.api.Common.getDescriptor(); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/SpeakerServiceGrpc.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/SpeakerServiceGrpc.java new file mode 100644 index 0000000..e0947b7 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/SpeakerServiceGrpc.java @@ -0,0 +1,744 @@ +package cmvr.api; + +import static io.grpc.MethodDescriptor.generateFullMethodName; + +/** + */ +@javax.annotation.Generated( + value = "by gRPC proto compiler (version 1.52.0)", + comments = "Source: cmvr/api/speaker_service.proto") +@io.grpc.stub.annotations.GrpcGenerated +public final class SpeakerServiceGrpc { + + private SpeakerServiceGrpc() {} + + public static final String SERVICE_NAME = "cmvr.api.SpeakerService"; + + // Static method descriptors that strictly reflect the proto. + private static volatile io.grpc.MethodDescriptor getGetStatusMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "GetStatus", + requestType = cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request.class, + responseType = cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Feedback.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getGetStatusMethod() { + io.grpc.MethodDescriptor getGetStatusMethod; + if ((getGetStatusMethod = SpeakerServiceGrpc.getGetStatusMethod) == null) { + synchronized (SpeakerServiceGrpc.class) { + if ((getGetStatusMethod = SpeakerServiceGrpc.getGetStatusMethod) == null) { + SpeakerServiceGrpc.getGetStatusMethod = getGetStatusMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetStatus")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Feedback.getDefaultInstance())) + .setSchemaDescriptor(new SpeakerServiceMethodDescriptorSupplier("GetStatus")) + .build(); + } + } + } + return getGetStatusMethod; + } + + private static volatile io.grpc.MethodDescriptor getPlayAudioMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "PlayAudio", + requestType = cmvr.api.SpeakerCommand.PlayAudioCommand.Request.class, + responseType = cmvr.api.SpeakerCommand.PlayAudioCommand.Feedback.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getPlayAudioMethod() { + io.grpc.MethodDescriptor getPlayAudioMethod; + if ((getPlayAudioMethod = SpeakerServiceGrpc.getPlayAudioMethod) == null) { + synchronized (SpeakerServiceGrpc.class) { + if ((getPlayAudioMethod = SpeakerServiceGrpc.getPlayAudioMethod) == null) { + SpeakerServiceGrpc.getPlayAudioMethod = getPlayAudioMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "PlayAudio")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.SpeakerCommand.PlayAudioCommand.Request.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.SpeakerCommand.PlayAudioCommand.Feedback.getDefaultInstance())) + .setSchemaDescriptor(new SpeakerServiceMethodDescriptorSupplier("PlayAudio")) + .build(); + } + } + } + return getPlayAudioMethod; + } + + private static volatile io.grpc.MethodDescriptor getStopPlaybackMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "StopPlayback", + requestType = cmvr.api.SpeakerCommand.StopSpeakerCommand.Request.class, + responseType = cmvr.api.SpeakerCommand.StopSpeakerCommand.Feedback.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getStopPlaybackMethod() { + io.grpc.MethodDescriptor getStopPlaybackMethod; + if ((getStopPlaybackMethod = SpeakerServiceGrpc.getStopPlaybackMethod) == null) { + synchronized (SpeakerServiceGrpc.class) { + if ((getStopPlaybackMethod = SpeakerServiceGrpc.getStopPlaybackMethod) == null) { + SpeakerServiceGrpc.getStopPlaybackMethod = getStopPlaybackMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "StopPlayback")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.SpeakerCommand.StopSpeakerCommand.Request.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.SpeakerCommand.StopSpeakerCommand.Feedback.getDefaultInstance())) + .setSchemaDescriptor(new SpeakerServiceMethodDescriptorSupplier("StopPlayback")) + .build(); + } + } + } + return getStopPlaybackMethod; + } + + private static volatile io.grpc.MethodDescriptor getPausePlaybackMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "PausePlayback", + requestType = cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request.class, + responseType = cmvr.api.SpeakerCommand.PauseSpeakerCommand.Feedback.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getPausePlaybackMethod() { + io.grpc.MethodDescriptor getPausePlaybackMethod; + if ((getPausePlaybackMethod = SpeakerServiceGrpc.getPausePlaybackMethod) == null) { + synchronized (SpeakerServiceGrpc.class) { + if ((getPausePlaybackMethod = SpeakerServiceGrpc.getPausePlaybackMethod) == null) { + SpeakerServiceGrpc.getPausePlaybackMethod = getPausePlaybackMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "PausePlayback")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.SpeakerCommand.PauseSpeakerCommand.Feedback.getDefaultInstance())) + .setSchemaDescriptor(new SpeakerServiceMethodDescriptorSupplier("PausePlayback")) + .build(); + } + } + } + return getPausePlaybackMethod; + } + + private static volatile io.grpc.MethodDescriptor getResumePlaybackMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "ResumePlayback", + requestType = cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request.class, + responseType = cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Feedback.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getResumePlaybackMethod() { + io.grpc.MethodDescriptor getResumePlaybackMethod; + if ((getResumePlaybackMethod = SpeakerServiceGrpc.getResumePlaybackMethod) == null) { + synchronized (SpeakerServiceGrpc.class) { + if ((getResumePlaybackMethod = SpeakerServiceGrpc.getResumePlaybackMethod) == null) { + SpeakerServiceGrpc.getResumePlaybackMethod = getResumePlaybackMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "ResumePlayback")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Feedback.getDefaultInstance())) + .setSchemaDescriptor(new SpeakerServiceMethodDescriptorSupplier("ResumePlayback")) + .build(); + } + } + } + return getResumePlaybackMethod; + } + + private static volatile io.grpc.MethodDescriptor getSetVolumeMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "SetVolume", + requestType = cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request.class, + responseType = cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Feedback.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getSetVolumeMethod() { + io.grpc.MethodDescriptor getSetVolumeMethod; + if ((getSetVolumeMethod = SpeakerServiceGrpc.getSetVolumeMethod) == null) { + synchronized (SpeakerServiceGrpc.class) { + if ((getSetVolumeMethod = SpeakerServiceGrpc.getSetVolumeMethod) == null) { + SpeakerServiceGrpc.getSetVolumeMethod = getSetVolumeMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "SetVolume")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Feedback.getDefaultInstance())) + .setSchemaDescriptor(new SpeakerServiceMethodDescriptorSupplier("SetVolume")) + .build(); + } + } + } + return getSetVolumeMethod; + } + + private static volatile io.grpc.MethodDescriptor getGetVolumeMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "GetVolume", + requestType = cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request.class, + responseType = cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Feedback.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getGetVolumeMethod() { + io.grpc.MethodDescriptor getGetVolumeMethod; + if ((getGetVolumeMethod = SpeakerServiceGrpc.getGetVolumeMethod) == null) { + synchronized (SpeakerServiceGrpc.class) { + if ((getGetVolumeMethod = SpeakerServiceGrpc.getGetVolumeMethod) == null) { + SpeakerServiceGrpc.getGetVolumeMethod = getGetVolumeMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetVolume")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Feedback.getDefaultInstance())) + .setSchemaDescriptor(new SpeakerServiceMethodDescriptorSupplier("GetVolume")) + .build(); + } + } + } + return getGetVolumeMethod; + } + + /** + * Creates a new async stub that supports all call types for the service + */ + public static SpeakerServiceStub newStub(io.grpc.Channel channel) { + io.grpc.stub.AbstractStub.StubFactory factory = + new io.grpc.stub.AbstractStub.StubFactory() { + @java.lang.Override + public SpeakerServiceStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new SpeakerServiceStub(channel, callOptions); + } + }; + return SpeakerServiceStub.newStub(factory, channel); + } + + /** + * Creates a new blocking-style stub that supports unary and streaming output calls on the service + */ + public static SpeakerServiceBlockingStub newBlockingStub( + io.grpc.Channel channel) { + io.grpc.stub.AbstractStub.StubFactory factory = + new io.grpc.stub.AbstractStub.StubFactory() { + @java.lang.Override + public SpeakerServiceBlockingStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new SpeakerServiceBlockingStub(channel, callOptions); + } + }; + return SpeakerServiceBlockingStub.newStub(factory, channel); + } + + /** + * Creates a new ListenableFuture-style stub that supports unary calls on the service + */ + public static SpeakerServiceFutureStub newFutureStub( + io.grpc.Channel channel) { + io.grpc.stub.AbstractStub.StubFactory factory = + new io.grpc.stub.AbstractStub.StubFactory() { + @java.lang.Override + public SpeakerServiceFutureStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new SpeakerServiceFutureStub(channel, callOptions); + } + }; + return SpeakerServiceFutureStub.newStub(factory, channel); + } + + /** + */ + public static abstract class SpeakerServiceImplBase implements io.grpc.BindableService { + + /** + *
+     * 基本控制
+     * 
+ */ + public void getStatus(cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetStatusMethod(), responseObserver); + } + + /** + */ + public void playAudio(cmvr.api.SpeakerCommand.PlayAudioCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getPlayAudioMethod(), responseObserver); + } + + /** + */ + public void stopPlayback(cmvr.api.SpeakerCommand.StopSpeakerCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getStopPlaybackMethod(), responseObserver); + } + + /** + */ + public void pausePlayback(cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getPausePlaybackMethod(), responseObserver); + } + + /** + */ + public void resumePlayback(cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getResumePlaybackMethod(), responseObserver); + } + + /** + *
+     * 音量控制
+     * 
+ */ + public void setVolume(cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetVolumeMethod(), responseObserver); + } + + /** + */ + public void getVolume(cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetVolumeMethod(), responseObserver); + } + + @java.lang.Override public final io.grpc.ServerServiceDefinition bindService() { + return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()) + .addMethod( + getGetStatusMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request, + cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Feedback>( + this, METHODID_GET_STATUS))) + .addMethod( + getPlayAudioMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + cmvr.api.SpeakerCommand.PlayAudioCommand.Request, + cmvr.api.SpeakerCommand.PlayAudioCommand.Feedback>( + this, METHODID_PLAY_AUDIO))) + .addMethod( + getStopPlaybackMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + cmvr.api.SpeakerCommand.StopSpeakerCommand.Request, + cmvr.api.SpeakerCommand.StopSpeakerCommand.Feedback>( + this, METHODID_STOP_PLAYBACK))) + .addMethod( + getPausePlaybackMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request, + cmvr.api.SpeakerCommand.PauseSpeakerCommand.Feedback>( + this, METHODID_PAUSE_PLAYBACK))) + .addMethod( + getResumePlaybackMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request, + cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Feedback>( + this, METHODID_RESUME_PLAYBACK))) + .addMethod( + getSetVolumeMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request, + cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Feedback>( + this, METHODID_SET_VOLUME))) + .addMethod( + getGetVolumeMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request, + cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Feedback>( + this, METHODID_GET_VOLUME))) + .build(); + } + } + + /** + */ + public static final class SpeakerServiceStub extends io.grpc.stub.AbstractAsyncStub { + private SpeakerServiceStub( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + super(channel, callOptions); + } + + @java.lang.Override + protected SpeakerServiceStub build( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new SpeakerServiceStub(channel, callOptions); + } + + /** + *
+     * 基本控制
+     * 
+ */ + public void getStatus(cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getGetStatusMethod(), getCallOptions()), request, responseObserver); + } + + /** + */ + public void playAudio(cmvr.api.SpeakerCommand.PlayAudioCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getPlayAudioMethod(), getCallOptions()), request, responseObserver); + } + + /** + */ + public void stopPlayback(cmvr.api.SpeakerCommand.StopSpeakerCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getStopPlaybackMethod(), getCallOptions()), request, responseObserver); + } + + /** + */ + public void pausePlayback(cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getPausePlaybackMethod(), getCallOptions()), request, responseObserver); + } + + /** + */ + public void resumePlayback(cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getResumePlaybackMethod(), getCallOptions()), request, responseObserver); + } + + /** + *
+     * 音量控制
+     * 
+ */ + public void setVolume(cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getSetVolumeMethod(), getCallOptions()), request, responseObserver); + } + + /** + */ + public void getVolume(cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getGetVolumeMethod(), getCallOptions()), request, responseObserver); + } + } + + /** + */ + public static final class SpeakerServiceBlockingStub extends io.grpc.stub.AbstractBlockingStub { + private SpeakerServiceBlockingStub( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + super(channel, callOptions); + } + + @java.lang.Override + protected SpeakerServiceBlockingStub build( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new SpeakerServiceBlockingStub(channel, callOptions); + } + + /** + *
+     * 基本控制
+     * 
+ */ + public cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Feedback getStatus(cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getGetStatusMethod(), getCallOptions(), request); + } + + /** + */ + public cmvr.api.SpeakerCommand.PlayAudioCommand.Feedback playAudio(cmvr.api.SpeakerCommand.PlayAudioCommand.Request request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getPlayAudioMethod(), getCallOptions(), request); + } + + /** + */ + public cmvr.api.SpeakerCommand.StopSpeakerCommand.Feedback stopPlayback(cmvr.api.SpeakerCommand.StopSpeakerCommand.Request request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getStopPlaybackMethod(), getCallOptions(), request); + } + + /** + */ + public cmvr.api.SpeakerCommand.PauseSpeakerCommand.Feedback pausePlayback(cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getPausePlaybackMethod(), getCallOptions(), request); + } + + /** + */ + public cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Feedback resumePlayback(cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getResumePlaybackMethod(), getCallOptions(), request); + } + + /** + *
+     * 音量控制
+     * 
+ */ + public cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Feedback setVolume(cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getSetVolumeMethod(), getCallOptions(), request); + } + + /** + */ + public cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Feedback getVolume(cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getGetVolumeMethod(), getCallOptions(), request); + } + } + + /** + */ + public static final class SpeakerServiceFutureStub extends io.grpc.stub.AbstractFutureStub { + private SpeakerServiceFutureStub( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + super(channel, callOptions); + } + + @java.lang.Override + protected SpeakerServiceFutureStub build( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new SpeakerServiceFutureStub(channel, callOptions); + } + + /** + *
+     * 基本控制
+     * 
+ */ + public com.google.common.util.concurrent.ListenableFuture getStatus( + cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getGetStatusMethod(), getCallOptions()), request); + } + + /** + */ + public com.google.common.util.concurrent.ListenableFuture playAudio( + cmvr.api.SpeakerCommand.PlayAudioCommand.Request request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getPlayAudioMethod(), getCallOptions()), request); + } + + /** + */ + public com.google.common.util.concurrent.ListenableFuture stopPlayback( + cmvr.api.SpeakerCommand.StopSpeakerCommand.Request request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getStopPlaybackMethod(), getCallOptions()), request); + } + + /** + */ + public com.google.common.util.concurrent.ListenableFuture pausePlayback( + cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getPausePlaybackMethod(), getCallOptions()), request); + } + + /** + */ + public com.google.common.util.concurrent.ListenableFuture resumePlayback( + cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getResumePlaybackMethod(), getCallOptions()), request); + } + + /** + *
+     * 音量控制
+     * 
+ */ + public com.google.common.util.concurrent.ListenableFuture setVolume( + cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getSetVolumeMethod(), getCallOptions()), request); + } + + /** + */ + public com.google.common.util.concurrent.ListenableFuture getVolume( + cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getGetVolumeMethod(), getCallOptions()), request); + } + } + + private static final int METHODID_GET_STATUS = 0; + private static final int METHODID_PLAY_AUDIO = 1; + private static final int METHODID_STOP_PLAYBACK = 2; + private static final int METHODID_PAUSE_PLAYBACK = 3; + private static final int METHODID_RESUME_PLAYBACK = 4; + private static final int METHODID_SET_VOLUME = 5; + private static final int METHODID_GET_VOLUME = 6; + + private static final class MethodHandlers implements + io.grpc.stub.ServerCalls.UnaryMethod, + io.grpc.stub.ServerCalls.ServerStreamingMethod, + io.grpc.stub.ServerCalls.ClientStreamingMethod, + io.grpc.stub.ServerCalls.BidiStreamingMethod { + private final SpeakerServiceImplBase serviceImpl; + private final int methodId; + + MethodHandlers(SpeakerServiceImplBase serviceImpl, int methodId) { + this.serviceImpl = serviceImpl; + this.methodId = methodId; + } + + @java.lang.Override + @java.lang.SuppressWarnings("unchecked") + public void invoke(Req request, io.grpc.stub.StreamObserver responseObserver) { + switch (methodId) { + case METHODID_GET_STATUS: + serviceImpl.getStatus((cmvr.api.SpeakerCommand.GetSpeakerStateCommand.Request) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; + case METHODID_PLAY_AUDIO: + serviceImpl.playAudio((cmvr.api.SpeakerCommand.PlayAudioCommand.Request) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; + case METHODID_STOP_PLAYBACK: + serviceImpl.stopPlayback((cmvr.api.SpeakerCommand.StopSpeakerCommand.Request) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; + case METHODID_PAUSE_PLAYBACK: + serviceImpl.pausePlayback((cmvr.api.SpeakerCommand.PauseSpeakerCommand.Request) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; + case METHODID_RESUME_PLAYBACK: + serviceImpl.resumePlayback((cmvr.api.SpeakerCommand.ResumeSpeakerCommand.Request) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; + case METHODID_SET_VOLUME: + serviceImpl.setVolume((cmvr.api.SpeakerCommand.SetSpeakerVolumeCommand.Request) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; + case METHODID_GET_VOLUME: + serviceImpl.getVolume((cmvr.api.SpeakerCommand.GetSpeakerVolumeCommand.Request) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; + default: + throw new AssertionError(); + } + } + + @java.lang.Override + @java.lang.SuppressWarnings("unchecked") + public io.grpc.stub.StreamObserver invoke( + io.grpc.stub.StreamObserver responseObserver) { + switch (methodId) { + default: + throw new AssertionError(); + } + } + } + + private static abstract class SpeakerServiceBaseDescriptorSupplier + implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier { + SpeakerServiceBaseDescriptorSupplier() {} + + @java.lang.Override + public com.google.protobuf.Descriptors.FileDescriptor getFileDescriptor() { + return cmvr.api.SpeakerServiceOuterClass.getDescriptor(); + } + + @java.lang.Override + public com.google.protobuf.Descriptors.ServiceDescriptor getServiceDescriptor() { + return getFileDescriptor().findServiceByName("SpeakerService"); + } + } + + private static final class SpeakerServiceFileDescriptorSupplier + extends SpeakerServiceBaseDescriptorSupplier { + SpeakerServiceFileDescriptorSupplier() {} + } + + private static final class SpeakerServiceMethodDescriptorSupplier + extends SpeakerServiceBaseDescriptorSupplier + implements io.grpc.protobuf.ProtoMethodDescriptorSupplier { + private final String methodName; + + SpeakerServiceMethodDescriptorSupplier(String methodName) { + this.methodName = methodName; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.MethodDescriptor getMethodDescriptor() { + return getServiceDescriptor().findMethodByName(methodName); + } + } + + private static volatile io.grpc.ServiceDescriptor serviceDescriptor; + + public static io.grpc.ServiceDescriptor getServiceDescriptor() { + io.grpc.ServiceDescriptor result = serviceDescriptor; + if (result == null) { + synchronized (SpeakerServiceGrpc.class) { + result = serviceDescriptor; + if (result == null) { + serviceDescriptor = result = io.grpc.ServiceDescriptor.newBuilder(SERVICE_NAME) + .setSchemaDescriptor(new SpeakerServiceFileDescriptorSupplier()) + .addMethod(getGetStatusMethod()) + .addMethod(getPlayAudioMethod()) + .addMethod(getStopPlaybackMethod()) + .addMethod(getPausePlaybackMethod()) + .addMethod(getResumePlaybackMethod()) + .addMethod(getSetVolumeMethod()) + .addMethod(getGetVolumeMethod()) + .build(); + } + } + } + return result; + } +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/SpeakerServiceOuterClass.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/SpeakerServiceOuterClass.java new file mode 100644 index 0000000..f8cb524 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/SpeakerServiceOuterClass.java @@ -0,0 +1,56 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: cmvr/api/speaker_service.proto + +package cmvr.api; + +public final class SpeakerServiceOuterClass { + private SpeakerServiceOuterClass() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistryLite registry) { + } + + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + registerAllExtensions( + (com.google.protobuf.ExtensionRegistryLite) registry); + } + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n\036cmvr/api/speaker_service.proto\022\010cmvr.a" + + "pi\032\036cmvr/api/speaker_command.proto2\260\005\n\016S" + + "peakerService\022`\n\tGetStatus\022(.cmvr.api.Ge" + + "tSpeakerStateCommand.Request\032).cmvr.api." + + "GetSpeakerStateCommand.Feedback\022T\n\tPlayA" + + "udio\022\".cmvr.api.PlayAudioCommand.Request" + + "\032#.cmvr.api.PlayAudioCommand.Feedback\022[\n" + + "\014StopPlayback\022$.cmvr.api.StopSpeakerComm" + + "and.Request\032%.cmvr.api.StopSpeakerComman" + + "d.Feedback\022^\n\rPausePlayback\022%.cmvr.api.P" + + "auseSpeakerCommand.Request\032&.cmvr.api.Pa" + + "useSpeakerCommand.Feedback\022a\n\016ResumePlay" + + "back\022&.cmvr.api.ResumeSpeakerCommand.Req" + + "uest\032\'.cmvr.api.ResumeSpeakerCommand.Fee" + + "dback\022b\n\tSetVolume\022).cmvr.api.SetSpeaker" + + "VolumeCommand.Request\032*.cmvr.api.SetSpea" + + "kerVolumeCommand.Feedback\022b\n\tGetVolume\022)" + + ".cmvr.api.GetSpeakerVolumeCommand.Reques" + + "t\032*.cmvr.api.GetSpeakerVolumeCommand.Fee" + + "dbackb\006proto3" + }; + descriptor = com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + cmvr.api.SpeakerCommand.getDescriptor(), + }); + cmvr.api.SpeakerCommand.getDescriptor(); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/SystemCommand.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/SystemCommand.java new file mode 100644 index 0000000..14f99a0 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/SystemCommand.java @@ -0,0 +1,5381 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: cmvr/api/system_command.proto + +package cmvr.api; + +public final class SystemCommand { + private SystemCommand() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistryLite registry) { + } + + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + registerAllExtensions( + (com.google.protobuf.ExtensionRegistryLite) registry); + } + /** + * Protobuf enum {@code cmvr.api.DeviceType} + */ + public enum DeviceType + implements com.google.protobuf.ProtocolMessageEnum { + /** + * AGV = 0; + */ + AGV(0), + /** + * Battery = 1; + */ + Battery(1), + /** + * Camera = 2; + */ + Camera(2), + /** + * DexHand = 3; + */ + DexHand(3), + /** + * Gripper = 4; + */ + Gripper(4), + /** + * Microphone = 5; + */ + Microphone(5), + /** + * Robot = 6; + */ + Robot(6), + /** + * Speaker = 7; + */ + Speaker(7), + /** + * Unknown = 20; + */ + Unknown(20), + UNRECOGNIZED(-1), + ; + + /** + * AGV = 0; + */ + public static final int AGV_VALUE = 0; + /** + * Battery = 1; + */ + public static final int Battery_VALUE = 1; + /** + * Camera = 2; + */ + public static final int Camera_VALUE = 2; + /** + * DexHand = 3; + */ + public static final int DexHand_VALUE = 3; + /** + * Gripper = 4; + */ + public static final int Gripper_VALUE = 4; + /** + * Microphone = 5; + */ + public static final int Microphone_VALUE = 5; + /** + * Robot = 6; + */ + public static final int Robot_VALUE = 6; + /** + * Speaker = 7; + */ + public static final int Speaker_VALUE = 7; + /** + * Unknown = 20; + */ + public static final int Unknown_VALUE = 20; + + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static DeviceType valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static DeviceType forNumber(int value) { + switch (value) { + case 0: return AGV; + case 1: return Battery; + case 2: return Camera; + case 3: return DexHand; + case 4: return Gripper; + case 5: return Microphone; + case 6: return Robot; + case 7: return Speaker; + case 20: return Unknown; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + DeviceType> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public DeviceType findValueByNumber(int number) { + return DeviceType.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(ordinal()); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return cmvr.api.SystemCommand.getDescriptor().getEnumTypes().get(0); + } + + private static final DeviceType[] VALUES = values(); + + public static DeviceType valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private DeviceType(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:cmvr.api.DeviceType) + } + + public interface DeviceListOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.DeviceList) + com.google.protobuf.MessageOrBuilder { + + /** + * string device_id = 1; + * @return The deviceId. + */ + java.lang.String getDeviceId(); + /** + * string device_id = 1; + * @return The bytes for deviceId. + */ + com.google.protobuf.ByteString + getDeviceIdBytes(); + + /** + * .cmvr.api.DeviceType device_type = 2; + * @return The enum numeric value on the wire for deviceType. + */ + int getDeviceTypeValue(); + /** + * .cmvr.api.DeviceType device_type = 2; + * @return The deviceType. + */ + cmvr.api.SystemCommand.DeviceType getDeviceType(); + } + /** + * Protobuf type {@code cmvr.api.DeviceList} + */ + public static final class DeviceList extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.DeviceList) + DeviceListOrBuilder { + private static final long serialVersionUID = 0L; + // Use DeviceList.newBuilder() to construct. + private DeviceList(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private DeviceList() { + deviceId_ = ""; + deviceType_ = 0; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new DeviceList(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SystemCommand.internal_static_cmvr_api_DeviceList_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SystemCommand.internal_static_cmvr_api_DeviceList_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SystemCommand.DeviceList.class, cmvr.api.SystemCommand.DeviceList.Builder.class); + } + + public static final int DEVICE_ID_FIELD_NUMBER = 1; + private volatile java.lang.Object deviceId_; + /** + * string device_id = 1; + * @return The deviceId. + */ + @java.lang.Override + public java.lang.String getDeviceId() { + java.lang.Object ref = deviceId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + deviceId_ = s; + return s; + } + } + /** + * string device_id = 1; + * @return The bytes for deviceId. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getDeviceIdBytes() { + java.lang.Object ref = deviceId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + deviceId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int DEVICE_TYPE_FIELD_NUMBER = 2; + private int deviceType_; + /** + * .cmvr.api.DeviceType device_type = 2; + * @return The enum numeric value on the wire for deviceType. + */ + @java.lang.Override public int getDeviceTypeValue() { + return deviceType_; + } + /** + * .cmvr.api.DeviceType device_type = 2; + * @return The deviceType. + */ + @java.lang.Override public cmvr.api.SystemCommand.DeviceType getDeviceType() { + @SuppressWarnings("deprecation") + cmvr.api.SystemCommand.DeviceType result = cmvr.api.SystemCommand.DeviceType.valueOf(deviceType_); + return result == null ? cmvr.api.SystemCommand.DeviceType.UNRECOGNIZED : result; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(deviceId_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, deviceId_); + } + if (deviceType_ != cmvr.api.SystemCommand.DeviceType.AGV.getNumber()) { + output.writeEnum(2, deviceType_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(deviceId_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, deviceId_); + } + if (deviceType_ != cmvr.api.SystemCommand.DeviceType.AGV.getNumber()) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(2, deviceType_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.SystemCommand.DeviceList)) { + return super.equals(obj); + } + cmvr.api.SystemCommand.DeviceList other = (cmvr.api.SystemCommand.DeviceList) obj; + + if (!getDeviceId() + .equals(other.getDeviceId())) return false; + if (deviceType_ != other.deviceType_) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + DEVICE_ID_FIELD_NUMBER; + hash = (53 * hash) + getDeviceId().hashCode(); + hash = (37 * hash) + DEVICE_TYPE_FIELD_NUMBER; + hash = (53 * hash) + deviceType_; + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.SystemCommand.DeviceList parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SystemCommand.DeviceList parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SystemCommand.DeviceList parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SystemCommand.DeviceList parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SystemCommand.DeviceList parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SystemCommand.DeviceList parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SystemCommand.DeviceList parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SystemCommand.DeviceList parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SystemCommand.DeviceList parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.SystemCommand.DeviceList parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SystemCommand.DeviceList parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SystemCommand.DeviceList parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.SystemCommand.DeviceList prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.DeviceList} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.DeviceList) + cmvr.api.SystemCommand.DeviceListOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SystemCommand.internal_static_cmvr_api_DeviceList_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SystemCommand.internal_static_cmvr_api_DeviceList_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SystemCommand.DeviceList.class, cmvr.api.SystemCommand.DeviceList.Builder.class); + } + + // Construct using cmvr.api.SystemCommand.DeviceList.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + deviceId_ = ""; + + deviceType_ = 0; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.SystemCommand.internal_static_cmvr_api_DeviceList_descriptor; + } + + @java.lang.Override + public cmvr.api.SystemCommand.DeviceList getDefaultInstanceForType() { + return cmvr.api.SystemCommand.DeviceList.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.SystemCommand.DeviceList build() { + cmvr.api.SystemCommand.DeviceList result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.SystemCommand.DeviceList buildPartial() { + cmvr.api.SystemCommand.DeviceList result = new cmvr.api.SystemCommand.DeviceList(this); + result.deviceId_ = deviceId_; + result.deviceType_ = deviceType_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.SystemCommand.DeviceList) { + return mergeFrom((cmvr.api.SystemCommand.DeviceList)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.SystemCommand.DeviceList other) { + if (other == cmvr.api.SystemCommand.DeviceList.getDefaultInstance()) return this; + if (!other.getDeviceId().isEmpty()) { + deviceId_ = other.deviceId_; + onChanged(); + } + if (other.deviceType_ != 0) { + setDeviceTypeValue(other.getDeviceTypeValue()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + deviceId_ = input.readStringRequireUtf8(); + + break; + } // case 10 + case 16: { + deviceType_ = input.readEnum(); + + break; + } // case 16 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private java.lang.Object deviceId_ = ""; + /** + * string device_id = 1; + * @return The deviceId. + */ + public java.lang.String getDeviceId() { + java.lang.Object ref = deviceId_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + deviceId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string device_id = 1; + * @return The bytes for deviceId. + */ + public com.google.protobuf.ByteString + getDeviceIdBytes() { + java.lang.Object ref = deviceId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + deviceId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string device_id = 1; + * @param value The deviceId to set. + * @return This builder for chaining. + */ + public Builder setDeviceId( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + deviceId_ = value; + onChanged(); + return this; + } + /** + * string device_id = 1; + * @return This builder for chaining. + */ + public Builder clearDeviceId() { + + deviceId_ = getDefaultInstance().getDeviceId(); + onChanged(); + return this; + } + /** + * string device_id = 1; + * @param value The bytes for deviceId to set. + * @return This builder for chaining. + */ + public Builder setDeviceIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + deviceId_ = value; + onChanged(); + return this; + } + + private int deviceType_ = 0; + /** + * .cmvr.api.DeviceType device_type = 2; + * @return The enum numeric value on the wire for deviceType. + */ + @java.lang.Override public int getDeviceTypeValue() { + return deviceType_; + } + /** + * .cmvr.api.DeviceType device_type = 2; + * @param value The enum numeric value on the wire for deviceType to set. + * @return This builder for chaining. + */ + public Builder setDeviceTypeValue(int value) { + + deviceType_ = value; + onChanged(); + return this; + } + /** + * .cmvr.api.DeviceType device_type = 2; + * @return The deviceType. + */ + @java.lang.Override + public cmvr.api.SystemCommand.DeviceType getDeviceType() { + @SuppressWarnings("deprecation") + cmvr.api.SystemCommand.DeviceType result = cmvr.api.SystemCommand.DeviceType.valueOf(deviceType_); + return result == null ? cmvr.api.SystemCommand.DeviceType.UNRECOGNIZED : result; + } + /** + * .cmvr.api.DeviceType device_type = 2; + * @param value The deviceType to set. + * @return This builder for chaining. + */ + public Builder setDeviceType(cmvr.api.SystemCommand.DeviceType value) { + if (value == null) { + throw new NullPointerException(); + } + + deviceType_ = value.getNumber(); + onChanged(); + return this; + } + /** + * .cmvr.api.DeviceType device_type = 2; + * @return This builder for chaining. + */ + public Builder clearDeviceType() { + + deviceType_ = 0; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.DeviceList) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.DeviceList) + private static final cmvr.api.SystemCommand.DeviceList DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.SystemCommand.DeviceList(); + } + + public static cmvr.api.SystemCommand.DeviceList getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public DeviceList parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.SystemCommand.DeviceList getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface GetSystemInfoCommandOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetSystemInfoCommand) + com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code cmvr.api.GetSystemInfoCommand} + */ + public static final class GetSystemInfoCommand extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetSystemInfoCommand) + GetSystemInfoCommandOrBuilder { + private static final long serialVersionUID = 0L; + // Use GetSystemInfoCommand.newBuilder() to construct. + private GetSystemInfoCommand(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private GetSystemInfoCommand() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new GetSystemInfoCommand(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SystemCommand.internal_static_cmvr_api_GetSystemInfoCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SystemCommand.internal_static_cmvr_api_GetSystemInfoCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SystemCommand.GetSystemInfoCommand.class, cmvr.api.SystemCommand.GetSystemInfoCommand.Builder.class); + } + + public interface RequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetSystemInfoCommand.Request) + com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code cmvr.api.GetSystemInfoCommand.Request} + */ + public static final class Request extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetSystemInfoCommand.Request) + RequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use Request.newBuilder() to construct. + private Request(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Request() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Request(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SystemCommand.internal_static_cmvr_api_GetSystemInfoCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SystemCommand.internal_static_cmvr_api_GetSystemInfoCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SystemCommand.GetSystemInfoCommand.Request.class, cmvr.api.SystemCommand.GetSystemInfoCommand.Request.Builder.class); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.SystemCommand.GetSystemInfoCommand.Request)) { + return super.equals(obj); + } + cmvr.api.SystemCommand.GetSystemInfoCommand.Request other = (cmvr.api.SystemCommand.GetSystemInfoCommand.Request) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.SystemCommand.GetSystemInfoCommand.Request parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SystemCommand.GetSystemInfoCommand.Request parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SystemCommand.GetSystemInfoCommand.Request parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SystemCommand.GetSystemInfoCommand.Request parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SystemCommand.GetSystemInfoCommand.Request parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SystemCommand.GetSystemInfoCommand.Request parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SystemCommand.GetSystemInfoCommand.Request parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SystemCommand.GetSystemInfoCommand.Request parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SystemCommand.GetSystemInfoCommand.Request parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.SystemCommand.GetSystemInfoCommand.Request parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SystemCommand.GetSystemInfoCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SystemCommand.GetSystemInfoCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.SystemCommand.GetSystemInfoCommand.Request prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetSystemInfoCommand.Request} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetSystemInfoCommand.Request) + cmvr.api.SystemCommand.GetSystemInfoCommand.RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SystemCommand.internal_static_cmvr_api_GetSystemInfoCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SystemCommand.internal_static_cmvr_api_GetSystemInfoCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SystemCommand.GetSystemInfoCommand.Request.class, cmvr.api.SystemCommand.GetSystemInfoCommand.Request.Builder.class); + } + + // Construct using cmvr.api.SystemCommand.GetSystemInfoCommand.Request.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.SystemCommand.internal_static_cmvr_api_GetSystemInfoCommand_Request_descriptor; + } + + @java.lang.Override + public cmvr.api.SystemCommand.GetSystemInfoCommand.Request getDefaultInstanceForType() { + return cmvr.api.SystemCommand.GetSystemInfoCommand.Request.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.SystemCommand.GetSystemInfoCommand.Request build() { + cmvr.api.SystemCommand.GetSystemInfoCommand.Request result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.SystemCommand.GetSystemInfoCommand.Request buildPartial() { + cmvr.api.SystemCommand.GetSystemInfoCommand.Request result = new cmvr.api.SystemCommand.GetSystemInfoCommand.Request(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.SystemCommand.GetSystemInfoCommand.Request) { + return mergeFrom((cmvr.api.SystemCommand.GetSystemInfoCommand.Request)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.SystemCommand.GetSystemInfoCommand.Request other) { + if (other == cmvr.api.SystemCommand.GetSystemInfoCommand.Request.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetSystemInfoCommand.Request) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetSystemInfoCommand.Request) + private static final cmvr.api.SystemCommand.GetSystemInfoCommand.Request DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.SystemCommand.GetSystemInfoCommand.Request(); + } + + public static cmvr.api.SystemCommand.GetSystemInfoCommand.Request getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.SystemCommand.GetSystemInfoCommand.Request getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface FeedbackOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetSystemInfoCommand.Feedback) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Feedback getHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder(); + + /** + * string system_name = 2; + * @return The systemName. + */ + java.lang.String getSystemName(); + /** + * string system_name = 2; + * @return The bytes for systemName. + */ + com.google.protobuf.ByteString + getSystemNameBytes(); + + /** + * string version = 3; + * @return The version. + */ + java.lang.String getVersion(); + /** + * string version = 3; + * @return The bytes for version. + */ + com.google.protobuf.ByteString + getVersionBytes(); + + /** + * string description = 4; + * @return The description. + */ + java.lang.String getDescription(); + /** + * string description = 4; + * @return The bytes for description. + */ + com.google.protobuf.ByteString + getDescriptionBytes(); + + /** + * string os = 5; + * @return The os. + */ + java.lang.String getOs(); + /** + * string os = 5; + * @return The bytes for os. + */ + com.google.protobuf.ByteString + getOsBytes(); + + /** + * string kernel_version = 6; + * @return The kernelVersion. + */ + java.lang.String getKernelVersion(); + /** + * string kernel_version = 6; + * @return The bytes for kernelVersion. + */ + com.google.protobuf.ByteString + getKernelVersionBytes(); + + /** + * string architecture = 7; + * @return The architecture. + */ + java.lang.String getArchitecture(); + /** + * string architecture = 7; + * @return The bytes for architecture. + */ + com.google.protobuf.ByteString + getArchitectureBytes(); + } + /** + * Protobuf type {@code cmvr.api.GetSystemInfoCommand.Feedback} + */ + public static final class Feedback extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetSystemInfoCommand.Feedback) + FeedbackOrBuilder { + private static final long serialVersionUID = 0L; + // Use Feedback.newBuilder() to construct. + private Feedback(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Feedback() { + systemName_ = ""; + version_ = ""; + description_ = ""; + os_ = ""; + kernelVersion_ = ""; + architecture_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Feedback(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SystemCommand.internal_static_cmvr_api_GetSystemInfoCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SystemCommand.internal_static_cmvr_api_GetSystemInfoCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SystemCommand.GetSystemInfoCommand.Feedback.class, cmvr.api.SystemCommand.GetSystemInfoCommand.Feedback.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Feedback header_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + public static final int SYSTEM_NAME_FIELD_NUMBER = 2; + private volatile java.lang.Object systemName_; + /** + * string system_name = 2; + * @return The systemName. + */ + @java.lang.Override + public java.lang.String getSystemName() { + java.lang.Object ref = systemName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + systemName_ = s; + return s; + } + } + /** + * string system_name = 2; + * @return The bytes for systemName. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getSystemNameBytes() { + java.lang.Object ref = systemName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + systemName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int VERSION_FIELD_NUMBER = 3; + private volatile java.lang.Object version_; + /** + * string version = 3; + * @return The version. + */ + @java.lang.Override + public java.lang.String getVersion() { + java.lang.Object ref = version_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + version_ = s; + return s; + } + } + /** + * string version = 3; + * @return The bytes for version. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getVersionBytes() { + java.lang.Object ref = version_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + version_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int DESCRIPTION_FIELD_NUMBER = 4; + private volatile java.lang.Object description_; + /** + * string description = 4; + * @return The description. + */ + @java.lang.Override + public java.lang.String getDescription() { + java.lang.Object ref = description_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + description_ = s; + return s; + } + } + /** + * string description = 4; + * @return The bytes for description. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getDescriptionBytes() { + java.lang.Object ref = description_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + description_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int OS_FIELD_NUMBER = 5; + private volatile java.lang.Object os_; + /** + * string os = 5; + * @return The os. + */ + @java.lang.Override + public java.lang.String getOs() { + java.lang.Object ref = os_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + os_ = s; + return s; + } + } + /** + * string os = 5; + * @return The bytes for os. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getOsBytes() { + java.lang.Object ref = os_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + os_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int KERNEL_VERSION_FIELD_NUMBER = 6; + private volatile java.lang.Object kernelVersion_; + /** + * string kernel_version = 6; + * @return The kernelVersion. + */ + @java.lang.Override + public java.lang.String getKernelVersion() { + java.lang.Object ref = kernelVersion_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + kernelVersion_ = s; + return s; + } + } + /** + * string kernel_version = 6; + * @return The bytes for kernelVersion. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getKernelVersionBytes() { + java.lang.Object ref = kernelVersion_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + kernelVersion_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int ARCHITECTURE_FIELD_NUMBER = 7; + private volatile java.lang.Object architecture_; + /** + * string architecture = 7; + * @return The architecture. + */ + @java.lang.Override + public java.lang.String getArchitecture() { + java.lang.Object ref = architecture_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + architecture_ = s; + return s; + } + } + /** + * string architecture = 7; + * @return The bytes for architecture. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getArchitectureBytes() { + java.lang.Object ref = architecture_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + architecture_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(systemName_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, systemName_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(version_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 3, version_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(description_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 4, description_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(os_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 5, os_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(kernelVersion_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 6, kernelVersion_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(architecture_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 7, architecture_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(systemName_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, systemName_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(version_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, version_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(description_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, description_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(os_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, os_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(kernelVersion_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, kernelVersion_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(architecture_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, architecture_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.SystemCommand.GetSystemInfoCommand.Feedback)) { + return super.equals(obj); + } + cmvr.api.SystemCommand.GetSystemInfoCommand.Feedback other = (cmvr.api.SystemCommand.GetSystemInfoCommand.Feedback) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getSystemName() + .equals(other.getSystemName())) return false; + if (!getVersion() + .equals(other.getVersion())) return false; + if (!getDescription() + .equals(other.getDescription())) return false; + if (!getOs() + .equals(other.getOs())) return false; + if (!getKernelVersion() + .equals(other.getKernelVersion())) return false; + if (!getArchitecture() + .equals(other.getArchitecture())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (37 * hash) + SYSTEM_NAME_FIELD_NUMBER; + hash = (53 * hash) + getSystemName().hashCode(); + hash = (37 * hash) + VERSION_FIELD_NUMBER; + hash = (53 * hash) + getVersion().hashCode(); + hash = (37 * hash) + DESCRIPTION_FIELD_NUMBER; + hash = (53 * hash) + getDescription().hashCode(); + hash = (37 * hash) + OS_FIELD_NUMBER; + hash = (53 * hash) + getOs().hashCode(); + hash = (37 * hash) + KERNEL_VERSION_FIELD_NUMBER; + hash = (53 * hash) + getKernelVersion().hashCode(); + hash = (37 * hash) + ARCHITECTURE_FIELD_NUMBER; + hash = (53 * hash) + getArchitecture().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.SystemCommand.GetSystemInfoCommand.Feedback parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SystemCommand.GetSystemInfoCommand.Feedback parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SystemCommand.GetSystemInfoCommand.Feedback parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SystemCommand.GetSystemInfoCommand.Feedback parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SystemCommand.GetSystemInfoCommand.Feedback parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SystemCommand.GetSystemInfoCommand.Feedback parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SystemCommand.GetSystemInfoCommand.Feedback parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SystemCommand.GetSystemInfoCommand.Feedback parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SystemCommand.GetSystemInfoCommand.Feedback parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.SystemCommand.GetSystemInfoCommand.Feedback parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SystemCommand.GetSystemInfoCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SystemCommand.GetSystemInfoCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.SystemCommand.GetSystemInfoCommand.Feedback prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetSystemInfoCommand.Feedback} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetSystemInfoCommand.Feedback) + cmvr.api.SystemCommand.GetSystemInfoCommand.FeedbackOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SystemCommand.internal_static_cmvr_api_GetSystemInfoCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SystemCommand.internal_static_cmvr_api_GetSystemInfoCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SystemCommand.GetSystemInfoCommand.Feedback.class, cmvr.api.SystemCommand.GetSystemInfoCommand.Feedback.Builder.class); + } + + // Construct using cmvr.api.SystemCommand.GetSystemInfoCommand.Feedback.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + systemName_ = ""; + + version_ = ""; + + description_ = ""; + + os_ = ""; + + kernelVersion_ = ""; + + architecture_ = ""; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.SystemCommand.internal_static_cmvr_api_GetSystemInfoCommand_Feedback_descriptor; + } + + @java.lang.Override + public cmvr.api.SystemCommand.GetSystemInfoCommand.Feedback getDefaultInstanceForType() { + return cmvr.api.SystemCommand.GetSystemInfoCommand.Feedback.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.SystemCommand.GetSystemInfoCommand.Feedback build() { + cmvr.api.SystemCommand.GetSystemInfoCommand.Feedback result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.SystemCommand.GetSystemInfoCommand.Feedback buildPartial() { + cmvr.api.SystemCommand.GetSystemInfoCommand.Feedback result = new cmvr.api.SystemCommand.GetSystemInfoCommand.Feedback(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + result.systemName_ = systemName_; + result.version_ = version_; + result.description_ = description_; + result.os_ = os_; + result.kernelVersion_ = kernelVersion_; + result.architecture_ = architecture_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.SystemCommand.GetSystemInfoCommand.Feedback) { + return mergeFrom((cmvr.api.SystemCommand.GetSystemInfoCommand.Feedback)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.SystemCommand.GetSystemInfoCommand.Feedback other) { + if (other == cmvr.api.SystemCommand.GetSystemInfoCommand.Feedback.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + if (!other.getSystemName().isEmpty()) { + systemName_ = other.systemName_; + onChanged(); + } + if (!other.getVersion().isEmpty()) { + version_ = other.version_; + onChanged(); + } + if (!other.getDescription().isEmpty()) { + description_ = other.description_; + onChanged(); + } + if (!other.getOs().isEmpty()) { + os_ = other.os_; + onChanged(); + } + if (!other.getKernelVersion().isEmpty()) { + kernelVersion_ = other.kernelVersion_; + onChanged(); + } + if (!other.getArchitecture().isEmpty()) { + architecture_ = other.architecture_; + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + case 18: { + systemName_ = input.readStringRequireUtf8(); + + break; + } // case 18 + case 26: { + version_ = input.readStringRequireUtf8(); + + break; + } // case 26 + case 34: { + description_ = input.readStringRequireUtf8(); + + break; + } // case 34 + case 42: { + os_ = input.readStringRequireUtf8(); + + break; + } // case 42 + case 50: { + kernelVersion_ = input.readStringRequireUtf8(); + + break; + } // case 50 + case 58: { + architecture_ = input.readStringRequireUtf8(); + + break; + } // case 58 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Feedback header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Feedback.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Feedback.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.Feedback.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + + private java.lang.Object systemName_ = ""; + /** + * string system_name = 2; + * @return The systemName. + */ + public java.lang.String getSystemName() { + java.lang.Object ref = systemName_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + systemName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string system_name = 2; + * @return The bytes for systemName. + */ + public com.google.protobuf.ByteString + getSystemNameBytes() { + java.lang.Object ref = systemName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + systemName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string system_name = 2; + * @param value The systemName to set. + * @return This builder for chaining. + */ + public Builder setSystemName( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + systemName_ = value; + onChanged(); + return this; + } + /** + * string system_name = 2; + * @return This builder for chaining. + */ + public Builder clearSystemName() { + + systemName_ = getDefaultInstance().getSystemName(); + onChanged(); + return this; + } + /** + * string system_name = 2; + * @param value The bytes for systemName to set. + * @return This builder for chaining. + */ + public Builder setSystemNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + systemName_ = value; + onChanged(); + return this; + } + + private java.lang.Object version_ = ""; + /** + * string version = 3; + * @return The version. + */ + public java.lang.String getVersion() { + java.lang.Object ref = version_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + version_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string version = 3; + * @return The bytes for version. + */ + public com.google.protobuf.ByteString + getVersionBytes() { + java.lang.Object ref = version_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + version_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string version = 3; + * @param value The version to set. + * @return This builder for chaining. + */ + public Builder setVersion( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + version_ = value; + onChanged(); + return this; + } + /** + * string version = 3; + * @return This builder for chaining. + */ + public Builder clearVersion() { + + version_ = getDefaultInstance().getVersion(); + onChanged(); + return this; + } + /** + * string version = 3; + * @param value The bytes for version to set. + * @return This builder for chaining. + */ + public Builder setVersionBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + version_ = value; + onChanged(); + return this; + } + + private java.lang.Object description_ = ""; + /** + * string description = 4; + * @return The description. + */ + public java.lang.String getDescription() { + java.lang.Object ref = description_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + description_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string description = 4; + * @return The bytes for description. + */ + public com.google.protobuf.ByteString + getDescriptionBytes() { + java.lang.Object ref = description_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + description_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string description = 4; + * @param value The description to set. + * @return This builder for chaining. + */ + public Builder setDescription( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + description_ = value; + onChanged(); + return this; + } + /** + * string description = 4; + * @return This builder for chaining. + */ + public Builder clearDescription() { + + description_ = getDefaultInstance().getDescription(); + onChanged(); + return this; + } + /** + * string description = 4; + * @param value The bytes for description to set. + * @return This builder for chaining. + */ + public Builder setDescriptionBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + description_ = value; + onChanged(); + return this; + } + + private java.lang.Object os_ = ""; + /** + * string os = 5; + * @return The os. + */ + public java.lang.String getOs() { + java.lang.Object ref = os_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + os_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string os = 5; + * @return The bytes for os. + */ + public com.google.protobuf.ByteString + getOsBytes() { + java.lang.Object ref = os_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + os_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string os = 5; + * @param value The os to set. + * @return This builder for chaining. + */ + public Builder setOs( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + os_ = value; + onChanged(); + return this; + } + /** + * string os = 5; + * @return This builder for chaining. + */ + public Builder clearOs() { + + os_ = getDefaultInstance().getOs(); + onChanged(); + return this; + } + /** + * string os = 5; + * @param value The bytes for os to set. + * @return This builder for chaining. + */ + public Builder setOsBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + os_ = value; + onChanged(); + return this; + } + + private java.lang.Object kernelVersion_ = ""; + /** + * string kernel_version = 6; + * @return The kernelVersion. + */ + public java.lang.String getKernelVersion() { + java.lang.Object ref = kernelVersion_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + kernelVersion_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string kernel_version = 6; + * @return The bytes for kernelVersion. + */ + public com.google.protobuf.ByteString + getKernelVersionBytes() { + java.lang.Object ref = kernelVersion_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + kernelVersion_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string kernel_version = 6; + * @param value The kernelVersion to set. + * @return This builder for chaining. + */ + public Builder setKernelVersion( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + kernelVersion_ = value; + onChanged(); + return this; + } + /** + * string kernel_version = 6; + * @return This builder for chaining. + */ + public Builder clearKernelVersion() { + + kernelVersion_ = getDefaultInstance().getKernelVersion(); + onChanged(); + return this; + } + /** + * string kernel_version = 6; + * @param value The bytes for kernelVersion to set. + * @return This builder for chaining. + */ + public Builder setKernelVersionBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + kernelVersion_ = value; + onChanged(); + return this; + } + + private java.lang.Object architecture_ = ""; + /** + * string architecture = 7; + * @return The architecture. + */ + public java.lang.String getArchitecture() { + java.lang.Object ref = architecture_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + architecture_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string architecture = 7; + * @return The bytes for architecture. + */ + public com.google.protobuf.ByteString + getArchitectureBytes() { + java.lang.Object ref = architecture_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + architecture_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string architecture = 7; + * @param value The architecture to set. + * @return This builder for chaining. + */ + public Builder setArchitecture( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + architecture_ = value; + onChanged(); + return this; + } + /** + * string architecture = 7; + * @return This builder for chaining. + */ + public Builder clearArchitecture() { + + architecture_ = getDefaultInstance().getArchitecture(); + onChanged(); + return this; + } + /** + * string architecture = 7; + * @param value The bytes for architecture to set. + * @return This builder for chaining. + */ + public Builder setArchitectureBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + architecture_ = value; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetSystemInfoCommand.Feedback) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetSystemInfoCommand.Feedback) + private static final cmvr.api.SystemCommand.GetSystemInfoCommand.Feedback DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.SystemCommand.GetSystemInfoCommand.Feedback(); + } + + public static cmvr.api.SystemCommand.GetSystemInfoCommand.Feedback getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Feedback parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.SystemCommand.GetSystemInfoCommand.Feedback getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.SystemCommand.GetSystemInfoCommand)) { + return super.equals(obj); + } + cmvr.api.SystemCommand.GetSystemInfoCommand other = (cmvr.api.SystemCommand.GetSystemInfoCommand) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.SystemCommand.GetSystemInfoCommand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SystemCommand.GetSystemInfoCommand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SystemCommand.GetSystemInfoCommand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SystemCommand.GetSystemInfoCommand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SystemCommand.GetSystemInfoCommand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SystemCommand.GetSystemInfoCommand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SystemCommand.GetSystemInfoCommand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SystemCommand.GetSystemInfoCommand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SystemCommand.GetSystemInfoCommand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.SystemCommand.GetSystemInfoCommand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SystemCommand.GetSystemInfoCommand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SystemCommand.GetSystemInfoCommand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.SystemCommand.GetSystemInfoCommand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetSystemInfoCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetSystemInfoCommand) + cmvr.api.SystemCommand.GetSystemInfoCommandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SystemCommand.internal_static_cmvr_api_GetSystemInfoCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SystemCommand.internal_static_cmvr_api_GetSystemInfoCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SystemCommand.GetSystemInfoCommand.class, cmvr.api.SystemCommand.GetSystemInfoCommand.Builder.class); + } + + // Construct using cmvr.api.SystemCommand.GetSystemInfoCommand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.SystemCommand.internal_static_cmvr_api_GetSystemInfoCommand_descriptor; + } + + @java.lang.Override + public cmvr.api.SystemCommand.GetSystemInfoCommand getDefaultInstanceForType() { + return cmvr.api.SystemCommand.GetSystemInfoCommand.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.SystemCommand.GetSystemInfoCommand build() { + cmvr.api.SystemCommand.GetSystemInfoCommand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.SystemCommand.GetSystemInfoCommand buildPartial() { + cmvr.api.SystemCommand.GetSystemInfoCommand result = new cmvr.api.SystemCommand.GetSystemInfoCommand(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.SystemCommand.GetSystemInfoCommand) { + return mergeFrom((cmvr.api.SystemCommand.GetSystemInfoCommand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.SystemCommand.GetSystemInfoCommand other) { + if (other == cmvr.api.SystemCommand.GetSystemInfoCommand.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetSystemInfoCommand) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetSystemInfoCommand) + private static final cmvr.api.SystemCommand.GetSystemInfoCommand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.SystemCommand.GetSystemInfoCommand(); + } + + public static cmvr.api.SystemCommand.GetSystemInfoCommand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public GetSystemInfoCommand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.SystemCommand.GetSystemInfoCommand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface GetSystemStatusCommandOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetSystemStatusCommand) + com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code cmvr.api.GetSystemStatusCommand} + */ + public static final class GetSystemStatusCommand extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetSystemStatusCommand) + GetSystemStatusCommandOrBuilder { + private static final long serialVersionUID = 0L; + // Use GetSystemStatusCommand.newBuilder() to construct. + private GetSystemStatusCommand(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private GetSystemStatusCommand() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new GetSystemStatusCommand(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SystemCommand.internal_static_cmvr_api_GetSystemStatusCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SystemCommand.internal_static_cmvr_api_GetSystemStatusCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SystemCommand.GetSystemStatusCommand.class, cmvr.api.SystemCommand.GetSystemStatusCommand.Builder.class); + } + + public interface RequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetSystemStatusCommand.Request) + com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code cmvr.api.GetSystemStatusCommand.Request} + */ + public static final class Request extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetSystemStatusCommand.Request) + RequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use Request.newBuilder() to construct. + private Request(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Request() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Request(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SystemCommand.internal_static_cmvr_api_GetSystemStatusCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SystemCommand.internal_static_cmvr_api_GetSystemStatusCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SystemCommand.GetSystemStatusCommand.Request.class, cmvr.api.SystemCommand.GetSystemStatusCommand.Request.Builder.class); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.SystemCommand.GetSystemStatusCommand.Request)) { + return super.equals(obj); + } + cmvr.api.SystemCommand.GetSystemStatusCommand.Request other = (cmvr.api.SystemCommand.GetSystemStatusCommand.Request) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.SystemCommand.GetSystemStatusCommand.Request parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SystemCommand.GetSystemStatusCommand.Request parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SystemCommand.GetSystemStatusCommand.Request parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SystemCommand.GetSystemStatusCommand.Request parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SystemCommand.GetSystemStatusCommand.Request parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SystemCommand.GetSystemStatusCommand.Request parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SystemCommand.GetSystemStatusCommand.Request parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SystemCommand.GetSystemStatusCommand.Request parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SystemCommand.GetSystemStatusCommand.Request parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.SystemCommand.GetSystemStatusCommand.Request parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SystemCommand.GetSystemStatusCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SystemCommand.GetSystemStatusCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.SystemCommand.GetSystemStatusCommand.Request prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetSystemStatusCommand.Request} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetSystemStatusCommand.Request) + cmvr.api.SystemCommand.GetSystemStatusCommand.RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SystemCommand.internal_static_cmvr_api_GetSystemStatusCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SystemCommand.internal_static_cmvr_api_GetSystemStatusCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SystemCommand.GetSystemStatusCommand.Request.class, cmvr.api.SystemCommand.GetSystemStatusCommand.Request.Builder.class); + } + + // Construct using cmvr.api.SystemCommand.GetSystemStatusCommand.Request.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.SystemCommand.internal_static_cmvr_api_GetSystemStatusCommand_Request_descriptor; + } + + @java.lang.Override + public cmvr.api.SystemCommand.GetSystemStatusCommand.Request getDefaultInstanceForType() { + return cmvr.api.SystemCommand.GetSystemStatusCommand.Request.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.SystemCommand.GetSystemStatusCommand.Request build() { + cmvr.api.SystemCommand.GetSystemStatusCommand.Request result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.SystemCommand.GetSystemStatusCommand.Request buildPartial() { + cmvr.api.SystemCommand.GetSystemStatusCommand.Request result = new cmvr.api.SystemCommand.GetSystemStatusCommand.Request(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.SystemCommand.GetSystemStatusCommand.Request) { + return mergeFrom((cmvr.api.SystemCommand.GetSystemStatusCommand.Request)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.SystemCommand.GetSystemStatusCommand.Request other) { + if (other == cmvr.api.SystemCommand.GetSystemStatusCommand.Request.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetSystemStatusCommand.Request) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetSystemStatusCommand.Request) + private static final cmvr.api.SystemCommand.GetSystemStatusCommand.Request DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.SystemCommand.GetSystemStatusCommand.Request(); + } + + public static cmvr.api.SystemCommand.GetSystemStatusCommand.Request getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.SystemCommand.GetSystemStatusCommand.Request getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface FeedbackOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.GetSystemStatusCommand.Feedback) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Feedback getHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder(); + + /** + * float cpu_usage = 2; + * @return The cpuUsage. + */ + float getCpuUsage(); + + /** + * float mem_total_mb = 3; + * @return The memTotalMb. + */ + float getMemTotalMb(); + + /** + * float mem_used_mb = 4; + * @return The memUsedMb. + */ + float getMemUsedMb(); + + /** + * float disk_total_gb = 5; + * @return The diskTotalGb. + */ + float getDiskTotalGb(); + + /** + * float disk_used_gb = 6; + * @return The diskUsedGb. + */ + float getDiskUsedGb(); + + /** + * repeated .cmvr.api.DeviceList device_list = 7; + */ + java.util.List + getDeviceListList(); + /** + * repeated .cmvr.api.DeviceList device_list = 7; + */ + cmvr.api.SystemCommand.DeviceList getDeviceList(int index); + /** + * repeated .cmvr.api.DeviceList device_list = 7; + */ + int getDeviceListCount(); + /** + * repeated .cmvr.api.DeviceList device_list = 7; + */ + java.util.List + getDeviceListOrBuilderList(); + /** + * repeated .cmvr.api.DeviceList device_list = 7; + */ + cmvr.api.SystemCommand.DeviceListOrBuilder getDeviceListOrBuilder( + int index); + } + /** + * Protobuf type {@code cmvr.api.GetSystemStatusCommand.Feedback} + */ + public static final class Feedback extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.GetSystemStatusCommand.Feedback) + FeedbackOrBuilder { + private static final long serialVersionUID = 0L; + // Use Feedback.newBuilder() to construct. + private Feedback(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Feedback() { + deviceList_ = java.util.Collections.emptyList(); + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Feedback(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SystemCommand.internal_static_cmvr_api_GetSystemStatusCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SystemCommand.internal_static_cmvr_api_GetSystemStatusCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SystemCommand.GetSystemStatusCommand.Feedback.class, cmvr.api.SystemCommand.GetSystemStatusCommand.Feedback.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Feedback header_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + public static final int CPU_USAGE_FIELD_NUMBER = 2; + private float cpuUsage_; + /** + * float cpu_usage = 2; + * @return The cpuUsage. + */ + @java.lang.Override + public float getCpuUsage() { + return cpuUsage_; + } + + public static final int MEM_TOTAL_MB_FIELD_NUMBER = 3; + private float memTotalMb_; + /** + * float mem_total_mb = 3; + * @return The memTotalMb. + */ + @java.lang.Override + public float getMemTotalMb() { + return memTotalMb_; + } + + public static final int MEM_USED_MB_FIELD_NUMBER = 4; + private float memUsedMb_; + /** + * float mem_used_mb = 4; + * @return The memUsedMb. + */ + @java.lang.Override + public float getMemUsedMb() { + return memUsedMb_; + } + + public static final int DISK_TOTAL_GB_FIELD_NUMBER = 5; + private float diskTotalGb_; + /** + * float disk_total_gb = 5; + * @return The diskTotalGb. + */ + @java.lang.Override + public float getDiskTotalGb() { + return diskTotalGb_; + } + + public static final int DISK_USED_GB_FIELD_NUMBER = 6; + private float diskUsedGb_; + /** + * float disk_used_gb = 6; + * @return The diskUsedGb. + */ + @java.lang.Override + public float getDiskUsedGb() { + return diskUsedGb_; + } + + public static final int DEVICE_LIST_FIELD_NUMBER = 7; + private java.util.List deviceList_; + /** + * repeated .cmvr.api.DeviceList device_list = 7; + */ + @java.lang.Override + public java.util.List getDeviceListList() { + return deviceList_; + } + /** + * repeated .cmvr.api.DeviceList device_list = 7; + */ + @java.lang.Override + public java.util.List + getDeviceListOrBuilderList() { + return deviceList_; + } + /** + * repeated .cmvr.api.DeviceList device_list = 7; + */ + @java.lang.Override + public int getDeviceListCount() { + return deviceList_.size(); + } + /** + * repeated .cmvr.api.DeviceList device_list = 7; + */ + @java.lang.Override + public cmvr.api.SystemCommand.DeviceList getDeviceList(int index) { + return deviceList_.get(index); + } + /** + * repeated .cmvr.api.DeviceList device_list = 7; + */ + @java.lang.Override + public cmvr.api.SystemCommand.DeviceListOrBuilder getDeviceListOrBuilder( + int index) { + return deviceList_.get(index); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + if (java.lang.Float.floatToRawIntBits(cpuUsage_) != 0) { + output.writeFloat(2, cpuUsage_); + } + if (java.lang.Float.floatToRawIntBits(memTotalMb_) != 0) { + output.writeFloat(3, memTotalMb_); + } + if (java.lang.Float.floatToRawIntBits(memUsedMb_) != 0) { + output.writeFloat(4, memUsedMb_); + } + if (java.lang.Float.floatToRawIntBits(diskTotalGb_) != 0) { + output.writeFloat(5, diskTotalGb_); + } + if (java.lang.Float.floatToRawIntBits(diskUsedGb_) != 0) { + output.writeFloat(6, diskUsedGb_); + } + for (int i = 0; i < deviceList_.size(); i++) { + output.writeMessage(7, deviceList_.get(i)); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + if (java.lang.Float.floatToRawIntBits(cpuUsage_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(2, cpuUsage_); + } + if (java.lang.Float.floatToRawIntBits(memTotalMb_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(3, memTotalMb_); + } + if (java.lang.Float.floatToRawIntBits(memUsedMb_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(4, memUsedMb_); + } + if (java.lang.Float.floatToRawIntBits(diskTotalGb_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(5, diskTotalGb_); + } + if (java.lang.Float.floatToRawIntBits(diskUsedGb_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(6, diskUsedGb_); + } + for (int i = 0; i < deviceList_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(7, deviceList_.get(i)); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.SystemCommand.GetSystemStatusCommand.Feedback)) { + return super.equals(obj); + } + cmvr.api.SystemCommand.GetSystemStatusCommand.Feedback other = (cmvr.api.SystemCommand.GetSystemStatusCommand.Feedback) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (java.lang.Float.floatToIntBits(getCpuUsage()) + != java.lang.Float.floatToIntBits( + other.getCpuUsage())) return false; + if (java.lang.Float.floatToIntBits(getMemTotalMb()) + != java.lang.Float.floatToIntBits( + other.getMemTotalMb())) return false; + if (java.lang.Float.floatToIntBits(getMemUsedMb()) + != java.lang.Float.floatToIntBits( + other.getMemUsedMb())) return false; + if (java.lang.Float.floatToIntBits(getDiskTotalGb()) + != java.lang.Float.floatToIntBits( + other.getDiskTotalGb())) return false; + if (java.lang.Float.floatToIntBits(getDiskUsedGb()) + != java.lang.Float.floatToIntBits( + other.getDiskUsedGb())) return false; + if (!getDeviceListList() + .equals(other.getDeviceListList())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (37 * hash) + CPU_USAGE_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getCpuUsage()); + hash = (37 * hash) + MEM_TOTAL_MB_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getMemTotalMb()); + hash = (37 * hash) + MEM_USED_MB_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getMemUsedMb()); + hash = (37 * hash) + DISK_TOTAL_GB_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getDiskTotalGb()); + hash = (37 * hash) + DISK_USED_GB_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getDiskUsedGb()); + if (getDeviceListCount() > 0) { + hash = (37 * hash) + DEVICE_LIST_FIELD_NUMBER; + hash = (53 * hash) + getDeviceListList().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.SystemCommand.GetSystemStatusCommand.Feedback parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SystemCommand.GetSystemStatusCommand.Feedback parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SystemCommand.GetSystemStatusCommand.Feedback parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SystemCommand.GetSystemStatusCommand.Feedback parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SystemCommand.GetSystemStatusCommand.Feedback parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SystemCommand.GetSystemStatusCommand.Feedback parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SystemCommand.GetSystemStatusCommand.Feedback parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SystemCommand.GetSystemStatusCommand.Feedback parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SystemCommand.GetSystemStatusCommand.Feedback parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.SystemCommand.GetSystemStatusCommand.Feedback parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SystemCommand.GetSystemStatusCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SystemCommand.GetSystemStatusCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.SystemCommand.GetSystemStatusCommand.Feedback prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetSystemStatusCommand.Feedback} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetSystemStatusCommand.Feedback) + cmvr.api.SystemCommand.GetSystemStatusCommand.FeedbackOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SystemCommand.internal_static_cmvr_api_GetSystemStatusCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SystemCommand.internal_static_cmvr_api_GetSystemStatusCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SystemCommand.GetSystemStatusCommand.Feedback.class, cmvr.api.SystemCommand.GetSystemStatusCommand.Feedback.Builder.class); + } + + // Construct using cmvr.api.SystemCommand.GetSystemStatusCommand.Feedback.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + cpuUsage_ = 0F; + + memTotalMb_ = 0F; + + memUsedMb_ = 0F; + + diskTotalGb_ = 0F; + + diskUsedGb_ = 0F; + + if (deviceListBuilder_ == null) { + deviceList_ = java.util.Collections.emptyList(); + } else { + deviceList_ = null; + deviceListBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.SystemCommand.internal_static_cmvr_api_GetSystemStatusCommand_Feedback_descriptor; + } + + @java.lang.Override + public cmvr.api.SystemCommand.GetSystemStatusCommand.Feedback getDefaultInstanceForType() { + return cmvr.api.SystemCommand.GetSystemStatusCommand.Feedback.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.SystemCommand.GetSystemStatusCommand.Feedback build() { + cmvr.api.SystemCommand.GetSystemStatusCommand.Feedback result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.SystemCommand.GetSystemStatusCommand.Feedback buildPartial() { + cmvr.api.SystemCommand.GetSystemStatusCommand.Feedback result = new cmvr.api.SystemCommand.GetSystemStatusCommand.Feedback(this); + int from_bitField0_ = bitField0_; + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + result.cpuUsage_ = cpuUsage_; + result.memTotalMb_ = memTotalMb_; + result.memUsedMb_ = memUsedMb_; + result.diskTotalGb_ = diskTotalGb_; + result.diskUsedGb_ = diskUsedGb_; + if (deviceListBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0)) { + deviceList_ = java.util.Collections.unmodifiableList(deviceList_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.deviceList_ = deviceList_; + } else { + result.deviceList_ = deviceListBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.SystemCommand.GetSystemStatusCommand.Feedback) { + return mergeFrom((cmvr.api.SystemCommand.GetSystemStatusCommand.Feedback)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.SystemCommand.GetSystemStatusCommand.Feedback other) { + if (other == cmvr.api.SystemCommand.GetSystemStatusCommand.Feedback.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + if (other.getCpuUsage() != 0F) { + setCpuUsage(other.getCpuUsage()); + } + if (other.getMemTotalMb() != 0F) { + setMemTotalMb(other.getMemTotalMb()); + } + if (other.getMemUsedMb() != 0F) { + setMemUsedMb(other.getMemUsedMb()); + } + if (other.getDiskTotalGb() != 0F) { + setDiskTotalGb(other.getDiskTotalGb()); + } + if (other.getDiskUsedGb() != 0F) { + setDiskUsedGb(other.getDiskUsedGb()); + } + if (deviceListBuilder_ == null) { + if (!other.deviceList_.isEmpty()) { + if (deviceList_.isEmpty()) { + deviceList_ = other.deviceList_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureDeviceListIsMutable(); + deviceList_.addAll(other.deviceList_); + } + onChanged(); + } + } else { + if (!other.deviceList_.isEmpty()) { + if (deviceListBuilder_.isEmpty()) { + deviceListBuilder_.dispose(); + deviceListBuilder_ = null; + deviceList_ = other.deviceList_; + bitField0_ = (bitField0_ & ~0x00000001); + deviceListBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? + getDeviceListFieldBuilder() : null; + } else { + deviceListBuilder_.addAllMessages(other.deviceList_); + } + } + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + case 21: { + cpuUsage_ = input.readFloat(); + + break; + } // case 21 + case 29: { + memTotalMb_ = input.readFloat(); + + break; + } // case 29 + case 37: { + memUsedMb_ = input.readFloat(); + + break; + } // case 37 + case 45: { + diskTotalGb_ = input.readFloat(); + + break; + } // case 45 + case 53: { + diskUsedGb_ = input.readFloat(); + + break; + } // case 53 + case 58: { + cmvr.api.SystemCommand.DeviceList m = + input.readMessage( + cmvr.api.SystemCommand.DeviceList.parser(), + extensionRegistry); + if (deviceListBuilder_ == null) { + ensureDeviceListIsMutable(); + deviceList_.add(m); + } else { + deviceListBuilder_.addMessage(m); + } + break; + } // case 58 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private cmvr.api.Common.CommandHeader.Feedback header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Feedback.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Feedback.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.Feedback.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + + private float cpuUsage_ ; + /** + * float cpu_usage = 2; + * @return The cpuUsage. + */ + @java.lang.Override + public float getCpuUsage() { + return cpuUsage_; + } + /** + * float cpu_usage = 2; + * @param value The cpuUsage to set. + * @return This builder for chaining. + */ + public Builder setCpuUsage(float value) { + + cpuUsage_ = value; + onChanged(); + return this; + } + /** + * float cpu_usage = 2; + * @return This builder for chaining. + */ + public Builder clearCpuUsage() { + + cpuUsage_ = 0F; + onChanged(); + return this; + } + + private float memTotalMb_ ; + /** + * float mem_total_mb = 3; + * @return The memTotalMb. + */ + @java.lang.Override + public float getMemTotalMb() { + return memTotalMb_; + } + /** + * float mem_total_mb = 3; + * @param value The memTotalMb to set. + * @return This builder for chaining. + */ + public Builder setMemTotalMb(float value) { + + memTotalMb_ = value; + onChanged(); + return this; + } + /** + * float mem_total_mb = 3; + * @return This builder for chaining. + */ + public Builder clearMemTotalMb() { + + memTotalMb_ = 0F; + onChanged(); + return this; + } + + private float memUsedMb_ ; + /** + * float mem_used_mb = 4; + * @return The memUsedMb. + */ + @java.lang.Override + public float getMemUsedMb() { + return memUsedMb_; + } + /** + * float mem_used_mb = 4; + * @param value The memUsedMb to set. + * @return This builder for chaining. + */ + public Builder setMemUsedMb(float value) { + + memUsedMb_ = value; + onChanged(); + return this; + } + /** + * float mem_used_mb = 4; + * @return This builder for chaining. + */ + public Builder clearMemUsedMb() { + + memUsedMb_ = 0F; + onChanged(); + return this; + } + + private float diskTotalGb_ ; + /** + * float disk_total_gb = 5; + * @return The diskTotalGb. + */ + @java.lang.Override + public float getDiskTotalGb() { + return diskTotalGb_; + } + /** + * float disk_total_gb = 5; + * @param value The diskTotalGb to set. + * @return This builder for chaining. + */ + public Builder setDiskTotalGb(float value) { + + diskTotalGb_ = value; + onChanged(); + return this; + } + /** + * float disk_total_gb = 5; + * @return This builder for chaining. + */ + public Builder clearDiskTotalGb() { + + diskTotalGb_ = 0F; + onChanged(); + return this; + } + + private float diskUsedGb_ ; + /** + * float disk_used_gb = 6; + * @return The diskUsedGb. + */ + @java.lang.Override + public float getDiskUsedGb() { + return diskUsedGb_; + } + /** + * float disk_used_gb = 6; + * @param value The diskUsedGb to set. + * @return This builder for chaining. + */ + public Builder setDiskUsedGb(float value) { + + diskUsedGb_ = value; + onChanged(); + return this; + } + /** + * float disk_used_gb = 6; + * @return This builder for chaining. + */ + public Builder clearDiskUsedGb() { + + diskUsedGb_ = 0F; + onChanged(); + return this; + } + + private java.util.List deviceList_ = + java.util.Collections.emptyList(); + private void ensureDeviceListIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + deviceList_ = new java.util.ArrayList(deviceList_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + cmvr.api.SystemCommand.DeviceList, cmvr.api.SystemCommand.DeviceList.Builder, cmvr.api.SystemCommand.DeviceListOrBuilder> deviceListBuilder_; + + /** + * repeated .cmvr.api.DeviceList device_list = 7; + */ + public java.util.List getDeviceListList() { + if (deviceListBuilder_ == null) { + return java.util.Collections.unmodifiableList(deviceList_); + } else { + return deviceListBuilder_.getMessageList(); + } + } + /** + * repeated .cmvr.api.DeviceList device_list = 7; + */ + public int getDeviceListCount() { + if (deviceListBuilder_ == null) { + return deviceList_.size(); + } else { + return deviceListBuilder_.getCount(); + } + } + /** + * repeated .cmvr.api.DeviceList device_list = 7; + */ + public cmvr.api.SystemCommand.DeviceList getDeviceList(int index) { + if (deviceListBuilder_ == null) { + return deviceList_.get(index); + } else { + return deviceListBuilder_.getMessage(index); + } + } + /** + * repeated .cmvr.api.DeviceList device_list = 7; + */ + public Builder setDeviceList( + int index, cmvr.api.SystemCommand.DeviceList value) { + if (deviceListBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureDeviceListIsMutable(); + deviceList_.set(index, value); + onChanged(); + } else { + deviceListBuilder_.setMessage(index, value); + } + return this; + } + /** + * repeated .cmvr.api.DeviceList device_list = 7; + */ + public Builder setDeviceList( + int index, cmvr.api.SystemCommand.DeviceList.Builder builderForValue) { + if (deviceListBuilder_ == null) { + ensureDeviceListIsMutable(); + deviceList_.set(index, builderForValue.build()); + onChanged(); + } else { + deviceListBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .cmvr.api.DeviceList device_list = 7; + */ + public Builder addDeviceList(cmvr.api.SystemCommand.DeviceList value) { + if (deviceListBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureDeviceListIsMutable(); + deviceList_.add(value); + onChanged(); + } else { + deviceListBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .cmvr.api.DeviceList device_list = 7; + */ + public Builder addDeviceList( + int index, cmvr.api.SystemCommand.DeviceList value) { + if (deviceListBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureDeviceListIsMutable(); + deviceList_.add(index, value); + onChanged(); + } else { + deviceListBuilder_.addMessage(index, value); + } + return this; + } + /** + * repeated .cmvr.api.DeviceList device_list = 7; + */ + public Builder addDeviceList( + cmvr.api.SystemCommand.DeviceList.Builder builderForValue) { + if (deviceListBuilder_ == null) { + ensureDeviceListIsMutable(); + deviceList_.add(builderForValue.build()); + onChanged(); + } else { + deviceListBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * repeated .cmvr.api.DeviceList device_list = 7; + */ + public Builder addDeviceList( + int index, cmvr.api.SystemCommand.DeviceList.Builder builderForValue) { + if (deviceListBuilder_ == null) { + ensureDeviceListIsMutable(); + deviceList_.add(index, builderForValue.build()); + onChanged(); + } else { + deviceListBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .cmvr.api.DeviceList device_list = 7; + */ + public Builder addAllDeviceList( + java.lang.Iterable values) { + if (deviceListBuilder_ == null) { + ensureDeviceListIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, deviceList_); + onChanged(); + } else { + deviceListBuilder_.addAllMessages(values); + } + return this; + } + /** + * repeated .cmvr.api.DeviceList device_list = 7; + */ + public Builder clearDeviceList() { + if (deviceListBuilder_ == null) { + deviceList_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + deviceListBuilder_.clear(); + } + return this; + } + /** + * repeated .cmvr.api.DeviceList device_list = 7; + */ + public Builder removeDeviceList(int index) { + if (deviceListBuilder_ == null) { + ensureDeviceListIsMutable(); + deviceList_.remove(index); + onChanged(); + } else { + deviceListBuilder_.remove(index); + } + return this; + } + /** + * repeated .cmvr.api.DeviceList device_list = 7; + */ + public cmvr.api.SystemCommand.DeviceList.Builder getDeviceListBuilder( + int index) { + return getDeviceListFieldBuilder().getBuilder(index); + } + /** + * repeated .cmvr.api.DeviceList device_list = 7; + */ + public cmvr.api.SystemCommand.DeviceListOrBuilder getDeviceListOrBuilder( + int index) { + if (deviceListBuilder_ == null) { + return deviceList_.get(index); } else { + return deviceListBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .cmvr.api.DeviceList device_list = 7; + */ + public java.util.List + getDeviceListOrBuilderList() { + if (deviceListBuilder_ != null) { + return deviceListBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(deviceList_); + } + } + /** + * repeated .cmvr.api.DeviceList device_list = 7; + */ + public cmvr.api.SystemCommand.DeviceList.Builder addDeviceListBuilder() { + return getDeviceListFieldBuilder().addBuilder( + cmvr.api.SystemCommand.DeviceList.getDefaultInstance()); + } + /** + * repeated .cmvr.api.DeviceList device_list = 7; + */ + public cmvr.api.SystemCommand.DeviceList.Builder addDeviceListBuilder( + int index) { + return getDeviceListFieldBuilder().addBuilder( + index, cmvr.api.SystemCommand.DeviceList.getDefaultInstance()); + } + /** + * repeated .cmvr.api.DeviceList device_list = 7; + */ + public java.util.List + getDeviceListBuilderList() { + return getDeviceListFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilderV3< + cmvr.api.SystemCommand.DeviceList, cmvr.api.SystemCommand.DeviceList.Builder, cmvr.api.SystemCommand.DeviceListOrBuilder> + getDeviceListFieldBuilder() { + if (deviceListBuilder_ == null) { + deviceListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + cmvr.api.SystemCommand.DeviceList, cmvr.api.SystemCommand.DeviceList.Builder, cmvr.api.SystemCommand.DeviceListOrBuilder>( + deviceList_, + ((bitField0_ & 0x00000001) != 0), + getParentForChildren(), + isClean()); + deviceList_ = null; + } + return deviceListBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetSystemStatusCommand.Feedback) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetSystemStatusCommand.Feedback) + private static final cmvr.api.SystemCommand.GetSystemStatusCommand.Feedback DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.SystemCommand.GetSystemStatusCommand.Feedback(); + } + + public static cmvr.api.SystemCommand.GetSystemStatusCommand.Feedback getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Feedback parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.SystemCommand.GetSystemStatusCommand.Feedback getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.SystemCommand.GetSystemStatusCommand)) { + return super.equals(obj); + } + cmvr.api.SystemCommand.GetSystemStatusCommand other = (cmvr.api.SystemCommand.GetSystemStatusCommand) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.SystemCommand.GetSystemStatusCommand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SystemCommand.GetSystemStatusCommand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SystemCommand.GetSystemStatusCommand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SystemCommand.GetSystemStatusCommand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SystemCommand.GetSystemStatusCommand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.SystemCommand.GetSystemStatusCommand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.SystemCommand.GetSystemStatusCommand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SystemCommand.GetSystemStatusCommand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SystemCommand.GetSystemStatusCommand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.SystemCommand.GetSystemStatusCommand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.SystemCommand.GetSystemStatusCommand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.SystemCommand.GetSystemStatusCommand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.SystemCommand.GetSystemStatusCommand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.GetSystemStatusCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.GetSystemStatusCommand) + cmvr.api.SystemCommand.GetSystemStatusCommandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.SystemCommand.internal_static_cmvr_api_GetSystemStatusCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.SystemCommand.internal_static_cmvr_api_GetSystemStatusCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.SystemCommand.GetSystemStatusCommand.class, cmvr.api.SystemCommand.GetSystemStatusCommand.Builder.class); + } + + // Construct using cmvr.api.SystemCommand.GetSystemStatusCommand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.SystemCommand.internal_static_cmvr_api_GetSystemStatusCommand_descriptor; + } + + @java.lang.Override + public cmvr.api.SystemCommand.GetSystemStatusCommand getDefaultInstanceForType() { + return cmvr.api.SystemCommand.GetSystemStatusCommand.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.SystemCommand.GetSystemStatusCommand build() { + cmvr.api.SystemCommand.GetSystemStatusCommand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.SystemCommand.GetSystemStatusCommand buildPartial() { + cmvr.api.SystemCommand.GetSystemStatusCommand result = new cmvr.api.SystemCommand.GetSystemStatusCommand(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.SystemCommand.GetSystemStatusCommand) { + return mergeFrom((cmvr.api.SystemCommand.GetSystemStatusCommand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.SystemCommand.GetSystemStatusCommand other) { + if (other == cmvr.api.SystemCommand.GetSystemStatusCommand.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.GetSystemStatusCommand) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.GetSystemStatusCommand) + private static final cmvr.api.SystemCommand.GetSystemStatusCommand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.SystemCommand.GetSystemStatusCommand(); + } + + public static cmvr.api.SystemCommand.GetSystemStatusCommand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public GetSystemStatusCommand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.SystemCommand.GetSystemStatusCommand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_DeviceList_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_DeviceList_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetSystemInfoCommand_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetSystemInfoCommand_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetSystemInfoCommand_Request_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetSystemInfoCommand_Request_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetSystemInfoCommand_Feedback_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetSystemInfoCommand_Feedback_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetSystemStatusCommand_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetSystemStatusCommand_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetSystemStatusCommand_Request_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetSystemStatusCommand_Request_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_GetSystemStatusCommand_Feedback_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_GetSystemStatusCommand_Feedback_fieldAccessorTable; + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n\035cmvr/api/system_command.proto\022\010cmvr.ap" + + "i\032\025cmvr/api/common.proto\"J\n\nDeviceList\022\021" + + "\n\tdevice_id\030\001 \001(\t\022)\n\013device_type\030\002 \001(\0162\024" + + ".cmvr.api.DeviceType\"\325\001\n\024GetSystemInfoCo" + + "mmand\032\t\n\007Request\032\261\001\n\010Feedback\0220\n\006header\030" + + "\001 \001(\0132 .cmvr.api.CommandHeader.Feedback\022" + + "\023\n\013system_name\030\002 \001(\t\022\017\n\007version\030\003 \001(\t\022\023\n" + + "\013description\030\004 \001(\t\022\n\n\002os\030\005 \001(\t\022\026\n\016kernel" + + "_version\030\006 \001(\t\022\024\n\014architecture\030\007 \001(\t\"\370\001\n" + + "\026GetSystemStatusCommand\032\t\n\007Request\032\322\001\n\010F" + + "eedback\0220\n\006header\030\001 \001(\0132 .cmvr.api.Comma" + + "ndHeader.Feedback\022\021\n\tcpu_usage\030\002 \001(\002\022\024\n\014" + + "mem_total_mb\030\003 \001(\002\022\023\n\013mem_used_mb\030\004 \001(\002\022" + + "\025\n\rdisk_total_gb\030\005 \001(\002\022\024\n\014disk_used_gb\030\006" + + " \001(\002\022)\n\013device_list\030\007 \003(\0132\024.cmvr.api.Dev" + + "iceList*}\n\nDeviceType\022\007\n\003AGV\020\000\022\013\n\007Batter" + + "y\020\001\022\n\n\006Camera\020\002\022\013\n\007DexHand\020\003\022\013\n\007Gripper\020" + + "\004\022\016\n\nMicrophone\020\005\022\t\n\005Robot\020\006\022\013\n\007Speaker\020" + + "\007\022\013\n\007Unknown\020\024b\006proto3" + }; + descriptor = com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + cmvr.api.Common.getDescriptor(), + }); + internal_static_cmvr_api_DeviceList_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_cmvr_api_DeviceList_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_DeviceList_descriptor, + new java.lang.String[] { "DeviceId", "DeviceType", }); + internal_static_cmvr_api_GetSystemInfoCommand_descriptor = + getDescriptor().getMessageTypes().get(1); + internal_static_cmvr_api_GetSystemInfoCommand_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetSystemInfoCommand_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_GetSystemInfoCommand_Request_descriptor = + internal_static_cmvr_api_GetSystemInfoCommand_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_GetSystemInfoCommand_Request_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetSystemInfoCommand_Request_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_GetSystemInfoCommand_Feedback_descriptor = + internal_static_cmvr_api_GetSystemInfoCommand_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_GetSystemInfoCommand_Feedback_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetSystemInfoCommand_Feedback_descriptor, + new java.lang.String[] { "Header", "SystemName", "Version", "Description", "Os", "KernelVersion", "Architecture", }); + internal_static_cmvr_api_GetSystemStatusCommand_descriptor = + getDescriptor().getMessageTypes().get(2); + internal_static_cmvr_api_GetSystemStatusCommand_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetSystemStatusCommand_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_GetSystemStatusCommand_Request_descriptor = + internal_static_cmvr_api_GetSystemStatusCommand_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_GetSystemStatusCommand_Request_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetSystemStatusCommand_Request_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_GetSystemStatusCommand_Feedback_descriptor = + internal_static_cmvr_api_GetSystemStatusCommand_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_GetSystemStatusCommand_Feedback_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_GetSystemStatusCommand_Feedback_descriptor, + new java.lang.String[] { "Header", "CpuUsage", "MemTotalMb", "MemUsedMb", "DiskTotalGb", "DiskUsedGb", "DeviceList", }); + cmvr.api.Common.getDescriptor(); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/SystemServiceGrpc.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/SystemServiceGrpc.java new file mode 100644 index 0000000..4391747 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/SystemServiceGrpc.java @@ -0,0 +1,350 @@ +package cmvr.api; + +import static io.grpc.MethodDescriptor.generateFullMethodName; + +/** + */ +@javax.annotation.Generated( + value = "by gRPC proto compiler (version 1.52.0)", + comments = "Source: cmvr/api/system_service.proto") +@io.grpc.stub.annotations.GrpcGenerated +public final class SystemServiceGrpc { + + private SystemServiceGrpc() {} + + public static final String SERVICE_NAME = "cmvr.api.SystemService"; + + // Static method descriptors that strictly reflect the proto. + private static volatile io.grpc.MethodDescriptor getGetSystemInfoMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "GetSystemInfo", + requestType = cmvr.api.SystemCommand.GetSystemInfoCommand.Request.class, + responseType = cmvr.api.SystemCommand.GetSystemInfoCommand.Feedback.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getGetSystemInfoMethod() { + io.grpc.MethodDescriptor getGetSystemInfoMethod; + if ((getGetSystemInfoMethod = SystemServiceGrpc.getGetSystemInfoMethod) == null) { + synchronized (SystemServiceGrpc.class) { + if ((getGetSystemInfoMethod = SystemServiceGrpc.getGetSystemInfoMethod) == null) { + SystemServiceGrpc.getGetSystemInfoMethod = getGetSystemInfoMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetSystemInfo")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.SystemCommand.GetSystemInfoCommand.Request.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.SystemCommand.GetSystemInfoCommand.Feedback.getDefaultInstance())) + .setSchemaDescriptor(new SystemServiceMethodDescriptorSupplier("GetSystemInfo")) + .build(); + } + } + } + return getGetSystemInfoMethod; + } + + private static volatile io.grpc.MethodDescriptor getGetSystemStatusMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "GetSystemStatus", + requestType = cmvr.api.SystemCommand.GetSystemStatusCommand.Request.class, + responseType = cmvr.api.SystemCommand.GetSystemStatusCommand.Feedback.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getGetSystemStatusMethod() { + io.grpc.MethodDescriptor getGetSystemStatusMethod; + if ((getGetSystemStatusMethod = SystemServiceGrpc.getGetSystemStatusMethod) == null) { + synchronized (SystemServiceGrpc.class) { + if ((getGetSystemStatusMethod = SystemServiceGrpc.getGetSystemStatusMethod) == null) { + SystemServiceGrpc.getGetSystemStatusMethod = getGetSystemStatusMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetSystemStatus")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.SystemCommand.GetSystemStatusCommand.Request.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.SystemCommand.GetSystemStatusCommand.Feedback.getDefaultInstance())) + .setSchemaDescriptor(new SystemServiceMethodDescriptorSupplier("GetSystemStatus")) + .build(); + } + } + } + return getGetSystemStatusMethod; + } + + /** + * Creates a new async stub that supports all call types for the service + */ + public static SystemServiceStub newStub(io.grpc.Channel channel) { + io.grpc.stub.AbstractStub.StubFactory factory = + new io.grpc.stub.AbstractStub.StubFactory() { + @java.lang.Override + public SystemServiceStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new SystemServiceStub(channel, callOptions); + } + }; + return SystemServiceStub.newStub(factory, channel); + } + + /** + * Creates a new blocking-style stub that supports unary and streaming output calls on the service + */ + public static SystemServiceBlockingStub newBlockingStub( + io.grpc.Channel channel) { + io.grpc.stub.AbstractStub.StubFactory factory = + new io.grpc.stub.AbstractStub.StubFactory() { + @java.lang.Override + public SystemServiceBlockingStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new SystemServiceBlockingStub(channel, callOptions); + } + }; + return SystemServiceBlockingStub.newStub(factory, channel); + } + + /** + * Creates a new ListenableFuture-style stub that supports unary calls on the service + */ + public static SystemServiceFutureStub newFutureStub( + io.grpc.Channel channel) { + io.grpc.stub.AbstractStub.StubFactory factory = + new io.grpc.stub.AbstractStub.StubFactory() { + @java.lang.Override + public SystemServiceFutureStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new SystemServiceFutureStub(channel, callOptions); + } + }; + return SystemServiceFutureStub.newStub(factory, channel); + } + + /** + */ + public static abstract class SystemServiceImplBase implements io.grpc.BindableService { + + /** + */ + public void getSystemInfo(cmvr.api.SystemCommand.GetSystemInfoCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetSystemInfoMethod(), responseObserver); + } + + /** + */ + public void getSystemStatus(cmvr.api.SystemCommand.GetSystemStatusCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetSystemStatusMethod(), responseObserver); + } + + @java.lang.Override public final io.grpc.ServerServiceDefinition bindService() { + return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()) + .addMethod( + getGetSystemInfoMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + cmvr.api.SystemCommand.GetSystemInfoCommand.Request, + cmvr.api.SystemCommand.GetSystemInfoCommand.Feedback>( + this, METHODID_GET_SYSTEM_INFO))) + .addMethod( + getGetSystemStatusMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + cmvr.api.SystemCommand.GetSystemStatusCommand.Request, + cmvr.api.SystemCommand.GetSystemStatusCommand.Feedback>( + this, METHODID_GET_SYSTEM_STATUS))) + .build(); + } + } + + /** + */ + public static final class SystemServiceStub extends io.grpc.stub.AbstractAsyncStub { + private SystemServiceStub( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + super(channel, callOptions); + } + + @java.lang.Override + protected SystemServiceStub build( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new SystemServiceStub(channel, callOptions); + } + + /** + */ + public void getSystemInfo(cmvr.api.SystemCommand.GetSystemInfoCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getGetSystemInfoMethod(), getCallOptions()), request, responseObserver); + } + + /** + */ + public void getSystemStatus(cmvr.api.SystemCommand.GetSystemStatusCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getGetSystemStatusMethod(), getCallOptions()), request, responseObserver); + } + } + + /** + */ + public static final class SystemServiceBlockingStub extends io.grpc.stub.AbstractBlockingStub { + private SystemServiceBlockingStub( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + super(channel, callOptions); + } + + @java.lang.Override + protected SystemServiceBlockingStub build( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new SystemServiceBlockingStub(channel, callOptions); + } + + /** + */ + public cmvr.api.SystemCommand.GetSystemInfoCommand.Feedback getSystemInfo(cmvr.api.SystemCommand.GetSystemInfoCommand.Request request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getGetSystemInfoMethod(), getCallOptions(), request); + } + + /** + */ + public cmvr.api.SystemCommand.GetSystemStatusCommand.Feedback getSystemStatus(cmvr.api.SystemCommand.GetSystemStatusCommand.Request request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getGetSystemStatusMethod(), getCallOptions(), request); + } + } + + /** + */ + public static final class SystemServiceFutureStub extends io.grpc.stub.AbstractFutureStub { + private SystemServiceFutureStub( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + super(channel, callOptions); + } + + @java.lang.Override + protected SystemServiceFutureStub build( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new SystemServiceFutureStub(channel, callOptions); + } + + /** + */ + public com.google.common.util.concurrent.ListenableFuture getSystemInfo( + cmvr.api.SystemCommand.GetSystemInfoCommand.Request request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getGetSystemInfoMethod(), getCallOptions()), request); + } + + /** + */ + public com.google.common.util.concurrent.ListenableFuture getSystemStatus( + cmvr.api.SystemCommand.GetSystemStatusCommand.Request request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getGetSystemStatusMethod(), getCallOptions()), request); + } + } + + private static final int METHODID_GET_SYSTEM_INFO = 0; + private static final int METHODID_GET_SYSTEM_STATUS = 1; + + private static final class MethodHandlers implements + io.grpc.stub.ServerCalls.UnaryMethod, + io.grpc.stub.ServerCalls.ServerStreamingMethod, + io.grpc.stub.ServerCalls.ClientStreamingMethod, + io.grpc.stub.ServerCalls.BidiStreamingMethod { + private final SystemServiceImplBase serviceImpl; + private final int methodId; + + MethodHandlers(SystemServiceImplBase serviceImpl, int methodId) { + this.serviceImpl = serviceImpl; + this.methodId = methodId; + } + + @java.lang.Override + @java.lang.SuppressWarnings("unchecked") + public void invoke(Req request, io.grpc.stub.StreamObserver responseObserver) { + switch (methodId) { + case METHODID_GET_SYSTEM_INFO: + serviceImpl.getSystemInfo((cmvr.api.SystemCommand.GetSystemInfoCommand.Request) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; + case METHODID_GET_SYSTEM_STATUS: + serviceImpl.getSystemStatus((cmvr.api.SystemCommand.GetSystemStatusCommand.Request) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; + default: + throw new AssertionError(); + } + } + + @java.lang.Override + @java.lang.SuppressWarnings("unchecked") + public io.grpc.stub.StreamObserver invoke( + io.grpc.stub.StreamObserver responseObserver) { + switch (methodId) { + default: + throw new AssertionError(); + } + } + } + + private static abstract class SystemServiceBaseDescriptorSupplier + implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier { + SystemServiceBaseDescriptorSupplier() {} + + @java.lang.Override + public com.google.protobuf.Descriptors.FileDescriptor getFileDescriptor() { + return cmvr.api.SystemServiceOuterClass.getDescriptor(); + } + + @java.lang.Override + public com.google.protobuf.Descriptors.ServiceDescriptor getServiceDescriptor() { + return getFileDescriptor().findServiceByName("SystemService"); + } + } + + private static final class SystemServiceFileDescriptorSupplier + extends SystemServiceBaseDescriptorSupplier { + SystemServiceFileDescriptorSupplier() {} + } + + private static final class SystemServiceMethodDescriptorSupplier + extends SystemServiceBaseDescriptorSupplier + implements io.grpc.protobuf.ProtoMethodDescriptorSupplier { + private final String methodName; + + SystemServiceMethodDescriptorSupplier(String methodName) { + this.methodName = methodName; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.MethodDescriptor getMethodDescriptor() { + return getServiceDescriptor().findMethodByName(methodName); + } + } + + private static volatile io.grpc.ServiceDescriptor serviceDescriptor; + + public static io.grpc.ServiceDescriptor getServiceDescriptor() { + io.grpc.ServiceDescriptor result = serviceDescriptor; + if (result == null) { + synchronized (SystemServiceGrpc.class) { + result = serviceDescriptor; + if (result == null) { + serviceDescriptor = result = io.grpc.ServiceDescriptor.newBuilder(SERVICE_NAME) + .setSchemaDescriptor(new SystemServiceFileDescriptorSupplier()) + .addMethod(getGetSystemInfoMethod()) + .addMethod(getGetSystemStatusMethod()) + .build(); + } + } + } + return result; + } +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/SystemServiceOuterClass.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/SystemServiceOuterClass.java new file mode 100644 index 0000000..eda01e0 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/SystemServiceOuterClass.java @@ -0,0 +1,44 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: cmvr/api/system_service.proto + +package cmvr.api; + +public final class SystemServiceOuterClass { + private SystemServiceOuterClass() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistryLite registry) { + } + + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + registerAllExtensions( + (com.google.protobuf.ExtensionRegistryLite) registry); + } + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n\035cmvr/api/system_service.proto\022\010cmvr.ap" + + "i\032\035cmvr/api/system_command.proto2\335\001\n\rSys" + + "temService\022b\n\rGetSystemInfo\022&.cmvr.api.G" + + "etSystemInfoCommand.Request\032\'.cmvr.api.G" + + "etSystemInfoCommand.Feedback\"\000\022h\n\017GetSys" + + "temStatus\022(.cmvr.api.GetSystemStatusComm" + + "and.Request\032).cmvr.api.GetSystemStatusCo" + + "mmand.Feedback\"\000b\006proto3" + }; + descriptor = com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + cmvr.api.SystemCommand.getDescriptor(), + }); + cmvr.api.SystemCommand.getDescriptor(); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/TestServiceGrpc.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/TestServiceGrpc.java new file mode 100644 index 0000000..8c4f0d9 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/TestServiceGrpc.java @@ -0,0 +1,276 @@ +package cmvr.api; + +import static io.grpc.MethodDescriptor.generateFullMethodName; + +/** + */ +@javax.annotation.Generated( + value = "by gRPC proto compiler (version 1.52.0)", + comments = "Source: cmvr/api/test_service.proto") +@io.grpc.stub.annotations.GrpcGenerated +public final class TestServiceGrpc { + + private TestServiceGrpc() {} + + public static final String SERVICE_NAME = "cmvr.api.TestService"; + + // Static method descriptors that strictly reflect the proto. + private static volatile io.grpc.MethodDescriptor getCallMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "Call", + requestType = cmvr.api.TestServiceOuterClass.TestReqeust.class, + responseType = cmvr.api.TestServiceOuterClass.TestResponse.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getCallMethod() { + io.grpc.MethodDescriptor getCallMethod; + if ((getCallMethod = TestServiceGrpc.getCallMethod) == null) { + synchronized (TestServiceGrpc.class) { + if ((getCallMethod = TestServiceGrpc.getCallMethod) == null) { + TestServiceGrpc.getCallMethod = getCallMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "Call")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.TestServiceOuterClass.TestReqeust.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.TestServiceOuterClass.TestResponse.getDefaultInstance())) + .setSchemaDescriptor(new TestServiceMethodDescriptorSupplier("Call")) + .build(); + } + } + } + return getCallMethod; + } + + /** + * Creates a new async stub that supports all call types for the service + */ + public static TestServiceStub newStub(io.grpc.Channel channel) { + io.grpc.stub.AbstractStub.StubFactory factory = + new io.grpc.stub.AbstractStub.StubFactory() { + @java.lang.Override + public TestServiceStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new TestServiceStub(channel, callOptions); + } + }; + return TestServiceStub.newStub(factory, channel); + } + + /** + * Creates a new blocking-style stub that supports unary and streaming output calls on the service + */ + public static TestServiceBlockingStub newBlockingStub( + io.grpc.Channel channel) { + io.grpc.stub.AbstractStub.StubFactory factory = + new io.grpc.stub.AbstractStub.StubFactory() { + @java.lang.Override + public TestServiceBlockingStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new TestServiceBlockingStub(channel, callOptions); + } + }; + return TestServiceBlockingStub.newStub(factory, channel); + } + + /** + * Creates a new ListenableFuture-style stub that supports unary calls on the service + */ + public static TestServiceFutureStub newFutureStub( + io.grpc.Channel channel) { + io.grpc.stub.AbstractStub.StubFactory factory = + new io.grpc.stub.AbstractStub.StubFactory() { + @java.lang.Override + public TestServiceFutureStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new TestServiceFutureStub(channel, callOptions); + } + }; + return TestServiceFutureStub.newStub(factory, channel); + } + + /** + */ + public static abstract class TestServiceImplBase implements io.grpc.BindableService { + + /** + */ + public void call(cmvr.api.TestServiceOuterClass.TestReqeust request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getCallMethod(), responseObserver); + } + + @java.lang.Override public final io.grpc.ServerServiceDefinition bindService() { + return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()) + .addMethod( + getCallMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + cmvr.api.TestServiceOuterClass.TestReqeust, + cmvr.api.TestServiceOuterClass.TestResponse>( + this, METHODID_CALL))) + .build(); + } + } + + /** + */ + public static final class TestServiceStub extends io.grpc.stub.AbstractAsyncStub { + private TestServiceStub( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + super(channel, callOptions); + } + + @java.lang.Override + protected TestServiceStub build( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new TestServiceStub(channel, callOptions); + } + + /** + */ + public void call(cmvr.api.TestServiceOuterClass.TestReqeust request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getCallMethod(), getCallOptions()), request, responseObserver); + } + } + + /** + */ + public static final class TestServiceBlockingStub extends io.grpc.stub.AbstractBlockingStub { + private TestServiceBlockingStub( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + super(channel, callOptions); + } + + @java.lang.Override + protected TestServiceBlockingStub build( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new TestServiceBlockingStub(channel, callOptions); + } + + /** + */ + public cmvr.api.TestServiceOuterClass.TestResponse call(cmvr.api.TestServiceOuterClass.TestReqeust request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getCallMethod(), getCallOptions(), request); + } + } + + /** + */ + public static final class TestServiceFutureStub extends io.grpc.stub.AbstractFutureStub { + private TestServiceFutureStub( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + super(channel, callOptions); + } + + @java.lang.Override + protected TestServiceFutureStub build( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new TestServiceFutureStub(channel, callOptions); + } + + /** + */ + public com.google.common.util.concurrent.ListenableFuture call( + cmvr.api.TestServiceOuterClass.TestReqeust request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getCallMethod(), getCallOptions()), request); + } + } + + private static final int METHODID_CALL = 0; + + private static final class MethodHandlers implements + io.grpc.stub.ServerCalls.UnaryMethod, + io.grpc.stub.ServerCalls.ServerStreamingMethod, + io.grpc.stub.ServerCalls.ClientStreamingMethod, + io.grpc.stub.ServerCalls.BidiStreamingMethod { + private final TestServiceImplBase serviceImpl; + private final int methodId; + + MethodHandlers(TestServiceImplBase serviceImpl, int methodId) { + this.serviceImpl = serviceImpl; + this.methodId = methodId; + } + + @java.lang.Override + @java.lang.SuppressWarnings("unchecked") + public void invoke(Req request, io.grpc.stub.StreamObserver responseObserver) { + switch (methodId) { + case METHODID_CALL: + serviceImpl.call((cmvr.api.TestServiceOuterClass.TestReqeust) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; + default: + throw new AssertionError(); + } + } + + @java.lang.Override + @java.lang.SuppressWarnings("unchecked") + public io.grpc.stub.StreamObserver invoke( + io.grpc.stub.StreamObserver responseObserver) { + switch (methodId) { + default: + throw new AssertionError(); + } + } + } + + private static abstract class TestServiceBaseDescriptorSupplier + implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier { + TestServiceBaseDescriptorSupplier() {} + + @java.lang.Override + public com.google.protobuf.Descriptors.FileDescriptor getFileDescriptor() { + return cmvr.api.TestServiceOuterClass.getDescriptor(); + } + + @java.lang.Override + public com.google.protobuf.Descriptors.ServiceDescriptor getServiceDescriptor() { + return getFileDescriptor().findServiceByName("TestService"); + } + } + + private static final class TestServiceFileDescriptorSupplier + extends TestServiceBaseDescriptorSupplier { + TestServiceFileDescriptorSupplier() {} + } + + private static final class TestServiceMethodDescriptorSupplier + extends TestServiceBaseDescriptorSupplier + implements io.grpc.protobuf.ProtoMethodDescriptorSupplier { + private final String methodName; + + TestServiceMethodDescriptorSupplier(String methodName) { + this.methodName = methodName; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.MethodDescriptor getMethodDescriptor() { + return getServiceDescriptor().findMethodByName(methodName); + } + } + + private static volatile io.grpc.ServiceDescriptor serviceDescriptor; + + public static io.grpc.ServiceDescriptor getServiceDescriptor() { + io.grpc.ServiceDescriptor result = serviceDescriptor; + if (result == null) { + synchronized (TestServiceGrpc.class) { + result = serviceDescriptor; + if (result == null) { + serviceDescriptor = result = io.grpc.ServiceDescriptor.newBuilder(SERVICE_NAME) + .setSchemaDescriptor(new TestServiceFileDescriptorSupplier()) + .addMethod(getCallMethod()) + .build(); + } + } + } + return result; + } +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/TestServiceOuterClass.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/TestServiceOuterClass.java new file mode 100644 index 0000000..33deab4 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/TestServiceOuterClass.java @@ -0,0 +1,1159 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: cmvr/api/test_service.proto + +package cmvr.api; + +public final class TestServiceOuterClass { + private TestServiceOuterClass() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistryLite registry) { + } + + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + registerAllExtensions( + (com.google.protobuf.ExtensionRegistryLite) registry); + } + public interface TestReqeustOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.TestReqeust) + com.google.protobuf.MessageOrBuilder { + + /** + * string data = 1; + * @return The data. + */ + java.lang.String getData(); + /** + * string data = 1; + * @return The bytes for data. + */ + com.google.protobuf.ByteString + getDataBytes(); + } + /** + * Protobuf type {@code cmvr.api.TestReqeust} + */ + public static final class TestReqeust extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.TestReqeust) + TestReqeustOrBuilder { + private static final long serialVersionUID = 0L; + // Use TestReqeust.newBuilder() to construct. + private TestReqeust(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private TestReqeust() { + data_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new TestReqeust(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.TestServiceOuterClass.internal_static_cmvr_api_TestReqeust_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.TestServiceOuterClass.internal_static_cmvr_api_TestReqeust_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.TestServiceOuterClass.TestReqeust.class, cmvr.api.TestServiceOuterClass.TestReqeust.Builder.class); + } + + public static final int DATA_FIELD_NUMBER = 1; + private volatile java.lang.Object data_; + /** + * string data = 1; + * @return The data. + */ + @java.lang.Override + public java.lang.String getData() { + java.lang.Object ref = data_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + data_ = s; + return s; + } + } + /** + * string data = 1; + * @return The bytes for data. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getDataBytes() { + java.lang.Object ref = data_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + data_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(data_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, data_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(data_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, data_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.TestServiceOuterClass.TestReqeust)) { + return super.equals(obj); + } + cmvr.api.TestServiceOuterClass.TestReqeust other = (cmvr.api.TestServiceOuterClass.TestReqeust) obj; + + if (!getData() + .equals(other.getData())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + DATA_FIELD_NUMBER; + hash = (53 * hash) + getData().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.TestServiceOuterClass.TestReqeust parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.TestServiceOuterClass.TestReqeust parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.TestServiceOuterClass.TestReqeust parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.TestServiceOuterClass.TestReqeust parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.TestServiceOuterClass.TestReqeust parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.TestServiceOuterClass.TestReqeust parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.TestServiceOuterClass.TestReqeust parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.TestServiceOuterClass.TestReqeust parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.TestServiceOuterClass.TestReqeust parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.TestServiceOuterClass.TestReqeust parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.TestServiceOuterClass.TestReqeust parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.TestServiceOuterClass.TestReqeust parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.TestServiceOuterClass.TestReqeust prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.TestReqeust} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.TestReqeust) + cmvr.api.TestServiceOuterClass.TestReqeustOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.TestServiceOuterClass.internal_static_cmvr_api_TestReqeust_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.TestServiceOuterClass.internal_static_cmvr_api_TestReqeust_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.TestServiceOuterClass.TestReqeust.class, cmvr.api.TestServiceOuterClass.TestReqeust.Builder.class); + } + + // Construct using cmvr.api.TestServiceOuterClass.TestReqeust.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + data_ = ""; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.TestServiceOuterClass.internal_static_cmvr_api_TestReqeust_descriptor; + } + + @java.lang.Override + public cmvr.api.TestServiceOuterClass.TestReqeust getDefaultInstanceForType() { + return cmvr.api.TestServiceOuterClass.TestReqeust.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.TestServiceOuterClass.TestReqeust build() { + cmvr.api.TestServiceOuterClass.TestReqeust result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.TestServiceOuterClass.TestReqeust buildPartial() { + cmvr.api.TestServiceOuterClass.TestReqeust result = new cmvr.api.TestServiceOuterClass.TestReqeust(this); + result.data_ = data_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.TestServiceOuterClass.TestReqeust) { + return mergeFrom((cmvr.api.TestServiceOuterClass.TestReqeust)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.TestServiceOuterClass.TestReqeust other) { + if (other == cmvr.api.TestServiceOuterClass.TestReqeust.getDefaultInstance()) return this; + if (!other.getData().isEmpty()) { + data_ = other.data_; + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + data_ = input.readStringRequireUtf8(); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private java.lang.Object data_ = ""; + /** + * string data = 1; + * @return The data. + */ + public java.lang.String getData() { + java.lang.Object ref = data_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + data_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string data = 1; + * @return The bytes for data. + */ + public com.google.protobuf.ByteString + getDataBytes() { + java.lang.Object ref = data_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + data_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string data = 1; + * @param value The data to set. + * @return This builder for chaining. + */ + public Builder setData( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + data_ = value; + onChanged(); + return this; + } + /** + * string data = 1; + * @return This builder for chaining. + */ + public Builder clearData() { + + data_ = getDefaultInstance().getData(); + onChanged(); + return this; + } + /** + * string data = 1; + * @param value The bytes for data to set. + * @return This builder for chaining. + */ + public Builder setDataBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + data_ = value; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.TestReqeust) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.TestReqeust) + private static final cmvr.api.TestServiceOuterClass.TestReqeust DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.TestServiceOuterClass.TestReqeust(); + } + + public static cmvr.api.TestServiceOuterClass.TestReqeust getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public TestReqeust parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.TestServiceOuterClass.TestReqeust getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface TestResponseOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.TestResponse) + com.google.protobuf.MessageOrBuilder { + + /** + * string data = 1; + * @return The data. + */ + java.lang.String getData(); + /** + * string data = 1; + * @return The bytes for data. + */ + com.google.protobuf.ByteString + getDataBytes(); + } + /** + * Protobuf type {@code cmvr.api.TestResponse} + */ + public static final class TestResponse extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.TestResponse) + TestResponseOrBuilder { + private static final long serialVersionUID = 0L; + // Use TestResponse.newBuilder() to construct. + private TestResponse(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private TestResponse() { + data_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new TestResponse(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.TestServiceOuterClass.internal_static_cmvr_api_TestResponse_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.TestServiceOuterClass.internal_static_cmvr_api_TestResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.TestServiceOuterClass.TestResponse.class, cmvr.api.TestServiceOuterClass.TestResponse.Builder.class); + } + + public static final int DATA_FIELD_NUMBER = 1; + private volatile java.lang.Object data_; + /** + * string data = 1; + * @return The data. + */ + @java.lang.Override + public java.lang.String getData() { + java.lang.Object ref = data_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + data_ = s; + return s; + } + } + /** + * string data = 1; + * @return The bytes for data. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getDataBytes() { + java.lang.Object ref = data_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + data_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(data_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, data_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(data_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, data_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.TestServiceOuterClass.TestResponse)) { + return super.equals(obj); + } + cmvr.api.TestServiceOuterClass.TestResponse other = (cmvr.api.TestServiceOuterClass.TestResponse) obj; + + if (!getData() + .equals(other.getData())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + DATA_FIELD_NUMBER; + hash = (53 * hash) + getData().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.TestServiceOuterClass.TestResponse parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.TestServiceOuterClass.TestResponse parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.TestServiceOuterClass.TestResponse parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.TestServiceOuterClass.TestResponse parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.TestServiceOuterClass.TestResponse parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.TestServiceOuterClass.TestResponse parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.TestServiceOuterClass.TestResponse parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.TestServiceOuterClass.TestResponse parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.TestServiceOuterClass.TestResponse parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.TestServiceOuterClass.TestResponse parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.TestServiceOuterClass.TestResponse parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.TestServiceOuterClass.TestResponse parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.TestServiceOuterClass.TestResponse prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.TestResponse} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.TestResponse) + cmvr.api.TestServiceOuterClass.TestResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.TestServiceOuterClass.internal_static_cmvr_api_TestResponse_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.TestServiceOuterClass.internal_static_cmvr_api_TestResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.TestServiceOuterClass.TestResponse.class, cmvr.api.TestServiceOuterClass.TestResponse.Builder.class); + } + + // Construct using cmvr.api.TestServiceOuterClass.TestResponse.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + data_ = ""; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.TestServiceOuterClass.internal_static_cmvr_api_TestResponse_descriptor; + } + + @java.lang.Override + public cmvr.api.TestServiceOuterClass.TestResponse getDefaultInstanceForType() { + return cmvr.api.TestServiceOuterClass.TestResponse.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.TestServiceOuterClass.TestResponse build() { + cmvr.api.TestServiceOuterClass.TestResponse result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.TestServiceOuterClass.TestResponse buildPartial() { + cmvr.api.TestServiceOuterClass.TestResponse result = new cmvr.api.TestServiceOuterClass.TestResponse(this); + result.data_ = data_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.TestServiceOuterClass.TestResponse) { + return mergeFrom((cmvr.api.TestServiceOuterClass.TestResponse)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.TestServiceOuterClass.TestResponse other) { + if (other == cmvr.api.TestServiceOuterClass.TestResponse.getDefaultInstance()) return this; + if (!other.getData().isEmpty()) { + data_ = other.data_; + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + data_ = input.readStringRequireUtf8(); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private java.lang.Object data_ = ""; + /** + * string data = 1; + * @return The data. + */ + public java.lang.String getData() { + java.lang.Object ref = data_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + data_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string data = 1; + * @return The bytes for data. + */ + public com.google.protobuf.ByteString + getDataBytes() { + java.lang.Object ref = data_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + data_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string data = 1; + * @param value The data to set. + * @return This builder for chaining. + */ + public Builder setData( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + data_ = value; + onChanged(); + return this; + } + /** + * string data = 1; + * @return This builder for chaining. + */ + public Builder clearData() { + + data_ = getDefaultInstance().getData(); + onChanged(); + return this; + } + /** + * string data = 1; + * @param value The bytes for data to set. + * @return This builder for chaining. + */ + public Builder setDataBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + data_ = value; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.TestResponse) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.TestResponse) + private static final cmvr.api.TestServiceOuterClass.TestResponse DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.TestServiceOuterClass.TestResponse(); + } + + public static cmvr.api.TestServiceOuterClass.TestResponse getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public TestResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.TestServiceOuterClass.TestResponse getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_TestReqeust_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_TestReqeust_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_TestResponse_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_TestResponse_fieldAccessorTable; + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n\033cmvr/api/test_service.proto\022\010cmvr.api\"" + + "\033\n\013TestReqeust\022\014\n\004data\030\001 \001(\t\"\034\n\014TestResp" + + "onse\022\014\n\004data\030\001 \001(\t2D\n\013TestService\0225\n\004Cal" + + "l\022\025.cmvr.api.TestReqeust\032\026.cmvr.api.Test" + + "Responseb\006proto3" + }; + descriptor = com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + }); + internal_static_cmvr_api_TestReqeust_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_cmvr_api_TestReqeust_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_TestReqeust_descriptor, + new java.lang.String[] { "Data", }); + internal_static_cmvr_api_TestResponse_descriptor = + getDescriptor().getMessageTypes().get(1); + internal_static_cmvr_api_TestResponse_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_TestResponse_descriptor, + new java.lang.String[] { "Data", }); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/biohead_command.proto b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/biohead_command.proto new file mode 100644 index 0000000..888730a --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/biohead_command.proto @@ -0,0 +1,175 @@ +syntax = "proto3"; + +import "cmvr/api/common.proto"; // 导入通用命令头定义,确保与其他服务接口一致 + +package cmvr.api; + +/** + * 面部表情控制参数定义 + * 包含生物头部机器人面部各部位的运动参数,用于精确控制面部表情 + */ +message FacialExpression { + /** + * 眉毛控制参数 + * 左右眉毛的内外侧垂直位置(0.0-1.0标准化值) + */ + message Eyebrow { + float left_outside_y = 1; // 左眉外侧垂直位置 + float left_inside_y = 2; // 左眉内侧垂直位置 + float right_outside_y = 3; // 右眉外侧垂直位置 + float right_inside_y = 4; // 右眉内侧垂直位置 + } + Eyebrow eyebrow = 3; // 眉毛参数封装 + + /** + * 眼睑控制参数 + * 左右眼睑的上下位置(0.0-1.0标准化值) + */ + message Eyelid { + float left_upper_y = 1; // 左上眼睑垂直位置 + float left_lower_y = 2; // 左下眼睑垂直位置 + float right_upper_y = 3; // 右上眼睑垂直位置 + float right_lower_y = 4; // 右下眼睑垂直位置 + } + Eyelid eyelid = 4; // 眼睑参数封装 + + /** + * 眼球控制参数 + * 左右眼球的二维坐标(-1.0到1.0标准化值,中心为0) + */ + message Eyeball { + float left_x = 1; // 左眼球水平位置 + float left_y = 2; // 左眼球垂直位置 + float right_x = 3; // 右眼球水平位置 + float right_y = 4; // 右眼球垂直位置 + } + Eyeball eyeball = 5; // 眼球参数封装 + + /** + * 鼻子控制参数 + * 鼻子左右侧的垂直位置(0.0-1.0标准化值) + */ + message Nose { + float left_y = 1; // 鼻子左侧垂直位置 + float right_y = 2; // 鼻子右侧垂直位置 + } + Nose nose = 6; // 鼻子参数封装 + + /** + * 嘴巴控制参数 + * 包含嘴唇整体位置和左右唇角细节 + */ + message Mouth { + float upper_lip_y = 1; // 上唇垂直位置 + float upper_lip_z = 2; // 上唇前后位置(Z轴) + float lower_lip_y = 3; // 下唇垂直位置 + float lower_lip_z = 4; // 下唇前后位置(Z轴) + + /** + * 左唇角控制参数 + * 包含上唇、唇角、下唇的坐标点 + */ + message LeftLip { + float upper_x = 1; // 左上唇水平位置 + float upper_y = 2; // 左上唇垂直位置 + float corner_x = 3; // 左唇角水平位置 + float corner_y = 4; // 左唇角垂直位置 + float lower_x = 5; // 左下唇水平位置 + float lower_y = 6; // 左下唇垂直位置 + } + LeftLip left_lip = 5; // 左唇角参数封装 + + /** + * 右唇角控制参数 + * 结构与左唇角对称 + */ + message RightLip { + float upper_x = 1; // 右上唇水平位置 + float upper_y = 2; // 右上唇垂直位置 + float corner_x = 3; // 右唇角水平位置 + float corner_y = 4; // 右唇角垂直位置 + float lower_x = 5; // 右下唇水平位置 + float lower_y = 6; // 右下唇垂直位置 + } + RightLip right_lip = 6; // 右唇角参数封装 + } + Mouth mouth = 7; // 嘴巴参数封装 + + /** + * 下巴控制参数 + * 下巴的二维移动坐标(X/Y轴) + */ + message Jaw { + float x = 1; // 下巴水平位置 + float y = 2; // 下巴垂直位置 + } + Jaw jaw = 8; // 下巴参数封装 +} + +/** + * 设置面部表情命令(集成通用命令头) + * 用于单次设置生物头部的面部表情 + */ +message SetFacialExpression { + message Request { + CommandHeader.Request header = 1; // 通用命令头,包含设备ID和时间戳 + FacialExpression expression = 2; // 具体面部表情参数 + } + + message Feedback { + CommandHeader.Feedback header = 1; // 通用反馈头,包含操作状态和时间戳 + string execution_id = 2; // 表情执行任务ID + float execution_time_ms = 3; // 表情执行耗时(毫秒) + } +} + +/** + * 流式面部表情命令(集成通用命令头) + * 用于连续发送多个面部表情,实现表情动画效果 + */ +message StreamFacialExpression { + message Request { + CommandHeader.Request header = 1; // 通用命令头 + FacialExpression expr = 2; // 执行 + bool eof = 3; // 标记是否为流结束 + } + + message Feedback { + CommandHeader.Feedback header = 1; // 通用反馈头 + FacialExpression expr_diff = 2; // 执行误差 + } +} + +/** + * 获取生物头部状态命令(集成通用命令头) + * 用于查询当前头部各部位的状态和位置 + */ +message GetStatus { + message Request { + CommandHeader.Request header = 1; // 通用命令头 + } + + message Feedback { + CommandHeader.Feedback header = 1; // 通用反馈头 + bool is_moving = 2; // 是否有部位在移动 + string last_request_id = 3; // 上一次请求的ID + repeated float current_positions = 4; // 当前各部位位置参数 + bool camera_recording = 5; // 相机是否在录制 + string active_recording_id = 6; // 活跃录制任务的ID + } +} + +/** + * 紧急停止命令(集成通用命令头) + * 用于立即停止所有面部动作 + */ +message EmergencyStop { + message Request { + CommandHeader.Request header = 1; // 通用命令头 + } + + message Feedback { + CommandHeader.Feedback header = 1; // 通用反馈头 + string stopped_processes = 2; // 已停止的进程列表 + } +} \ No newline at end of file diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/biohead_service.proto b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/biohead_service.proto new file mode 100644 index 0000000..ea1e029 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/biohead_service.proto @@ -0,0 +1,22 @@ +syntax = "proto3"; + +package cmvr.api; +import "cmvr/api/biohead_command.proto"; + +// 生物头部机器人服务接口 +service BioHeadService { + // 设置面部表情 + rpc SetExpression(SetFacialExpression.Request) returns (SetFacialExpression.Feedback){}; + + // 流式表情控制 + //rpc StreamExpression(StreamFacialExpression.Request) returns (StreamFacialExpression.Feedback){}; + + rpc StreamExpression (stream StreamFacialExpression.Request) returns (stream StreamFacialExpression.Feedback){}; + + + // 获取状态 + rpc GetSystemStatus(GetStatus.Request) returns (GetStatus.Feedback){}; + + // 紧急停止 + rpc EmergencyStop(EmergencyStop.Request) returns (EmergencyStop.Feedback){}; +} \ No newline at end of file diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/camera_command.proto b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/camera_command.proto new file mode 100644 index 0000000..36dfe9a --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/camera_command.proto @@ -0,0 +1,161 @@ +syntax = "proto3"; + +import "cmvr/api/common.proto"; + +package cmvr.api; + +message FrameData { + enum FrameType { + U8C1 = 0; + U16C1 = 1; + U8C3 = 2; + U16C3 = 3; + F16C1 = 4; + F32C1 = 5; + } + bytes data = 1; + int32 width = 2; + int32 height = 3; + FrameType type = 4; + string codec = 5; + bool is_key_frame = 6; +} + +message CameraState { + bool is_initialized = 1; + bool is_opened = 2; + bool is_streaming = 3; + bool is_recording = 4; + bool is_error = 5; + string error_message = 6; + int32 fps = 7; + int32 width = 8; + int32 height = 9; +} + +message GetCameraStateCommand { + message Request { + CommandHeader.Request header = 1; + } + message Feedback { + CommandHeader.Feedback header = 1; + CameraState state = 2; + } +} + +message StartCameraCommand { + message Request { + CommandHeader.Request header = 1; + } + + message Feedback { + CommandHeader.Feedback header = 1; + } +} + +message StopCameraCommand { + message Request { + CommandHeader.Request header = 1; + } + + message Feedback { + CommandHeader.Feedback header = 1; + } +} + +message GetRGBImageCommand { + message Request { + CommandHeader.Request header = 1; + } + + message Feedback { + CommandHeader.Feedback header = 1; + FrameData color_frame = 2; + } +} + +message GetDepthImageCommand { + message Request { + CommandHeader.Request header = 1; + } + + message Feedback { + CommandHeader.Feedback header = 1; + FrameData depth_frame = 2; + } +} + +message GetRGBDImagesCommand { + message Request { + CommandHeader.Request header = 1; + } + + message Feedback { + CommandHeader.Feedback header = 1; + FrameData color_frame = 2; + FrameData depth_frame = 3; + } +} + +message StartCameraRecordingCommand { + message Request { + CommandHeader.Request header = 1; + string video_path = 2; + } + message Feedback { + CommandHeader.Feedback header = 1; + } +} + +message StopCameraRecordingCommand { + message Request { + CommandHeader.Request header = 1; + } + + message Feedback { + CommandHeader.Feedback header = 1; + } +} + +message GetRGBImageStreamCommand { + message Request { + CommandHeader.Request header = 1; + bool eof = 2; + } + + message Feedback { + CommandHeader.Feedback header = 1; + FrameData color_frame = 2; + int32 seq_no = 3; + } +} + +message GetDepthImageStreamCommand { + message Request { + CommandHeader.Request header = 1; + bool eof = 2; + } + + message Feedback { + CommandHeader.Feedback header = 1; + FrameData depth_frame = 2; + int32 seq_no = 3; + } +} + +message GetRGBDImagesStreamCommand { + message Request { + CommandHeader.Request header = 1; + bool eof = 2; + } + + message Feedback { + CommandHeader.Feedback header = 1; + FrameData color_frame = 2; + FrameData depth_frame = 3; + int32 seq_no = 4; + } +} + + + diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/camera_service.proto b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/camera_service.proto new file mode 100644 index 0000000..cb9b2ac --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/camera_service.proto @@ -0,0 +1,21 @@ + +syntax = "proto3"; + +import "cmvr/api/camera_command.proto"; + +package cmvr.api; + +service CameraService { + rpc GetStatus(GetCameraStateCommand.Request) returns (GetCameraStateCommand.Feedback) {} + rpc StartCamera(StartCameraCommand.Request) returns (StartCameraCommand.Feedback) {} + rpc StopCamera(StopCameraCommand.Request) returns (StopCameraCommand.Feedback) {} + rpc GetRGBImage(GetRGBImageCommand.Request) returns (GetRGBImageCommand.Feedback) {} + rpc GetDepthImage(GetDepthImageCommand.Request) returns (GetDepthImageCommand.Feedback) {} + rpc GetRGBDImages(GetRGBDImagesCommand.Request) returns (GetRGBDImagesCommand.Feedback) {} + rpc StartRecording(StartCameraRecordingCommand.Request) returns (StartCameraRecordingCommand.Feedback) {} + rpc StopRecording(StopCameraRecordingCommand.Request) returns (StopCameraRecordingCommand.Feedback) {} + + rpc GetRGBImageStream(stream GetRGBImageStreamCommand.Request) returns (stream GetRGBImageStreamCommand.Feedback) {} + rpc GetDepthImageStream(stream GetDepthImageStreamCommand.Request) returns (stream GetDepthImageStreamCommand.Feedback) {} + rpc GetRGBDImagesStream(stream GetRGBDImagesStreamCommand.Request) returns (stream GetRGBDImagesStreamCommand.Feedback) {} +} \ No newline at end of file diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/common.proto b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/common.proto new file mode 100644 index 0000000..19c35bd --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/common.proto @@ -0,0 +1,30 @@ +syntax = "proto3"; + +package cmvr.api; + +import "google/protobuf/timestamp.proto"; + +message DeviceLifecycle { + enum Lifecycle { + STATE_INIT = 0; + STATE_READY = 1; + STATE_RUNNING = 2; + STATE_ERROR = 3; + STATE_ESTOP = 4; + STATE_STOP = 5; + } + Lifecycle state = 1; +} + +message CommandHeader { + message Request { + string device_id = 1; // 目标设备名称 + google.protobuf.Timestamp timestamp = 2; // 请求时间 + } + + message Feedback { + bool success = 1; // 是否成功 + string error_message = 2; // 错误信息(成功时为空) + google.protobuf.Timestamp timestamp = 3; // 回复时间 + } +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/dexhand_command.proto b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/dexhand_command.proto new file mode 100644 index 0000000..5e89c97 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/dexhand_command.proto @@ -0,0 +1,149 @@ +syntax = "proto3"; + +import "cmvr/api/common.proto"; + +package cmvr.api; + +message FreedomValue { + int32 id = 1; // 自由度id 0-6 分别对应六个自由度 小拇指 无名指 中指 食指 大拇指弯曲 大拇指旋转 + float value = 2; // 值 0-1百分比 +} + +message RH56DFTPDexHand { + int32 dof_id = 1; // 自由度ID,唯一标识不同的关节或自由度 + int32 angle = 2; // 自由度角度 + int32 speed = 3; // 自由度速度 + int32 force = 4; // 实际受力 + int32 position = 5; // 执行器位置 + int32 current = 6; // 执行器实际电流 + int32 temperature = 7; // 执行器温度 + int32 error = 8; // 执行器故障信息 + repeated string error_message = 9; // 错误消息列表 +} +// 传感器数据 +// 传感器数据 +message SensorData { + // 手指类型(掌心作为特殊类型) + enum FingerType { + PINKY = 0; // 小拇指 + RING = 1; // 无名指 + MIDDLE_FINGER = 2; // 中指(避免与PartType.MIDDLE冲突) + INDEX = 3; // 食指 + THUMB = 4; // 大拇指 + PALM = 5; // 掌心 + } + + // 部位类型(指中改为THUMB_MIDDLE以避免冲突) + enum PartType { + TIP = 0; // 指端 + FINGER = 1; // 指尖 + PAD = 2; // 指腹 + THUMB_MIDDLE = 3; // 大拇指指中(仅大拇指有) + PALM_PAD = 4; // 掌心部位(对应PalmTactileData) + } + + FingerType finger_type = 4; // 手指类型(掌心使用PALM) + PartType part_type = 5; // 部位类型 + string sensor_name = 6; // 传感器名称(如"小拇指指端") + + message RowData { + repeated int32 values = 1 [packed = true]; // 一维数组,存放每行的浮点数值 + } + repeated RowData data = 1; // 二维数组,每行数据是 RowData 类型 + int32 rows = 2; // 行 + int32 cols = 3; // 列 +} + + +message DexHandState { + bool is_initialized = 1; // 是否初始化 + repeated RH56DFTPDexHand hands = 2; // 包含多个自由度状态 +} + +message GetDexHandStateCommand { + message Request { + CommandHeader.Request header = 1; + } + + message Feedback { + CommandHeader.Feedback header = 1; + DexHandState state = 2; + } +} + +message SetDexHandPositionsCommand { + message Request { + CommandHeader.Request header = 1; + repeated FreedomValue values = 2; + } + + message Feedback { + CommandHeader.Feedback header = 1; + } +} + +message SetDexHandAnglesCommand { + message Request { + CommandHeader.Request header = 1; + repeated FreedomValue values = 2; + } + + message Feedback { + CommandHeader.Feedback header = 1; + } +} + +message SetDexHandForceCommand { + message Request { + CommandHeader.Request header = 1; + repeated FreedomValue values = 2; + } + + message Feedback { + CommandHeader.Feedback header = 1; + } +} + +message SetDexHandSpeedCommand { + message Request { + CommandHeader.Request header = 1; + repeated FreedomValue values = 2; + } + + message Feedback { + CommandHeader.Feedback header = 1; + } +} + +message SetDexHandPresetActCommand { + message Request { + CommandHeader.Request header = 1; + int32 presetActId = 2; + } + + message Feedback { + CommandHeader.Feedback header = 1; + } +} + +message GetSensorDataCommand { + message Request { + CommandHeader.Request header = 1; + } + + message Feedback { + CommandHeader.Feedback header = 1; + repeated SensorData sensor = 2;//所有传感器的数据 + } +} + +message GetSensorDataStreamCommand { + message Request { + CommandHeader.Request header = 1; + } + + message Feedback { + CommandHeader.Feedback header = 1; + repeated SensorData sensor = 2;//所有传感器的数据 + } +} \ No newline at end of file diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/dexhand_service.proto b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/dexhand_service.proto new file mode 100644 index 0000000..13593d3 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/dexhand_service.proto @@ -0,0 +1,18 @@ +syntax = "proto3"; + +import "cmvr/api/dexhand_command.proto"; + +package cmvr.api; + + +service DexHandService { + // 基本控制 + rpc GetStatus(GetDexHandStateCommand.Request) returns (GetDexHandStateCommand.Feedback); + rpc SetDexHandPos(SetDexHandPositionsCommand.Request) returns (SetDexHandPositionsCommand.Feedback); + rpc SetDexHandAngle(SetDexHandAnglesCommand.Request) returns (SetDexHandAnglesCommand.Feedback); + rpc SetDexHandForce(SetDexHandForceCommand.Request) returns (SetDexHandForceCommand.Feedback); + rpc SetDexHandSpeed(SetDexHandSpeedCommand.Request) returns (SetDexHandSpeedCommand.Feedback); + rpc SetDexHandPresetAct(SetDexHandPresetActCommand.Request) returns (SetDexHandPresetActCommand.Feedback); + rpc GetSensorData(GetSensorDataCommand.Request) returns (GetSensorDataCommand.Feedback); + rpc GetSensorDataStream(stream GetSensorDataStreamCommand.Request) returns (stream GetSensorDataStreamCommand.Feedback); +} \ No newline at end of file diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/geometry.proto b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/geometry.proto new file mode 100644 index 0000000..a7ab001 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/geometry.proto @@ -0,0 +1,67 @@ +syntax = "proto3"; + +package cmvr.api; + + +message Vec2 { + double x = 1; + double y = 2; +} + +message Vec3 { + double x = 1; + double y = 2; + double z = 3; +} + +message SE2Pose { + Vec2 position = 1; // (m) + double angle = 2; // (rad) +} + +message SE2Velocity { + Vec2 linear = 1; // (m/s) + double angular = 2; // (rad/s) +} + +message Quaternion { + double x = 1; + double y = 2; + double z = 3; + double w = 4; +} + +message EulerAngleZYX { + double z = 1; + double y = 2; + double x = 3; +} + +message SE3Pose { + Vec3 position = 1; // (m) + oneof rotation { + Quaternion quaternion = 2; + EulerAngleZYX euler = 3; + } +} + +message Inertial { + // Mass (kg) + double mass = 1; + + // Center of mass (m) + Vec3 center_of_mass = 2; + + // Inertia tensor + Inertia inertia = 3; +} + +// Inertia tensor components (kg*m^2) +message Inertia { + double ixx = 1; + double iyy = 2; + double izz = 3; + double ixy = 4; + double ixz = 5; + double iyz = 6; +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/microphone_command.proto b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/microphone_command.proto new file mode 100644 index 0000000..4183415 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/microphone_command.proto @@ -0,0 +1,81 @@ +syntax = "proto3"; + +import "cmvr/api/common.proto"; + +package cmvr.api; + +message MicState { + bool is_initialized = 1; + bool is_running = 2; + bool is_recording = 3; + int32 volume = 4; + string error_message = 5; +} +message GetMicStateCommand { + message Request { + CommandHeader.Request header = 1; + } + + message Feedback { + CommandHeader.Feedback header = 1; + MicState state = 2; + } +} +message StartMicRecordingCommand { + message Request { + CommandHeader.Request header = 1; + string file_path = 2; + } + message Feedback { + CommandHeader.Feedback header = 1; + } +} + +message StopMicRecordingCommand { + message Request { + CommandHeader.Request header = 1; + } + + message Feedback { + CommandHeader.Feedback header = 1; + } +} + +message PauseMicRecordingCommand { + message Request { + CommandHeader.Request header = 1; + } + message Feedback { + CommandHeader.Feedback header = 1; + } +} + +message ResumeMicRecordingCommand { + message Request { + CommandHeader.Request header = 1; + } + message Feedback { + CommandHeader.Feedback header = 1; + } +} + +message SetMicPhoneVolumeCommand { + message Request { + CommandHeader.Request header = 1; + int32 volume = 2; // 音量值(0 ~ 100) + } + message Feedback { + CommandHeader.Feedback header = 1; + } +} + +message GetMicPhoneVolumeCommand { + message Request { + CommandHeader.Request header = 1; + } + message Feedback { + CommandHeader.Feedback header = 1; + int32 volume = 2; // 当前音量值 + } +} + diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/microphone_service.proto b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/microphone_service.proto new file mode 100644 index 0000000..fcf31b7 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/microphone_service.proto @@ -0,0 +1,20 @@ +syntax = "proto3"; + +import "cmvr/api/microphone_command.proto"; + +package cmvr.api; + + +service MicPhoneService { + // 基本控制 + rpc GetStatus(GetMicStateCommand.Request) returns (GetMicStateCommand.Feedback); + rpc StartRecord(StartMicRecordingCommand.Request) returns (StartMicRecordingCommand.Feedback); + rpc StopRecord(StopMicRecordingCommand.Request) returns (StopMicRecordingCommand.Feedback); + rpc PauseRecord(PauseMicRecordingCommand.Request) returns (PauseMicRecordingCommand.Feedback); + rpc ResumeRecord(ResumeMicRecordingCommand.Request) returns (ResumeMicRecordingCommand.Feedback); + + // 音量控制 + rpc SetVolume(SetMicPhoneVolumeCommand.Request) returns (SetMicPhoneVolumeCommand.Feedback); + rpc GetVolume(GetMicPhoneVolumeCommand.Request) returns (GetMicPhoneVolumeCommand.Feedback); + +} \ No newline at end of file diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/speaker_command.proto b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/speaker_command.proto new file mode 100644 index 0000000..f5a23b8 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/speaker_command.proto @@ -0,0 +1,99 @@ +syntax = "proto3"; + +import "cmvr/api/common.proto"; + +package cmvr.api; + + +// 音频数据格式(与麦克风类似,但用于输出) +message AudioData { + enum AudioFormat { + PCM = 0; + MP3 = 1; + AAC = 2; + WAV = 3; + } + bytes data = 1; // 音频二进制数据 + int32 sample_rate = 2; // 采样率(Hz) + int32 channels = 3; // 声道数 + AudioFormat format = 4; // 音频格式 + string codec = 5; // 编码方式 +} + +// 扬声器状态 +message SpeakerState { + bool is_initialized = 1; // 是否已初始化 + bool is_running = 2; // 是否正在播放 + bool is_decoding = 3; + bool is_paused = 5; + int32 volume = 6; // 当前音量(0 ~ 100) + string error_message = 7; // 错误信息 +} + +// 各种扬声器命令 +message GetSpeakerStateCommand { + message Request { + CommandHeader.Request header = 1; + } + + message Feedback { + CommandHeader.Feedback header = 1; + SpeakerState state = 2; + } +} + +message PlayAudioCommand { + message Request { + CommandHeader.Request header = 1; + string audio_path = 2; + } + message Feedback { CommandHeader.Feedback header = 1; } +} + +message StopSpeakerCommand { + message Request { + CommandHeader.Request header = 1; + } + message Feedback { + CommandHeader.Feedback header = 1; + } +} + +message PauseSpeakerCommand { + message Request { + CommandHeader.Request header = 1; + } + message Feedback { + CommandHeader.Feedback header = 1; + } +} + +message ResumeSpeakerCommand { + message Request { + CommandHeader.Request header = 1; + } + message Feedback { + CommandHeader.Feedback header = 1; + } +} + +message SetSpeakerVolumeCommand { + message Request { + CommandHeader.Request header = 1; + int32 volume = 2; // 音量值(0 ~ 100) + } + message Feedback { + CommandHeader.Feedback header = 1; + } +} + +message GetSpeakerVolumeCommand { + message Request { + CommandHeader.Request header = 1; + } + message Feedback { + CommandHeader.Feedback header = 1; + int32 volume = 2; // 当前音量值 + } +} + diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/speaker_service.proto b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/speaker_service.proto new file mode 100644 index 0000000..9cbc77c --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/speaker_service.proto @@ -0,0 +1,20 @@ +syntax = "proto3"; + +import "cmvr/api/speaker_command.proto"; + +package cmvr.api; + + +service SpeakerService { + // 基本控制 + rpc GetStatus(GetSpeakerStateCommand.Request) returns (GetSpeakerStateCommand.Feedback); + rpc PlayAudio(PlayAudioCommand.Request) returns (PlayAudioCommand.Feedback); + rpc StopPlayback(StopSpeakerCommand.Request) returns (StopSpeakerCommand.Feedback); + rpc PausePlayback(PauseSpeakerCommand.Request) returns (PauseSpeakerCommand.Feedback); + rpc ResumePlayback(ResumeSpeakerCommand.Request) returns (ResumeSpeakerCommand.Feedback); + + // 音量控制 + rpc SetVolume(SetSpeakerVolumeCommand.Request) returns (SetSpeakerVolumeCommand.Feedback); + rpc GetVolume(GetSpeakerVolumeCommand.Request) returns (GetSpeakerVolumeCommand.Feedback); + +} \ No newline at end of file diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/system_command.proto b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/system_command.proto new file mode 100644 index 0000000..7498dd6 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/system_command.proto @@ -0,0 +1,50 @@ +syntax = "proto3"; + +import "cmvr/api/common.proto"; + +package cmvr.api; + +enum DeviceType { + AGV = 0; + Battery = 1; + Camera = 2; + DexHand = 3; + Gripper = 4; + Microphone = 5; + Robot = 6; + Speaker = 7; + Unknown = 20; +} + +message DeviceList { + string device_id = 1; + DeviceType device_type = 2; +} + +message GetSystemInfoCommand { + message Request {} + + message Feedback { + CommandHeader.Feedback header = 1; + string system_name = 2; + string version = 3; + string description = 4; + string os = 5; + string kernel_version = 6; + string architecture = 7; + } +} + +message GetSystemStatusCommand { + message Request {} + + message Feedback { + CommandHeader.Feedback header = 1; + float cpu_usage = 2; + float mem_total_mb = 3; + float mem_used_mb = 4; + float disk_total_gb = 5; + float disk_used_gb = 6; + repeated DeviceList device_list = 7; + } +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/system_service.proto b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/system_service.proto new file mode 100644 index 0000000..3ae6654 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/system_service.proto @@ -0,0 +1,11 @@ +syntax = "proto3"; + +import "cmvr/api/system_command.proto"; + +package cmvr.api; + + +service SystemService { + rpc GetSystemInfo(GetSystemInfoCommand.Request) returns (GetSystemInfoCommand.Feedback) {} + rpc GetSystemStatus(GetSystemStatusCommand.Request) returns (GetSystemStatusCommand.Feedback) {} +} \ No newline at end of file diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/test_service.proto b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/test_service.proto new file mode 100644 index 0000000..708479d --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/test_service.proto @@ -0,0 +1,17 @@ +syntax = "proto3"; + +package cmvr.api; + +message TestReqeust { + string data = 1; +} + +message TestResponse { + string data = 1; +} + +service TestService{ + rpc Call (TestReqeust) returns (TestResponse); +} + + diff --git a/cmvr-iot-api/cmvr-iot-edge/pom.xml b/cmvr-iot-api/cmvr-iot-edge/pom.xml new file mode 100644 index 0000000..1fb241c --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/pom.xml @@ -0,0 +1,20 @@ + + + 4.0.0 + + com.cmvr + cmvr-iot-api + 3.8.9 + + + cmvr-iot-edge + pom + cmvr-iot 边缘系统服务 + + cmvr-iot-grpc-client + cmvr-iot-grpc-lib + + + \ No newline at end of file diff --git a/cmvr-iot-api/cmvr-iot-llm/pom.xml b/cmvr-iot-api/cmvr-iot-llm/pom.xml new file mode 100644 index 0000000..ed2a52d --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-llm/pom.xml @@ -0,0 +1,30 @@ + + + 4.0.0 + + com.cmvr + cmvr-iot-api + 3.8.9 + + + cmvr-iot-llm + cmvr-iot 大模型接口api + + + + + com.cmvr + cmvr-iot-common + + + + com.volcengine + volc-sdk-java + 1.0.49 + + + + + \ No newline at end of file diff --git a/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/config/APIProperties.java b/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/config/APIProperties.java new file mode 100644 index 0000000..d59da49 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/config/APIProperties.java @@ -0,0 +1,32 @@ +package com.cmvr.llm.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * API配置类 + */ +@Data +@Component +@ConfigurationProperties(prefix = "api") +public class APIProperties { + + /** + * 应用唯一标识 + */ + private String appId; + + /** + * 应用密钥 + */ + private String appKey; + + /** 执行语音转文本工作流接口地址 */ + private String speechToTextUrl; + + /** 查询语音转文本结果接口地址 */ + private String queryResultUrl; + + private String bgeVl; +} diff --git a/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/model/CallAgentAdvancedVO.java b/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/model/CallAgentAdvancedVO.java new file mode 100644 index 0000000..e478e18 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/model/CallAgentAdvancedVO.java @@ -0,0 +1,33 @@ +package com.cmvr.llm.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; + +@Data +@ApiModel("智能体调用VO") +public class CallAgentAdvancedVO { + @ApiModelProperty("指令") + @NotEmpty(message = "指令不能为空") + private String convertWords; + + @ApiModelProperty("方言") + private String dialect; + + @ApiModelProperty("音色") + @NotEmpty(message = "音色不能为空") + private String timbre; + + @ApiModelProperty("语种") + private String language; + + @ApiModelProperty("语气") + @NotEmpty(message = "语气不能为空") + private String tone; + + @ApiModelProperty("数量") + @NotEmpty(message = "数量不能为空") + private String count; +} diff --git a/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/model/CallAgentVO.java b/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/model/CallAgentVO.java new file mode 100644 index 0000000..728879d --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/model/CallAgentVO.java @@ -0,0 +1,23 @@ +package com.cmvr.llm.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; + +@Data +@ApiModel("智能体调用VO") +public class CallAgentVO { + @ApiModelProperty("指令") + @NotEmpty(message = "指令不能为空") + private String convertWords; + + @ApiModelProperty("方言") + @NotEmpty(message = "方言不能为空") + private String dialect; + + @ApiModelProperty("音色") + @NotEmpty(message = "音色不能为空") + private String timbre; +} \ No newline at end of file diff --git a/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/model/CallTTSAdvancedVO.java b/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/model/CallTTSAdvancedVO.java new file mode 100644 index 0000000..3b7ccdf --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/model/CallTTSAdvancedVO.java @@ -0,0 +1,29 @@ +package com.cmvr.llm.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; + +@Data +@ApiModel("TTS调用VO") +public class CallTTSAdvancedVO { + @ApiModelProperty("指令") + @NotEmpty(message = "指令不能为空") + private String text; + + @ApiModelProperty("方言") + private String dialect; + + @ApiModelProperty("音色") + @NotEmpty(message = "音色不能为空") + private String timbre; + + @ApiModelProperty("语种") + private String language; + + @ApiModelProperty("语气") + @NotEmpty(message = "语气不能为空") + private String tone; +} diff --git a/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/model/CallTTSVO.java b/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/model/CallTTSVO.java new file mode 100644 index 0000000..d081a8a --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/model/CallTTSVO.java @@ -0,0 +1,23 @@ +package com.cmvr.llm.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; + +@Data +@ApiModel("TTS调用VO") +public class CallTTSVO { + @ApiModelProperty("指令") + @NotEmpty(message = "指令不能为空") + private String text; + + @ApiModelProperty("方言") + @NotEmpty(message = "方言不能为空") + private String dialect; + + @ApiModelProperty("音色") + @NotEmpty(message = "音色不能为空") + private String timbre; +} \ No newline at end of file diff --git a/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/model/CarIcon.java b/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/model/CarIcon.java new file mode 100644 index 0000000..d224e83 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/model/CarIcon.java @@ -0,0 +1,56 @@ +package com.cmvr.llm.model; + +import lombok.Data; + +/** + * CarIcon类代表汽车图标的信息和属性 + * 它是一个数据模型类,用于封装汽车图标的各项属性,便于在程序中传递和处理 + * 同一个icon可能存在多张图片 + * 说明: + * iconFeature 和 jump 只能有一个有值,描述着这个icon是功能还是路由 + * 都存在情况,优先使用iconFeature + */ +@Data +public class CarIcon { + /** + * 图标名称,用于标识图标的字符串 + */ + private String iconName; + + /** + * 图标图片名称 + */ + private String iconImage; + + /** + * 图标描述,用于补充没有图标图片的图标或者图标的其他特殊情况 + */ + private String iconDesc; + + /** + * 图标特性,描述图标的功能 + */ + private String iconFeature; + + /** + * 当用户点击图标时跳转的目标ui + */ + private String jump; + + /** + * 构造一个新的CarIcon实例 + * + * @param iconName 图标名称 + * @param iconImage 图标图片名称 + * @param iconDesc 图标描述 + * @param iconFeature 图标特性 + * @param jump 跳转路由 + */ + public CarIcon(String iconName, String iconImage, String iconDesc, String iconFeature, String jump) { + this.iconName = iconName; + this.iconImage = iconImage; + this.iconDesc = iconDesc; + this.iconFeature = iconFeature; + this.jump = jump; + } +} diff --git a/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/model/CarUi.java b/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/model/CarUi.java new file mode 100644 index 0000000..74206cf --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/model/CarUi.java @@ -0,0 +1,41 @@ +package com.cmvr.llm.model; + +import lombok.Data; + +import java.util.List; + +/** + * CarUi类代表汽车的用户界面配置模型 + * 它封装了用户界面的名称、图像和一组汽车图标 + * ui名称和图像名称可以不一致,同一个界面可能存在多张图片 + */ +@Data +public class CarUi { + /** + * uiName字段表示用户界面的名称 + */ + private String uiName; + + /** + * uiImage字段表示用户界面的图像名称 + */ + private String uiImage; + + /** + * icons字段是一个CarIcon对象列表,代表该用户界面下的一组汽车图标 + */ + private List icons; + + /** + * 构造一个新的CarUi实例 + * + * @param uiName 用户界面的名称 + * @param uiImage 用户界面的图像名称 + * @param icons 一组汽车图标列表 + */ + public CarUi(String uiName, String uiImage, List icons) { + this.uiName = uiName; + this.uiImage = uiImage; + this.icons = icons; + } +} diff --git a/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/service/CarPathFinderService.java b/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/service/CarPathFinderService.java new file mode 100644 index 0000000..935d937 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/service/CarPathFinderService.java @@ -0,0 +1,24 @@ +package com.cmvr.llm.service; + +import com.alibaba.fastjson2.JSONArray; +import com.cmvr.llm.model.CarIcon; + +import java.util.List; + +/** + * 查找车辆功能路径的服务接口。 + * 提供了一个方法,根据给定的车机操作知识库文件、起始ui和目标功能特征,找到最佳的操作路径。 + */ +public interface CarPathFinderService { + /** + * 根据车机操作知识库文件、起始UI标识和目标特征标识,找到最佳的操作路径。 + * + * @param startUi 起始点标识符,用于定位起点位置。 + * @param targetFeature 目标特征标识符,用于定位目的功能。 + * @return 返回CarIcon对象列表,表示路径上的车辆图标。 + */ + List findPath(String manufacturer, String vehType, String startUi, String targetFeature); + + + List findPath(JSONArray jsonData, String startUi, String targetFeature); +} diff --git a/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/service/LLMTouchService.java b/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/service/LLMTouchService.java new file mode 100644 index 0000000..033f64f --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/service/LLMTouchService.java @@ -0,0 +1,18 @@ +package com.cmvr.llm.service; + +import java.io.File; + +public interface LLMTouchService { + + public String bgeVl(File image); + + /** + * 获取坐标 + * icon_image icon的地址 + * icon_desc icon的描述 + * input_image 照片地址 + */ + public String getCoordinates(String iconImage, String iconDesc, String inputImage); + + public String touchCoordinates(File image,String targetUi,String manufacturer, String vehType); +} diff --git a/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/service/LargeModelRemoteService.java b/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/service/LargeModelRemoteService.java new file mode 100644 index 0000000..3489cbd --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/service/LargeModelRemoteService.java @@ -0,0 +1,21 @@ +package com.cmvr.llm.service; + +import com.cmvr.llm.model.CallAgentVO; + + +public interface LargeModelRemoteService { + + /** + * 调用语音转文本工作流 + * @param callAgentVO 请求参数(如 JSON 对象) + * @return 响应字符串 + */ + String runSpeechToTextWorkflow(CallAgentVO callAgentVO); + + /** + * 查询语音转文本结果 + * @param processId 流程执行ID或参数 + * @return 响应字符串 + */ + String querySpeechToTextResult(String processId); +} diff --git a/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/service/ShowIntelligentCockpitService.java b/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/service/ShowIntelligentCockpitService.java new file mode 100644 index 0000000..9c643ac --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/service/ShowIntelligentCockpitService.java @@ -0,0 +1,59 @@ +package com.cmvr.llm.service; + + +import com.cmvr.llm.model.CallAgentVO; +import com.cmvr.llm.model.CallAgentAdvancedVO; +import com.cmvr.llm.model.CallTTSAdvancedVO; +import com.cmvr.llm.model.CallTTSVO; +import org.springframework.http.ResponseEntity; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.List; + +/** + * 演示-智能座舱服务 + */ +public interface ShowIntelligentCockpitService { + + + // ----------------------------- 语音合成 ----------------------------- + + /** + * 创建音色 + */ + public String createTimbre(MultipartFile file) throws IOException; + + /** + * 查询音色和方言 + */ + public List queryTimbre(); + + /** + * 生成语料 + */ + public String genCorpus(CallAgentVO callAgentVO); + + /** + * 语音合成 + */ + public ResponseEntity synthesizeAudio(CallTTSVO callTTSVO); + + /** + * 生成语料-增强 + */ + public String genCorpusAdvanced(CallAgentAdvancedVO callAgentAdvancedVO); + + /** + * 语音合成-增强 + */ + public ResponseEntity synthesizeAudioAdvanced(CallTTSAdvancedVO callTTSAdvancedVO); + + + // ----------------------------- 触控交互 ----------------------------- + + /** + * 获取触控坐标 + */ + public String getCoordinates(byte[] bytes, String words) throws Exception; +} diff --git a/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/service/impl/CarPathFinderServiceImpl.java b/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/service/impl/CarPathFinderServiceImpl.java new file mode 100644 index 0000000..1e16d4e --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/service/impl/CarPathFinderServiceImpl.java @@ -0,0 +1,51 @@ +package com.cmvr.llm.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; +import com.cmvr.common.core.redis.RedisCache; +import com.cmvr.llm.model.CarIcon; +import com.cmvr.llm.model.CarUi; +import com.cmvr.llm.service.CarPathFinderService; +import com.cmvr.llm.util.CarPathFinderUtil; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; + +/** + * CarPathFinderService的具体实现类 + * 用于查找从起始界面到目标功能的路径 + */ +@Service +@RequiredArgsConstructor +public class CarPathFinderServiceImpl implements CarPathFinderService { + + private final RedisCache redisCache; + + /** + * 从 Redis 获取 JSON 配置,查找路径 + */ + @Override + public List findPath(String manufacturer, String vehType, String startUi, String targetFeature) { + String redisKey = StrUtil.format("{}:{}:{}", "veh_oper_config", manufacturer, vehType); + String configStr = redisCache.getCacheObject(redisKey); + if (StrUtil.isEmpty(configStr)) { + return null; + } + JSONObject configObj = JSON.parseObject(configStr); + JSONArray jsonData = configObj.getJSONArray("jsonData"); + return findPath(jsonData, startUi, targetFeature); + } + + /** + * 直接使用 JSON 数据查找路径 + */ + @Override + public List findPath(JSONArray jsonData, String startUi, String targetFeature) { + Map uiMap = CarPathFinderUtil.buildUiMapFromJson(jsonData); + return CarPathFinderUtil.findPath(uiMap, startUi, targetFeature); + } +} diff --git a/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/service/impl/LLMTouchServiceImpl.java b/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/service/impl/LLMTouchServiceImpl.java new file mode 100644 index 0000000..1e66d5a --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/service/impl/LLMTouchServiceImpl.java @@ -0,0 +1,79 @@ +package com.cmvr.llm.service.impl; + +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.cmvr.common.exception.GlobalException; +import com.cmvr.common.utils.http.CallAPIUtil; +import com.cmvr.llm.config.APIProperties; +import com.cmvr.llm.model.CarIcon; +import com.cmvr.llm.service.CarPathFinderService; +import com.cmvr.llm.service.LLMTouchService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.io.File; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +@RequiredArgsConstructor +public class LLMTouchServiceImpl implements LLMTouchService { + + private final APIProperties apiProperties; + private final CarPathFinderService carPathFinderService; + + @Override + public String bgeVl(File image) { + return CallAPIUtil.doPostFile(apiProperties.getBgeVl(), null, "image", image, null); + } + + @Override + public String getCoordinates(String iconImage, String iconDesc, String inputImage) { + // 调用触控交互接口 + Map params = new HashMap<>(); + params.put("icon_image", iconImage); + params.put("icon_desc", iconDesc); + params.put("input_image", inputImage); + + Map headers = new HashMap<>(); + headers.put("Apikey", "d1ebtc5u6s5pkko77dkg"); + + Map body = new HashMap<>(); + body.put("AppKey", "d1ebtc5u6s5pkko77dkg"); + body.put("AppID", "d1ebtabnjkflk4gmhikg"); + body.put("InputData", JSON.toJSONString(params)); + body.put("UserID", "18888888888"); + + String res1 = CallAPIUtil.doPostJson(apiProperties.getSpeechToTextUrl(), headers, body); + JSONObject resObject1 = JSON.parseObject(res1); + if (resObject1.containsKey("runId")) { + String processId = resObject1.getString("runId"); + return queryResultByRunId(processId); + } else { + throw new GlobalException("未获取到 runId,响应内容:" + res1); + } + } + + @Override + public String touchCoordinates(File image,String targetUi, String manufacturer, String vehType) { + String currentUi = bgeVl(image); + if (currentUi != null && currentUi.equals(targetUi)) { + return null; + } + List path = carPathFinderService.findPath(manufacturer, vehType, currentUi, targetUi); + String nextUi; + for (int i = 0; i < path.size(); i++) { + CarIcon carIcon = path.get(i); + if (carIcon.getIconName().equals(currentUi)) { + nextUi = path.get(i + 1).getIconName(); + } + } +// getCoordinates() + return ""; + } + + private String queryResultByRunId(String processId) { + return ""; + } +} diff --git a/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/service/impl/LargeModelRemoteServiceImpl.java b/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/service/impl/LargeModelRemoteServiceImpl.java new file mode 100644 index 0000000..8bbe2c5 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/service/impl/LargeModelRemoteServiceImpl.java @@ -0,0 +1,134 @@ +package com.cmvr.llm.service.impl; + +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; +import com.cmvr.common.exception.GlobalException; +import com.cmvr.common.utils.http.CallAPIUtil; +import com.cmvr.llm.config.APIProperties; +import com.cmvr.llm.model.CallAgentVO; +import com.cmvr.llm.service.LargeModelRemoteService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.Map; + +@Service +@RequiredArgsConstructor +public class LargeModelRemoteServiceImpl implements LargeModelRemoteService { + + private final APIProperties apiProperties; + + @Override + public String runSpeechToTextWorkflow(CallAgentVO callAgentVO) { + Map headers = new HashMap<>(); + headers.put("Apikey", apiProperties.getAppKey()); + + Map body = new HashMap<>(); + body.put("AppKey", apiProperties.getAppKey()); + body.put("AppID", apiProperties.getAppId()); + body.put("InputData", JSON.toJSONString(callAgentVO)); + body.put("UserID", "18888888888"); + + String res1 = CallAPIUtil.doPostJson(apiProperties.getSpeechToTextUrl(), headers, body); + JSONObject resObject1 = JSON.parseObject(res1); + + if (resObject1.containsKey("runId")) { + String processId = resObject1.getString("runId"); + return querySpeechToTextResult(processId); + } else { + throw new RuntimeException("未获取到 runId,响应内容:" + res1); + } + } + + @Override + public String querySpeechToTextResult(String processId) { + Map headers = new HashMap<>(); + headers.put("Apikey", apiProperties.getAppKey()); + + Map body = new HashMap<>(); + body.put("AppKey", apiProperties.getAppKey()); + body.put("AppID", apiProperties.getAppId()); + body.put("RunID", processId); + body.put("UserID", "18888888888"); + + String responseBody; + JSONObject endNode; + int failCount = 0; + int maxFail = 40; + + while (true) { + responseBody = CallAPIUtil.doPostJson(apiProperties.getQueryResultUrl(), headers, body); + JSONObject jsonObject = JSON.parseObject(responseBody); + + String status = jsonObject.getString("status"); + if ("success".equals(status)) { + JSONObject nodes = jsonObject.getJSONObject("nodes"); + if (nodes == null) { + throw new RuntimeException("响应中 nodes 为空:" + responseBody); + } + + endNode = findEndNode(nodes); + if (endNode != null) { + break; + } else { + throw new RuntimeException("未找到 nodeType=end 的节点:" + nodes); + } + } else if ("failed".equals(status)) { + // 如果失败 + throw new GlobalException(responseBody); + } else { + // 处理其他状态码 + failCount++; + if (failCount > maxFail) { + throw new GlobalException("达到最大重试次数,API状态仍未成功:" + status); + } + } + + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw new RuntimeException("轮询被中断", e); + } + } + + // 解析 output 内容并清洗 + String outputStr = endNode.getString("output"); + JSONObject output = JSON.parseObject(outputStr); + JSONArray contentArray = output.getJSONArray("content"); + + if (contentArray != null) { + JSONArray cleanedArray = new JSONArray(); + + for (Object item : contentArray) { + if (item instanceof String) { + // 清除 [xxx] 样式的标记 + String cleaned = ((String) item).replaceAll("\\[.*?\\]", "").trim(); + cleanedArray.add(cleaned); + } else { + cleanedArray.add(item); // 非字符串内容原样保留 + } + } + + return cleanedArray.toJSONString(); + } else { + return output.toJSONString(); // 没有 content 字段就返回整个 output + } + } + + /** + * 从 nodes 中提取 nodeType=end 的节点 + */ + private JSONObject findEndNode(JSONObject nodes) { + for (Map.Entry entry : nodes.entrySet()) { + JSONObject node = (JSONObject) entry.getValue(); + if ("end".equalsIgnoreCase(node.getString("nodeType"))) { + return node; + } + } + return null; + } + +} \ No newline at end of file diff --git a/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/service/impl/ShowIntelligentCockpitServiceImpl.java b/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/service/impl/ShowIntelligentCockpitServiceImpl.java new file mode 100644 index 0000000..3aefbf6 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/service/impl/ShowIntelligentCockpitServiceImpl.java @@ -0,0 +1,384 @@ +package com.cmvr.llm.service.impl; + +import cn.hutool.core.io.resource.Resource; +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.cmvr.common.exception.GlobalException; +import com.cmvr.common.utils.http.CallAPIUtil; +import com.cmvr.common.utils.uuid.IdUtils; +import com.cmvr.llm.config.APIProperties; +import com.cmvr.llm.model.CallAgentAdvancedVO; +import com.cmvr.llm.model.CallAgentVO; +import com.cmvr.llm.model.CallTTSAdvancedVO; +import com.cmvr.llm.model.CallTTSVO; +import com.cmvr.llm.service.LargeModelRemoteService; +import com.cmvr.llm.service.ShowIntelligentCockpitService; +import com.cmvr.llm.util.LargeModelFileUploadUtil; +import lombok.RequiredArgsConstructor; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.util.UriUtils; + +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.nio.charset.StandardCharsets; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@Service +@RequiredArgsConstructor +public class ShowIntelligentCockpitServiceImpl implements ShowIntelligentCockpitService { + + private final APIProperties apiProperties; + private final LargeModelRemoteService largeModelRemoteService; + private final RedisTemplate redisTemplate; + private static final String TIMBRE_CONFIG_KEY = "show:tts:timbre"; + + /** + * 创建音色 + */ + @Override + public String createTimbre(MultipartFile file) { + String originalFilename = file.getOriginalFilename(); + if (!StrUtil.endWith(originalFilename, ".wav") && !StrUtil.endWith(originalFilename, ".m4a")) { + throw new GlobalException("音频文件的类型必须为 .wav 或者 .m4a"); + } + // 上传文件 + String url = "http://10.148.108.16:8000/upload_file"; + HttpResponse response = HttpRequest.post(url) + .form("file", new Resource() { + @Override + public String getName() { + return file.getOriginalFilename(); + } + + @Override + public URL getUrl() { + return null; + } + + @Override + public InputStream getStream() { + try { + return file.getInputStream(); + } catch (IOException e) { + throw new GlobalException(e.getMessage()); + } + } + }) + .timeout(5000) + .execute(); + String body = response.body(); + JSONObject object = JSON.parseObject(body); + String filename = object.getString("filename"); + if (StrUtil.isEmpty(filename)) { + throw new GlobalException("文件上传失败,未获取到文件名!"); + } + // 保存音色 + redisTemplate.opsForHash().put(TIMBRE_CONFIG_KEY, IdUtils.fastSimpleUUID(), StrUtil.subBefore(filename, StrUtil.DOT, false)); + + return filename; + } + + /** + * 查询音色和方言 + */ + @Override + public List queryTimbre() { + return redisTemplate.opsForHash().entries(TIMBRE_CONFIG_KEY) + .values() + .stream() + .filter(value -> value instanceof String) + .map(Object::toString) + .collect(Collectors.toList()); + } + + /** + * 生成语料 + */ + @Override + public String genCorpus(CallAgentVO callAgentVO) { + return largeModelRemoteService.runSpeechToTextWorkflow(callAgentVO); + } + + /** + * 语音合成 + */ + @Override + public ResponseEntity synthesizeAudio(CallTTSVO callTTSVO) { + // 1. 构建请求体 + Map body = new HashMap<>(); + body.put("text", callTTSVO.getText()); + body.put("dialect", callTTSVO.getDialect()); + body.put("timbre", callTTSVO.getTimbre()); + + // 2. 发送请求到语音合成服务 + HttpResponse response = HttpRequest.post("http://10.148.108.16:8000/generate_audio") + .header("Content-Type", "application/json") + .body(JSON.toJSONString(body)) + .execute(); + + if (!response.isOk()) { + throw new GlobalException("音频生成失败,状态码: " + response.getStatus()); + } + + // 3. 获取音频数据 + byte[] audioData = response.bodyBytes(); + + // 4. 设置响应头:audio/wav + inline 播放 + 文件名 + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.parseMediaType("audio/wav")); + headers.setContentLength(audioData.length); + + // 生成文件名并编码(避免中文乱码) + String rawFilename = callTTSVO.getTimbre() + "_" + callTTSVO.getText() + ".wav"; + String encodedFilename = UriUtils.encode(rawFilename, StandardCharsets.UTF_8); + + headers.set(HttpHeaders.CONTENT_DISPOSITION, "inline; filename=\"" + encodedFilename + "\""); + + return new ResponseEntity<>(audioData, headers, HttpStatus.OK); + } + + /** + * 生成语料-增强 + */ + @Override + public String genCorpusAdvanced(CallAgentAdvancedVO callAgentAdvancedVO) { + Map headers = new HashMap<>(); + headers.put("Apikey", "d0ncehbnjkfk0lg0bnlg"); + + Map body = new HashMap<>(); + body.put("AppKey", "d0ncehbnjkfk0lg0bnlg"); + body.put("AppID", "d0nce8bnjkfk0lg0bg60"); + body.put("InputData", JSON.toJSONString(callAgentAdvancedVO)); + body.put("UserID", "18888888888"); + + String res = CallAPIUtil.doPostJson(apiProperties.getSpeechToTextUrl(), headers, body); + JSONObject resObject = JSON.parseObject(res); + + if (resObject.containsKey("runId")) { + String processId = resObject.getString("runId"); + return querySpeechToTextResult(processId); + } else { + throw new RuntimeException("未获取到 runId,响应内容:" + res); + } + } + + /** + * 语音合成-增强 + */ + @Override + public ResponseEntity synthesizeAudioAdvanced(CallTTSAdvancedVO callTTSAdvancedVO) { + // 1. 构建请求体 + Map body = new HashMap<>(); + body.put("text", callTTSAdvancedVO.getText()); + body.put("dialect", callTTSAdvancedVO.getDialect()); + body.put("timbre", callTTSAdvancedVO.getTimbre()); + body.put("language", callTTSAdvancedVO.getLanguage()); + body.put("tone", callTTSAdvancedVO.getTone()); + + // 2. 发送请求到语音合成服务 + HttpResponse response = HttpRequest.post("http://10.148.108.16:8000/generate_advanced_audio") + .header("Content-Type", "application/json") + .body(JSON.toJSONString(body)) + .execute(); + + if (!response.isOk()) { + throw new GlobalException("音频生成失败,状态码: " + response.getStatus()); + } + + // 3. 获取音频数据 + byte[] audioData = response.bodyBytes(); + + // 4. 设置响应头:audio/wav + inline 播放 + 文件名 + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.parseMediaType("audio/wav")); + headers.setContentLength(audioData.length); + + // 生成文件名并编码(避免中文乱码) + String rawFilename = callTTSAdvancedVO.getTimbre() + "_" + callTTSAdvancedVO.getText() + ".wav"; + String encodedFilename = UriUtils.encode(rawFilename, StandardCharsets.UTF_8); + + headers.set(HttpHeaders.CONTENT_DISPOSITION, "inline; filename=\"" + encodedFilename + "\""); + + return new ResponseEntity<>(audioData, headers, HttpStatus.OK); + } + + /** + * 获取触控坐标 + */ + @Override + public String getCoordinates(byte[] bytes, String words) throws Exception { + // 先上传图片获取url + String url = LargeModelFileUploadUtil.uploadFile(bytes); + if (StrUtil.isEmpty(url)) { + throw new GlobalException("获取图片url失败!"); + } + + // 调用触控交互接口 + Map params = new HashMap<>(); + String str = + StrUtil.isEmpty(words) ? + "我需要打开应用中心,请给出打开应用中心需要触控的文本或图标,仅输出标定框,输出格式为[x1,y1,x2,y2],其中x1,y1为标定框左上角的坐标,x2,y2为标定框右下角的坐标" : words; + params.put("user_data", str); + params.put("user_image", url); + + Map headers = new HashMap<>(); + headers.put("Apikey", "d0jas9jnjkfk0lm3bl9g"); + + Map body = new HashMap<>(); + body.put("AppKey", "d0jas9jnjkfk0lm3bl9g"); + body.put("AppID", "d0ja89bnjkfk0lm31tcg"); + body.put("InputData", JSON.toJSONString(params)); + body.put("UserID", "18888888888"); + + String res1 = CallAPIUtil.doPostJson(apiProperties.getSpeechToTextUrl(), headers, body); + JSONObject resObject1 = JSON.parseObject(res1); + if (resObject1.containsKey("runId")) { + String processId = resObject1.getString("runId"); + return queryResultByRunId(processId); + } else { + throw new GlobalException("未获取到 runId,响应内容:" + res1); + } + } + + private String queryResultByRunId(String processId) { + Map headers = new HashMap<>(); + headers.put("Apikey", "d0jas9jnjkfk0lm3bl9g"); + + Map body = new HashMap<>(); + body.put("AppKey", "d0jas9jnjkfk0lm3bl9g"); + body.put("AppID", "d0ja89bnjkfk0lm31tcg"); + body.put("RunID", processId); + body.put("UserID", "18888888888"); + + String responseBody; + JSONObject endNode; + int failCount = 0; + int maxFail = 40; + + while (true) { + responseBody = CallAPIUtil.doPostJson(apiProperties.getQueryResultUrl(), headers, body); + JSONObject jsonObject = JSON.parseObject(responseBody); + + String status = jsonObject.getString("status"); + if ("success".equals(status)) { + JSONObject nodes = jsonObject.getJSONObject("nodes"); + if (nodes == null) { + throw new GlobalException("响应中 nodes 为空:" + responseBody); + } + + endNode = findEndNode(nodes); + if (endNode != null) { + break; + } else { + throw new GlobalException("未找到 nodeType=end 的节点:" + nodes); + } + } else if ("failed".equals(status)) { + // 如果失败 + throw new GlobalException(responseBody); + } else { + // 处理其他状态码 + failCount++; + if (failCount > maxFail) { + throw new GlobalException("达到最大重试次数,API状态仍未成功:" + status); + } + } + + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw new GlobalException("轮询被中断"); + } + } + + // 解析 output 内容并清洗 + JSONObject output = endNode.getJSONObject("output"); + String res = output.getString("content"); + if (StrUtil.isEmpty(res)) { + throw new GlobalException("未找到坐标内容"); + } + return res; + } + + /** + * 从 nodes 中提取 nodeType=end 的节点 + */ + private JSONObject findEndNode(JSONObject nodes) { + for (Map.Entry entry : nodes.entrySet()) { + JSONObject node = (JSONObject) entry.getValue(); + if ("end".equalsIgnoreCase(node.getString("nodeType"))) { + return node; + } + } + return null; + } + + public String querySpeechToTextResult(String processId) { + Map headers = new HashMap<>(); + headers.put("Apikey", "d0ncehbnjkfk0lg0bnlg"); + + Map body = new HashMap<>(); + body.put("AppKey", "d0ncehbnjkfk0lg0bnlg"); + body.put("AppID", "d0nce8bnjkfk0lg0bg60"); + body.put("RunID", processId); + body.put("UserID", "18888888888"); + + String responseBody; + JSONObject endNode; + int failCount = 0; + int maxFail = 40; + + while (true) { + responseBody = CallAPIUtil.doPostJson(apiProperties.getQueryResultUrl(), headers, body); + JSONObject jsonObject = JSON.parseObject(responseBody); + + String status = jsonObject.getString("status"); + if ("success".equals(status)) { + JSONObject nodes = jsonObject.getJSONObject("nodes"); + if (nodes == null) { + throw new RuntimeException("响应中 nodes 为空:" + responseBody); + } + + endNode = findEndNode(nodes); + if (endNode != null) { + break; + } else { + throw new RuntimeException("未找到 nodeType=end 的节点:" + nodes); + } + }else if ("failed".equals(status)) { + // 如果失败 + throw new GlobalException(responseBody); + } else { + // 处理其他状态码 + failCount++; + if (failCount > maxFail) { + throw new GlobalException("达到最大重试次数,API状态仍未成功:" + status); + } + } + + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw new RuntimeException("轮询被中断", e); + } + } + + // 解析 output 内容并清洗 + JSONObject output = JSON.parseObject(endNode.getString("output")); + return output.getString("content"); + } +} diff --git a/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/util/CarPathFinderUtil.java b/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/util/CarPathFinderUtil.java new file mode 100644 index 0000000..f50041d --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/util/CarPathFinderUtil.java @@ -0,0 +1,103 @@ +package com.cmvr.llm.util; + +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; +import com.cmvr.llm.model.CarIcon; +import com.cmvr.llm.model.CarUi; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Queue; +import java.util.Set; + + +/** + * 路径查找相关工具类 + */ +public class CarPathFinderUtil { + + /** + * 从 JSONArray 构建 UI 图结构(Map) + * + * @param jsonData JSON 数组,格式包含界面和图标数据 + * @return Map<界面名称, CarUi对象> + */ + public static Map buildUiMapFromJson(JSONArray jsonData) { + Map uiMap = new HashMap<>(); + + for (int i = 0; i < jsonData.size(); i++) { + JSONObject node = jsonData.getJSONObject(i); + CarUi ui = new CarUi( + node.getString("ui_name"), + node.getString("ui_image"), + new ArrayList<>() + ); + + JSONArray iconArray = node.getJSONArray("icons"); + if (iconArray != null) { + for (int j = 0; j < iconArray.size(); j++) { + JSONObject iconNode = iconArray.getJSONObject(j); + CarIcon icon = new CarIcon( + iconNode.getString("icon_name"), + iconNode.getString("icon_image"), + iconNode.getString("icon_desc"), + iconNode.getString("icon_feature"), + iconNode.getString("jump") + ); + ui.getIcons().add(icon); + } + } + + uiMap.put(ui.getUiName(), ui); + } + + return uiMap; + } + + /** + * 使用 BFS 算法查找从起始 UI 到目标功能的路径 + * + * @param uiMap UI 图结构 + * @param startUi 起始界面名称 + * @param targetFeature 目标功能名称(对应 iconName) + * @return 路径(图标序列),找不到则返回 null + */ + public static List findPath(Map uiMap, String startUi, String targetFeature) { + Set visited = new HashSet<>(); + Queue> queue = new LinkedList<>(); + queue.add(new ArrayList<>()); + + while (!queue.isEmpty()) { + List currentPath = queue.poll(); + String currentUiName = currentPath.isEmpty() + ? startUi + : currentPath.get(currentPath.size() - 1).getJump(); + + CarUi currentUi = uiMap.get(currentUiName); + if (currentUi == null) { + continue; + } + + for (CarIcon icon : currentUi.getIcons()) { + if (icon.getIconName().equals(targetFeature)) { + currentPath.add(icon); + return currentPath; + } + + String jump = icon.getJump(); + if (jump != null && !visited.contains(jump)) { + visited.add(jump); + List newPath = new ArrayList<>(currentPath); + newPath.add(icon); + queue.add(newPath); + } + } + } + + return null; + } +} diff --git a/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/util/LargeModelFileUploadUtil.java b/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/util/LargeModelFileUploadUtil.java new file mode 100644 index 0000000..9defc76 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/util/LargeModelFileUploadUtil.java @@ -0,0 +1,204 @@ +package com.cmvr.llm.util; + +import cn.hutool.crypto.digest.DigestUtil; +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.volcengine.auth.ISignerV4; +import com.volcengine.auth.impl.SignerV4Impl; +import com.volcengine.model.Credentials; +import com.volcengine.service.SignableRequest; +import org.apache.http.client.utils.URIBuilder; +import org.apache.http.entity.ByteArrayEntity; +import org.apache.http.entity.ContentType; +import org.apache.http.util.Asserts; +import org.jetbrains.annotations.NotNull; + +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URISyntaxException; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.logging.Logger; + +/** + * 大模型文件上传工具类。 + * 用于处理大模型相关接口中涉及文件上传的场景。该工具类封装了文件上传逻辑, + * 并返回可用于后续调用的文件下载链接。大模型服务可通过该链接获取上传的文件进行处理。 + * 使用方式: + * 1. 调用 {@link #uploadFile(byte[])} 方法上传文件数据; + * 2. 获取返回的文件下载 URL; + * 3. 将该 URL 作为参数传递给大模型接口进行后续处理。 + * 注:文件与2小时过期 + */ +public class LargeModelFileUploadUtil { + + public static final String ACCESS_KEY_ID = "AKLTZjdkZThhNzk0MjFlNDI5ZWJiYWZiYzQzM2Q0ZTYzOTg"; + public static final String SECRET_ACCESS_KEY = "WlRrMVlqa3dOakkzTUdZMU5EbGpZV0ptWm1SbE1qRXlNR1ptWmpjMU56TQ=="; + public static final String HOST = "https://opensseapi.cmhk.com/aiagentplatformSDK_v1/aiagentplatformSDK/up"; + public static final String VERSION = "2022-01-01"; + public static final String SERVICE_NAME = "app"; + public static final String ACTION_NAME = "UploadRaw"; + // 过期时间2小时 + private static final String EXPIRE = "2h"; + private static final String REGION = "cn-north-1"; + private static final String BASE_DOWNLOAD_URL = "https://aiagentplatform.cmft.com/api/proxy/down?Action=Download&Version=2022-01-01"; + private static final String X_GATEWAY_APIKEY = "Bearer ZjhiODA1MDctYzJjOS00MTEzLWI0ZGYtNTQ4ZTc3MTk1MTAz"; + + private static final Logger logger = Logger.getLogger(LargeModelFileUploadUtil.class.getName()); + + // 私有构造函数防止实例化 + private LargeModelFileUploadUtil() { + throw new UnsupportedOperationException("Utility class"); + } + + /** + * 发送字节数据并返回下载URL + * + * @param data 字节数据 + * @return 下载URL + * @throws Exception 异常 + */ + public static String uploadFile(byte[] data) throws Exception { + SignableRequest signableRequest = getSignableRequest(data); + ISignerV4 signer = new SignerV4Impl(); + Credentials credentials = initCredentials(); + signer.sign(signableRequest, credentials); + Asserts.notNull(signableRequest, "signableRequest can not null"); + + String contentSha256 = DigestUtil.sha256Hex(data); + + HttpResponse response = HttpRequest.post(signableRequest.getURI().toString()) + .header("Content-Type", ContentType.APPLICATION_JSON.getMimeType()) + .header("x-gateway-apikey", X_GATEWAY_APIKEY) + .header("X-Content-Sha256", contentSha256) + .body(data) + .execute(); + + return buildDownloadUrl(response.body()); + } + + /** + * 初始化凭证 + * + * @return 凭证对象 + */ + private static Credentials initCredentials() { + Credentials credentials = new Credentials(); + credentials.setAccessKeyID(ACCESS_KEY_ID); + credentials.setSecretAccessKey(SECRET_ACCESS_KEY); + credentials.setRegion(REGION); + credentials.setService(SERVICE_NAME); + return credentials; + } + + /** + * 获取签名请求 + * + * @param data 请求数据 + * @return 签名请求 + * @throws URISyntaxException URI语法异常 + */ + private static @NotNull SignableRequest getSignableRequest(byte[] data) throws URISyntaxException { + String url = buildUrl(); + SignableRequest signableRequest = new SignableRequest(); + signableRequest.setMethod("POST"); + URIBuilder uriBuilder = new URIBuilder(url); + signableRequest.setHeader("Content-Type", ContentType.APPLICATION_JSON.getMimeType()); + signableRequest.setHeader("x-gateway-apikey", X_GATEWAY_APIKEY); + signableRequest.setEntity(new ByteArrayEntity(data, ContentType.APPLICATION_JSON)); + signableRequest.setUriBuilder(uriBuilder); + signableRequest.setURI(uriBuilder.build()); + return signableRequest; + } + + /** + * 构建请求URL + * + * @return 请求URL + */ + private static String buildUrl() { + return HOST + "?Expire=" + EXPIRE + "&Action=" + ACTION_NAME + "&Version=" + VERSION + "&Id=" + "8a2c5aa0-6e62-c405-6150-a3136146a616"; + } + + /** + * 构建下载URL + * + * @param responseBody 响应体 + * @return 下载URL + */ + private static String buildDownloadUrl(String responseBody) { + try { + JSONObject result = JSON.parseObject(responseBody).getJSONObject("Result"); + if (result == null || !result.containsKey("Path")) { + logger.warning("Result or Path is missing in response body."); + return null; + } + + Object pathObj = result.get("Path"); + if (pathObj == null) { + logger.warning("Path value is null."); + return null; + } + + String path = pathObj.toString(); + String encodedPath = URLEncoder.encode(path, "UTF-8"); + + return BASE_DOWNLOAD_URL + "&Path=" + encodedPath + "&IsAnonymous=true"; + } catch (UnsupportedEncodingException e) { + logger.severe("Encoding failed: " + e.getMessage()); + return null; + } catch (Exception e) { + logger.severe("Error parsing response body: " + e.getMessage()); + return null; + } + } + + public static String getStringFromFile(String filePath) throws IOException { + return new String(Files.readAllBytes(Paths.get(filePath)), StandardCharsets.UTF_8); + } + + public static void main(String[] args) throws Exception { + + // 1. 构建请求体 + String knowledgeBasePath = "D:\\desktop\\test.txt"; // 确保这是正确的路径 + String knowledgeBasePath2 = "D:\\desktop\\test.json"; // 确保这是正确的路径 + String knowledgeBaseContent = getStringFromFile(knowledgeBasePath); + String knowledgeBaseContent2 = getStringFromFile(knowledgeBasePath2); + + Map messages = new HashMap<>(); + messages.put("role", "system"); + messages.put("content", knowledgeBaseContent); + + Map messages2 = new HashMap<>(); + messages.put("role", "system"); + messages.put("content", knowledgeBaseContent2); + + Map userMessage = new HashMap<>(); + userMessage.put("role", "user"); + userMessage.put("content", "根据知识库回答,我现在在首页,我需要打开空调"); + List> messageList = new ArrayList<>(); + messageList.add( messages); + messageList.add( messages2); + messageList.add(userMessage); + Map body = new HashMap<>(); + body.put("messages", messageList); + body.put("model", "deepseek-r1:7b"); + body.put("stream", false); + + // 2. 发送请求到语音合成服务 + HttpResponse response = HttpRequest.post("http://10.148.108.16:11434/api/chat") + .header("Content-Type", "application/json") + .body(com.alibaba.fastjson2.JSON.toJSONString(body)) + .execute(); + System.out.println(response); + } + +} \ No newline at end of file diff --git a/cmvr-iot-api/pom.xml b/cmvr-iot-api/pom.xml new file mode 100644 index 0000000..a592b44 --- /dev/null +++ b/cmvr-iot-api/pom.xml @@ -0,0 +1,22 @@ + + + 4.0.0 + + com.cmvr + cmvr-iot + 3.8.9 + + + cmvr-iot-api + pom + 三方api调用模块 + + cmvr-iot-llm + cmvr-iot-edge + + + + + \ No newline at end of file diff --git a/cmvr-iot-common/pom.xml b/cmvr-iot-common/pom.xml new file mode 100644 index 0000000..696bcf3 --- /dev/null +++ b/cmvr-iot-common/pom.xml @@ -0,0 +1,159 @@ + + + + cmvr-iot + com.cmvr + 3.8.9 + + 4.0.0 + + cmvr-iot-common + + + common通用工具 + + + + + + + org.springframework + spring-context-support + + + + + org.springframework + spring-web + + + + + org.springframework.boot + spring-boot-starter-security + + + + + com.github.pagehelper + pagehelper-spring-boot-starter + + + + + org.springframework.boot + spring-boot-starter-validation + + + + + org.apache.commons + commons-lang3 + + + + + com.fasterxml.jackson.core + jackson-databind + + + + + com.alibaba.fastjson2 + fastjson2 + + + + + commons-io + commons-io + + + + + org.apache.poi + poi-ooxml + + + + + org.yaml + snakeyaml + + + + + io.jsonwebtoken + jjwt + + + + + javax.xml.bind + jaxb-api + + + + + org.springframework.boot + spring-boot-starter-data-redis + + + + + org.apache.commons + commons-pool2 + + + + + eu.bitwalker + UserAgentUtils + + + + + javax.servlet + javax.servlet-api + + + + + com.baomidou + mybatis-plus-boot-starter + + + + + com.github.yulichang + mybatis-plus-join-boot-starter + + + + + org.projectlombok + lombok + + + + + cn.hutool + hutool-all + + + + + com.github.xiaoymin + knife4j-spring-boot-starter + + + + + io.minio + minio + + + + diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/annotation/Anonymous.java b/cmvr-iot-common/src/main/java/com/cmvr/common/annotation/Anonymous.java new file mode 100644 index 0000000..738d35f --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/annotation/Anonymous.java @@ -0,0 +1,19 @@ +package com.cmvr.common.annotation; + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * 匿名访问不鉴权注解 + * + * @author cmvrIot + */ +@Target({ ElementType.METHOD, ElementType.TYPE }) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface Anonymous +{ +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/annotation/DataScope.java b/cmvr-iot-common/src/main/java/com/cmvr/common/annotation/DataScope.java new file mode 100644 index 0000000..9fb105c --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/annotation/DataScope.java @@ -0,0 +1,33 @@ +package com.cmvr.common.annotation; + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * 数据权限过滤注解 + * + * @author cmvrIot + */ +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface DataScope +{ + /** + * 部门表的别名 + */ + public String deptAlias() default ""; + + /** + * 用户表的别名 + */ + public String userAlias() default ""; + + /** + * 权限字符(用于多个角色匹配符合要求的权限)默认根据权限注解@ss获取,多个权限用逗号分隔开来 + */ + public String permission() default ""; +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/annotation/DataSource.java b/cmvr-iot-common/src/main/java/com/cmvr/common/annotation/DataSource.java new file mode 100644 index 0000000..986d4bb --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/annotation/DataSource.java @@ -0,0 +1,28 @@ +package com.cmvr.common.annotation; + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +import com.cmvr.common.enums.DataSourceType; + +/** + * 自定义多数据源切换注解 + * + * 优先级:先方法,后类,如果方法覆盖了类上的数据源类型,以方法的为准,否则以类上的为准 + * + * @author cmvrIot + */ +@Target({ ElementType.METHOD, ElementType.TYPE }) +@Retention(RetentionPolicy.RUNTIME) +@Documented +@Inherited +public @interface DataSource +{ + /** + * 切换数据源名称 + */ + public DataSourceType value() default DataSourceType.MASTER; +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/annotation/Excel.java b/cmvr-iot-common/src/main/java/com/cmvr/common/annotation/Excel.java new file mode 100644 index 0000000..5a6be63 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/annotation/Excel.java @@ -0,0 +1,197 @@ +package com.cmvr.common.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +import java.math.BigDecimal; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.apache.poi.ss.usermodel.IndexedColors; +import com.cmvr.common.utils.poi.ExcelHandlerAdapter; + +/** + * 自定义导出Excel数据注解 + * + * @author cmvrIot + */ +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.FIELD) +public @interface Excel +{ + /** + * 导出时在excel中排序 + */ + public int sort() default Integer.MAX_VALUE; + + /** + * 导出到Excel中的名字. + */ + public String name() default ""; + + /** + * 日期格式, 如: yyyy-MM-dd + */ + public String dateFormat() default ""; + + /** + * 如果是字典类型,请设置字典的type值 (如: sys_user_sex) + */ + public String dictType() default ""; + + /** + * 读取内容转表达式 (如: 0=男,1=女,2=未知) + */ + public String readConverterExp() default ""; + + /** + * 分隔符,读取字符串组内容 + */ + public String separator() default ","; + + /** + * BigDecimal 精度 默认:-1(默认不开启BigDecimal格式化) + */ + public int scale() default -1; + + /** + * BigDecimal 舍入规则 默认:BigDecimal.ROUND_HALF_EVEN + */ + public int roundingMode() default BigDecimal.ROUND_HALF_EVEN; + + /** + * 导出时在excel中每个列的高度 + */ + public double height() default 14; + + /** + * 导出时在excel中每个列的宽度 + */ + public double width() default 16; + + /** + * 文字后缀,如% 90 变成90% + */ + public String suffix() default ""; + + /** + * 当值为空时,字段的默认值 + */ + public String defaultValue() default ""; + + /** + * 提示信息 + */ + public String prompt() default ""; + + /** + * 是否允许内容换行 + */ + public boolean wrapText() default false; + + /** + * 设置只能选择不能输入的列内容. + */ + public String[] combo() default {}; + + /** + * 是否从字典读数据到combo,默认不读取,如读取需要设置dictType注解. + */ + public boolean comboReadDict() default false; + + /** + * 是否需要纵向合并单元格,应对需求:含有list集合单元格) + */ + public boolean needMerge() default false; + + /** + * 是否导出数据,应对需求:有时我们需要导出一份模板,这是标题需要但内容需要用户手工填写. + */ + public boolean isExport() default true; + + /** + * 另一个类中的属性名称,支持多级获取,以小数点隔开 + */ + public String targetAttr() default ""; + + /** + * 是否自动统计数据,在最后追加一行统计数据总和 + */ + public boolean isStatistics() default false; + + /** + * 导出类型(0数字 1字符串 2图片) + */ + public ColumnType cellType() default ColumnType.STRING; + + /** + * 导出列头背景颜色 + */ + public IndexedColors headerBackgroundColor() default IndexedColors.GREY_50_PERCENT; + + /** + * 导出列头字体颜色 + */ + public IndexedColors headerColor() default IndexedColors.WHITE; + + /** + * 导出单元格背景颜色 + */ + public IndexedColors backgroundColor() default IndexedColors.WHITE; + + /** + * 导出单元格字体颜色 + */ + public IndexedColors color() default IndexedColors.BLACK; + + /** + * 导出字段对齐方式 + */ + public HorizontalAlignment align() default HorizontalAlignment.CENTER; + + /** + * 自定义数据处理器 + */ + public Class handler() default ExcelHandlerAdapter.class; + + /** + * 自定义数据处理器参数 + */ + public String[] args() default {}; + + /** + * 字段类型(0:导出导入;1:仅导出;2:仅导入) + */ + Type type() default Type.ALL; + + public enum Type + { + ALL(0), EXPORT(1), IMPORT(2); + private final int value; + + Type(int value) + { + this.value = value; + } + + public int value() + { + return this.value; + } + } + + public enum ColumnType + { + NUMERIC(0), STRING(1), IMAGE(2), TEXT(3); + private final int value; + + ColumnType(int value) + { + this.value = value; + } + + public int value() + { + return this.value; + } + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/annotation/Excels.java b/cmvr-iot-common/src/main/java/com/cmvr/common/annotation/Excels.java new file mode 100644 index 0000000..98e9574 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/annotation/Excels.java @@ -0,0 +1,18 @@ +package com.cmvr.common.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Excel注解集 + * + * @author cmvrIot + */ +@Target(ElementType.FIELD) +@Retention(RetentionPolicy.RUNTIME) +public @interface Excels +{ + public Excel[] value(); +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/annotation/Log.java b/cmvr-iot-common/src/main/java/com/cmvr/common/annotation/Log.java new file mode 100644 index 0000000..0f6f4ce --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/annotation/Log.java @@ -0,0 +1,51 @@ +package com.cmvr.common.annotation; + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +import com.cmvr.common.enums.BusinessType; +import com.cmvr.common.enums.OperatorType; + +/** + * 自定义操作日志记录注解 + * + * @author cmvrIot + * + */ +@Target({ ElementType.PARAMETER, ElementType.METHOD }) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface Log +{ + /** + * 模块 + */ + public String title() default ""; + + /** + * 功能 + */ + public BusinessType businessType() default BusinessType.OTHER; + + /** + * 操作人类别 + */ + public OperatorType operatorType() default OperatorType.MANAGE; + + /** + * 是否保存请求的参数 + */ + public boolean isSaveRequestData() default true; + + /** + * 是否保存响应的参数 + */ + public boolean isSaveResponseData() default true; + + /** + * 排除指定的请求参数 + */ + public String[] excludeParamNames() default {}; +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/annotation/RateLimiter.java b/cmvr-iot-common/src/main/java/com/cmvr/common/annotation/RateLimiter.java new file mode 100644 index 0000000..a9595c2 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/annotation/RateLimiter.java @@ -0,0 +1,40 @@ +package com.cmvr.common.annotation; + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +import com.cmvr.common.constant.CacheConstants; +import com.cmvr.common.enums.LimitType; + +/** + * 限流注解 + * + * @author cmvrIot + */ +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface RateLimiter +{ + /** + * 限流key + */ + public String key() default CacheConstants.RATE_LIMIT_KEY; + + /** + * 限流时间,单位秒 + */ + public int time() default 60; + + /** + * 限流次数 + */ + public int count() default 100; + + /** + * 限流类型 + */ + public LimitType limitType() default LimitType.DEFAULT; +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/annotation/RepeatSubmit.java b/cmvr-iot-common/src/main/java/com/cmvr/common/annotation/RepeatSubmit.java new file mode 100644 index 0000000..971f111 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/annotation/RepeatSubmit.java @@ -0,0 +1,31 @@ +package com.cmvr.common.annotation; + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * 自定义注解防止表单重复提交 + * + * @author cmvrIot + * + */ +@Inherited +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface RepeatSubmit +{ + /** + * 间隔时间(ms),小于此时间视为重复提交 + */ + public int interval() default 5000; + + /** + * 提示消息 + */ + public String message() default "不允许重复提交,请稍候再试"; +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/annotation/Sensitive.java b/cmvr-iot-common/src/main/java/com/cmvr/common/annotation/Sensitive.java new file mode 100644 index 0000000..8456fa6 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/annotation/Sensitive.java @@ -0,0 +1,24 @@ +package com.cmvr.common.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +import com.fasterxml.jackson.annotation.JacksonAnnotationsInside; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.cmvr.common.config.serializer.SensitiveJsonSerializer; +import com.cmvr.common.enums.DesensitizedType; + +/** + * 数据脱敏注解 + * + * @author cmvrIot + */ +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.FIELD) +@JacksonAnnotationsInside +@JsonSerialize(using = SensitiveJsonSerializer.class) +public @interface Sensitive +{ + DesensitizedType desensitizedType(); +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/config/CmvrIotConfig.java b/cmvr-iot-common/src/main/java/com/cmvr/common/config/CmvrIotConfig.java new file mode 100644 index 0000000..0d7c55f --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/config/CmvrIotConfig.java @@ -0,0 +1,122 @@ +package com.cmvr.common.config; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * 读取项目相关配置 + * + * @author cmvr-iot + */ +@Component +@ConfigurationProperties(prefix = "cmvr-iot") +public class CmvrIotConfig +{ + /** 项目名称 */ + private String name; + + /** 版本 */ + private String version; + + /** 版权年份 */ + private String copyrightYear; + + /** 上传路径 */ + private static String profile; + + /** 获取地址开关 */ + private static boolean addressEnabled; + + /** 验证码类型 */ + private static String captchaType; + + public String getName() + { + return name; + } + + public void setName(String name) + { + this.name = name; + } + + public String getVersion() + { + return version; + } + + public void setVersion(String version) + { + this.version = version; + } + + public String getCopyrightYear() + { + return copyrightYear; + } + + public void setCopyrightYear(String copyrightYear) + { + this.copyrightYear = copyrightYear; + } + + public static String getProfile() + { + return profile; + } + + public void setProfile(String profile) + { + CmvrIotConfig.profile = profile; + } + + public static boolean isAddressEnabled() + { + return addressEnabled; + } + + public void setAddressEnabled(boolean addressEnabled) + { + CmvrIotConfig.addressEnabled = addressEnabled; + } + + public static String getCaptchaType() { + return captchaType; + } + + public void setCaptchaType(String captchaType) { + CmvrIotConfig.captchaType = captchaType; + } + + /** + * 获取导入上传路径 + */ + public static String getImportPath() + { + return getProfile() + "/import"; + } + + /** + * 获取头像上传路径 + */ + public static String getAvatarPath() + { + return getProfile() + "/avatar"; + } + + /** + * 获取下载路径 + */ + public static String getDownloadPath() + { + return getProfile() + "/download/"; + } + + /** + * 获取上传路径 + */ + public static String getUploadPath() + { + return getProfile() + "/upload"; + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/config/MinIoClientConfig.java b/cmvr-iot-common/src/main/java/com/cmvr/common/config/MinIoClientConfig.java new file mode 100644 index 0000000..bcd11a6 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/config/MinIoClientConfig.java @@ -0,0 +1,19 @@ +package com.cmvr.common.config; + +import com.cmvr.common.config.properties.MinioProperties; +import io.minio.MinioClient; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class MinIoClientConfig { + + @Bean + public MinioClient minioClient(MinioProperties minioProps) { + // 注入minio 客户端 + return MinioClient.builder() + .endpoint(minioProps.getUrl()) + .credentials(minioProps.getAccessKey(), minioProps.getSecretKey()) + .build(); + } +} \ No newline at end of file diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/config/properties/MinioProperties.java b/cmvr-iot-common/src/main/java/com/cmvr/common/config/properties/MinioProperties.java new file mode 100644 index 0000000..00ae88b --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/config/properties/MinioProperties.java @@ -0,0 +1,24 @@ +package com.cmvr.common.config.properties; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * minio 配置属性 + * + * @author cmvr-iot + */ +@Data +@Component +@ConfigurationProperties(prefix = "minio") +public class MinioProperties { + + private String url; + + private String accessKey; + + private String secretKey; + + private String bucketName; +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/config/serializer/SensitiveJsonSerializer.java b/cmvr-iot-common/src/main/java/com/cmvr/common/config/serializer/SensitiveJsonSerializer.java new file mode 100644 index 0000000..19a2532 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/config/serializer/SensitiveJsonSerializer.java @@ -0,0 +1,67 @@ +package com.cmvr.common.config.serializer; + +import java.io.IOException; +import java.util.Objects; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.BeanProperty; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.ContextualSerializer; +import com.cmvr.common.annotation.Sensitive; +import com.cmvr.common.core.domain.model.LoginUser; +import com.cmvr.common.enums.DesensitizedType; +import com.cmvr.common.utils.SecurityUtils; + +/** + * 数据脱敏序列化过滤 + * + * @author cmvrIot + */ +public class SensitiveJsonSerializer extends JsonSerializer implements ContextualSerializer +{ + private DesensitizedType desensitizedType; + + @Override + public void serialize(String value, JsonGenerator gen, SerializerProvider serializers) throws IOException + { + if (desensitization()) + { + gen.writeString(desensitizedType.desensitizer().apply(value)); + } + else + { + gen.writeString(value); + } + } + + @Override + public JsonSerializer createContextual(SerializerProvider prov, BeanProperty property) + throws JsonMappingException + { + Sensitive annotation = property.getAnnotation(Sensitive.class); + if (Objects.nonNull(annotation) && Objects.equals(String.class, property.getType().getRawClass())) + { + this.desensitizedType = annotation.desensitizedType(); + return this; + } + return prov.findValueSerializer(property.getType(), property); + } + + /** + * 是否需要脱敏处理 + */ + private boolean desensitization() + { + try + { + LoginUser securityUser = SecurityUtils.getLoginUser(); + // 管理员不脱敏 + return !securityUser.getUser().isAdmin(); + } + catch (Exception e) + { + return true; + } + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/constant/CacheConstants.java b/cmvr-iot-common/src/main/java/com/cmvr/common/constant/CacheConstants.java new file mode 100644 index 0000000..e2d39b1 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/constant/CacheConstants.java @@ -0,0 +1,44 @@ +package com.cmvr.common.constant; + +/** + * 缓存的key 常量 + * + * @author cmvrIot + */ +public class CacheConstants +{ + /** + * 登录用户 redis key + */ + public static final String LOGIN_TOKEN_KEY = "login_tokens:"; + + /** + * 验证码 redis key + */ + public static final String CAPTCHA_CODE_KEY = "captcha_codes:"; + + /** + * 参数管理 cache key + */ + public static final String SYS_CONFIG_KEY = "sys_config:"; + + /** + * 字典管理 cache key + */ + public static final String SYS_DICT_KEY = "sys_dict:"; + + /** + * 防重提交 redis key + */ + public static final String REPEAT_SUBMIT_KEY = "repeat_submit:"; + + /** + * 限流 redis key + */ + public static final String RATE_LIMIT_KEY = "rate_limit:"; + + /** + * 登录账户密码错误次数 redis key + */ + public static final String PWD_ERR_CNT_KEY = "pwd_err_cnt:"; +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/constant/Constants.java b/cmvr-iot-common/src/main/java/com/cmvr/common/constant/Constants.java new file mode 100644 index 0000000..ca8c366 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/constant/Constants.java @@ -0,0 +1,173 @@ +package com.cmvr.common.constant; + +import java.util.Locale; +import io.jsonwebtoken.Claims; + +/** + * 通用常量信息 + * + * @author cmvrIot + */ +public class Constants +{ + /** + * UTF-8 字符集 + */ + public static final String UTF8 = "UTF-8"; + + /** + * GBK 字符集 + */ + public static final String GBK = "GBK"; + + /** + * 系统语言 + */ + public static final Locale DEFAULT_LOCALE = Locale.SIMPLIFIED_CHINESE; + + /** + * www主域 + */ + public static final String WWW = "www."; + + /** + * http请求 + */ + public static final String HTTP = "http://"; + + /** + * https请求 + */ + public static final String HTTPS = "https://"; + + /** + * 通用成功标识 + */ + public static final String SUCCESS = "0"; + + /** + * 通用失败标识 + */ + public static final String FAIL = "1"; + + /** + * 登录成功 + */ + public static final String LOGIN_SUCCESS = "Success"; + + /** + * 注销 + */ + public static final String LOGOUT = "Logout"; + + /** + * 注册 + */ + public static final String REGISTER = "Register"; + + /** + * 登录失败 + */ + public static final String LOGIN_FAIL = "Error"; + + /** + * 所有权限标识 + */ + public static final String ALL_PERMISSION = "*:*:*"; + + /** + * 管理员角色权限标识 + */ + public static final String SUPER_ADMIN = "admin"; + + /** + * 角色权限分隔符 + */ + public static final String ROLE_DELIMETER = ","; + + /** + * 权限标识分隔符 + */ + public static final String PERMISSION_DELIMETER = ","; + + /** + * 验证码有效期(分钟) + */ + public static final Integer CAPTCHA_EXPIRATION = 2; + + /** + * 令牌 + */ + public static final String TOKEN = "token"; + + /** + * 令牌前缀 + */ + public static final String TOKEN_PREFIX = "Bearer "; + + /** + * 令牌前缀 + */ + public static final String LOGIN_USER_KEY = "login_user_key"; + + /** + * 用户ID + */ + public static final String JWT_USERID = "userid"; + + /** + * 用户名称 + */ + public static final String JWT_USERNAME = Claims.SUBJECT; + + /** + * 用户头像 + */ + public static final String JWT_AVATAR = "avatar"; + + /** + * 创建时间 + */ + public static final String JWT_CREATED = "created"; + + /** + * 用户权限 + */ + public static final String JWT_AUTHORITIES = "authorities"; + + /** + * 资源映射路径 前缀 + */ + public static final String RESOURCE_PREFIX = "/profile"; + + /** + * RMI 远程方法调用 + */ + public static final String LOOKUP_RMI = "rmi:"; + + /** + * LDAP 远程方法调用 + */ + public static final String LOOKUP_LDAP = "ldap:"; + + /** + * LDAPS 远程方法调用 + */ + public static final String LOOKUP_LDAPS = "ldaps:"; + + /** + * 自动识别json对象白名单配置(仅允许解析的包名,范围越小越安全) + */ + public static final String[] JSON_WHITELIST_STR = { "org.springframework", "com.cmvr" }; + + /** + * 定时任务白名单配置(仅允许访问的包名,如其他需要可以自行添加) + */ + public static final String[] JOB_WHITELIST_STR = { "com.cmvr.quartz.task" }; + + /** + * 定时任务违规的字符 + */ + public static final String[] JOB_ERROR_STR = { "java.net.URL", "javax.naming.InitialContext", "org.yaml.snakeyaml", + "org.springframework", "org.apache", "com.cmvr.common.utils.file", "com.cmvr.common.config", "com.cmvr.generator" }; +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/constant/GenConstants.java b/cmvr-iot-common/src/main/java/com/cmvr/common/constant/GenConstants.java new file mode 100644 index 0000000..62b646b --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/constant/GenConstants.java @@ -0,0 +1,117 @@ +package com.cmvr.common.constant; + +/** + * 代码生成通用常量 + * + * @author cmvrIot + */ +public class GenConstants +{ + /** 单表(增删改查) */ + public static final String TPL_CRUD = "crud"; + + /** 树表(增删改查) */ + public static final String TPL_TREE = "tree"; + + /** 主子表(增删改查) */ + public static final String TPL_SUB = "sub"; + + /** 树编码字段 */ + public static final String TREE_CODE = "treeCode"; + + /** 树父编码字段 */ + public static final String TREE_PARENT_CODE = "treeParentCode"; + + /** 树名称字段 */ + public static final String TREE_NAME = "treeName"; + + /** 上级菜单ID字段 */ + public static final String PARENT_MENU_ID = "parentMenuId"; + + /** 上级菜单名称字段 */ + public static final String PARENT_MENU_NAME = "parentMenuName"; + + /** 数据库字符串类型 */ + public static final String[] COLUMNTYPE_STR = { "char", "varchar", "nvarchar", "varchar2" }; + + /** 数据库文本类型 */ + public static final String[] COLUMNTYPE_TEXT = { "tinytext", "text", "mediumtext", "longtext" }; + + /** 数据库时间类型 */ + public static final String[] COLUMNTYPE_TIME = { "datetime", "time", "date", "timestamp" }; + + /** 数据库数字类型 */ + public static final String[] COLUMNTYPE_NUMBER = { "tinyint", "smallint", "mediumint", "int", "number", "integer", + "bit", "bigint", "float", "double", "decimal" }; + + /** 页面不需要编辑字段 */ + public static final String[] COLUMNNAME_NOT_EDIT = { "id", "create_by", "create_time", "del_flag" }; + + /** 页面不需要显示的列表字段 */ + public static final String[] COLUMNNAME_NOT_LIST = { "id", "create_by", "create_time", "del_flag", "update_by", + "update_time" }; + + /** 页面不需要查询字段 */ + public static final String[] COLUMNNAME_NOT_QUERY = { "id", "create_by", "create_time", "del_flag", "update_by", + "update_time", "remark" }; + + /** Entity基类字段 */ + public static final String[] BASE_ENTITY = { "createBy", "createTime", "updateBy", "updateTime", "remark" }; + + /** Tree基类字段 */ + public static final String[] TREE_ENTITY = { "parentName", "parentId", "orderNum", "ancestors", "children" }; + + /** 文本框 */ + public static final String HTML_INPUT = "input"; + + /** 文本域 */ + public static final String HTML_TEXTAREA = "textarea"; + + /** 下拉框 */ + public static final String HTML_SELECT = "select"; + + /** 单选框 */ + public static final String HTML_RADIO = "radio"; + + /** 复选框 */ + public static final String HTML_CHECKBOX = "checkbox"; + + /** 日期控件 */ + public static final String HTML_DATETIME = "datetime"; + + /** 图片上传控件 */ + public static final String HTML_IMAGE_UPLOAD = "imageUpload"; + + /** 文件上传控件 */ + public static final String HTML_FILE_UPLOAD = "fileUpload"; + + /** 富文本控件 */ + public static final String HTML_EDITOR = "editor"; + + /** 字符串类型 */ + public static final String TYPE_STRING = "String"; + + /** 整型 */ + public static final String TYPE_INTEGER = "Integer"; + + /** 长整型 */ + public static final String TYPE_LONG = "Long"; + + /** 浮点型 */ + public static final String TYPE_DOUBLE = "Double"; + + /** 高精度计算类型 */ + public static final String TYPE_BIGDECIMAL = "BigDecimal"; + + /** 时间类型 */ + public static final String TYPE_DATE = "Date"; + + /** 模糊查询 */ + public static final String QUERY_LIKE = "LIKE"; + + /** 相等查询 */ + public static final String QUERY_EQ = "EQ"; + + /** 需要 */ + public static final String REQUIRE = "1"; +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/constant/HttpStatus.java b/cmvr-iot-common/src/main/java/com/cmvr/common/constant/HttpStatus.java new file mode 100644 index 0000000..feea3ba --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/constant/HttpStatus.java @@ -0,0 +1,94 @@ +package com.cmvr.common.constant; + +/** + * 返回状态码 + * + * @author cmvrIot + */ +public class HttpStatus +{ + /** + * 操作成功 + */ + public static final int SUCCESS = 200; + + /** + * 对象创建成功 + */ + public static final int CREATED = 201; + + /** + * 请求已经被接受 + */ + public static final int ACCEPTED = 202; + + /** + * 操作已经执行成功,但是没有返回数据 + */ + public static final int NO_CONTENT = 204; + + /** + * 资源已被移除 + */ + public static final int MOVED_PERM = 301; + + /** + * 重定向 + */ + public static final int SEE_OTHER = 303; + + /** + * 资源没有被修改 + */ + public static final int NOT_MODIFIED = 304; + + /** + * 参数列表错误(缺少,格式不匹配) + */ + public static final int BAD_REQUEST = 400; + + /** + * 未授权 + */ + public static final int UNAUTHORIZED = 401; + + /** + * 访问受限,授权过期 + */ + public static final int FORBIDDEN = 403; + + /** + * 资源,服务未找到 + */ + public static final int NOT_FOUND = 404; + + /** + * 不允许的http方法 + */ + public static final int BAD_METHOD = 405; + + /** + * 资源冲突,或者资源被锁 + */ + public static final int CONFLICT = 409; + + /** + * 不支持的数据,媒体类型 + */ + public static final int UNSUPPORTED_TYPE = 415; + + /** + * 系统内部错误 + */ + public static final int ERROR = 500; + + /** + * 接口未实现 + */ + public static final int NOT_IMPLEMENTED = 501; + + /** + * 系统警告消息 + */ + public static final int WARN = 601; +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/constant/ScheduleConstants.java b/cmvr-iot-common/src/main/java/com/cmvr/common/constant/ScheduleConstants.java new file mode 100644 index 0000000..6df7c90 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/constant/ScheduleConstants.java @@ -0,0 +1,50 @@ +package com.cmvr.common.constant; + +/** + * 任务调度通用常量 + * + * @author cmvrIot + */ +public class ScheduleConstants +{ + public static final String TASK_CLASS_NAME = "TASK_CLASS_NAME"; + + /** 执行目标key */ + public static final String TASK_PROPERTIES = "TASK_PROPERTIES"; + + /** 默认 */ + public static final String MISFIRE_DEFAULT = "0"; + + /** 立即触发执行 */ + public static final String MISFIRE_IGNORE_MISFIRES = "1"; + + /** 触发一次执行 */ + public static final String MISFIRE_FIRE_AND_PROCEED = "2"; + + /** 不触发立即执行 */ + public static final String MISFIRE_DO_NOTHING = "3"; + + public enum Status + { + /** + * 正常 + */ + NORMAL("0"), + /** + * 暂停 + */ + PAUSE("1"); + + private String value; + + private Status(String value) + { + this.value = value; + } + + public String getValue() + { + return value; + } + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/constant/UserConstants.java b/cmvr-iot-common/src/main/java/com/cmvr/common/constant/UserConstants.java new file mode 100644 index 0000000..df05390 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/constant/UserConstants.java @@ -0,0 +1,81 @@ +package com.cmvr.common.constant; + +/** + * 用户常量信息 + * + * @author cmvrIot + */ +public class UserConstants +{ + /** + * 平台内系统用户的唯一标志 + */ + public static final String SYS_USER = "SYS_USER"; + + /** 正常状态 */ + public static final String NORMAL = "0"; + + /** 异常状态 */ + public static final String EXCEPTION = "1"; + + /** 用户封禁状态 */ + public static final String USER_DISABLE = "1"; + + /** 角色正常状态 */ + public static final String ROLE_NORMAL = "0"; + + /** 角色封禁状态 */ + public static final String ROLE_DISABLE = "1"; + + /** 部门正常状态 */ + public static final String DEPT_NORMAL = "0"; + + /** 部门停用状态 */ + public static final String DEPT_DISABLE = "1"; + + /** 字典正常状态 */ + public static final String DICT_NORMAL = "0"; + + /** 是否为系统默认(是) */ + public static final String YES = "Y"; + + /** 是否菜单外链(是) */ + public static final String YES_FRAME = "0"; + + /** 是否菜单外链(否) */ + public static final String NO_FRAME = "1"; + + /** 菜单类型(目录) */ + public static final String TYPE_DIR = "M"; + + /** 菜单类型(菜单) */ + public static final String TYPE_MENU = "C"; + + /** 菜单类型(按钮) */ + public static final String TYPE_BUTTON = "F"; + + /** Layout组件标识 */ + public final static String LAYOUT = "Layout"; + + /** ParentView组件标识 */ + public final static String PARENT_VIEW = "ParentView"; + + /** InnerLink组件标识 */ + public final static String INNER_LINK = "InnerLink"; + + /** 校验是否唯一的返回标识 */ + public final static boolean UNIQUE = true; + public final static boolean NOT_UNIQUE = false; + + /** + * 用户名长度限制 + */ + public static final int USERNAME_MIN_LENGTH = 2; + public static final int USERNAME_MAX_LENGTH = 20; + + /** + * 密码长度限制 + */ + public static final int PASSWORD_MIN_LENGTH = 5; + public static final int PASSWORD_MAX_LENGTH = 20; +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/core/controller/BaseController.java b/cmvr-iot-common/src/main/java/com/cmvr/common/core/controller/BaseController.java new file mode 100644 index 0000000..b9d6eb5 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/core/controller/BaseController.java @@ -0,0 +1,202 @@ +package com.cmvr.common.core.controller; + +import java.beans.PropertyEditorSupport; +import java.util.Date; +import java.util.List; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.WebDataBinder; +import org.springframework.web.bind.annotation.InitBinder; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.cmvr.common.constant.HttpStatus; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.core.domain.model.LoginUser; +import com.cmvr.common.core.page.PageDomain; +import com.cmvr.common.core.page.TableDataInfo; +import com.cmvr.common.core.page.TableSupport; +import com.cmvr.common.utils.DateUtils; +import com.cmvr.common.utils.PageUtils; +import com.cmvr.common.utils.SecurityUtils; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.common.utils.sql.SqlUtil; + +/** + * web层通用数据处理 + * + * @author cmvrIot + */ +public class BaseController +{ + protected final Logger logger = LoggerFactory.getLogger(this.getClass()); + + /** + * 将前台传递过来的日期格式的字符串,自动转化为Date类型 + */ + @InitBinder + public void initBinder(WebDataBinder binder) + { + // Date 类型转换 + binder.registerCustomEditor(Date.class, new PropertyEditorSupport() + { + @Override + public void setAsText(String text) + { + setValue(DateUtils.parseDate(text)); + } + }); + } + + /** + * 设置请求分页数据 + */ + protected void startPage() + { + PageUtils.startPage(); + } + + /** + * 设置请求排序数据 + */ + protected void startOrderBy() + { + PageDomain pageDomain = TableSupport.buildPageRequest(); + if (StringUtils.isNotEmpty(pageDomain.getOrderBy())) + { + String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy()); + PageHelper.orderBy(orderBy); + } + } + + /** + * 清理分页的线程变量 + */ + protected void clearPage() + { + PageUtils.clearPage(); + } + + /** + * 响应请求分页数据 + */ + @SuppressWarnings({ "rawtypes", "unchecked" }) + protected TableDataInfo getDataTable(List list) + { + TableDataInfo rspData = new TableDataInfo(); + rspData.setCode(HttpStatus.SUCCESS); + rspData.setMsg("查询成功"); + rspData.setRows(list); + rspData.setTotal(new PageInfo(list).getTotal()); + return rspData; + } + + /** + * 返回成功 + */ + public AjaxResult success() + { + return AjaxResult.success(); + } + + /** + * 返回失败消息 + */ + public AjaxResult error() + { + return AjaxResult.error(); + } + + /** + * 返回成功消息 + */ + public AjaxResult success(String message) + { + return AjaxResult.success(message); + } + + /** + * 返回成功消息 + */ + public AjaxResult success(Object data) + { + return AjaxResult.success(data); + } + + /** + * 返回失败消息 + */ + public AjaxResult error(String message) + { + return AjaxResult.error(message); + } + + /** + * 返回警告消息 + */ + public AjaxResult warn(String message) + { + return AjaxResult.warn(message); + } + + /** + * 响应返回结果 + * + * @param rows 影响行数 + * @return 操作结果 + */ + protected AjaxResult toAjax(int rows) + { + return rows > 0 ? AjaxResult.success() : AjaxResult.error(); + } + + /** + * 响应返回结果 + * + * @param result 结果 + * @return 操作结果 + */ + protected AjaxResult toAjax(boolean result) + { + return result ? success() : error(); + } + + /** + * 页面跳转 + */ + public String redirect(String url) + { + return StringUtils.format("redirect:{}", url); + } + + /** + * 获取用户缓存信息 + */ + public LoginUser getLoginUser() + { + return SecurityUtils.getLoginUser(); + } + + /** + * 获取登录用户id + */ + public Long getUserId() + { + return getLoginUser().getUserId(); + } + + /** + * 获取登录部门id + */ + public Long getDeptId() + { + return getLoginUser().getDeptId(); + } + + /** + * 获取登录用户名 + */ + public String getUsername() + { + return getLoginUser().getUsername(); + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/AjaxResult.java b/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/AjaxResult.java new file mode 100644 index 0000000..667d592 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/AjaxResult.java @@ -0,0 +1,216 @@ +package com.cmvr.common.core.domain; + +import java.util.HashMap; +import java.util.Objects; +import com.cmvr.common.constant.HttpStatus; +import com.cmvr.common.utils.StringUtils; + +/** + * 操作消息提醒 + * + * @author cmvrIot + */ +public class AjaxResult extends HashMap +{ + private static final long serialVersionUID = 1L; + + /** 状态码 */ + public static final String CODE_TAG = "code"; + + /** 返回内容 */ + public static final String MSG_TAG = "msg"; + + /** 数据对象 */ + public static final String DATA_TAG = "data"; + + /** + * 初始化一个新创建的 AjaxResult 对象,使其表示一个空消息。 + */ + public AjaxResult() + { + } + + /** + * 初始化一个新创建的 AjaxResult 对象 + * + * @param code 状态码 + * @param msg 返回内容 + */ + public AjaxResult(int code, String msg) + { + super.put(CODE_TAG, code); + super.put(MSG_TAG, msg); + } + + /** + * 初始化一个新创建的 AjaxResult 对象 + * + * @param code 状态码 + * @param msg 返回内容 + * @param data 数据对象 + */ + public AjaxResult(int code, String msg, Object data) + { + super.put(CODE_TAG, code); + super.put(MSG_TAG, msg); + if (StringUtils.isNotNull(data)) + { + super.put(DATA_TAG, data); + } + } + + /** + * 返回成功消息 + * + * @return 成功消息 + */ + public static AjaxResult success() + { + return AjaxResult.success("操作成功"); + } + + /** + * 返回成功数据 + * + * @return 成功消息 + */ + public static AjaxResult success(Object data) + { + return AjaxResult.success("操作成功", data); + } + + /** + * 返回成功消息 + * + * @param msg 返回内容 + * @return 成功消息 + */ + public static AjaxResult success(String msg) + { + return AjaxResult.success(msg, null); + } + + /** + * 返回成功消息 + * + * @param msg 返回内容 + * @param data 数据对象 + * @return 成功消息 + */ + public static AjaxResult success(String msg, Object data) + { + return new AjaxResult(HttpStatus.SUCCESS, msg, data); + } + + /** + * 返回警告消息 + * + * @param msg 返回内容 + * @return 警告消息 + */ + public static AjaxResult warn(String msg) + { + return AjaxResult.warn(msg, null); + } + + /** + * 返回警告消息 + * + * @param msg 返回内容 + * @param data 数据对象 + * @return 警告消息 + */ + public static AjaxResult warn(String msg, Object data) + { + return new AjaxResult(HttpStatus.WARN, msg, data); + } + + /** + * 返回错误消息 + * + * @return 错误消息 + */ + public static AjaxResult error() + { + return AjaxResult.error("操作失败"); + } + + /** + * 返回错误消息 + * + * @param msg 返回内容 + * @return 错误消息 + */ + public static AjaxResult error(String msg) + { + return AjaxResult.error(msg, null); + } + + /** + * 返回错误消息 + * + * @param msg 返回内容 + * @param data 数据对象 + * @return 错误消息 + */ + public static AjaxResult error(String msg, Object data) + { + return new AjaxResult(HttpStatus.ERROR, msg, data); + } + + /** + * 返回错误消息 + * + * @param code 状态码 + * @param msg 返回内容 + * @return 错误消息 + */ + public static AjaxResult error(int code, String msg) + { + return new AjaxResult(code, msg, null); + } + + /** + * 是否为成功消息 + * + * @return 结果 + */ + public boolean isSuccess() + { + return Objects.equals(HttpStatus.SUCCESS, this.get(CODE_TAG)); + } + + /** + * 是否为警告消息 + * + * @return 结果 + */ + public boolean isWarn() + { + return Objects.equals(HttpStatus.WARN, this.get(CODE_TAG)); + } + + /** + * 是否为错误消息 + * + * @return 结果 + */ + public boolean isError() + { + return Objects.equals(HttpStatus.ERROR, this.get(CODE_TAG)); + } + + /** + * 方便链式调用 + * + * @param key 键 + * @param value 值 + * @return 数据对象 + */ + @Override + public AjaxResult put(String key, Object value) + { + super.put(key, value); + return this; + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/BaseEntity.java b/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/BaseEntity.java new file mode 100644 index 0000000..cb02509 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/BaseEntity.java @@ -0,0 +1,127 @@ +package com.cmvr.common.core.domain; + +import java.io.Serializable; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; + +/** + * Entity基类 + * + * @author cmvrIot + */ +public class BaseEntity implements Serializable +{ + private static final long serialVersionUID = 1L; + + /** 搜索值 */ + @JsonIgnore + @TableField(exist = false) + private String searchValue; + + /** 创建者 */ + @TableField(fill = FieldFill.INSERT) + private String createBy; + + /** 创建时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @TableField(fill = FieldFill.INSERT) + private Date createTime; + + /** 更新者 */ + @TableField(fill = FieldFill.UPDATE) + private String updateBy; + + /** 更新时间 */ + @TableField(fill = FieldFill.UPDATE) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + /** 备注 */ + private String remark; + + /** 请求参数 */ + @JsonInclude(JsonInclude.Include.NON_EMPTY) + @TableField(exist = false) + private Map params; + + public String getSearchValue() + { + return searchValue; + } + + public void setSearchValue(String searchValue) + { + this.searchValue = searchValue; + } + + public String getCreateBy() + { + return createBy; + } + + public void setCreateBy(String createBy) + { + this.createBy = createBy; + } + + public Date getCreateTime() + { + return createTime; + } + + public void setCreateTime(Date createTime) + { + this.createTime = createTime; + } + + public String getUpdateBy() + { + return updateBy; + } + + public void setUpdateBy(String updateBy) + { + this.updateBy = updateBy; + } + + public Date getUpdateTime() + { + return updateTime; + } + + public void setUpdateTime(Date updateTime) + { + this.updateTime = updateTime; + } + + public String getRemark() + { + return remark; + } + + public void setRemark(String remark) + { + this.remark = remark; + } + + public Map getParams() + { + if (params == null) + { + params = new HashMap<>(); + } + return params; + } + + public void setParams(Map params) + { + this.params = params; + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/R.java b/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/R.java new file mode 100644 index 0000000..65b9423 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/R.java @@ -0,0 +1,115 @@ +package com.cmvr.common.core.domain; + +import java.io.Serializable; +import com.cmvr.common.constant.HttpStatus; + +/** + * 响应信息主体 + * + * @author cmvrIot + */ +public class R implements Serializable +{ + private static final long serialVersionUID = 1L; + + /** 成功 */ + public static final int SUCCESS = HttpStatus.SUCCESS; + + /** 失败 */ + public static final int FAIL = HttpStatus.ERROR; + + private int code; + + private String msg; + + private T data; + + public static R ok() + { + return restResult(null, SUCCESS, "操作成功"); + } + + public static R ok(T data) + { + return restResult(data, SUCCESS, "操作成功"); + } + + public static R ok(T data, String msg) + { + return restResult(data, SUCCESS, msg); + } + + public static R fail() + { + return restResult(null, FAIL, "操作失败"); + } + + public static R fail(String msg) + { + return restResult(null, FAIL, msg); + } + + public static R fail(T data) + { + return restResult(data, FAIL, "操作失败"); + } + + public static R fail(T data, String msg) + { + return restResult(data, FAIL, msg); + } + + public static R fail(int code, String msg) + { + return restResult(null, code, msg); + } + + private static R restResult(T data, int code, String msg) + { + R apiResult = new R<>(); + apiResult.setCode(code); + apiResult.setData(data); + apiResult.setMsg(msg); + return apiResult; + } + + public int getCode() + { + return code; + } + + public void setCode(int code) + { + this.code = code; + } + + public String getMsg() + { + return msg; + } + + public void setMsg(String msg) + { + this.msg = msg; + } + + public T getData() + { + return data; + } + + public void setData(T data) + { + this.data = data; + } + + public static Boolean isError(R ret) + { + return !isSuccess(ret); + } + + public static Boolean isSuccess(R ret) + { + return R.SUCCESS == ret.getCode(); + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/TreeEntity.java b/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/TreeEntity.java new file mode 100644 index 0000000..3e12976 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/TreeEntity.java @@ -0,0 +1,79 @@ +package com.cmvr.common.core.domain; + +import java.util.ArrayList; +import java.util.List; + +/** + * Tree基类 + * + * @author cmvrIot + */ +public class TreeEntity extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 父菜单名称 */ + private String parentName; + + /** 父菜单ID */ + private Long parentId; + + /** 显示顺序 */ + private Integer orderNum; + + /** 祖级列表 */ + private String ancestors; + + /** 子部门 */ + private List children = new ArrayList<>(); + + public String getParentName() + { + return parentName; + } + + public void setParentName(String parentName) + { + this.parentName = parentName; + } + + public Long getParentId() + { + return parentId; + } + + public void setParentId(Long parentId) + { + this.parentId = parentId; + } + + public Integer getOrderNum() + { + return orderNum; + } + + public void setOrderNum(Integer orderNum) + { + this.orderNum = orderNum; + } + + public String getAncestors() + { + return ancestors; + } + + public void setAncestors(String ancestors) + { + this.ancestors = ancestors; + } + + public List getChildren() + { + return children; + } + + public void setChildren(List children) + { + this.children = children; + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/TreeSelect.java b/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/TreeSelect.java new file mode 100644 index 0000000..66bcd81 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/TreeSelect.java @@ -0,0 +1,93 @@ +package com.cmvr.common.core.domain; + +import java.io.Serializable; +import java.util.List; +import java.util.stream.Collectors; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.cmvr.common.constant.UserConstants; +import com.cmvr.common.core.domain.entity.SysDept; +import com.cmvr.common.core.domain.entity.SysMenu; +import com.cmvr.common.utils.StringUtils; + +/** + * Treeselect树结构实体类 + * + * @author cmvrIot + */ +public class TreeSelect implements Serializable +{ + private static final long serialVersionUID = 1L; + + /** 节点ID */ + private Long id; + + /** 节点名称 */ + private String label; + + /** 节点禁用 */ + private boolean disabled = false; + + /** 子节点 */ + @JsonInclude(JsonInclude.Include.NON_EMPTY) + private List children; + + public TreeSelect() + { + + } + + public TreeSelect(SysDept dept) + { + this.id = dept.getDeptId(); + this.label = dept.getDeptName(); + this.disabled = StringUtils.equals(UserConstants.DEPT_DISABLE, dept.getStatus()); + this.children = dept.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList()); + } + + public TreeSelect(SysMenu menu) + { + this.id = menu.getMenuId(); + this.label = menu.getMenuName(); + this.children = menu.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList()); + } + + public Long getId() + { + return id; + } + + public void setId(Long id) + { + this.id = id; + } + + public String getLabel() + { + return label; + } + + public void setLabel(String label) + { + this.label = label; + } + + public boolean isDisabled() + { + return disabled; + } + + public void setDisabled(boolean disabled) + { + this.disabled = disabled; + } + + public List getChildren() + { + return children; + } + + public void setChildren(List children) + { + this.children = children; + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/entity/SysDept.java b/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/entity/SysDept.java new file mode 100644 index 0000000..bf7d01c --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/entity/SysDept.java @@ -0,0 +1,203 @@ +package com.cmvr.common.core.domain.entity; + +import java.util.ArrayList; +import java.util.List; +import javax.validation.constraints.Email; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.cmvr.common.core.domain.BaseEntity; + +/** + * 部门表 sys_dept + * + * @author cmvrIot + */ +public class SysDept extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 部门ID */ + private Long deptId; + + /** 父部门ID */ + private Long parentId; + + /** 祖级列表 */ + private String ancestors; + + /** 部门名称 */ + private String deptName; + + /** 显示顺序 */ + private Integer orderNum; + + /** 负责人 */ + private String leader; + + /** 联系电话 */ + private String phone; + + /** 邮箱 */ + private String email; + + /** 部门状态:0正常,1停用 */ + private String status; + + /** 删除标志(0代表存在 2代表删除) */ + private String delFlag; + + /** 父部门名称 */ + private String parentName; + + /** 子部门 */ + private List children = new ArrayList(); + + public Long getDeptId() + { + return deptId; + } + + public void setDeptId(Long deptId) + { + this.deptId = deptId; + } + + public Long getParentId() + { + return parentId; + } + + public void setParentId(Long parentId) + { + this.parentId = parentId; + } + + public String getAncestors() + { + return ancestors; + } + + public void setAncestors(String ancestors) + { + this.ancestors = ancestors; + } + + @NotBlank(message = "部门名称不能为空") + @Size(min = 0, max = 30, message = "部门名称长度不能超过30个字符") + public String getDeptName() + { + return deptName; + } + + public void setDeptName(String deptName) + { + this.deptName = deptName; + } + + @NotNull(message = "显示顺序不能为空") + public Integer getOrderNum() + { + return orderNum; + } + + public void setOrderNum(Integer orderNum) + { + this.orderNum = orderNum; + } + + public String getLeader() + { + return leader; + } + + public void setLeader(String leader) + { + this.leader = leader; + } + + @Size(min = 0, max = 11, message = "联系电话长度不能超过11个字符") + public String getPhone() + { + return phone; + } + + public void setPhone(String phone) + { + this.phone = phone; + } + + @Email(message = "邮箱格式不正确") + @Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符") + public String getEmail() + { + return email; + } + + public void setEmail(String email) + { + this.email = email; + } + + public String getStatus() + { + return status; + } + + public void setStatus(String status) + { + this.status = status; + } + + public String getDelFlag() + { + return delFlag; + } + + public void setDelFlag(String delFlag) + { + this.delFlag = delFlag; + } + + public String getParentName() + { + return parentName; + } + + public void setParentName(String parentName) + { + this.parentName = parentName; + } + + public List getChildren() + { + return children; + } + + public void setChildren(List children) + { + this.children = children; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("deptId", getDeptId()) + .append("parentId", getParentId()) + .append("ancestors", getAncestors()) + .append("deptName", getDeptName()) + .append("orderNum", getOrderNum()) + .append("leader", getLeader()) + .append("phone", getPhone()) + .append("email", getEmail()) + .append("status", getStatus()) + .append("delFlag", getDelFlag()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .toString(); + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/entity/SysDictData.java b/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/entity/SysDictData.java new file mode 100644 index 0000000..a2fadff --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/entity/SysDictData.java @@ -0,0 +1,176 @@ +package com.cmvr.common.core.domain.entity; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.cmvr.common.annotation.Excel; +import com.cmvr.common.annotation.Excel.ColumnType; +import com.cmvr.common.constant.UserConstants; +import com.cmvr.common.core.domain.BaseEntity; + +/** + * 字典数据表 sys_dict_data + * + * @author cmvrIot + */ +public class SysDictData extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 字典编码 */ + @Excel(name = "字典编码", cellType = ColumnType.NUMERIC) + private Long dictCode; + + /** 字典排序 */ + @Excel(name = "字典排序", cellType = ColumnType.NUMERIC) + private Long dictSort; + + /** 字典标签 */ + @Excel(name = "字典标签") + private String dictLabel; + + /** 字典键值 */ + @Excel(name = "字典键值") + private String dictValue; + + /** 字典类型 */ + @Excel(name = "字典类型") + private String dictType; + + /** 样式属性(其他样式扩展) */ + private String cssClass; + + /** 表格字典样式 */ + private String listClass; + + /** 是否默认(Y是 N否) */ + @Excel(name = "是否默认", readConverterExp = "Y=是,N=否") + private String isDefault; + + /** 状态(0正常 1停用) */ + @Excel(name = "状态", readConverterExp = "0=正常,1=停用") + private String status; + + public Long getDictCode() + { + return dictCode; + } + + public void setDictCode(Long dictCode) + { + this.dictCode = dictCode; + } + + public Long getDictSort() + { + return dictSort; + } + + public void setDictSort(Long dictSort) + { + this.dictSort = dictSort; + } + + @NotBlank(message = "字典标签不能为空") + @Size(min = 0, max = 100, message = "字典标签长度不能超过100个字符") + public String getDictLabel() + { + return dictLabel; + } + + public void setDictLabel(String dictLabel) + { + this.dictLabel = dictLabel; + } + + @NotBlank(message = "字典键值不能为空") + @Size(min = 0, max = 100, message = "字典键值长度不能超过100个字符") + public String getDictValue() + { + return dictValue; + } + + public void setDictValue(String dictValue) + { + this.dictValue = dictValue; + } + + @NotBlank(message = "字典类型不能为空") + @Size(min = 0, max = 100, message = "字典类型长度不能超过100个字符") + public String getDictType() + { + return dictType; + } + + public void setDictType(String dictType) + { + this.dictType = dictType; + } + + @Size(min = 0, max = 100, message = "样式属性长度不能超过100个字符") + public String getCssClass() + { + return cssClass; + } + + public void setCssClass(String cssClass) + { + this.cssClass = cssClass; + } + + public String getListClass() + { + return listClass; + } + + public void setListClass(String listClass) + { + this.listClass = listClass; + } + + public boolean getDefault() + { + return UserConstants.YES.equals(this.isDefault); + } + + public String getIsDefault() + { + return isDefault; + } + + public void setIsDefault(String isDefault) + { + this.isDefault = isDefault; + } + + public String getStatus() + { + return status; + } + + public void setStatus(String status) + { + this.status = status; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("dictCode", getDictCode()) + .append("dictSort", getDictSort()) + .append("dictLabel", getDictLabel()) + .append("dictValue", getDictValue()) + .append("dictType", getDictType()) + .append("cssClass", getCssClass()) + .append("listClass", getListClass()) + .append("isDefault", getIsDefault()) + .append("status", getStatus()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("remark", getRemark()) + .toString(); + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/entity/SysDictType.java b/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/entity/SysDictType.java new file mode 100644 index 0000000..a2f88e2 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/entity/SysDictType.java @@ -0,0 +1,96 @@ +package com.cmvr.common.core.domain.entity; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Pattern; +import javax.validation.constraints.Size; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.cmvr.common.annotation.Excel; +import com.cmvr.common.annotation.Excel.ColumnType; +import com.cmvr.common.core.domain.BaseEntity; + +/** + * 字典类型表 sys_dict_type + * + * @author cmvrIot + */ +public class SysDictType extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 字典主键 */ + @Excel(name = "字典主键", cellType = ColumnType.NUMERIC) + private Long dictId; + + /** 字典名称 */ + @Excel(name = "字典名称") + private String dictName; + + /** 字典类型 */ + @Excel(name = "字典类型") + private String dictType; + + /** 状态(0正常 1停用) */ + @Excel(name = "状态", readConverterExp = "0=正常,1=停用") + private String status; + + public Long getDictId() + { + return dictId; + } + + public void setDictId(Long dictId) + { + this.dictId = dictId; + } + + @NotBlank(message = "字典名称不能为空") + @Size(min = 0, max = 100, message = "字典类型名称长度不能超过100个字符") + public String getDictName() + { + return dictName; + } + + public void setDictName(String dictName) + { + this.dictName = dictName; + } + + @NotBlank(message = "字典类型不能为空") + @Size(min = 0, max = 100, message = "字典类型类型长度不能超过100个字符") + @Pattern(regexp = "^[a-z][a-z0-9_]*$", message = "字典类型必须以字母开头,且只能为(小写字母,数字,下滑线)") + public String getDictType() + { + return dictType; + } + + public void setDictType(String dictType) + { + this.dictType = dictType; + } + + public String getStatus() + { + return status; + } + + public void setStatus(String status) + { + this.status = status; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("dictId", getDictId()) + .append("dictName", getDictName()) + .append("dictType", getDictType()) + .append("status", getStatus()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("remark", getRemark()) + .toString(); + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/entity/SysFileInfo.java b/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/entity/SysFileInfo.java new file mode 100644 index 0000000..5689814 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/entity/SysFileInfo.java @@ -0,0 +1,44 @@ +package com.cmvr.common.core.domain.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +@Data +@ApiModel("文件信息") +public class SysFileInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("文件ID") + @TableId(type = IdType.AUTO) + private Long fileId; + + @ApiModelProperty("文件名") + private String fileName; + + @ApiModelProperty("文件地址") + private String filePath; + + @ApiModelProperty("文件大小") + private Long fileSize; + + @ApiModelProperty(value = "文件类型", notes = "枚举: FileType") + private Integer fileType; + + @ApiModelProperty("上传人") +// @TableField(fill = FieldFill.INSERT) // todo 暂时不要 没有token + private String createBy; + + @ApiModelProperty("上传时间") +// @TableField(fill = FieldFill.INSERT) + private Date createTime; + + @ApiModelProperty("文件MD5值") + private String md5; +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/entity/SysGroup.java b/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/entity/SysGroup.java new file mode 100644 index 0000000..bf3ab03 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/entity/SysGroup.java @@ -0,0 +1,27 @@ +package com.cmvr.common.core.domain.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.cmvr.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel("通用分组配置") +public class SysGroup extends BaseEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("分组ID") + @TableId(type = IdType.AUTO) + private Long groupId; + + @ApiModelProperty(value = "分组类型", notes = "检测项:1、任务:2、设备:3") + private Integer type; + + @ApiModelProperty("分组名称") + private String groupName; + + @ApiModelProperty("分组描述") + private String description; +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/entity/SysMenu.java b/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/entity/SysMenu.java new file mode 100644 index 0000000..b207e2c --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/entity/SysMenu.java @@ -0,0 +1,274 @@ +package com.cmvr.common.core.domain.entity; + +import java.util.ArrayList; +import java.util.List; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.cmvr.common.core.domain.BaseEntity; + +/** + * 菜单权限表 sys_menu + * + * @author cmvrIot + */ +public class SysMenu extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 菜单ID */ + private Long menuId; + + /** 菜单名称 */ + private String menuName; + + /** 父菜单名称 */ + private String parentName; + + /** 父菜单ID */ + private Long parentId; + + /** 显示顺序 */ + private Integer orderNum; + + /** 路由地址 */ + private String path; + + /** 组件路径 */ + private String component; + + /** 路由参数 */ + private String query; + + /** 路由名称,默认和路由地址相同的驼峰格式(注意:因为vue3版本的router会删除名称相同路由,为避免名字的冲突,特殊情况可以自定义) */ + private String routeName; + + /** 是否为外链(0是 1否) */ + private String isFrame; + + /** 是否缓存(0缓存 1不缓存) */ + private String isCache; + + /** 类型(M目录 C菜单 F按钮) */ + private String menuType; + + /** 显示状态(0显示 1隐藏) */ + private String visible; + + /** 菜单状态(0正常 1停用) */ + private String status; + + /** 权限字符串 */ + private String perms; + + /** 菜单图标 */ + private String icon; + + /** 子菜单 */ + private List children = new ArrayList(); + + public Long getMenuId() + { + return menuId; + } + + public void setMenuId(Long menuId) + { + this.menuId = menuId; + } + + @NotBlank(message = "菜单名称不能为空") + @Size(min = 0, max = 50, message = "菜单名称长度不能超过50个字符") + public String getMenuName() + { + return menuName; + } + + public void setMenuName(String menuName) + { + this.menuName = menuName; + } + + public String getParentName() + { + return parentName; + } + + public void setParentName(String parentName) + { + this.parentName = parentName; + } + + public Long getParentId() + { + return parentId; + } + + public void setParentId(Long parentId) + { + this.parentId = parentId; + } + + @NotNull(message = "显示顺序不能为空") + public Integer getOrderNum() + { + return orderNum; + } + + public void setOrderNum(Integer orderNum) + { + this.orderNum = orderNum; + } + + @Size(min = 0, max = 200, message = "路由地址不能超过200个字符") + public String getPath() + { + return path; + } + + public void setPath(String path) + { + this.path = path; + } + + @Size(min = 0, max = 200, message = "组件路径不能超过255个字符") + public String getComponent() + { + return component; + } + + public void setComponent(String component) + { + this.component = component; + } + + public String getQuery() + { + return query; + } + + public void setQuery(String query) + { + this.query = query; + } + + public String getRouteName() + { + return routeName; + } + + public void setRouteName(String routeName) + { + this.routeName = routeName; + } + + public String getIsFrame() + { + return isFrame; + } + + public void setIsFrame(String isFrame) + { + this.isFrame = isFrame; + } + + public String getIsCache() + { + return isCache; + } + + public void setIsCache(String isCache) + { + this.isCache = isCache; + } + + @NotBlank(message = "菜单类型不能为空") + public String getMenuType() + { + return menuType; + } + + public void setMenuType(String menuType) + { + this.menuType = menuType; + } + + public String getVisible() + { + return visible; + } + + public void setVisible(String visible) + { + this.visible = visible; + } + + public String getStatus() + { + return status; + } + + public void setStatus(String status) + { + this.status = status; + } + + @Size(min = 0, max = 100, message = "权限标识长度不能超过100个字符") + public String getPerms() + { + return perms; + } + + public void setPerms(String perms) + { + this.perms = perms; + } + + public String getIcon() + { + return icon; + } + + public void setIcon(String icon) + { + this.icon = icon; + } + + public List getChildren() + { + return children; + } + + public void setChildren(List children) + { + this.children = children; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("menuId", getMenuId()) + .append("menuName", getMenuName()) + .append("parentId", getParentId()) + .append("orderNum", getOrderNum()) + .append("path", getPath()) + .append("component", getComponent()) + .append("query", getQuery()) + .append("routeName", getRouteName()) + .append("isFrame", getIsFrame()) + .append("IsCache", getIsCache()) + .append("menuType", getMenuType()) + .append("visible", getVisible()) + .append("status ", getStatus()) + .append("perms", getPerms()) + .append("icon", getIcon()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("remark", getRemark()) + .toString(); + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/entity/SysRole.java b/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/entity/SysRole.java new file mode 100644 index 0000000..eb527ee --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/entity/SysRole.java @@ -0,0 +1,241 @@ +package com.cmvr.common.core.domain.entity; + +import java.util.Set; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.cmvr.common.annotation.Excel; +import com.cmvr.common.annotation.Excel.ColumnType; +import com.cmvr.common.core.domain.BaseEntity; + +/** + * 角色表 sys_role + * + * @author cmvrIot + */ +public class SysRole extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 角色ID */ + @Excel(name = "角色序号", cellType = ColumnType.NUMERIC) + private Long roleId; + + /** 角色名称 */ + @Excel(name = "角色名称") + private String roleName; + + /** 角色权限 */ + @Excel(name = "角色权限") + private String roleKey; + + /** 角色排序 */ + @Excel(name = "角色排序") + private Integer roleSort; + + /** 数据范围(1:所有数据权限;2:自定义数据权限;3:本部门数据权限;4:本部门及以下数据权限;5:仅本人数据权限) */ + @Excel(name = "数据范围", readConverterExp = "1=所有数据权限,2=自定义数据权限,3=本部门数据权限,4=本部门及以下数据权限,5=仅本人数据权限") + private String dataScope; + + /** 菜单树选择项是否关联显示( 0:父子不互相关联显示 1:父子互相关联显示) */ + private boolean menuCheckStrictly; + + /** 部门树选择项是否关联显示(0:父子不互相关联显示 1:父子互相关联显示 ) */ + private boolean deptCheckStrictly; + + /** 角色状态(0正常 1停用) */ + @Excel(name = "角色状态", readConverterExp = "0=正常,1=停用") + private String status; + + /** 删除标志(0代表存在 2代表删除) */ + private String delFlag; + + /** 用户是否存在此角色标识 默认不存在 */ + private boolean flag = false; + + /** 菜单组 */ + private Long[] menuIds; + + /** 部门组(数据权限) */ + private Long[] deptIds; + + /** 角色菜单权限 */ + private Set permissions; + + public SysRole() + { + + } + + public SysRole(Long roleId) + { + this.roleId = roleId; + } + + public Long getRoleId() + { + return roleId; + } + + public void setRoleId(Long roleId) + { + this.roleId = roleId; + } + + public boolean isAdmin() + { + return isAdmin(this.roleId); + } + + public static boolean isAdmin(Long roleId) + { + return roleId != null && 1L == roleId; + } + + @NotBlank(message = "角色名称不能为空") + @Size(min = 0, max = 30, message = "角色名称长度不能超过30个字符") + public String getRoleName() + { + return roleName; + } + + public void setRoleName(String roleName) + { + this.roleName = roleName; + } + + @NotBlank(message = "权限字符不能为空") + @Size(min = 0, max = 100, message = "权限字符长度不能超过100个字符") + public String getRoleKey() + { + return roleKey; + } + + public void setRoleKey(String roleKey) + { + this.roleKey = roleKey; + } + + @NotNull(message = "显示顺序不能为空") + public Integer getRoleSort() + { + return roleSort; + } + + public void setRoleSort(Integer roleSort) + { + this.roleSort = roleSort; + } + + public String getDataScope() + { + return dataScope; + } + + public void setDataScope(String dataScope) + { + this.dataScope = dataScope; + } + + public boolean isMenuCheckStrictly() + { + return menuCheckStrictly; + } + + public void setMenuCheckStrictly(boolean menuCheckStrictly) + { + this.menuCheckStrictly = menuCheckStrictly; + } + + public boolean isDeptCheckStrictly() + { + return deptCheckStrictly; + } + + public void setDeptCheckStrictly(boolean deptCheckStrictly) + { + this.deptCheckStrictly = deptCheckStrictly; + } + + public String getStatus() + { + return status; + } + + public void setStatus(String status) + { + this.status = status; + } + + public String getDelFlag() + { + return delFlag; + } + + public void setDelFlag(String delFlag) + { + this.delFlag = delFlag; + } + + public boolean isFlag() + { + return flag; + } + + public void setFlag(boolean flag) + { + this.flag = flag; + } + + public Long[] getMenuIds() + { + return menuIds; + } + + public void setMenuIds(Long[] menuIds) + { + this.menuIds = menuIds; + } + + public Long[] getDeptIds() + { + return deptIds; + } + + public void setDeptIds(Long[] deptIds) + { + this.deptIds = deptIds; + } + + public Set getPermissions() + { + return permissions; + } + + public void setPermissions(Set permissions) + { + this.permissions = permissions; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("roleId", getRoleId()) + .append("roleName", getRoleName()) + .append("roleKey", getRoleKey()) + .append("roleSort", getRoleSort()) + .append("dataScope", getDataScope()) + .append("menuCheckStrictly", isMenuCheckStrictly()) + .append("deptCheckStrictly", isDeptCheckStrictly()) + .append("status", getStatus()) + .append("delFlag", getDelFlag()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("remark", getRemark()) + .toString(); + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/entity/SysUser.java b/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/entity/SysUser.java new file mode 100644 index 0000000..5074604 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/entity/SysUser.java @@ -0,0 +1,324 @@ +package com.cmvr.common.core.domain.entity; + +import java.util.Date; +import java.util.List; +import javax.validation.constraints.*; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.cmvr.common.annotation.Excel; +import com.cmvr.common.annotation.Excel.ColumnType; +import com.cmvr.common.annotation.Excel.Type; +import com.cmvr.common.annotation.Excels; +import com.cmvr.common.core.domain.BaseEntity; +import com.cmvr.common.xss.Xss; + +/** + * 用户对象 sys_user + * + * @author cmvrIot + */ +public class SysUser extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 用户ID */ + @Excel(name = "用户序号", type = Type.EXPORT, cellType = ColumnType.NUMERIC, prompt = "用户编号") + private Long userId; + + /** 部门ID */ + @Excel(name = "部门编号", type = Type.IMPORT) + private Long deptId; + + /** 用户账号 */ + @Excel(name = "登录名称") + private String userName; + + /** 用户昵称 */ + @Excel(name = "用户名称") + private String nickName; + + /** 用户邮箱 */ + @Excel(name = "用户邮箱") + private String email; + + /** 手机号码 */ + @Excel(name = "手机号码", cellType = ColumnType.TEXT) + private String phonenumber; + + /** 用户性别 */ + @Excel(name = "用户性别", readConverterExp = "0=男,1=女,2=未知") + private String sex; + + /** 用户头像 */ + private String avatar; + + /** 密码 */ + private String password; + + /** 帐号状态(0正常 1停用) */ + @Excel(name = "帐号状态", readConverterExp = "0=正常,1=停用") + private String status; + + /** 删除标志(0代表存在 2代表删除) */ + private String delFlag; + + /** 最后登录IP */ + @Excel(name = "最后登录IP", type = Type.EXPORT) + private String loginIp; + + /** 最后登录时间 */ + @Excel(name = "最后登录时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Type.EXPORT) + private Date loginDate; + + /** 部门对象 */ + @Excels({ + @Excel(name = "部门名称", targetAttr = "deptName", type = Type.EXPORT), + @Excel(name = "部门负责人", targetAttr = "leader", type = Type.EXPORT) + }) + private SysDept dept; + + /** 角色对象 */ + private List roles; + + /** 角色组 */ + private Long[] roleIds; + + /** 岗位组 */ + private Long[] postIds; + + /** 角色ID */ + private Long roleId; + + public SysUser() + { + + } + + public SysUser(Long userId) + { + this.userId = userId; + } + + public Long getUserId() + { + return userId; + } + + public void setUserId(Long userId) + { + this.userId = userId; + } + + public boolean isAdmin() + { + return isAdmin(this.userId); + } + + public static boolean isAdmin(Long userId) + { + return userId != null && 1L == userId; + } + + public Long getDeptId() + { + return deptId; + } + + public void setDeptId(Long deptId) + { + this.deptId = deptId; + } + + @Xss(message = "用户昵称不能包含脚本字符") + @Size(min = 0, max = 30, message = "用户昵称长度不能超过30个字符") + public String getNickName() + { + return nickName; + } + + public void setNickName(String nickName) + { + this.nickName = nickName; + } + + @Xss(message = "用户账号不能包含脚本字符") + @NotBlank(message = "用户账号不能为空") + @Size(min = 0, max = 30, message = "用户账号长度不能超过30个字符") + public String getUserName() + { + return userName; + } + + public void setUserName(String userName) + { + this.userName = userName; + } + + @Email(message = "邮箱格式不正确") + @Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符") + public String getEmail() + { + return email; + } + + public void setEmail(String email) + { + this.email = email; + } + + @Size(min = 0, max = 11, message = "手机号码长度不能超过11个字符") + public String getPhonenumber() + { + return phonenumber; + } + + public void setPhonenumber(String phonenumber) + { + this.phonenumber = phonenumber; + } + + public String getSex() + { + return sex; + } + + public void setSex(String sex) + { + this.sex = sex; + } + + public String getAvatar() + { + return avatar; + } + + public void setAvatar(String avatar) + { + this.avatar = avatar; + } + + public String getPassword() + { + return password; + } + + public void setPassword(String password) + { + this.password = password; + } + + public String getStatus() + { + return status; + } + + public void setStatus(String status) + { + this.status = status; + } + + public String getDelFlag() + { + return delFlag; + } + + public void setDelFlag(String delFlag) + { + this.delFlag = delFlag; + } + + public String getLoginIp() + { + return loginIp; + } + + public void setLoginIp(String loginIp) + { + this.loginIp = loginIp; + } + + public Date getLoginDate() + { + return loginDate; + } + + public void setLoginDate(Date loginDate) + { + this.loginDate = loginDate; + } + + public SysDept getDept() + { + return dept; + } + + public void setDept(SysDept dept) + { + this.dept = dept; + } + + public List getRoles() + { + return roles; + } + + public void setRoles(List roles) + { + this.roles = roles; + } + + public Long[] getRoleIds() + { + return roleIds; + } + + public void setRoleIds(Long[] roleIds) + { + this.roleIds = roleIds; + } + + public Long[] getPostIds() + { + return postIds; + } + + public void setPostIds(Long[] postIds) + { + this.postIds = postIds; + } + + public Long getRoleId() + { + return roleId; + } + + public void setRoleId(Long roleId) + { + this.roleId = roleId; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("userId", getUserId()) + .append("deptId", getDeptId()) + .append("userName", getUserName()) + .append("nickName", getNickName()) + .append("email", getEmail()) + .append("phonenumber", getPhonenumber()) + .append("sex", getSex()) + .append("avatar", getAvatar()) + .append("password", getPassword()) + .append("status", getStatus()) + .append("delFlag", getDelFlag()) + .append("loginIp", getLoginIp()) + .append("loginDate", getLoginDate()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("remark", getRemark()) + .append("dept", getDept()) + .toString(); + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/model/LoginBody.java b/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/model/LoginBody.java new file mode 100644 index 0000000..de58e32 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/model/LoginBody.java @@ -0,0 +1,69 @@ +package com.cmvr.common.core.domain.model; + +/** + * 用户登录对象 + * + * @author cmvrIot + */ +public class LoginBody +{ + /** + * 用户名 + */ + private String username; + + /** + * 用户密码 + */ + private String password; + + /** + * 验证码 + */ + private String code; + + /** + * 唯一标识 + */ + private String uuid; + + public String getUsername() + { + return username; + } + + public void setUsername(String username) + { + this.username = username; + } + + public String getPassword() + { + return password; + } + + public void setPassword(String password) + { + this.password = password; + } + + public String getCode() + { + return code; + } + + public void setCode(String code) + { + this.code = code; + } + + public String getUuid() + { + return uuid; + } + + public void setUuid(String uuid) + { + this.uuid = uuid; + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/model/LoginUser.java b/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/model/LoginUser.java new file mode 100644 index 0000000..54f9cae --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/model/LoginUser.java @@ -0,0 +1,266 @@ +package com.cmvr.common.core.domain.model; + +import com.alibaba.fastjson2.annotation.JSONField; +import com.cmvr.common.core.domain.entity.SysUser; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.userdetails.UserDetails; +import java.util.Collection; +import java.util.Set; + +/** + * 登录用户身份权限 + * + * @author cmvrIot + */ +public class LoginUser implements UserDetails +{ + private static final long serialVersionUID = 1L; + + /** + * 用户ID + */ + private Long userId; + + /** + * 部门ID + */ + private Long deptId; + + /** + * 用户唯一标识 + */ + private String token; + + /** + * 登录时间 + */ + private Long loginTime; + + /** + * 过期时间 + */ + private Long expireTime; + + /** + * 登录IP地址 + */ + private String ipaddr; + + /** + * 登录地点 + */ + private String loginLocation; + + /** + * 浏览器类型 + */ + private String browser; + + /** + * 操作系统 + */ + private String os; + + /** + * 权限列表 + */ + private Set permissions; + + /** + * 用户信息 + */ + private SysUser user; + + public LoginUser() + { + } + + public LoginUser(SysUser user, Set permissions) + { + this.user = user; + this.permissions = permissions; + } + + public LoginUser(Long userId, Long deptId, SysUser user, Set permissions) + { + this.userId = userId; + this.deptId = deptId; + this.user = user; + this.permissions = permissions; + } + + public Long getUserId() + { + return userId; + } + + public void setUserId(Long userId) + { + this.userId = userId; + } + + public Long getDeptId() + { + return deptId; + } + + public void setDeptId(Long deptId) + { + this.deptId = deptId; + } + + public String getToken() + { + return token; + } + + public void setToken(String token) + { + this.token = token; + } + + @JSONField(serialize = false) + @Override + public String getPassword() + { + return user.getPassword(); + } + + @Override + public String getUsername() + { + return user.getUserName(); + } + + /** + * 账户是否未过期,过期无法验证 + */ + @JSONField(serialize = false) + @Override + public boolean isAccountNonExpired() + { + return true; + } + + /** + * 指定用户是否解锁,锁定的用户无法进行身份验证 + * + * @return + */ + @JSONField(serialize = false) + @Override + public boolean isAccountNonLocked() + { + return true; + } + + /** + * 指示是否已过期的用户的凭据(密码),过期的凭据防止认证 + * + * @return + */ + @JSONField(serialize = false) + @Override + public boolean isCredentialsNonExpired() + { + return true; + } + + /** + * 是否可用 ,禁用的用户不能身份验证 + * + * @return + */ + @JSONField(serialize = false) + @Override + public boolean isEnabled() + { + return true; + } + + public Long getLoginTime() + { + return loginTime; + } + + public void setLoginTime(Long loginTime) + { + this.loginTime = loginTime; + } + + public String getIpaddr() + { + return ipaddr; + } + + public void setIpaddr(String ipaddr) + { + this.ipaddr = ipaddr; + } + + public String getLoginLocation() + { + return loginLocation; + } + + public void setLoginLocation(String loginLocation) + { + this.loginLocation = loginLocation; + } + + public String getBrowser() + { + return browser; + } + + public void setBrowser(String browser) + { + this.browser = browser; + } + + public String getOs() + { + return os; + } + + public void setOs(String os) + { + this.os = os; + } + + public Long getExpireTime() + { + return expireTime; + } + + public void setExpireTime(Long expireTime) + { + this.expireTime = expireTime; + } + + public Set getPermissions() + { + return permissions; + } + + public void setPermissions(Set permissions) + { + this.permissions = permissions; + } + + public SysUser getUser() + { + return user; + } + + public void setUser(SysUser user) + { + this.user = user; + } + + @Override + public Collection getAuthorities() + { + return null; + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/model/RegisterBody.java b/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/model/RegisterBody.java new file mode 100644 index 0000000..869bb50 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/core/domain/model/RegisterBody.java @@ -0,0 +1,11 @@ +package com.cmvr.common.core.domain.model; + +/** + * 用户注册对象 + * + * @author cmvrIot + */ +public class RegisterBody extends LoginBody +{ + +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/core/minio/MinioService.java b/cmvr-iot-common/src/main/java/com/cmvr/common/core/minio/MinioService.java new file mode 100644 index 0000000..b287c1a --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/core/minio/MinioService.java @@ -0,0 +1,199 @@ +package com.cmvr.common.core.minio; + +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.DateUtil; +import io.minio.*; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.io.InputStream; +import java.util.Date; + +@Slf4j +@Component +@RequiredArgsConstructor +public class MinioService { + + private final MinioClient minioClient; + + /** + * 查看存储bucket是否存在 + * + * @return boolean + */ + public Boolean bucketExists(String bucketName) { + try { + return minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build()); + } catch (Exception e) { + log.error("查询bucket失败", e); + return false; + } + } + + /** + * 创建存储bucket + */ + public void makeBucket(String bucketName) { + try { + minioClient.makeBucket(MakeBucketArgs.builder() + .bucket(bucketName) + .build()); + } catch (Exception e) { + log.error("创建bucket失败,", e); + } + } + + /** + * 设置bucket权限为public + */ + public void setBucketPublic(String bucketName) { + try { + // 设置公开 + String sb = "{\"Version\":\"2012-10-17\"," + + "\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":" + + "{\"AWS\":[\"*\"]},\"Action\":[\"s3:ListBucket\",\"s3:ListBucketMultipartUploads\"," + + "\"s3:GetBucketLocation\"],\"Resource\":[\"arn:aws:s3:::" + bucketName + + "\"]},{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":[\"*\"]},\"Action\":[\"s3:PutObject\",\"s3:AbortMultipartUpload\",\"s3:DeleteObject\",\"s3:GetObject\",\"s3:ListMultipartUploadParts\"],\"Resource\":[\"arn:aws:s3:::" + + bucketName + + "/*\"]}]}"; + minioClient.setBucketPolicy( + SetBucketPolicyArgs.builder() + .bucket(bucketName) + .config(sb) + .build()); + } catch (Exception e) { + log.error("创建bucket失败,", e); + } + } + + /** + * 文件上传 + * + * @param bucketName bucket名称 + * @param path 路径 + * @param file 文件 + * @return Boolean + */ + public String upload(String bucketName, String path, MultipartFile file) { + String originalFilename = file.getOriginalFilename(); + if (StringUtils.isBlank(originalFilename)) { + throw new RuntimeException(); + } + String fileName = System.currentTimeMillis() + ""; + if (originalFilename.lastIndexOf(".") >= 0) { + fileName += originalFilename.substring(originalFilename.lastIndexOf(".")); + } + String objectName = DateUtil.format(new Date(), DatePattern.PURE_DATE_PATTERN) + "/" + fileName; + try { + InputStream stream = new ByteArrayInputStream(file.getBytes()); + PutObjectArgs objectArgs = PutObjectArgs.builder().bucket(bucketName).object(path + "/" + objectName) + .stream(stream, file.getSize(), -1).contentType(file.getContentType()).build(); + //文件名称相同会覆盖 + minioClient.putObject(objectArgs); + } catch (Exception e) { + log.error("上传图片失败,", e); + return null; + } + return objectName; + } + + /** + * 文件上传 + * + * @param bucketName bucket名称 + * @param path 路径 + * @param name 文件名 + * @param fileByte 文件内容 + * @param contentType contentType + * @return objectName + */ + public String upload(String bucketName, String path, String name, byte[] fileByte, String contentType) { + + String fileName = System.currentTimeMillis() + name.substring(name.lastIndexOf(".")); + String objectName = DateUtil.format(new Date(), DatePattern.PURE_DATE_PATTERN) + "/" + fileName; + try { + InputStream stream = new ByteArrayInputStream(fileByte); + PutObjectArgs objectArgs = PutObjectArgs.builder().bucket(bucketName).object(path + "/" + objectName) + .stream(stream, fileByte.length, -1).contentType(contentType).build(); + //文件名称相同会覆盖 + minioClient.putObject(objectArgs); + } catch (Exception e) { + log.error("上传文件失败,", e); + return null; + } + return objectName; + } + + + /** + * 删除 + * + * @param bucketName bucket名称 + * @param path 路径 + * @param fileName 文件名 + * @return true/false + */ + public boolean remove(String bucketName, String path, String fileName) { + try { + minioClient.removeObject(RemoveObjectArgs.builder().bucket(bucketName).object(path + "/" + fileName).build()); + } catch (Exception e) { + log.error("删除文件失败,", e); + return false; + } + return true; + } + + /** + * 判断文件是否存在 + * + * @param bucketName bucket名称 + * @param path 路径 + * @param fileName 文件名 + * @return + */ + public Boolean isExist(String bucketName, String path, String fileName) { + try { + minioClient.statObject(StatObjectArgs.builder().bucket(bucketName).object(path + "/" + fileName).build()); + } catch (Exception e) { + return false; + } + return true; + } + + public File getFile(String bucket, String objectName) { + try (InputStream stream = minioClient.getObject( + GetObjectArgs.builder() + .bucket(bucket) + .object(objectName) + .build())) { + + // 获取文件名后缀(可选) + String suffix = objectName.contains(".") ? objectName.substring(objectName.lastIndexOf(".")) : ".tmp"; + + // 创建临时文件(系统默认目录) + File tempFile = File.createTempFile("minio_", suffix); + + // 写入内容 + try (FileOutputStream out = new FileOutputStream(tempFile)) { + byte[] buffer = new byte[8192]; + int len; + while ((len = stream.read(buffer)) != -1) { + out.write(buffer, 0, len); + } + } + + return tempFile; + } catch (Exception e) { + throw new RuntimeException("下载文件失败", e); + } + } + + +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/core/page/PageDomain.java b/cmvr-iot-common/src/main/java/com/cmvr/common/core/page/PageDomain.java new file mode 100644 index 0000000..37e1d7a --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/core/page/PageDomain.java @@ -0,0 +1,101 @@ +package com.cmvr.common.core.page; + +import com.cmvr.common.utils.StringUtils; + +/** + * 分页数据 + * + * @author cmvrIot + */ +public class PageDomain +{ + /** 当前记录起始索引 */ + private Integer pageNum; + + /** 每页显示记录数 */ + private Integer pageSize; + + /** 排序列 */ + private String orderByColumn; + + /** 排序的方向desc或者asc */ + private String isAsc = "asc"; + + /** 分页参数合理化 */ + private Boolean reasonable = true; + + public String getOrderBy() + { + if (StringUtils.isEmpty(orderByColumn)) + { + return ""; + } + return StringUtils.toUnderScoreCase(orderByColumn) + " " + isAsc; + } + + public Integer getPageNum() + { + return pageNum; + } + + public void setPageNum(Integer pageNum) + { + this.pageNum = pageNum; + } + + public Integer getPageSize() + { + return pageSize; + } + + public void setPageSize(Integer pageSize) + { + this.pageSize = pageSize; + } + + public String getOrderByColumn() + { + return orderByColumn; + } + + public void setOrderByColumn(String orderByColumn) + { + this.orderByColumn = orderByColumn; + } + + public String getIsAsc() + { + return isAsc; + } + + public void setIsAsc(String isAsc) + { + if (StringUtils.isNotEmpty(isAsc)) + { + // 兼容前端排序类型 + if ("ascending".equals(isAsc)) + { + isAsc = "asc"; + } + else if ("descending".equals(isAsc)) + { + isAsc = "desc"; + } + this.isAsc = isAsc; + } + } + + public Boolean getReasonable() + { + if (StringUtils.isNull(reasonable)) + { + return Boolean.TRUE; + } + return reasonable; + } + + public void setReasonable(Boolean reasonable) + { + this.reasonable = reasonable; + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/core/page/TableDataInfo.java b/cmvr-iot-common/src/main/java/com/cmvr/common/core/page/TableDataInfo.java new file mode 100644 index 0000000..190fc2b --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/core/page/TableDataInfo.java @@ -0,0 +1,85 @@ +package com.cmvr.common.core.page; + +import java.io.Serializable; +import java.util.List; + +/** + * 表格分页数据对象 + * + * @author cmvrIot + */ +public class TableDataInfo implements Serializable +{ + private static final long serialVersionUID = 1L; + + /** 总记录数 */ + private long total; + + /** 列表数据 */ + private List rows; + + /** 消息状态码 */ + private int code; + + /** 消息内容 */ + private String msg; + + /** + * 表格数据对象 + */ + public TableDataInfo() + { + } + + /** + * 分页 + * + * @param list 列表数据 + * @param total 总记录数 + */ + public TableDataInfo(List list, int total) + { + this.rows = list; + this.total = total; + } + + public long getTotal() + { + return total; + } + + public void setTotal(long total) + { + this.total = total; + } + + public List getRows() + { + return rows; + } + + public void setRows(List rows) + { + this.rows = rows; + } + + public int getCode() + { + return code; + } + + public void setCode(int code) + { + this.code = code; + } + + public String getMsg() + { + return msg; + } + + public void setMsg(String msg) + { + this.msg = msg; + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/core/page/TableSupport.java b/cmvr-iot-common/src/main/java/com/cmvr/common/core/page/TableSupport.java new file mode 100644 index 0000000..5d8dbf3 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/core/page/TableSupport.java @@ -0,0 +1,56 @@ +package com.cmvr.common.core.page; + +import com.cmvr.common.core.text.Convert; +import com.cmvr.common.utils.ServletUtils; + +/** + * 表格数据处理 + * + * @author cmvrIot + */ +public class TableSupport +{ + /** + * 当前记录起始索引 + */ + public static final String PAGE_NUM = "pageNum"; + + /** + * 每页显示记录数 + */ + public static final String PAGE_SIZE = "pageSize"; + + /** + * 排序列 + */ + public static final String ORDER_BY_COLUMN = "orderByColumn"; + + /** + * 排序的方向 "desc" 或者 "asc". + */ + public static final String IS_ASC = "isAsc"; + + /** + * 分页参数合理化 + */ + public static final String REASONABLE = "reasonable"; + + /** + * 封装分页对象 + */ + public static PageDomain getPageDomain() + { + PageDomain pageDomain = new PageDomain(); + pageDomain.setPageNum(Convert.toInt(ServletUtils.getParameter(PAGE_NUM), 1)); + pageDomain.setPageSize(Convert.toInt(ServletUtils.getParameter(PAGE_SIZE), 10)); + pageDomain.setOrderByColumn(ServletUtils.getParameter(ORDER_BY_COLUMN)); + pageDomain.setIsAsc(ServletUtils.getParameter(IS_ASC)); + pageDomain.setReasonable(ServletUtils.getParameterToBool(REASONABLE)); + return pageDomain; + } + + public static PageDomain buildPageRequest() + { + return getPageDomain(); + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/core/redis/RedisCache.java b/cmvr-iot-common/src/main/java/com/cmvr/common/core/redis/RedisCache.java new file mode 100644 index 0000000..8e82f56 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/core/redis/RedisCache.java @@ -0,0 +1,268 @@ +package com.cmvr.common.core.redis; + +import java.util.Collection; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.TimeUnit; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.BoundSetOperations; +import org.springframework.data.redis.core.HashOperations; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.ValueOperations; +import org.springframework.stereotype.Component; + +/** + * spring redis 工具类 + * + * @author cmvrIot + **/ +@SuppressWarnings(value = { "unchecked", "rawtypes" }) +@Component +public class RedisCache +{ + @Autowired + public RedisTemplate redisTemplate; + + /** + * 缓存基本的对象,Integer、String、实体类等 + * + * @param key 缓存的键值 + * @param value 缓存的值 + */ + public void setCacheObject(final String key, final T value) + { + redisTemplate.opsForValue().set(key, value); + } + + /** + * 缓存基本的对象,Integer、String、实体类等 + * + * @param key 缓存的键值 + * @param value 缓存的值 + * @param timeout 时间 + * @param timeUnit 时间颗粒度 + */ + public void setCacheObject(final String key, final T value, final Integer timeout, final TimeUnit timeUnit) + { + redisTemplate.opsForValue().set(key, value, timeout, timeUnit); + } + + /** + * 设置有效时间 + * + * @param key Redis键 + * @param timeout 超时时间 + * @return true=设置成功;false=设置失败 + */ + public boolean expire(final String key, final long timeout) + { + return expire(key, timeout, TimeUnit.SECONDS); + } + + /** + * 设置有效时间 + * + * @param key Redis键 + * @param timeout 超时时间 + * @param unit 时间单位 + * @return true=设置成功;false=设置失败 + */ + public boolean expire(final String key, final long timeout, final TimeUnit unit) + { + return redisTemplate.expire(key, timeout, unit); + } + + /** + * 获取有效时间 + * + * @param key Redis键 + * @return 有效时间 + */ + public long getExpire(final String key) + { + return redisTemplate.getExpire(key); + } + + /** + * 判断 key是否存在 + * + * @param key 键 + * @return true 存在 false不存在 + */ + public Boolean hasKey(String key) + { + return redisTemplate.hasKey(key); + } + + /** + * 获得缓存的基本对象。 + * + * @param key 缓存键值 + * @return 缓存键值对应的数据 + */ + public T getCacheObject(final String key) + { + ValueOperations operation = redisTemplate.opsForValue(); + return operation.get(key); + } + + /** + * 删除单个对象 + * + * @param key + */ + public boolean deleteObject(final String key) + { + return redisTemplate.delete(key); + } + + /** + * 删除集合对象 + * + * @param collection 多个对象 + * @return + */ + public boolean deleteObject(final Collection collection) + { + return redisTemplate.delete(collection) > 0; + } + + /** + * 缓存List数据 + * + * @param key 缓存的键值 + * @param dataList 待缓存的List数据 + * @return 缓存的对象 + */ + public long setCacheList(final String key, final List dataList) + { + Long count = redisTemplate.opsForList().rightPushAll(key, dataList); + return count == null ? 0 : count; + } + + /** + * 获得缓存的list对象 + * + * @param key 缓存的键值 + * @return 缓存键值对应的数据 + */ + public List getCacheList(final String key) + { + return redisTemplate.opsForList().range(key, 0, -1); + } + + /** + * 缓存Set + * + * @param key 缓存键值 + * @param dataSet 缓存的数据 + * @return 缓存数据的对象 + */ + public BoundSetOperations setCacheSet(final String key, final Set dataSet) + { + BoundSetOperations setOperation = redisTemplate.boundSetOps(key); + Iterator it = dataSet.iterator(); + while (it.hasNext()) + { + setOperation.add(it.next()); + } + return setOperation; + } + + /** + * 获得缓存的set + * + * @param key + * @return + */ + public Set getCacheSet(final String key) + { + return redisTemplate.opsForSet().members(key); + } + + /** + * 缓存Map + * + * @param key + * @param dataMap + */ + public void setCacheMap(final String key, final Map dataMap) + { + if (dataMap != null) { + redisTemplate.opsForHash().putAll(key, dataMap); + } + } + + /** + * 获得缓存的Map + * + * @param key + * @return + */ + public Map getCacheMap(final String key) + { + return redisTemplate.opsForHash().entries(key); + } + + /** + * 往Hash中存入数据 + * + * @param key Redis键 + * @param hKey Hash键 + * @param value 值 + */ + public void setCacheMapValue(final String key, final String hKey, final T value) + { + redisTemplate.opsForHash().put(key, hKey, value); + } + + /** + * 获取Hash中的数据 + * + * @param key Redis键 + * @param hKey Hash键 + * @return Hash中的对象 + */ + public T getCacheMapValue(final String key, final String hKey) + { + HashOperations opsForHash = redisTemplate.opsForHash(); + return opsForHash.get(key, hKey); + } + + /** + * 获取多个Hash中的数据 + * + * @param key Redis键 + * @param hKeys Hash键集合 + * @return Hash对象集合 + */ + public List getMultiCacheMapValue(final String key, final Collection hKeys) + { + return redisTemplate.opsForHash().multiGet(key, hKeys); + } + + /** + * 删除Hash中的某条数据 + * + * @param key Redis键 + * @param hKey Hash键 + * @return 是否成功 + */ + public boolean deleteCacheMapValue(final String key, final String hKey) + { + return redisTemplate.opsForHash().delete(key, hKey) > 0; + } + + /** + * 获得缓存的基本对象列表 + * + * @param pattern 字符串前缀 + * @return 对象列表 + */ + public Collection keys(final String pattern) + { + return redisTemplate.keys(pattern); + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/core/text/CharsetKit.java b/cmvr-iot-common/src/main/java/com/cmvr/common/core/text/CharsetKit.java new file mode 100644 index 0000000..8495829 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/core/text/CharsetKit.java @@ -0,0 +1,86 @@ +package com.cmvr.common.core.text; + +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; +import com.cmvr.common.utils.StringUtils; + +/** + * 字符集工具类 + * + * @author cmvrIot + */ +public class CharsetKit +{ + /** ISO-8859-1 */ + public static final String ISO_8859_1 = "ISO-8859-1"; + /** UTF-8 */ + public static final String UTF_8 = "UTF-8"; + /** GBK */ + public static final String GBK = "GBK"; + + /** ISO-8859-1 */ + public static final Charset CHARSET_ISO_8859_1 = Charset.forName(ISO_8859_1); + /** UTF-8 */ + public static final Charset CHARSET_UTF_8 = Charset.forName(UTF_8); + /** GBK */ + public static final Charset CHARSET_GBK = Charset.forName(GBK); + + /** + * 转换为Charset对象 + * + * @param charset 字符集,为空则返回默认字符集 + * @return Charset + */ + public static Charset charset(String charset) + { + return StringUtils.isEmpty(charset) ? Charset.defaultCharset() : Charset.forName(charset); + } + + /** + * 转换字符串的字符集编码 + * + * @param source 字符串 + * @param srcCharset 源字符集,默认ISO-8859-1 + * @param destCharset 目标字符集,默认UTF-8 + * @return 转换后的字符集 + */ + public static String convert(String source, String srcCharset, String destCharset) + { + return convert(source, Charset.forName(srcCharset), Charset.forName(destCharset)); + } + + /** + * 转换字符串的字符集编码 + * + * @param source 字符串 + * @param srcCharset 源字符集,默认ISO-8859-1 + * @param destCharset 目标字符集,默认UTF-8 + * @return 转换后的字符集 + */ + public static String convert(String source, Charset srcCharset, Charset destCharset) + { + if (null == srcCharset) + { + srcCharset = StandardCharsets.ISO_8859_1; + } + + if (null == destCharset) + { + destCharset = StandardCharsets.UTF_8; + } + + if (StringUtils.isEmpty(source) || srcCharset.equals(destCharset)) + { + return source; + } + return new String(source.getBytes(srcCharset), destCharset); + } + + /** + * @return 系统字符集编码 + */ + public static String systemCharset() + { + return Charset.defaultCharset().name(); + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/core/text/Convert.java b/cmvr-iot-common/src/main/java/com/cmvr/common/core/text/Convert.java new file mode 100644 index 0000000..3247c8f --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/core/text/Convert.java @@ -0,0 +1,1010 @@ +package com.cmvr.common.core.text; + +import java.math.BigDecimal; +import java.math.BigInteger; +import java.math.RoundingMode; +import java.nio.ByteBuffer; +import java.nio.charset.Charset; +import java.text.NumberFormat; +import java.util.Set; +import com.cmvr.common.utils.StringUtils; +import org.apache.commons.lang3.ArrayUtils; + +/** + * 类型转换器 + * + * @author cmvrIot + */ +public class Convert +{ + /** + * 转换为字符串
+ * 如果给定的值为null,或者转换失败,返回默认值
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @param defaultValue 转换错误时的默认值 + * @return 结果 + */ + public static String toStr(Object value, String defaultValue) + { + if (null == value) + { + return defaultValue; + } + if (value instanceof String) + { + return (String) value; + } + return value.toString(); + } + + /** + * 转换为字符串
+ * 如果给定的值为null,或者转换失败,返回默认值null
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @return 结果 + */ + public static String toStr(Object value) + { + return toStr(value, null); + } + + /** + * 转换为字符
+ * 如果给定的值为null,或者转换失败,返回默认值
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @param defaultValue 转换错误时的默认值 + * @return 结果 + */ + public static Character toChar(Object value, Character defaultValue) + { + if (null == value) + { + return defaultValue; + } + if (value instanceof Character) + { + return (Character) value; + } + + final String valueStr = toStr(value, null); + return StringUtils.isEmpty(valueStr) ? defaultValue : valueStr.charAt(0); + } + + /** + * 转换为字符
+ * 如果给定的值为null,或者转换失败,返回默认值null
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @return 结果 + */ + public static Character toChar(Object value) + { + return toChar(value, null); + } + + /** + * 转换为byte
+ * 如果给定的值为null,或者转换失败,返回默认值
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @param defaultValue 转换错误时的默认值 + * @return 结果 + */ + public static Byte toByte(Object value, Byte defaultValue) + { + if (value == null) + { + return defaultValue; + } + if (value instanceof Byte) + { + return (Byte) value; + } + if (value instanceof Number) + { + return ((Number) value).byteValue(); + } + final String valueStr = toStr(value, null); + if (StringUtils.isEmpty(valueStr)) + { + return defaultValue; + } + try + { + return Byte.parseByte(valueStr); + } + catch (Exception e) + { + return defaultValue; + } + } + + /** + * 转换为byte
+ * 如果给定的值为null,或者转换失败,返回默认值null
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @return 结果 + */ + public static Byte toByte(Object value) + { + return toByte(value, null); + } + + /** + * 转换为Short
+ * 如果给定的值为null,或者转换失败,返回默认值
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @param defaultValue 转换错误时的默认值 + * @return 结果 + */ + public static Short toShort(Object value, Short defaultValue) + { + if (value == null) + { + return defaultValue; + } + if (value instanceof Short) + { + return (Short) value; + } + if (value instanceof Number) + { + return ((Number) value).shortValue(); + } + final String valueStr = toStr(value, null); + if (StringUtils.isEmpty(valueStr)) + { + return defaultValue; + } + try + { + return Short.parseShort(valueStr.trim()); + } + catch (Exception e) + { + return defaultValue; + } + } + + /** + * 转换为Short
+ * 如果给定的值为null,或者转换失败,返回默认值null
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @return 结果 + */ + public static Short toShort(Object value) + { + return toShort(value, null); + } + + /** + * 转换为Number
+ * 如果给定的值为空,或者转换失败,返回默认值
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @param defaultValue 转换错误时的默认值 + * @return 结果 + */ + public static Number toNumber(Object value, Number defaultValue) + { + if (value == null) + { + return defaultValue; + } + if (value instanceof Number) + { + return (Number) value; + } + final String valueStr = toStr(value, null); + if (StringUtils.isEmpty(valueStr)) + { + return defaultValue; + } + try + { + return NumberFormat.getInstance().parse(valueStr); + } + catch (Exception e) + { + return defaultValue; + } + } + + /** + * 转换为Number
+ * 如果给定的值为空,或者转换失败,返回默认值null
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @return 结果 + */ + public static Number toNumber(Object value) + { + return toNumber(value, null); + } + + /** + * 转换为int
+ * 如果给定的值为空,或者转换失败,返回默认值
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @param defaultValue 转换错误时的默认值 + * @return 结果 + */ + public static Integer toInt(Object value, Integer defaultValue) + { + if (value == null) + { + return defaultValue; + } + if (value instanceof Integer) + { + return (Integer) value; + } + if (value instanceof Number) + { + return ((Number) value).intValue(); + } + final String valueStr = toStr(value, null); + if (StringUtils.isEmpty(valueStr)) + { + return defaultValue; + } + try + { + return Integer.parseInt(valueStr.trim()); + } + catch (Exception e) + { + return defaultValue; + } + } + + /** + * 转换为int
+ * 如果给定的值为null,或者转换失败,返回默认值null
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @return 结果 + */ + public static Integer toInt(Object value) + { + return toInt(value, null); + } + + /** + * 转换为Integer数组
+ * + * @param str 被转换的值 + * @return 结果 + */ + public static Integer[] toIntArray(String str) + { + return toIntArray(",", str); + } + + /** + * 转换为Long数组
+ * + * @param str 被转换的值 + * @return 结果 + */ + public static Long[] toLongArray(String str) + { + return toLongArray(",", str); + } + + /** + * 转换为Integer数组
+ * + * @param split 分隔符 + * @param split 被转换的值 + * @return 结果 + */ + public static Integer[] toIntArray(String split, String str) + { + if (StringUtils.isEmpty(str)) + { + return new Integer[] {}; + } + String[] arr = str.split(split); + final Integer[] ints = new Integer[arr.length]; + for (int i = 0; i < arr.length; i++) + { + final Integer v = toInt(arr[i], 0); + ints[i] = v; + } + return ints; + } + + /** + * 转换为Long数组
+ * + * @param split 分隔符 + * @param str 被转换的值 + * @return 结果 + */ + public static Long[] toLongArray(String split, String str) + { + if (StringUtils.isEmpty(str)) + { + return new Long[] {}; + } + String[] arr = str.split(split); + final Long[] longs = new Long[arr.length]; + for (int i = 0; i < arr.length; i++) + { + final Long v = toLong(arr[i], null); + longs[i] = v; + } + return longs; + } + + /** + * 转换为String数组
+ * + * @param str 被转换的值 + * @return 结果 + */ + public static String[] toStrArray(String str) + { + if (StringUtils.isEmpty(str)) + { + return new String[] {}; + } + return toStrArray(",", str); + } + + /** + * 转换为String数组
+ * + * @param split 分隔符 + * @param split 被转换的值 + * @return 结果 + */ + public static String[] toStrArray(String split, String str) + { + return str.split(split); + } + + /** + * 转换为long
+ * 如果给定的值为空,或者转换失败,返回默认值
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @param defaultValue 转换错误时的默认值 + * @return 结果 + */ + public static Long toLong(Object value, Long defaultValue) + { + if (value == null) + { + return defaultValue; + } + if (value instanceof Long) + { + return (Long) value; + } + if (value instanceof Number) + { + return ((Number) value).longValue(); + } + final String valueStr = toStr(value, null); + if (StringUtils.isEmpty(valueStr)) + { + return defaultValue; + } + try + { + // 支持科学计数法 + return new BigDecimal(valueStr.trim()).longValue(); + } + catch (Exception e) + { + return defaultValue; + } + } + + /** + * 转换为long
+ * 如果给定的值为null,或者转换失败,返回默认值null
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @return 结果 + */ + public static Long toLong(Object value) + { + return toLong(value, null); + } + + /** + * 转换为double
+ * 如果给定的值为空,或者转换失败,返回默认值
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @param defaultValue 转换错误时的默认值 + * @return 结果 + */ + public static Double toDouble(Object value, Double defaultValue) + { + if (value == null) + { + return defaultValue; + } + if (value instanceof Double) + { + return (Double) value; + } + if (value instanceof Number) + { + return ((Number) value).doubleValue(); + } + final String valueStr = toStr(value, null); + if (StringUtils.isEmpty(valueStr)) + { + return defaultValue; + } + try + { + // 支持科学计数法 + return new BigDecimal(valueStr.trim()).doubleValue(); + } + catch (Exception e) + { + return defaultValue; + } + } + + /** + * 转换为double
+ * 如果给定的值为空,或者转换失败,返回默认值null
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @return 结果 + */ + public static Double toDouble(Object value) + { + return toDouble(value, null); + } + + /** + * 转换为Float
+ * 如果给定的值为空,或者转换失败,返回默认值
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @param defaultValue 转换错误时的默认值 + * @return 结果 + */ + public static Float toFloat(Object value, Float defaultValue) + { + if (value == null) + { + return defaultValue; + } + if (value instanceof Float) + { + return (Float) value; + } + if (value instanceof Number) + { + return ((Number) value).floatValue(); + } + final String valueStr = toStr(value, null); + if (StringUtils.isEmpty(valueStr)) + { + return defaultValue; + } + try + { + return Float.parseFloat(valueStr.trim()); + } + catch (Exception e) + { + return defaultValue; + } + } + + /** + * 转换为Float
+ * 如果给定的值为空,或者转换失败,返回默认值null
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @return 结果 + */ + public static Float toFloat(Object value) + { + return toFloat(value, null); + } + + /** + * 转换为boolean
+ * String支持的值为:true、false、yes、ok、no,1,0 如果给定的值为空,或者转换失败,返回默认值
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @param defaultValue 转换错误时的默认值 + * @return 结果 + */ + public static Boolean toBool(Object value, Boolean defaultValue) + { + if (value == null) + { + return defaultValue; + } + if (value instanceof Boolean) + { + return (Boolean) value; + } + String valueStr = toStr(value, null); + if (StringUtils.isEmpty(valueStr)) + { + return defaultValue; + } + valueStr = valueStr.trim().toLowerCase(); + switch (valueStr) + { + case "true": + case "yes": + case "ok": + case "1": + return true; + case "false": + case "no": + case "0": + return false; + default: + return defaultValue; + } + } + + /** + * 转换为boolean
+ * 如果给定的值为空,或者转换失败,返回默认值null
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @return 结果 + */ + public static Boolean toBool(Object value) + { + return toBool(value, null); + } + + /** + * 转换为Enum对象
+ * 如果给定的值为空,或者转换失败,返回默认值
+ * + * @param clazz Enum的Class + * @param value 值 + * @param defaultValue 默认值 + * @return Enum + */ + public static > E toEnum(Class clazz, Object value, E defaultValue) + { + if (value == null) + { + return defaultValue; + } + if (clazz.isAssignableFrom(value.getClass())) + { + @SuppressWarnings("unchecked") + E myE = (E) value; + return myE; + } + final String valueStr = toStr(value, null); + if (StringUtils.isEmpty(valueStr)) + { + return defaultValue; + } + try + { + return Enum.valueOf(clazz, valueStr); + } + catch (Exception e) + { + return defaultValue; + } + } + + /** + * 转换为Enum对象
+ * 如果给定的值为空,或者转换失败,返回默认值null
+ * + * @param clazz Enum的Class + * @param value 值 + * @return Enum + */ + public static > E toEnum(Class clazz, Object value) + { + return toEnum(clazz, value, null); + } + + /** + * 转换为BigInteger
+ * 如果给定的值为空,或者转换失败,返回默认值
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @param defaultValue 转换错误时的默认值 + * @return 结果 + */ + public static BigInteger toBigInteger(Object value, BigInteger defaultValue) + { + if (value == null) + { + return defaultValue; + } + if (value instanceof BigInteger) + { + return (BigInteger) value; + } + if (value instanceof Long) + { + return BigInteger.valueOf((Long) value); + } + final String valueStr = toStr(value, null); + if (StringUtils.isEmpty(valueStr)) + { + return defaultValue; + } + try + { + return new BigInteger(valueStr); + } + catch (Exception e) + { + return defaultValue; + } + } + + /** + * 转换为BigInteger
+ * 如果给定的值为空,或者转换失败,返回默认值null
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @return 结果 + */ + public static BigInteger toBigInteger(Object value) + { + return toBigInteger(value, null); + } + + /** + * 转换为BigDecimal
+ * 如果给定的值为空,或者转换失败,返回默认值
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @param defaultValue 转换错误时的默认值 + * @return 结果 + */ + public static BigDecimal toBigDecimal(Object value, BigDecimal defaultValue) + { + if (value == null) + { + return defaultValue; + } + if (value instanceof BigDecimal) + { + return (BigDecimal) value; + } + if (value instanceof Long) + { + return new BigDecimal((Long) value); + } + if (value instanceof Double) + { + return BigDecimal.valueOf((Double) value); + } + if (value instanceof Integer) + { + return new BigDecimal((Integer) value); + } + final String valueStr = toStr(value, null); + if (StringUtils.isEmpty(valueStr)) + { + return defaultValue; + } + try + { + return new BigDecimal(valueStr); + } + catch (Exception e) + { + return defaultValue; + } + } + + /** + * 转换为BigDecimal
+ * 如果给定的值为空,或者转换失败,返回默认值
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @return 结果 + */ + public static BigDecimal toBigDecimal(Object value) + { + return toBigDecimal(value, null); + } + + /** + * 将对象转为字符串
+ * 1、Byte数组和ByteBuffer会被转换为对应字符串的数组 2、对象数组会调用Arrays.toString方法 + * + * @param obj 对象 + * @return 字符串 + */ + public static String utf8Str(Object obj) + { + return str(obj, CharsetKit.CHARSET_UTF_8); + } + + /** + * 将对象转为字符串
+ * 1、Byte数组和ByteBuffer会被转换为对应字符串的数组 2、对象数组会调用Arrays.toString方法 + * + * @param obj 对象 + * @param charsetName 字符集 + * @return 字符串 + */ + public static String str(Object obj, String charsetName) + { + return str(obj, Charset.forName(charsetName)); + } + + /** + * 将对象转为字符串
+ * 1、Byte数组和ByteBuffer会被转换为对应字符串的数组 2、对象数组会调用Arrays.toString方法 + * + * @param obj 对象 + * @param charset 字符集 + * @return 字符串 + */ + public static String str(Object obj, Charset charset) + { + if (null == obj) + { + return null; + } + + if (obj instanceof String) + { + return (String) obj; + } + else if (obj instanceof byte[]) + { + return str((byte[]) obj, charset); + } + else if (obj instanceof Byte[]) + { + byte[] bytes = ArrayUtils.toPrimitive((Byte[]) obj); + return str(bytes, charset); + } + else if (obj instanceof ByteBuffer) + { + return str((ByteBuffer) obj, charset); + } + return obj.toString(); + } + + /** + * 将byte数组转为字符串 + * + * @param bytes byte数组 + * @param charset 字符集 + * @return 字符串 + */ + public static String str(byte[] bytes, String charset) + { + return str(bytes, StringUtils.isEmpty(charset) ? Charset.defaultCharset() : Charset.forName(charset)); + } + + /** + * 解码字节码 + * + * @param data 字符串 + * @param charset 字符集,如果此字段为空,则解码的结果取决于平台 + * @return 解码后的字符串 + */ + public static String str(byte[] data, Charset charset) + { + if (data == null) + { + return null; + } + + if (null == charset) + { + return new String(data); + } + return new String(data, charset); + } + + /** + * 将编码的byteBuffer数据转换为字符串 + * + * @param data 数据 + * @param charset 字符集,如果为空使用当前系统字符集 + * @return 字符串 + */ + public static String str(ByteBuffer data, String charset) + { + if (data == null) + { + return null; + } + + return str(data, Charset.forName(charset)); + } + + /** + * 将编码的byteBuffer数据转换为字符串 + * + * @param data 数据 + * @param charset 字符集,如果为空使用当前系统字符集 + * @return 字符串 + */ + public static String str(ByteBuffer data, Charset charset) + { + if (null == charset) + { + charset = Charset.defaultCharset(); + } + return charset.decode(data).toString(); + } + + // ----------------------------------------------------------------------- 全角半角转换 + /** + * 半角转全角 + * + * @param input String. + * @return 全角字符串. + */ + public static String toSBC(String input) + { + return toSBC(input, null); + } + + /** + * 半角转全角 + * + * @param input String + * @param notConvertSet 不替换的字符集合 + * @return 全角字符串. + */ + public static String toSBC(String input, Set notConvertSet) + { + char[] c = input.toCharArray(); + for (int i = 0; i < c.length; i++) + { + if (null != notConvertSet && notConvertSet.contains(c[i])) + { + // 跳过不替换的字符 + continue; + } + + if (c[i] == ' ') + { + c[i] = '\u3000'; + } + else if (c[i] < '\177') + { + c[i] = (char) (c[i] + 65248); + + } + } + return new String(c); + } + + /** + * 全角转半角 + * + * @param input String. + * @return 半角字符串 + */ + public static String toDBC(String input) + { + return toDBC(input, null); + } + + /** + * 替换全角为半角 + * + * @param text 文本 + * @param notConvertSet 不替换的字符集合 + * @return 替换后的字符 + */ + public static String toDBC(String text, Set notConvertSet) + { + char[] c = text.toCharArray(); + for (int i = 0; i < c.length; i++) + { + if (null != notConvertSet && notConvertSet.contains(c[i])) + { + // 跳过不替换的字符 + continue; + } + + if (c[i] == '\u3000') + { + c[i] = ' '; + } + else if (c[i] > '\uFF00' && c[i] < '\uFF5F') + { + c[i] = (char) (c[i] - 65248); + } + } + String returnString = new String(c); + + return returnString; + } + + /** + * 数字金额大写转换 先写个完整的然后将如零拾替换成零 + * + * @param n 数字 + * @return 中文大写数字 + */ + public static String digitUppercase(double n) + { + String[] fraction = { "角", "分" }; + String[] digit = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" }; + String[][] unit = { { "元", "万", "亿" }, { "", "拾", "佰", "仟" } }; + + String head = n < 0 ? "负" : ""; + n = Math.abs(n); + + String s = ""; + for (int i = 0; i < fraction.length; i++) + { + // 优化double计算精度丢失问题 + BigDecimal nNum = new BigDecimal(n); + BigDecimal decimal = new BigDecimal(10); + BigDecimal scale = nNum.multiply(decimal).setScale(2, RoundingMode.HALF_EVEN); + double d = scale.doubleValue(); + s += (digit[(int) (Math.floor(d * Math.pow(10, i)) % 10)] + fraction[i]).replaceAll("(零.)+", ""); + } + if (s.length() < 1) + { + s = "整"; + } + int integerPart = (int) Math.floor(n); + + for (int i = 0; i < unit[0].length && integerPart > 0; i++) + { + String p = ""; + for (int j = 0; j < unit[1].length && n > 0; j++) + { + p = digit[integerPart % 10] + unit[1][j] + p; + integerPart = integerPart / 10; + } + s = p.replaceAll("(零.)*零$", "").replaceAll("^$", "零") + unit[0][i] + s; + } + return head + s.replaceAll("(零.)*零元", "元").replaceFirst("(零.)+", "").replaceAll("(零.)+", "零").replaceAll("^整$", "零元整"); + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/core/text/StrFormatter.java b/cmvr-iot-common/src/main/java/com/cmvr/common/core/text/StrFormatter.java new file mode 100644 index 0000000..71ad6d0 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/core/text/StrFormatter.java @@ -0,0 +1,92 @@ +package com.cmvr.common.core.text; + +import com.cmvr.common.utils.StringUtils; + +/** + * 字符串格式化 + * + * @author cmvrIot + */ +public class StrFormatter +{ + public static final String EMPTY_JSON = "{}"; + public static final char C_BACKSLASH = '\\'; + public static final char C_DELIM_START = '{'; + public static final char C_DELIM_END = '}'; + + /** + * 格式化字符串
+ * 此方法只是简单将占位符 {} 按照顺序替换为参数
+ * 如果想输出 {} 使用 \\转义 { 即可,如果想输出 {} 之前的 \ 使用双转义符 \\\\ 即可
+ * 例:
+ * 通常使用:format("this is {} for {}", "a", "b") -> this is a for b
+ * 转义{}: format("this is \\{} for {}", "a", "b") -> this is \{} for a
+ * 转义\: format("this is \\\\{} for {}", "a", "b") -> this is \a for b
+ * + * @param strPattern 字符串模板 + * @param argArray 参数列表 + * @return 结果 + */ + public static String format(final String strPattern, final Object... argArray) + { + if (StringUtils.isEmpty(strPattern) || StringUtils.isEmpty(argArray)) + { + return strPattern; + } + final int strPatternLength = strPattern.length(); + + // 初始化定义好的长度以获得更好的性能 + StringBuilder sbuf = new StringBuilder(strPatternLength + 50); + + int handledPosition = 0; + int delimIndex;// 占位符所在位置 + for (int argIndex = 0; argIndex < argArray.length; argIndex++) + { + delimIndex = strPattern.indexOf(EMPTY_JSON, handledPosition); + if (delimIndex == -1) + { + if (handledPosition == 0) + { + return strPattern; + } + else + { // 字符串模板剩余部分不再包含占位符,加入剩余部分后返回结果 + sbuf.append(strPattern, handledPosition, strPatternLength); + return sbuf.toString(); + } + } + else + { + if (delimIndex > 0 && strPattern.charAt(delimIndex - 1) == C_BACKSLASH) + { + if (delimIndex > 1 && strPattern.charAt(delimIndex - 2) == C_BACKSLASH) + { + // 转义符之前还有一个转义符,占位符依旧有效 + sbuf.append(strPattern, handledPosition, delimIndex - 1); + sbuf.append(Convert.utf8Str(argArray[argIndex])); + handledPosition = delimIndex + 2; + } + else + { + // 占位符被转义 + argIndex--; + sbuf.append(strPattern, handledPosition, delimIndex - 1); + sbuf.append(C_DELIM_START); + handledPosition = delimIndex + 1; + } + } + else + { + // 正常占位符 + sbuf.append(strPattern, handledPosition, delimIndex); + sbuf.append(Convert.utf8Str(argArray[argIndex])); + handledPosition = delimIndex + 2; + } + } + } + // 加入最后一个占位符后所有的字符 + sbuf.append(strPattern, handledPosition, strPattern.length()); + + return sbuf.toString(); + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/enums/BusinessStatus.java b/cmvr-iot-common/src/main/java/com/cmvr/common/enums/BusinessStatus.java new file mode 100644 index 0000000..42e807a --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/enums/BusinessStatus.java @@ -0,0 +1,20 @@ +package com.cmvr.common.enums; + +/** + * 操作状态 + * + * @author cmvrIot + * + */ +public enum BusinessStatus +{ + /** + * 成功 + */ + SUCCESS, + + /** + * 失败 + */ + FAIL, +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/enums/BusinessType.java b/cmvr-iot-common/src/main/java/com/cmvr/common/enums/BusinessType.java new file mode 100644 index 0000000..5e2f4a3 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/enums/BusinessType.java @@ -0,0 +1,59 @@ +package com.cmvr.common.enums; + +/** + * 业务操作类型 + * + * @author cmvrIot + */ +public enum BusinessType +{ + /** + * 其它 + */ + OTHER, + + /** + * 新增 + */ + INSERT, + + /** + * 修改 + */ + UPDATE, + + /** + * 删除 + */ + DELETE, + + /** + * 授权 + */ + GRANT, + + /** + * 导出 + */ + EXPORT, + + /** + * 导入 + */ + IMPORT, + + /** + * 强退 + */ + FORCE, + + /** + * 生成代码 + */ + GENCODE, + + /** + * 清空数据 + */ + CLEAN, +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/enums/DataSourceType.java b/cmvr-iot-common/src/main/java/com/cmvr/common/enums/DataSourceType.java new file mode 100644 index 0000000..a1b2184 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/enums/DataSourceType.java @@ -0,0 +1,19 @@ +package com.cmvr.common.enums; + +/** + * 数据源 + * + * @author cmvrIot + */ +public enum DataSourceType +{ + /** + * 主库 + */ + MASTER, + + /** + * 从库 + */ + SLAVE +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/enums/DesensitizedType.java b/cmvr-iot-common/src/main/java/com/cmvr/common/enums/DesensitizedType.java new file mode 100644 index 0000000..c4021b6 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/enums/DesensitizedType.java @@ -0,0 +1,59 @@ +package com.cmvr.common.enums; + +import java.util.function.Function; +import com.cmvr.common.utils.DesensitizedUtil; + +/** + * 脱敏类型 + * + * @author cmvrIot + */ +public enum DesensitizedType +{ + /** + * 姓名,第2位星号替换 + */ + USERNAME(s -> s.replaceAll("(\\S)\\S(\\S*)", "$1*$2")), + + /** + * 密码,全部字符都用*代替 + */ + PASSWORD(DesensitizedUtil::password), + + /** + * 身份证,中间10位星号替换 + */ + ID_CARD(s -> s.replaceAll("(\\d{4})\\d{10}(\\d{3}[Xx]|\\d{4})", "$1** **** ****$2")), + + /** + * 手机号,中间4位星号替换 + */ + PHONE(s -> s.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2")), + + /** + * 电子邮箱,仅显示第一个字母和@后面的地址显示,其他星号替换 + */ + EMAIL(s -> s.replaceAll("(^.)[^@]*(@.*$)", "$1****$2")), + + /** + * 银行卡号,保留最后4位,其他星号替换 + */ + BANK_CARD(s -> s.replaceAll("\\d{15}(\\d{3})", "**** **** **** **** $1")), + + /** + * 车牌号码,包含普通车辆、新能源车辆 + */ + CAR_LICENSE(DesensitizedUtil::carLicense); + + private final Function desensitizer; + + DesensitizedType(Function desensitizer) + { + this.desensitizer = desensitizer; + } + + public Function desensitizer() + { + return desensitizer; + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/enums/FileType.java b/cmvr-iot-common/src/main/java/com/cmvr/common/enums/FileType.java new file mode 100644 index 0000000..7a7dd1d --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/enums/FileType.java @@ -0,0 +1,50 @@ +package com.cmvr.common.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public enum FileType { + + /** + * 其他 + */ + OTHER(0, "其他"), + /** + * 普通文件 + */ + FILE(1, "文件"), + /** + * 图片 + */ + IMAGE(2, "图片"), + /** + * 音频 + */ + AUDIO(3, "音频"), + /** + * 视频 + */ + VIDEO(4, "视频"), + ; + + private final Integer code; + + private final String desc; + + + public Integer code() { + return this.code; + } + + public static FileType getByCode(Integer code) { + for (FileType type : FileType.values()) { + if (type.getCode().equals(code)) { + return type; + } + } + throw new IllegalArgumentException("文件类型错误!"); + } +} + diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/enums/GroupType.java b/cmvr-iot-common/src/main/java/com/cmvr/common/enums/GroupType.java new file mode 100644 index 0000000..609b86f --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/enums/GroupType.java @@ -0,0 +1,27 @@ +package com.cmvr.common.enums; + +import lombok.Getter; + +@Getter +public enum GroupType { + DETECTION(1, "检测项"), + TASK(2, "任务"), + DEVICE(3, "设备"); + + private final int code; + private final String description; + + GroupType(int code, String description) { + this.code = code; + this.description = description; + } + + public static GroupType fromCode(int code) { + for (GroupType type : GroupType.values()) { + if (type.getCode() == code) { + return type; + } + } + throw new IllegalArgumentException("Unknown code: " + code); + } +} \ No newline at end of file diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/enums/HttpMethod.java b/cmvr-iot-common/src/main/java/com/cmvr/common/enums/HttpMethod.java new file mode 100644 index 0000000..de9d658 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/enums/HttpMethod.java @@ -0,0 +1,36 @@ +package com.cmvr.common.enums; + +import java.util.HashMap; +import java.util.Map; +import org.springframework.lang.Nullable; + +/** + * 请求方式 + * + * @author cmvrIot + */ +public enum HttpMethod +{ + GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE; + + private static final Map mappings = new HashMap<>(16); + + static + { + for (HttpMethod httpMethod : values()) + { + mappings.put(httpMethod.name(), httpMethod); + } + } + + @Nullable + public static HttpMethod resolve(@Nullable String method) + { + return (method != null ? mappings.get(method) : null); + } + + public boolean matches(String method) + { + return (this == resolve(method)); + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/enums/LimitType.java b/cmvr-iot-common/src/main/java/com/cmvr/common/enums/LimitType.java new file mode 100644 index 0000000..4ade7a4 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/enums/LimitType.java @@ -0,0 +1,20 @@ +package com.cmvr.common.enums; + +/** + * 限流类型 + * + * @author cmvrIot + */ + +public enum LimitType +{ + /** + * 默认策略全局限流 + */ + DEFAULT, + + /** + * 根据请求者IP进行限流 + */ + IP +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/enums/OperatorType.java b/cmvr-iot-common/src/main/java/com/cmvr/common/enums/OperatorType.java new file mode 100644 index 0000000..e0bc060 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/enums/OperatorType.java @@ -0,0 +1,24 @@ +package com.cmvr.common.enums; + +/** + * 操作人类别 + * + * @author cmvrIot + */ +public enum OperatorType +{ + /** + * 其它 + */ + OTHER, + + /** + * 后台用户 + */ + MANAGE, + + /** + * 手机端用户 + */ + MOBILE +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/enums/UserStatus.java b/cmvr-iot-common/src/main/java/com/cmvr/common/enums/UserStatus.java new file mode 100644 index 0000000..1718aa5 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/enums/UserStatus.java @@ -0,0 +1,30 @@ +package com.cmvr.common.enums; + +/** + * 用户状态 + * + * @author cmvrIot + */ +public enum UserStatus +{ + OK("0", "正常"), DISABLE("1", "停用"), DELETED("2", "删除"); + + private final String code; + private final String info; + + UserStatus(String code, String info) + { + this.code = code; + this.info = info; + } + + public String getCode() + { + return code; + } + + public String getInfo() + { + return info; + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/enums/WebSocketMessageType.java b/cmvr-iot-common/src/main/java/com/cmvr/common/enums/WebSocketMessageType.java new file mode 100644 index 0000000..45c1e31 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/enums/WebSocketMessageType.java @@ -0,0 +1,25 @@ +package com.cmvr.common.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public enum WebSocketMessageType { + + COMMON(100, "普通消息"), + + TASK(101, "Node-RED 交互"); + + private final int code; + private final String description; + + public static WebSocketMessageType fromCode(int code) { + for (WebSocketMessageType value : values()) { + if (value.code == code) { + return value; + } + } + return null; + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/exception/DemoModeException.java b/cmvr-iot-common/src/main/java/com/cmvr/common/exception/DemoModeException.java new file mode 100644 index 0000000..60d322e --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/exception/DemoModeException.java @@ -0,0 +1,15 @@ +package com.cmvr.common.exception; + +/** + * 演示模式异常 + * + * @author cmvrIot + */ +public class DemoModeException extends RuntimeException +{ + private static final long serialVersionUID = 1L; + + public DemoModeException() + { + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/exception/GlobalException.java b/cmvr-iot-common/src/main/java/com/cmvr/common/exception/GlobalException.java new file mode 100644 index 0000000..ece1f35 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/exception/GlobalException.java @@ -0,0 +1,58 @@ +package com.cmvr.common.exception; + +/** + * 全局异常 + * + * @author cmvrIot + */ +public class GlobalException extends RuntimeException +{ + private static final long serialVersionUID = 1L; + + /** + * 错误提示 + */ + private String message; + + /** + * 错误明细,内部调试错误 + * + * 和 {@link CommonResult#getDetailMessage()} 一致的设计 + */ + private String detailMessage; + + /** + * 空构造方法,避免反序列化问题 + */ + public GlobalException() + { + } + + public GlobalException(String message) + { + this.message = message; + } + + public String getDetailMessage() + { + return detailMessage; + } + + public GlobalException setDetailMessage(String detailMessage) + { + this.detailMessage = detailMessage; + return this; + } + + @Override + public String getMessage() + { + return message; + } + + public GlobalException setMessage(String message) + { + this.message = message; + return this; + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/exception/ServiceException.java b/cmvr-iot-common/src/main/java/com/cmvr/common/exception/ServiceException.java new file mode 100644 index 0000000..802aec0 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/exception/ServiceException.java @@ -0,0 +1,74 @@ +package com.cmvr.common.exception; + +/** + * 业务异常 + * + * @author cmvrIot + */ +public final class ServiceException extends RuntimeException +{ + private static final long serialVersionUID = 1L; + + /** + * 错误码 + */ + private Integer code; + + /** + * 错误提示 + */ + private String message; + + /** + * 错误明细,内部调试错误 + * + * 和 {@link CommonResult#getDetailMessage()} 一致的设计 + */ + private String detailMessage; + + /** + * 空构造方法,避免反序列化问题 + */ + public ServiceException() + { + } + + public ServiceException(String message) + { + this.message = message; + } + + public ServiceException(String message, Integer code) + { + this.message = message; + this.code = code; + } + + public String getDetailMessage() + { + return detailMessage; + } + + @Override + public String getMessage() + { + return message; + } + + public Integer getCode() + { + return code; + } + + public ServiceException setMessage(String message) + { + this.message = message; + return this; + } + + public ServiceException setDetailMessage(String detailMessage) + { + this.detailMessage = detailMessage; + return this; + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/exception/UtilException.java b/cmvr-iot-common/src/main/java/com/cmvr/common/exception/UtilException.java new file mode 100644 index 0000000..4fa4b54 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/exception/UtilException.java @@ -0,0 +1,26 @@ +package com.cmvr.common.exception; + +/** + * 工具类异常 + * + * @author cmvrIot + */ +public class UtilException extends RuntimeException +{ + private static final long serialVersionUID = 8247610319171014183L; + + public UtilException(Throwable e) + { + super(e.getMessage(), e); + } + + public UtilException(String message) + { + super(message); + } + + public UtilException(String message, Throwable throwable) + { + super(message, throwable); + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/exception/base/BaseException.java b/cmvr-iot-common/src/main/java/com/cmvr/common/exception/base/BaseException.java new file mode 100644 index 0000000..c95d5f7 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/exception/base/BaseException.java @@ -0,0 +1,97 @@ +package com.cmvr.common.exception.base; + +import com.cmvr.common.utils.MessageUtils; +import com.cmvr.common.utils.StringUtils; + +/** + * 基础异常 + * + * @author cmvrIot + */ +public class BaseException extends RuntimeException +{ + private static final long serialVersionUID = 1L; + + /** + * 所属模块 + */ + private String module; + + /** + * 错误码 + */ + private String code; + + /** + * 错误码对应的参数 + */ + private Object[] args; + + /** + * 错误消息 + */ + private String defaultMessage; + + public BaseException(String module, String code, Object[] args, String defaultMessage) + { + this.module = module; + this.code = code; + this.args = args; + this.defaultMessage = defaultMessage; + } + + public BaseException(String module, String code, Object[] args) + { + this(module, code, args, null); + } + + public BaseException(String module, String defaultMessage) + { + this(module, null, null, defaultMessage); + } + + public BaseException(String code, Object[] args) + { + this(null, code, args, null); + } + + public BaseException(String defaultMessage) + { + this(null, null, null, defaultMessage); + } + + @Override + public String getMessage() + { + String message = null; + if (!StringUtils.isEmpty(code)) + { + message = MessageUtils.message(code, args); + } + if (message == null) + { + message = defaultMessage; + } + return message; + } + + public String getModule() + { + return module; + } + + public String getCode() + { + return code; + } + + public Object[] getArgs() + { + return args; + } + + public String getDefaultMessage() + { + return defaultMessage; + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/exception/file/FileException.java b/cmvr-iot-common/src/main/java/com/cmvr/common/exception/file/FileException.java new file mode 100644 index 0000000..29ea12e --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/exception/file/FileException.java @@ -0,0 +1,19 @@ +package com.cmvr.common.exception.file; + +import com.cmvr.common.exception.base.BaseException; + +/** + * 文件信息异常类 + * + * @author cmvrIot + */ +public class FileException extends BaseException +{ + private static final long serialVersionUID = 1L; + + public FileException(String code, Object[] args) + { + super("file", code, args, null); + } + +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/exception/file/FileNameLengthLimitExceededException.java b/cmvr-iot-common/src/main/java/com/cmvr/common/exception/file/FileNameLengthLimitExceededException.java new file mode 100644 index 0000000..aa55e88 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/exception/file/FileNameLengthLimitExceededException.java @@ -0,0 +1,16 @@ +package com.cmvr.common.exception.file; + +/** + * 文件名称超长限制异常类 + * + * @author cmvrIot + */ +public class FileNameLengthLimitExceededException extends FileException +{ + private static final long serialVersionUID = 1L; + + public FileNameLengthLimitExceededException(int defaultFileNameLength) + { + super("upload.filename.exceed.length", new Object[] { defaultFileNameLength }); + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/exception/file/FileSizeLimitExceededException.java b/cmvr-iot-common/src/main/java/com/cmvr/common/exception/file/FileSizeLimitExceededException.java new file mode 100644 index 0000000..f3452a6 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/exception/file/FileSizeLimitExceededException.java @@ -0,0 +1,16 @@ +package com.cmvr.common.exception.file; + +/** + * 文件名大小限制异常类 + * + * @author cmvrIot + */ +public class FileSizeLimitExceededException extends FileException +{ + private static final long serialVersionUID = 1L; + + public FileSizeLimitExceededException(long defaultMaxSize) + { + super("upload.exceed.maxSize", new Object[] { defaultMaxSize }); + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/exception/file/FileUploadException.java b/cmvr-iot-common/src/main/java/com/cmvr/common/exception/file/FileUploadException.java new file mode 100644 index 0000000..11b0eee --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/exception/file/FileUploadException.java @@ -0,0 +1,61 @@ +package com.cmvr.common.exception.file; + +import java.io.PrintStream; +import java.io.PrintWriter; + +/** + * 文件上传异常类 + * + * @author cmvrIot + */ +public class FileUploadException extends Exception +{ + + private static final long serialVersionUID = 1L; + + private final Throwable cause; + + public FileUploadException() + { + this(null, null); + } + + public FileUploadException(final String msg) + { + this(msg, null); + } + + public FileUploadException(String msg, Throwable cause) + { + super(msg); + this.cause = cause; + } + + @Override + public void printStackTrace(PrintStream stream) + { + super.printStackTrace(stream); + if (cause != null) + { + stream.println("Caused by:"); + cause.printStackTrace(stream); + } + } + + @Override + public void printStackTrace(PrintWriter writer) + { + super.printStackTrace(writer); + if (cause != null) + { + writer.println("Caused by:"); + cause.printStackTrace(writer); + } + } + + @Override + public Throwable getCause() + { + return cause; + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/exception/file/InvalidExtensionException.java b/cmvr-iot-common/src/main/java/com/cmvr/common/exception/file/InvalidExtensionException.java new file mode 100644 index 0000000..26fdaa4 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/exception/file/InvalidExtensionException.java @@ -0,0 +1,80 @@ +package com.cmvr.common.exception.file; + +import java.util.Arrays; + +/** + * 文件上传 误异常类 + * + * @author cmvrIot + */ +public class InvalidExtensionException extends FileUploadException +{ + private static final long serialVersionUID = 1L; + + private String[] allowedExtension; + private String extension; + private String filename; + + public InvalidExtensionException(String[] allowedExtension, String extension, String filename) + { + super("文件[" + filename + "]后缀[" + extension + "]不正确,请上传" + Arrays.toString(allowedExtension) + "格式"); + this.allowedExtension = allowedExtension; + this.extension = extension; + this.filename = filename; + } + + public String[] getAllowedExtension() + { + return allowedExtension; + } + + public String getExtension() + { + return extension; + } + + public String getFilename() + { + return filename; + } + + public static class InvalidImageExtensionException extends InvalidExtensionException + { + private static final long serialVersionUID = 1L; + + public InvalidImageExtensionException(String[] allowedExtension, String extension, String filename) + { + super(allowedExtension, extension, filename); + } + } + + public static class InvalidFlashExtensionException extends InvalidExtensionException + { + private static final long serialVersionUID = 1L; + + public InvalidFlashExtensionException(String[] allowedExtension, String extension, String filename) + { + super(allowedExtension, extension, filename); + } + } + + public static class InvalidMediaExtensionException extends InvalidExtensionException + { + private static final long serialVersionUID = 1L; + + public InvalidMediaExtensionException(String[] allowedExtension, String extension, String filename) + { + super(allowedExtension, extension, filename); + } + } + + public static class InvalidVideoExtensionException extends InvalidExtensionException + { + private static final long serialVersionUID = 1L; + + public InvalidVideoExtensionException(String[] allowedExtension, String extension, String filename) + { + super(allowedExtension, extension, filename); + } + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/exception/job/TaskException.java b/cmvr-iot-common/src/main/java/com/cmvr/common/exception/job/TaskException.java new file mode 100644 index 0000000..4f2ae46 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/exception/job/TaskException.java @@ -0,0 +1,34 @@ +package com.cmvr.common.exception.job; + +/** + * 计划策略异常 + * + * @author cmvrIot + */ +public class TaskException extends Exception +{ + private static final long serialVersionUID = 1L; + + private Code code; + + public TaskException(String msg, Code code) + { + this(msg, code, null); + } + + public TaskException(String msg, Code code, Exception nestedEx) + { + super(msg, nestedEx); + this.code = code; + } + + public Code getCode() + { + return code; + } + + public enum Code + { + TASK_EXISTS, NO_TASK_EXISTS, TASK_ALREADY_STARTED, UNKNOWN, CONFIG_ERROR, TASK_NODE_NOT_AVAILABLE + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/exception/user/BlackListException.java b/cmvr-iot-common/src/main/java/com/cmvr/common/exception/user/BlackListException.java new file mode 100644 index 0000000..a50ab9d --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/exception/user/BlackListException.java @@ -0,0 +1,16 @@ +package com.cmvr.common.exception.user; + +/** + * 黑名单IP异常类 + * + * @author cmvrIot + */ +public class BlackListException extends UserException +{ + private static final long serialVersionUID = 1L; + + public BlackListException() + { + super("login.blocked", null); + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/exception/user/CaptchaException.java b/cmvr-iot-common/src/main/java/com/cmvr/common/exception/user/CaptchaException.java new file mode 100644 index 0000000..ac28350 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/exception/user/CaptchaException.java @@ -0,0 +1,16 @@ +package com.cmvr.common.exception.user; + +/** + * 验证码错误异常类 + * + * @author cmvrIot + */ +public class CaptchaException extends UserException +{ + private static final long serialVersionUID = 1L; + + public CaptchaException() + { + super("user.jcaptcha.error", null); + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/exception/user/CaptchaExpireException.java b/cmvr-iot-common/src/main/java/com/cmvr/common/exception/user/CaptchaExpireException.java new file mode 100644 index 0000000..18c8c30 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/exception/user/CaptchaExpireException.java @@ -0,0 +1,16 @@ +package com.cmvr.common.exception.user; + +/** + * 验证码失效异常类 + * + * @author cmvrIot + */ +public class CaptchaExpireException extends UserException +{ + private static final long serialVersionUID = 1L; + + public CaptchaExpireException() + { + super("user.jcaptcha.expire", null); + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/exception/user/UserException.java b/cmvr-iot-common/src/main/java/com/cmvr/common/exception/user/UserException.java new file mode 100644 index 0000000..d7fde75 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/exception/user/UserException.java @@ -0,0 +1,18 @@ +package com.cmvr.common.exception.user; + +import com.cmvr.common.exception.base.BaseException; + +/** + * 用户信息异常类 + * + * @author cmvrIot + */ +public class UserException extends BaseException +{ + private static final long serialVersionUID = 1L; + + public UserException(String code, Object[] args) + { + super("user", code, args, null); + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/exception/user/UserNotExistsException.java b/cmvr-iot-common/src/main/java/com/cmvr/common/exception/user/UserNotExistsException.java new file mode 100644 index 0000000..0fd825b --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/exception/user/UserNotExistsException.java @@ -0,0 +1,16 @@ +package com.cmvr.common.exception.user; + +/** + * 用户不存在异常类 + * + * @author cmvrIot + */ +public class UserNotExistsException extends UserException +{ + private static final long serialVersionUID = 1L; + + public UserNotExistsException() + { + super("user.not.exists", null); + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/exception/user/UserPasswordNotMatchException.java b/cmvr-iot-common/src/main/java/com/cmvr/common/exception/user/UserPasswordNotMatchException.java new file mode 100644 index 0000000..2669bac --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/exception/user/UserPasswordNotMatchException.java @@ -0,0 +1,16 @@ +package com.cmvr.common.exception.user; + +/** + * 用户密码不正确或不符合规范异常类 + * + * @author cmvrIot + */ +public class UserPasswordNotMatchException extends UserException +{ + private static final long serialVersionUID = 1L; + + public UserPasswordNotMatchException() + { + super("user.password.not.match", null); + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/exception/user/UserPasswordRetryLimitExceedException.java b/cmvr-iot-common/src/main/java/com/cmvr/common/exception/user/UserPasswordRetryLimitExceedException.java new file mode 100644 index 0000000..42ee8ab --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/exception/user/UserPasswordRetryLimitExceedException.java @@ -0,0 +1,16 @@ +package com.cmvr.common.exception.user; + +/** + * 用户错误最大次数异常类 + * + * @author cmvrIot + */ +public class UserPasswordRetryLimitExceedException extends UserException +{ + private static final long serialVersionUID = 1L; + + public UserPasswordRetryLimitExceedException(int retryLimitCount, int lockTime) + { + super("user.password.retry.limit.exceed", new Object[] { retryLimitCount, lockTime }); + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/filter/PropertyPreExcludeFilter.java b/cmvr-iot-common/src/main/java/com/cmvr/common/filter/PropertyPreExcludeFilter.java new file mode 100644 index 0000000..54ee7dd --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/filter/PropertyPreExcludeFilter.java @@ -0,0 +1,24 @@ +package com.cmvr.common.filter; + +import com.alibaba.fastjson2.filter.SimplePropertyPreFilter; + +/** + * 排除JSON敏感属性 + * + * @author cmvrIot + */ +public class PropertyPreExcludeFilter extends SimplePropertyPreFilter +{ + public PropertyPreExcludeFilter() + { + } + + public PropertyPreExcludeFilter addExcludes(String... filters) + { + for (int i = 0; i < filters.length; i++) + { + this.getExcludes().add(filters[i]); + } + return this; + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/filter/RepeatableFilter.java b/cmvr-iot-common/src/main/java/com/cmvr/common/filter/RepeatableFilter.java new file mode 100644 index 0000000..19cc575 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/filter/RepeatableFilter.java @@ -0,0 +1,52 @@ +package com.cmvr.common.filter; + +import java.io.IOException; +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import org.springframework.http.MediaType; +import com.cmvr.common.utils.StringUtils; + +/** + * Repeatable 过滤器 + * + * @author cmvrIot + */ +public class RepeatableFilter implements Filter +{ + @Override + public void init(FilterConfig filterConfig) throws ServletException + { + + } + + @Override + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) + throws IOException, ServletException + { + ServletRequest requestWrapper = null; + if (request instanceof HttpServletRequest + && StringUtils.startsWithIgnoreCase(request.getContentType(), MediaType.APPLICATION_JSON_VALUE)) + { + requestWrapper = new RepeatedlyRequestWrapper((HttpServletRequest) request, response); + } + if (null == requestWrapper) + { + chain.doFilter(request, response); + } + else + { + chain.doFilter(requestWrapper, response); + } + } + + @Override + public void destroy() + { + + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/filter/RepeatedlyRequestWrapper.java b/cmvr-iot-common/src/main/java/com/cmvr/common/filter/RepeatedlyRequestWrapper.java new file mode 100644 index 0000000..f85f193 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/filter/RepeatedlyRequestWrapper.java @@ -0,0 +1,76 @@ +package com.cmvr.common.filter; + +import java.io.BufferedReader; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import javax.servlet.ReadListener; +import javax.servlet.ServletInputStream; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletRequestWrapper; +import com.cmvr.common.utils.http.HttpHelper; +import com.cmvr.common.constant.Constants; + +/** + * 构建可重复读取inputStream的request + * + * @author cmvrIot + */ +public class RepeatedlyRequestWrapper extends HttpServletRequestWrapper +{ + private final byte[] body; + + public RepeatedlyRequestWrapper(HttpServletRequest request, ServletResponse response) throws IOException + { + super(request); + request.setCharacterEncoding(Constants.UTF8); + response.setCharacterEncoding(Constants.UTF8); + + body = HttpHelper.getBodyString(request).getBytes(Constants.UTF8); + } + + @Override + public BufferedReader getReader() throws IOException + { + return new BufferedReader(new InputStreamReader(getInputStream())); + } + + @Override + public ServletInputStream getInputStream() throws IOException + { + final ByteArrayInputStream bais = new ByteArrayInputStream(body); + return new ServletInputStream() + { + @Override + public int read() throws IOException + { + return bais.read(); + } + + @Override + public int available() throws IOException + { + return body.length; + } + + @Override + public boolean isFinished() + { + return false; + } + + @Override + public boolean isReady() + { + return false; + } + + @Override + public void setReadListener(ReadListener readListener) + { + + } + }; + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/filter/XssFilter.java b/cmvr-iot-common/src/main/java/com/cmvr/common/filter/XssFilter.java new file mode 100644 index 0000000..ad99247 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/filter/XssFilter.java @@ -0,0 +1,75 @@ +package com.cmvr.common.filter; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.common.enums.HttpMethod; + +/** + * 防止XSS攻击的过滤器 + * + * @author cmvrIot + */ +public class XssFilter implements Filter +{ + /** + * 排除链接 + */ + public List excludes = new ArrayList<>(); + + @Override + public void init(FilterConfig filterConfig) throws ServletException + { + String tempExcludes = filterConfig.getInitParameter("excludes"); + if (StringUtils.isNotEmpty(tempExcludes)) + { + String[] urls = tempExcludes.split(","); + for (String url : urls) + { + excludes.add(url); + } + } + } + + @Override + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) + throws IOException, ServletException + { + HttpServletRequest req = (HttpServletRequest) request; + HttpServletResponse resp = (HttpServletResponse) response; + if (handleExcludeURL(req, resp)) + { + chain.doFilter(request, response); + return; + } + XssHttpServletRequestWrapper xssRequest = new XssHttpServletRequestWrapper((HttpServletRequest) request); + chain.doFilter(xssRequest, response); + } + + private boolean handleExcludeURL(HttpServletRequest request, HttpServletResponse response) + { + String url = request.getServletPath(); + String method = request.getMethod(); + // GET DELETE 不过滤 + if (method == null || HttpMethod.GET.matches(method) || HttpMethod.DELETE.matches(method)) + { + return true; + } + return StringUtils.matches(url, excludes); + } + + @Override + public void destroy() + { + + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/filter/XssHttpServletRequestWrapper.java b/cmvr-iot-common/src/main/java/com/cmvr/common/filter/XssHttpServletRequestWrapper.java new file mode 100644 index 0000000..5b599ec --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/filter/XssHttpServletRequestWrapper.java @@ -0,0 +1,111 @@ +package com.cmvr.common.filter; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import javax.servlet.ReadListener; +import javax.servlet.ServletInputStream; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletRequestWrapper; +import org.apache.commons.io.IOUtils; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.common.utils.html.EscapeUtil; + +/** + * XSS过滤处理 + * + * @author cmvrIot + */ +public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper +{ + /** + * @param request + */ + public XssHttpServletRequestWrapper(HttpServletRequest request) + { + super(request); + } + + @Override + public String[] getParameterValues(String name) + { + String[] values = super.getParameterValues(name); + if (values != null) + { + int length = values.length; + String[] escapesValues = new String[length]; + for (int i = 0; i < length; i++) + { + // 防xss攻击和过滤前后空格 + escapesValues[i] = EscapeUtil.clean(values[i]).trim(); + } + return escapesValues; + } + return super.getParameterValues(name); + } + + @Override + public ServletInputStream getInputStream() throws IOException + { + // 非json类型,直接返回 + if (!isJsonRequest()) + { + return super.getInputStream(); + } + + // 为空,直接返回 + String json = IOUtils.toString(super.getInputStream(), "utf-8"); + if (StringUtils.isEmpty(json)) + { + return super.getInputStream(); + } + + // xss过滤 + json = EscapeUtil.clean(json).trim(); + byte[] jsonBytes = json.getBytes("utf-8"); + final ByteArrayInputStream bis = new ByteArrayInputStream(jsonBytes); + return new ServletInputStream() + { + @Override + public boolean isFinished() + { + return true; + } + + @Override + public boolean isReady() + { + return true; + } + + @Override + public int available() throws IOException + { + return jsonBytes.length; + } + + @Override + public void setReadListener(ReadListener readListener) + { + } + + @Override + public int read() throws IOException + { + return bis.read(); + } + }; + } + + /** + * 是否是Json请求 + * + * @param request + */ + public boolean isJsonRequest() + { + String header = super.getHeader(HttpHeaders.CONTENT_TYPE); + return StringUtils.startsWithIgnoreCase(header, MediaType.APPLICATION_JSON_VALUE); + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/utils/Arith.java b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/Arith.java new file mode 100644 index 0000000..42518d3 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/Arith.java @@ -0,0 +1,114 @@ +package com.cmvr.common.utils; + +import java.math.BigDecimal; +import java.math.RoundingMode; + +/** + * 精确的浮点数运算 + * + * @author cmvrIot + */ +public class Arith +{ + + /** 默认除法运算精度 */ + private static final int DEF_DIV_SCALE = 10; + + /** 这个类不能实例化 */ + private Arith() + { + } + + /** + * 提供精确的加法运算。 + * @param v1 被加数 + * @param v2 加数 + * @return 两个参数的和 + */ + public static double add(double v1, double v2) + { + BigDecimal b1 = new BigDecimal(Double.toString(v1)); + BigDecimal b2 = new BigDecimal(Double.toString(v2)); + return b1.add(b2).doubleValue(); + } + + /** + * 提供精确的减法运算。 + * @param v1 被减数 + * @param v2 减数 + * @return 两个参数的差 + */ + public static double sub(double v1, double v2) + { + BigDecimal b1 = new BigDecimal(Double.toString(v1)); + BigDecimal b2 = new BigDecimal(Double.toString(v2)); + return b1.subtract(b2).doubleValue(); + } + + /** + * 提供精确的乘法运算。 + * @param v1 被乘数 + * @param v2 乘数 + * @return 两个参数的积 + */ + public static double mul(double v1, double v2) + { + BigDecimal b1 = new BigDecimal(Double.toString(v1)); + BigDecimal b2 = new BigDecimal(Double.toString(v2)); + return b1.multiply(b2).doubleValue(); + } + + /** + * 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到 + * 小数点以后10位,以后的数字四舍五入。 + * @param v1 被除数 + * @param v2 除数 + * @return 两个参数的商 + */ + public static double div(double v1, double v2) + { + return div(v1, v2, DEF_DIV_SCALE); + } + + /** + * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指 + * 定精度,以后的数字四舍五入。 + * @param v1 被除数 + * @param v2 除数 + * @param scale 表示表示需要精确到小数点以后几位。 + * @return 两个参数的商 + */ + public static double div(double v1, double v2, int scale) + { + if (scale < 0) + { + throw new IllegalArgumentException( + "The scale must be a positive integer or zero"); + } + BigDecimal b1 = new BigDecimal(Double.toString(v1)); + BigDecimal b2 = new BigDecimal(Double.toString(v2)); + if (b1.compareTo(BigDecimal.ZERO) == 0) + { + return BigDecimal.ZERO.doubleValue(); + } + return b1.divide(b2, scale, RoundingMode.HALF_UP).doubleValue(); + } + + /** + * 提供精确的小数位四舍五入处理。 + * @param v 需要四舍五入的数字 + * @param scale 小数点后保留几位 + * @return 四舍五入后的结果 + */ + public static double round(double v, int scale) + { + if (scale < 0) + { + throw new IllegalArgumentException( + "The scale must be a positive integer or zero"); + } + BigDecimal b = new BigDecimal(Double.toString(v)); + BigDecimal one = BigDecimal.ONE; + return b.divide(one, scale, RoundingMode.HALF_UP).doubleValue(); + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/utils/DateUtils.java b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/DateUtils.java new file mode 100644 index 0000000..4c185de --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/DateUtils.java @@ -0,0 +1,191 @@ +package com.cmvr.common.utils; + +import java.lang.management.ManagementFactory; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.util.Date; +import org.apache.commons.lang3.time.DateFormatUtils; + +/** + * 时间工具类 + * + * @author cmvrIot + */ +public class DateUtils extends org.apache.commons.lang3.time.DateUtils +{ + public static String YYYY = "yyyy"; + + public static String YYYY_MM = "yyyy-MM"; + + public static String YYYY_MM_DD = "yyyy-MM-dd"; + + public static String YYYYMMDDHHMMSS = "yyyyMMddHHmmss"; + + public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss"; + + private static String[] parsePatterns = { + "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM", + "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM", + "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM"}; + + /** + * 获取当前Date型日期 + * + * @return Date() 当前日期 + */ + public static Date getNowDate() + { + return new Date(); + } + + /** + * 获取当前日期, 默认格式为yyyy-MM-dd + * + * @return String + */ + public static String getDate() + { + return dateTimeNow(YYYY_MM_DD); + } + + public static final String getTime() + { + return dateTimeNow(YYYY_MM_DD_HH_MM_SS); + } + + public static final String dateTimeNow() + { + return dateTimeNow(YYYYMMDDHHMMSS); + } + + public static final String dateTimeNow(final String format) + { + return parseDateToStr(format, new Date()); + } + + public static final String dateTime(final Date date) + { + return parseDateToStr(YYYY_MM_DD, date); + } + + public static final String parseDateToStr(final String format, final Date date) + { + return new SimpleDateFormat(format).format(date); + } + + public static final Date dateTime(final String format, final String ts) + { + try + { + return new SimpleDateFormat(format).parse(ts); + } + catch (ParseException e) + { + throw new RuntimeException(e); + } + } + + /** + * 日期路径 即年/月/日 如2018/08/08 + */ + public static final String datePath() + { + Date now = new Date(); + return DateFormatUtils.format(now, "yyyy/MM/dd"); + } + + /** + * 日期路径 即年/月/日 如20180808 + */ + public static final String dateTime() + { + Date now = new Date(); + return DateFormatUtils.format(now, "yyyyMMdd"); + } + + /** + * 日期型字符串转化为日期 格式 + */ + public static Date parseDate(Object str) + { + if (str == null) + { + return null; + } + try + { + return parseDate(str.toString(), parsePatterns); + } + catch (ParseException e) + { + return null; + } + } + + /** + * 获取服务器启动时间 + */ + public static Date getServerStartDate() + { + long time = ManagementFactory.getRuntimeMXBean().getStartTime(); + return new Date(time); + } + + /** + * 计算相差天数 + */ + public static int differentDaysByMillisecond(Date date1, Date date2) + { + return Math.abs((int) ((date2.getTime() - date1.getTime()) / (1000 * 3600 * 24))); + } + + /** + * 计算时间差 + * + * @param endDate 最后时间 + * @param startTime 开始时间 + * @return 时间差(天/小时/分钟) + */ + public static String timeDistance(Date endDate, Date startTime) + { + long nd = 1000 * 24 * 60 * 60; + long nh = 1000 * 60 * 60; + long nm = 1000 * 60; + // long ns = 1000; + // 获得两个时间的毫秒时间差异 + long diff = endDate.getTime() - startTime.getTime(); + // 计算差多少天 + long day = diff / nd; + // 计算差多少小时 + long hour = diff % nd / nh; + // 计算差多少分钟 + long min = diff % nd % nh / nm; + // 计算差多少秒//输出结果 + // long sec = diff % nd % nh % nm / ns; + return day + "天" + hour + "小时" + min + "分钟"; + } + + /** + * 增加 LocalDateTime ==> Date + */ + public static Date toDate(LocalDateTime temporalAccessor) + { + ZonedDateTime zdt = temporalAccessor.atZone(ZoneId.systemDefault()); + return Date.from(zdt.toInstant()); + } + + /** + * 增加 LocalDate ==> Date + */ + public static Date toDate(LocalDate temporalAccessor) + { + LocalDateTime localDateTime = LocalDateTime.of(temporalAccessor, LocalTime.of(0, 0, 0)); + ZonedDateTime zdt = localDateTime.atZone(ZoneId.systemDefault()); + return Date.from(zdt.toInstant()); + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/utils/DesensitizedUtil.java b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/DesensitizedUtil.java new file mode 100644 index 0000000..ec74906 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/DesensitizedUtil.java @@ -0,0 +1,49 @@ +package com.cmvr.common.utils; + +/** + * 脱敏工具类 + * + * @author cmvrIot + */ +public class DesensitizedUtil +{ + /** + * 密码的全部字符都用*代替,比如:****** + * + * @param password 密码 + * @return 脱敏后的密码 + */ + public static String password(String password) + { + if (StringUtils.isBlank(password)) + { + return StringUtils.EMPTY; + } + return StringUtils.repeat('*', password.length()); + } + + /** + * 车牌中间用*代替,如果是错误的车牌,不处理 + * + * @param carLicense 完整的车牌号 + * @return 脱敏后的车牌 + */ + public static String carLicense(String carLicense) + { + if (StringUtils.isBlank(carLicense)) + { + return StringUtils.EMPTY; + } + // 普通车牌 + if (carLicense.length() == 7) + { + carLicense = StringUtils.hide(carLicense, 3, 6); + } + else if (carLicense.length() == 8) + { + // 新能源车牌 + carLicense = StringUtils.hide(carLicense, 3, 7); + } + return carLicense; + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/utils/DictUtils.java b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/DictUtils.java new file mode 100644 index 0000000..5b23e9f --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/DictUtils.java @@ -0,0 +1,239 @@ +package com.cmvr.common.utils; + +import java.util.Collection; +import java.util.List; +import com.alibaba.fastjson2.JSONArray; +import com.cmvr.common.constant.CacheConstants; +import com.cmvr.common.core.domain.entity.SysDictData; +import com.cmvr.common.core.redis.RedisCache; +import com.cmvr.common.utils.spring.SpringUtils; + +/** + * 字典工具类 + * + * @author cmvrIot + */ +public class DictUtils +{ + /** + * 分隔符 + */ + public static final String SEPARATOR = ","; + + /** + * 设置字典缓存 + * + * @param key 参数键 + * @param dictDatas 字典数据列表 + */ + public static void setDictCache(String key, List dictDatas) + { + SpringUtils.getBean(RedisCache.class).setCacheObject(getCacheKey(key), dictDatas); + } + + /** + * 获取字典缓存 + * + * @param key 参数键 + * @return dictDatas 字典数据列表 + */ + public static List getDictCache(String key) + { + JSONArray arrayCache = SpringUtils.getBean(RedisCache.class).getCacheObject(getCacheKey(key)); + if (StringUtils.isNotNull(arrayCache)) + { + return arrayCache.toList(SysDictData.class); + } + return null; + } + + /** + * 根据字典类型和字典值获取字典标签 + * + * @param dictType 字典类型 + * @param dictValue 字典值 + * @return 字典标签 + */ + public static String getDictLabel(String dictType, String dictValue) + { + if (StringUtils.isEmpty(dictValue)) + { + return StringUtils.EMPTY; + } + return getDictLabel(dictType, dictValue, SEPARATOR); + } + + /** + * 根据字典类型和字典标签获取字典值 + * + * @param dictType 字典类型 + * @param dictLabel 字典标签 + * @return 字典值 + */ + public static String getDictValue(String dictType, String dictLabel) + { + if (StringUtils.isEmpty(dictLabel)) + { + return StringUtils.EMPTY; + } + return getDictValue(dictType, dictLabel, SEPARATOR); + } + + /** + * 根据字典类型和字典值获取字典标签 + * + * @param dictType 字典类型 + * @param dictValue 字典值 + * @param separator 分隔符 + * @return 字典标签 + */ + public static String getDictLabel(String dictType, String dictValue, String separator) + { + StringBuilder propertyString = new StringBuilder(); + List datas = getDictCache(dictType); + if (StringUtils.isNull(datas)) + { + return StringUtils.EMPTY; + } + if (StringUtils.containsAny(separator, dictValue)) + { + for (SysDictData dict : datas) + { + for (String value : dictValue.split(separator)) + { + if (value.equals(dict.getDictValue())) + { + propertyString.append(dict.getDictLabel()).append(separator); + break; + } + } + } + } + else + { + for (SysDictData dict : datas) + { + if (dictValue.equals(dict.getDictValue())) + { + return dict.getDictLabel(); + } + } + } + return StringUtils.stripEnd(propertyString.toString(), separator); + } + + /** + * 根据字典类型和字典标签获取字典值 + * + * @param dictType 字典类型 + * @param dictLabel 字典标签 + * @param separator 分隔符 + * @return 字典值 + */ + public static String getDictValue(String dictType, String dictLabel, String separator) + { + StringBuilder propertyString = new StringBuilder(); + List datas = getDictCache(dictType); + if (StringUtils.isNull(datas)) + { + return StringUtils.EMPTY; + } + if (StringUtils.containsAny(separator, dictLabel)) + { + for (SysDictData dict : datas) + { + for (String label : dictLabel.split(separator)) + { + if (label.equals(dict.getDictLabel())) + { + propertyString.append(dict.getDictValue()).append(separator); + break; + } + } + } + } + else + { + for (SysDictData dict : datas) + { + if (dictLabel.equals(dict.getDictLabel())) + { + return dict.getDictValue(); + } + } + } + return StringUtils.stripEnd(propertyString.toString(), separator); + } + + /** + * 根据字典类型获取字典所有值 + * + * @param dictType 字典类型 + * @return 字典值 + */ + public static String getDictValues(String dictType) + { + StringBuilder propertyString = new StringBuilder(); + List datas = getDictCache(dictType); + if (StringUtils.isNull(datas)) + { + return StringUtils.EMPTY; + } + for (SysDictData dict : datas) + { + propertyString.append(dict.getDictValue()).append(SEPARATOR); + } + return StringUtils.stripEnd(propertyString.toString(), SEPARATOR); + } + + /** + * 根据字典类型获取字典所有标签 + * + * @param dictType 字典类型 + * @return 字典值 + */ + public static String getDictLabels(String dictType) + { + StringBuilder propertyString = new StringBuilder(); + List datas = getDictCache(dictType); + if (StringUtils.isNull(datas)) + { + return StringUtils.EMPTY; + } + for (SysDictData dict : datas) + { + propertyString.append(dict.getDictLabel()).append(SEPARATOR); + } + return StringUtils.stripEnd(propertyString.toString(), SEPARATOR); + } + + /** + * 删除指定字典缓存 + * + * @param key 字典键 + */ + public static void removeDictCache(String key) + { + SpringUtils.getBean(RedisCache.class).deleteObject(getCacheKey(key)); + } + + /** + * 清空字典缓存 + */ + public static void clearDictCache() + { + Collection keys = SpringUtils.getBean(RedisCache.class).keys(CacheConstants.SYS_DICT_KEY + "*"); + SpringUtils.getBean(RedisCache.class).deleteObject(keys); + } + + /** + * 设置cache key + * + * @param configKey 参数键 + * @return 缓存键key + */ + public static String getCacheKey(String configKey) + { + return CacheConstants.SYS_DICT_KEY + configKey; + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/utils/ExceptionUtil.java b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/ExceptionUtil.java new file mode 100644 index 0000000..7c41d30 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/ExceptionUtil.java @@ -0,0 +1,39 @@ +package com.cmvr.common.utils; + +import java.io.PrintWriter; +import java.io.StringWriter; +import org.apache.commons.lang3.exception.ExceptionUtils; + +/** + * 错误信息处理类。 + * + * @author cmvrIot + */ +public class ExceptionUtil +{ + /** + * 获取exception的详细错误信息。 + */ + public static String getExceptionMessage(Throwable e) + { + StringWriter sw = new StringWriter(); + e.printStackTrace(new PrintWriter(sw, true)); + return sw.toString(); + } + + public static String getRootErrorMessage(Exception e) + { + Throwable root = ExceptionUtils.getRootCause(e); + root = (root == null ? e : root); + if (root == null) + { + return ""; + } + String msg = root.getMessage(); + if (msg == null) + { + return "null"; + } + return StringUtils.defaultString(msg); + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/utils/LogUtils.java b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/LogUtils.java new file mode 100644 index 0000000..2b8356a --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/LogUtils.java @@ -0,0 +1,18 @@ +package com.cmvr.common.utils; + +/** + * 处理并记录日志文件 + * + * @author cmvrIot + */ +public class LogUtils +{ + public static String getBlock(Object msg) + { + if (msg == null) + { + msg = ""; + } + return "[" + msg.toString() + "]"; + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/utils/MessageUtils.java b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/MessageUtils.java new file mode 100644 index 0000000..da91754 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/MessageUtils.java @@ -0,0 +1,26 @@ +package com.cmvr.common.utils; + +import org.springframework.context.MessageSource; +import org.springframework.context.i18n.LocaleContextHolder; +import com.cmvr.common.utils.spring.SpringUtils; + +/** + * 获取i18n资源文件 + * + * @author cmvrIot + */ +public class MessageUtils +{ + /** + * 根据消息键和参数 获取消息 委托给spring messageSource + * + * @param code 消息键 + * @param args 参数 + * @return 获取国际化翻译值 + */ + public static String message(String code, Object... args) + { + MessageSource messageSource = SpringUtils.getBean(MessageSource.class); + return messageSource.getMessage(code, args, LocaleContextHolder.getLocale()); + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/utils/PageUtils.java b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/PageUtils.java new file mode 100644 index 0000000..8afb38e --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/PageUtils.java @@ -0,0 +1,35 @@ +package com.cmvr.common.utils; + +import com.github.pagehelper.PageHelper; +import com.cmvr.common.core.page.PageDomain; +import com.cmvr.common.core.page.TableSupport; +import com.cmvr.common.utils.sql.SqlUtil; + +/** + * 分页工具类 + * + * @author cmvrIot + */ +public class PageUtils extends PageHelper +{ + /** + * 设置请求分页数据 + */ + public static void startPage() + { + PageDomain pageDomain = TableSupport.buildPageRequest(); + Integer pageNum = pageDomain.getPageNum(); + Integer pageSize = pageDomain.getPageSize(); + String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy()); + Boolean reasonable = pageDomain.getReasonable(); + PageHelper.startPage(pageNum, pageSize, orderBy).setReasonable(reasonable); + } + + /** + * 清理分页的线程变量 + */ + public static void clearPage() + { + PageHelper.clearPage(); + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/utils/SecurityUtils.java b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/SecurityUtils.java new file mode 100644 index 0000000..6a7c257 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/SecurityUtils.java @@ -0,0 +1,182 @@ +package com.cmvr.common.utils; + +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.util.PatternMatchUtils; +import com.cmvr.common.constant.Constants; +import com.cmvr.common.constant.HttpStatus; +import com.cmvr.common.core.domain.entity.SysRole; +import com.cmvr.common.core.domain.model.LoginUser; +import com.cmvr.common.exception.ServiceException; + +/** + * 安全服务工具类 + * + * @author cmvrIot + */ +public class SecurityUtils +{ + + /** + * 用户ID + **/ + public static Long getUserId() + { + try + { + return getLoginUser().getUserId(); + } + catch (Exception e) + { + throw new ServiceException("获取用户ID异常", HttpStatus.UNAUTHORIZED); + } + } + + /** + * 获取部门ID + **/ + public static Long getDeptId() + { + try + { + return getLoginUser().getDeptId(); + } + catch (Exception e) + { + throw new ServiceException("获取部门ID异常", HttpStatus.UNAUTHORIZED); + } + } + + /** + * 获取用户账户 + **/ + public static String getUsername() + { + try + { + return getLoginUser().getUsername(); + } + catch (Exception e) + { + throw new ServiceException("获取用户账户异常", HttpStatus.UNAUTHORIZED); + } + } + + /** + * 获取用户 + **/ + public static LoginUser getLoginUser() + { + try + { + return (LoginUser) getAuthentication().getPrincipal(); + } + catch (Exception e) + { + throw new ServiceException("获取用户信息异常", HttpStatus.UNAUTHORIZED); + } + } + + /** + * 获取Authentication + */ + public static Authentication getAuthentication() + { + return SecurityContextHolder.getContext().getAuthentication(); + } + + /** + * 生成BCryptPasswordEncoder密码 + * + * @param password 密码 + * @return 加密字符串 + */ + public static String encryptPassword(String password) + { + BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); + return passwordEncoder.encode(password); + } + + /** + * 判断密码是否相同 + * + * @param rawPassword 真实密码 + * @param encodedPassword 加密后字符 + * @return 结果 + */ + public static boolean matchesPassword(String rawPassword, String encodedPassword) + { + BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); + return passwordEncoder.matches(rawPassword, encodedPassword); + } + + /** + * 是否为管理员 + * + * @param userId 用户ID + * @return 结果 + */ + public static boolean isAdmin(Long userId) + { + return userId != null && 1L == userId; + } + + /** + * 验证用户是否具备某权限 + * + * @param permission 权限字符串 + * @return 用户是否具备某权限 + */ + public static boolean hasPermi(String permission) + { + return hasPermi(getLoginUser().getPermissions(), permission); + } + + /** + * 判断是否包含权限 + * + * @param authorities 权限列表 + * @param permission 权限字符串 + * @return 用户是否具备某权限 + */ + public static boolean hasPermi(Collection authorities, String permission) + { + return authorities.stream().filter(StringUtils::hasText) + .anyMatch(x -> Constants.ALL_PERMISSION.equals(x) || PatternMatchUtils.simpleMatch(x, permission)); + } + + /** + * 验证用户是否拥有某个角色 + * + * @param role 角色标识 + * @return 用户是否具备某角色 + */ + public static boolean hasRole(String role) + { + List roleList = getLoginUser().getUser().getRoles(); + Collection roles = roleList.stream().map(SysRole::getRoleKey).collect(Collectors.toSet()); + return hasRole(roles, role); + } + + /** + * 判断是否包含角色 + * + * @param roles 角色列表 + * @param role 角色 + * @return 用户是否具备某角色权限 + */ + public static boolean hasRole(Collection roles, String role) + { + return roles.stream().filter(StringUtils::hasText) + .anyMatch(x -> Constants.SUPER_ADMIN.equals(x) || PatternMatchUtils.simpleMatch(x, role)); + } + + public static void setAuthentication(Authentication authentication) { + SecurityContextHolder.getContext().setAuthentication(authentication); + } + +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/utils/ServletUtils.java b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/ServletUtils.java new file mode 100644 index 0000000..016170a --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/ServletUtils.java @@ -0,0 +1,218 @@ +package com.cmvr.common.utils; + +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.net.URLEncoder; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; +import javax.servlet.ServletRequest; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import org.springframework.web.context.request.RequestAttributes; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; +import com.cmvr.common.constant.Constants; +import com.cmvr.common.core.text.Convert; + +/** + * 客户端工具类 + * + * @author cmvrIot + */ +public class ServletUtils +{ + /** + * 获取String参数 + */ + public static String getParameter(String name) + { + return getRequest().getParameter(name); + } + + /** + * 获取String参数 + */ + public static String getParameter(String name, String defaultValue) + { + return Convert.toStr(getRequest().getParameter(name), defaultValue); + } + + /** + * 获取Integer参数 + */ + public static Integer getParameterToInt(String name) + { + return Convert.toInt(getRequest().getParameter(name)); + } + + /** + * 获取Integer参数 + */ + public static Integer getParameterToInt(String name, Integer defaultValue) + { + return Convert.toInt(getRequest().getParameter(name), defaultValue); + } + + /** + * 获取Boolean参数 + */ + public static Boolean getParameterToBool(String name) + { + return Convert.toBool(getRequest().getParameter(name)); + } + + /** + * 获取Boolean参数 + */ + public static Boolean getParameterToBool(String name, Boolean defaultValue) + { + return Convert.toBool(getRequest().getParameter(name), defaultValue); + } + + /** + * 获得所有请求参数 + * + * @param request 请求对象{@link ServletRequest} + * @return Map + */ + public static Map getParams(ServletRequest request) + { + final Map map = request.getParameterMap(); + return Collections.unmodifiableMap(map); + } + + /** + * 获得所有请求参数 + * + * @param request 请求对象{@link ServletRequest} + * @return Map + */ + public static Map getParamMap(ServletRequest request) + { + Map params = new HashMap<>(); + for (Map.Entry entry : getParams(request).entrySet()) + { + params.put(entry.getKey(), StringUtils.join(entry.getValue(), ",")); + } + return params; + } + + /** + * 获取request + */ + public static HttpServletRequest getRequest() + { + return getRequestAttributes().getRequest(); + } + + /** + * 获取response + */ + public static HttpServletResponse getResponse() + { + return getRequestAttributes().getResponse(); + } + + /** + * 获取session + */ + public static HttpSession getSession() + { + return getRequest().getSession(); + } + + public static ServletRequestAttributes getRequestAttributes() + { + RequestAttributes attributes = RequestContextHolder.getRequestAttributes(); + return (ServletRequestAttributes) attributes; + } + + /** + * 将字符串渲染到客户端 + * + * @param response 渲染对象 + * @param string 待渲染的字符串 + */ + public static void renderString(HttpServletResponse response, String string) + { + try + { + response.setStatus(200); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().print(string); + } + catch (IOException e) + { + e.printStackTrace(); + } + } + + /** + * 是否是Ajax异步请求 + * + * @param request + */ + public static boolean isAjaxRequest(HttpServletRequest request) + { + String accept = request.getHeader("accept"); + if (accept != null && accept.contains("application/json")) + { + return true; + } + + String xRequestedWith = request.getHeader("X-Requested-With"); + if (xRequestedWith != null && xRequestedWith.contains("XMLHttpRequest")) + { + return true; + } + + String uri = request.getRequestURI(); + if (StringUtils.inStringIgnoreCase(uri, ".json", ".xml")) + { + return true; + } + + String ajax = request.getParameter("__ajax"); + return StringUtils.inStringIgnoreCase(ajax, "json", "xml"); + } + + /** + * 内容编码 + * + * @param str 内容 + * @return 编码后的内容 + */ + public static String urlEncode(String str) + { + try + { + return URLEncoder.encode(str, Constants.UTF8); + } + catch (UnsupportedEncodingException e) + { + return StringUtils.EMPTY; + } + } + + /** + * 内容解码 + * + * @param str 内容 + * @return 解码后的内容 + */ + public static String urlDecode(String str) + { + try + { + return URLDecoder.decode(str, Constants.UTF8); + } + catch (UnsupportedEncodingException e) + { + return StringUtils.EMPTY; + } + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/utils/StringUtils.java b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/StringUtils.java new file mode 100644 index 0000000..fcf87c3 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/StringUtils.java @@ -0,0 +1,684 @@ +package com.cmvr.common.utils; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import org.springframework.util.AntPathMatcher; +import com.cmvr.common.constant.Constants; +import com.cmvr.common.core.text.StrFormatter; + +/** + * 字符串工具类 + * + * @author cmvrIot + */ +public class StringUtils extends org.apache.commons.lang3.StringUtils +{ + /** 空字符串 */ + private static final String NULLSTR = ""; + + /** 下划线 */ + private static final char SEPARATOR = '_'; + + /** 星号 */ + private static final char ASTERISK = '*'; + + /** + * 获取参数不为空值 + * + * @param value defaultValue 要判断的value + * @return value 返回值 + */ + public static T nvl(T value, T defaultValue) + { + return value != null ? value : defaultValue; + } + + /** + * * 判断一个Collection是否为空, 包含List,Set,Queue + * + * @param coll 要判断的Collection + * @return true:为空 false:非空 + */ + public static boolean isEmpty(Collection coll) + { + return isNull(coll) || coll.isEmpty(); + } + + /** + * * 判断一个Collection是否非空,包含List,Set,Queue + * + * @param coll 要判断的Collection + * @return true:非空 false:空 + */ + public static boolean isNotEmpty(Collection coll) + { + return !isEmpty(coll); + } + + /** + * * 判断一个对象数组是否为空 + * + * @param objects 要判断的对象数组 + ** @return true:为空 false:非空 + */ + public static boolean isEmpty(Object[] objects) + { + return isNull(objects) || (objects.length == 0); + } + + /** + * * 判断一个对象数组是否非空 + * + * @param objects 要判断的对象数组 + * @return true:非空 false:空 + */ + public static boolean isNotEmpty(Object[] objects) + { + return !isEmpty(objects); + } + + /** + * * 判断一个Map是否为空 + * + * @param map 要判断的Map + * @return true:为空 false:非空 + */ + public static boolean isEmpty(Map map) + { + return isNull(map) || map.isEmpty(); + } + + /** + * * 判断一个Map是否为空 + * + * @param map 要判断的Map + * @return true:非空 false:空 + */ + public static boolean isNotEmpty(Map map) + { + return !isEmpty(map); + } + + /** + * * 判断一个字符串是否为空串 + * + * @param str String + * @return true:为空 false:非空 + */ + public static boolean isEmpty(String str) + { + return isNull(str) || NULLSTR.equals(str.trim()); + } + + /** + * * 判断一个字符串是否为非空串 + * + * @param str String + * @return true:非空串 false:空串 + */ + public static boolean isNotEmpty(String str) + { + return !isEmpty(str); + } + + /** + * * 判断一个对象是否为空 + * + * @param object Object + * @return true:为空 false:非空 + */ + public static boolean isNull(Object object) + { + return object == null; + } + + /** + * * 判断一个对象是否非空 + * + * @param object Object + * @return true:非空 false:空 + */ + public static boolean isNotNull(Object object) + { + return !isNull(object); + } + + /** + * * 判断一个对象是否是数组类型(Java基本型别的数组) + * + * @param object 对象 + * @return true:是数组 false:不是数组 + */ + public static boolean isArray(Object object) + { + return isNotNull(object) && object.getClass().isArray(); + } + + /** + * 去空格 + */ + public static String trim(String str) + { + return (str == null ? "" : str.trim()); + } + + /** + * 替换指定字符串的指定区间内字符为"*" + * + * @param str 字符串 + * @param startInclude 开始位置(包含) + * @param endExclude 结束位置(不包含) + * @return 替换后的字符串 + */ + public static String hide(CharSequence str, int startInclude, int endExclude) + { + if (isEmpty(str)) + { + return NULLSTR; + } + final int strLength = str.length(); + if (startInclude > strLength) + { + return NULLSTR; + } + if (endExclude > strLength) + { + endExclude = strLength; + } + if (startInclude > endExclude) + { + // 如果起始位置大于结束位置,不替换 + return NULLSTR; + } + final char[] chars = new char[strLength]; + for (int i = 0; i < strLength; i++) + { + if (i >= startInclude && i < endExclude) + { + chars[i] = ASTERISK; + } + else + { + chars[i] = str.charAt(i); + } + } + return new String(chars); + } + + /** + * 截取字符串 + * + * @param str 字符串 + * @param start 开始 + * @return 结果 + */ + public static String substring(final String str, int start) + { + if (str == null) + { + return NULLSTR; + } + + if (start < 0) + { + start = str.length() + start; + } + + if (start < 0) + { + start = 0; + } + if (start > str.length()) + { + return NULLSTR; + } + + return str.substring(start); + } + + /** + * 截取字符串 + * + * @param str 字符串 + * @param start 开始 + * @param end 结束 + * @return 结果 + */ + public static String substring(final String str, int start, int end) + { + if (str == null) + { + return NULLSTR; + } + + if (end < 0) + { + end = str.length() + end; + } + if (start < 0) + { + start = str.length() + start; + } + + if (end > str.length()) + { + end = str.length(); + } + + if (start > end) + { + return NULLSTR; + } + + if (start < 0) + { + start = 0; + } + if (end < 0) + { + end = 0; + } + + return str.substring(start, end); + } + + /** + * 判断是否为空,并且不是空白字符 + * + * @param str 要判断的value + * @return 结果 + */ + public static boolean hasText(String str) + { + return (str != null && !str.isEmpty() && containsText(str)); + } + + private static boolean containsText(CharSequence str) + { + int strLen = str.length(); + for (int i = 0; i < strLen; i++) + { + if (!Character.isWhitespace(str.charAt(i))) + { + return true; + } + } + return false; + } + + /** + * 格式化文本, {} 表示占位符
+ * 此方法只是简单将占位符 {} 按照顺序替换为参数
+ * 如果想输出 {} 使用 \\转义 { 即可,如果想输出 {} 之前的 \ 使用双转义符 \\\\ 即可
+ * 例:
+ * 通常使用:format("this is {} for {}", "a", "b") -> this is a for b
+ * 转义{}: format("this is \\{} for {}", "a", "b") -> this is \{} for a
+ * 转义\: format("this is \\\\{} for {}", "a", "b") -> this is \a for b
+ * + * @param template 文本模板,被替换的部分用 {} 表示 + * @param params 参数值 + * @return 格式化后的文本 + */ + public static String format(String template, Object... params) + { + if (isEmpty(params) || isEmpty(template)) + { + return template; + } + return StrFormatter.format(template, params); + } + + /** + * 是否为http(s)://开头 + * + * @param link 链接 + * @return 结果 + */ + public static boolean ishttp(String link) + { + return StringUtils.startsWithAny(link, Constants.HTTP, Constants.HTTPS); + } + + /** + * 字符串转set + * + * @param str 字符串 + * @param sep 分隔符 + * @return set集合 + */ + public static final Set str2Set(String str, String sep) + { + return new HashSet(str2List(str, sep, true, false)); + } + + /** + * 字符串转list + * + * @param str 字符串 + * @param sep 分隔符 + * @param filterBlank 过滤纯空白 + * @param trim 去掉首尾空白 + * @return list集合 + */ + public static final List str2List(String str, String sep, boolean filterBlank, boolean trim) + { + List list = new ArrayList(); + if (StringUtils.isEmpty(str)) + { + return list; + } + + // 过滤空白字符串 + if (filterBlank && StringUtils.isBlank(str)) + { + return list; + } + String[] split = str.split(sep); + for (String string : split) + { + if (filterBlank && StringUtils.isBlank(string)) + { + continue; + } + if (trim) + { + string = string.trim(); + } + list.add(string); + } + + return list; + } + + /** + * 判断给定的collection列表中是否包含数组array 判断给定的数组array中是否包含给定的元素value + * + * @param collection 给定的集合 + * @param array 给定的数组 + * @return boolean 结果 + */ + public static boolean containsAny(Collection collection, String... array) + { + if (isEmpty(collection) || isEmpty(array)) + { + return false; + } + else + { + for (String str : array) + { + if (collection.contains(str)) + { + return true; + } + } + return false; + } + } + + /** + * 查找指定字符串是否包含指定字符串列表中的任意一个字符串同时串忽略大小写 + * + * @param cs 指定字符串 + * @param searchCharSequences 需要检查的字符串数组 + * @return 是否包含任意一个字符串 + */ + public static boolean containsAnyIgnoreCase(CharSequence cs, CharSequence... searchCharSequences) + { + if (isEmpty(cs) || isEmpty(searchCharSequences)) + { + return false; + } + for (CharSequence testStr : searchCharSequences) + { + if (containsIgnoreCase(cs, testStr)) + { + return true; + } + } + return false; + } + + /** + * 驼峰转下划线命名 + */ + public static String toUnderScoreCase(String str) + { + if (str == null) + { + return null; + } + StringBuilder sb = new StringBuilder(); + // 前置字符是否大写 + boolean preCharIsUpperCase = true; + // 当前字符是否大写 + boolean curreCharIsUpperCase = true; + // 下一字符是否大写 + boolean nexteCharIsUpperCase = true; + for (int i = 0; i < str.length(); i++) + { + char c = str.charAt(i); + if (i > 0) + { + preCharIsUpperCase = Character.isUpperCase(str.charAt(i - 1)); + } + else + { + preCharIsUpperCase = false; + } + + curreCharIsUpperCase = Character.isUpperCase(c); + + if (i < (str.length() - 1)) + { + nexteCharIsUpperCase = Character.isUpperCase(str.charAt(i + 1)); + } + + if (preCharIsUpperCase && curreCharIsUpperCase && !nexteCharIsUpperCase) + { + sb.append(SEPARATOR); + } + else if ((i != 0 && !preCharIsUpperCase) && curreCharIsUpperCase) + { + sb.append(SEPARATOR); + } + sb.append(Character.toLowerCase(c)); + } + + return sb.toString(); + } + + /** + * 是否包含字符串 + * + * @param str 验证字符串 + * @param strs 字符串组 + * @return 包含返回true + */ + public static boolean inStringIgnoreCase(String str, String... strs) + { + if (str != null && strs != null) + { + for (String s : strs) + { + if (str.equalsIgnoreCase(trim(s))) + { + return true; + } + } + } + return false; + } + + /** + * 将下划线大写方式命名的字符串转换为驼峰式。如果转换前的下划线大写方式命名的字符串为空,则返回空字符串。 例如:HELLO_WORLD->HelloWorld + * + * @param name 转换前的下划线大写方式命名的字符串 + * @return 转换后的驼峰式命名的字符串 + */ + public static String convertToCamelCase(String name) + { + StringBuilder result = new StringBuilder(); + // 快速检查 + if (name == null || name.isEmpty()) + { + // 没必要转换 + return ""; + } + else if (!name.contains("_")) + { + // 不含下划线,仅将首字母大写 + return name.substring(0, 1).toUpperCase() + name.substring(1); + } + // 用下划线将原始字符串分割 + String[] camels = name.split("_"); + for (String camel : camels) + { + // 跳过原始字符串中开头、结尾的下换线或双重下划线 + if (camel.isEmpty()) + { + continue; + } + // 首字母大写 + result.append(camel.substring(0, 1).toUpperCase()); + result.append(camel.substring(1).toLowerCase()); + } + return result.toString(); + } + + /** + * 驼峰式命名法 + * 例如:user_name->userName + */ + public static String toCamelCase(String s) + { + if (s == null) + { + return null; + } + if (s.indexOf(SEPARATOR) == -1) + { + return s; + } + s = s.toLowerCase(); + StringBuilder sb = new StringBuilder(s.length()); + boolean upperCase = false; + for (int i = 0; i < s.length(); i++) + { + char c = s.charAt(i); + + if (c == SEPARATOR) + { + upperCase = true; + } + else if (upperCase) + { + sb.append(Character.toUpperCase(c)); + upperCase = false; + } + else + { + sb.append(c); + } + } + return sb.toString(); + } + + /** + * 查找指定字符串是否匹配指定字符串列表中的任意一个字符串 + * + * @param str 指定字符串 + * @param strs 需要检查的字符串数组 + * @return 是否匹配 + */ + public static boolean matches(String str, List strs) + { + if (isEmpty(str) || isEmpty(strs)) + { + return false; + } + for (String pattern : strs) + { + if (isMatch(pattern, str)) + { + return true; + } + } + return false; + } + + /** + * 判断url是否与规则配置: + * ? 表示单个字符; + * * 表示一层路径内的任意字符串,不可跨层级; + * ** 表示任意层路径; + * + * @param pattern 匹配规则 + * @param url 需要匹配的url + * @return + */ + public static boolean isMatch(String pattern, String url) + { + AntPathMatcher matcher = new AntPathMatcher(); + return matcher.match(pattern, url); + } + + @SuppressWarnings("unchecked") + public static T cast(Object obj) + { + return (T) obj; + } + + /** + * 数字左边补齐0,使之达到指定长度。注意,如果数字转换为字符串后,长度大于size,则只保留 最后size个字符。 + * + * @param num 数字对象 + * @param size 字符串指定长度 + * @return 返回数字的字符串格式,该字符串为指定长度。 + */ + public static final String padl(final Number num, final int size) + { + return padl(num.toString(), size, '0'); + } + + /** + * 字符串左补齐。如果原始字符串s长度大于size,则只保留最后size个字符。 + * + * @param s 原始字符串 + * @param size 字符串指定长度 + * @param c 用于补齐的字符 + * @return 返回指定长度的字符串,由原字符串左补齐或截取得到。 + */ + public static final String padl(final String s, final int size, final char c) + { + final StringBuilder sb = new StringBuilder(size); + if (s != null) + { + final int len = s.length(); + if (s.length() <= size) + { + for (int i = size - len; i > 0; i--) + { + sb.append(c); + } + sb.append(s); + } + else + { + return s.substring(len - size, len); + } + } + else + { + for (int i = size; i > 0; i--) + { + sb.append(c); + } + } + return sb.toString(); + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/utils/Threads.java b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/Threads.java new file mode 100644 index 0000000..3713da2 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/Threads.java @@ -0,0 +1,99 @@ +package com.cmvr.common.utils; + +import java.util.concurrent.CancellationException; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * 线程相关工具类. + * + * @author cmvrIot + */ +public class Threads +{ + private static final Logger logger = LoggerFactory.getLogger(Threads.class); + + /** + * sleep等待,单位为毫秒 + */ + public static void sleep(long milliseconds) + { + try + { + Thread.sleep(milliseconds); + } + catch (InterruptedException e) + { + return; + } + } + + /** + * 停止线程池 + * 先使用shutdown, 停止接收新任务并尝试完成所有已存在任务. + * 如果超时, 则调用shutdownNow, 取消在workQueue中Pending的任务,并中断所有阻塞函数. + * 如果仍然超時,則強制退出. + * 另对在shutdown时线程本身被调用中断做了处理. + */ + public static void shutdownAndAwaitTermination(ExecutorService pool) + { + if (pool != null && !pool.isShutdown()) + { + pool.shutdown(); + try + { + if (!pool.awaitTermination(120, TimeUnit.SECONDS)) + { + pool.shutdownNow(); + if (!pool.awaitTermination(120, TimeUnit.SECONDS)) + { + logger.info("Pool did not terminate"); + } + } + } + catch (InterruptedException ie) + { + pool.shutdownNow(); + Thread.currentThread().interrupt(); + } + } + } + + /** + * 打印线程异常信息 + */ + public static void printException(Runnable r, Throwable t) + { + if (t == null && r instanceof Future) + { + try + { + Future future = (Future) r; + if (future.isDone()) + { + future.get(); + } + } + catch (CancellationException ce) + { + t = ce; + } + catch (ExecutionException ee) + { + t = ee.getCause(); + } + catch (InterruptedException ie) + { + Thread.currentThread().interrupt(); + } + } + if (t != null) + { + logger.error(t.getMessage(), t); + } + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/utils/bean/BeanUtils.java b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/bean/BeanUtils.java new file mode 100644 index 0000000..8541109 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/bean/BeanUtils.java @@ -0,0 +1,110 @@ +package com.cmvr.common.utils.bean; + +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * Bean 工具类 + * + * @author cmvrIot + */ +public class BeanUtils extends org.springframework.beans.BeanUtils +{ + /** Bean方法名中属性名开始的下标 */ + private static final int BEAN_METHOD_PROP_INDEX = 3; + + /** * 匹配getter方法的正则表达式 */ + private static final Pattern GET_PATTERN = Pattern.compile("get(\\p{javaUpperCase}\\w*)"); + + /** * 匹配setter方法的正则表达式 */ + private static final Pattern SET_PATTERN = Pattern.compile("set(\\p{javaUpperCase}\\w*)"); + + /** + * Bean属性复制工具方法。 + * + * @param dest 目标对象 + * @param src 源对象 + */ + public static void copyBeanProp(Object dest, Object src) + { + try + { + copyProperties(src, dest); + } + catch (Exception e) + { + e.printStackTrace(); + } + } + + /** + * 获取对象的setter方法。 + * + * @param obj 对象 + * @return 对象的setter方法列表 + */ + public static List getSetterMethods(Object obj) + { + // setter方法列表 + List setterMethods = new ArrayList(); + + // 获取所有方法 + Method[] methods = obj.getClass().getMethods(); + + // 查找setter方法 + + for (Method method : methods) + { + Matcher m = SET_PATTERN.matcher(method.getName()); + if (m.matches() && (method.getParameterTypes().length == 1)) + { + setterMethods.add(method); + } + } + // 返回setter方法列表 + return setterMethods; + } + + /** + * 获取对象的getter方法。 + * + * @param obj 对象 + * @return 对象的getter方法列表 + */ + + public static List getGetterMethods(Object obj) + { + // getter方法列表 + List getterMethods = new ArrayList(); + // 获取所有方法 + Method[] methods = obj.getClass().getMethods(); + // 查找getter方法 + for (Method method : methods) + { + Matcher m = GET_PATTERN.matcher(method.getName()); + if (m.matches() && (method.getParameterTypes().length == 0)) + { + getterMethods.add(method); + } + } + // 返回getter方法列表 + return getterMethods; + } + + /** + * 检查Bean方法名中的属性名是否相等。
+ * 如getName()和setName()属性名一样,getName()和setAge()属性名不一样。 + * + * @param m1 方法名1 + * @param m2 方法名2 + * @return 属性名一样返回true,否则返回false + */ + + public static boolean isMethodPropEquals(String m1, String m2) + { + return m1.substring(BEAN_METHOD_PROP_INDEX).equals(m2.substring(BEAN_METHOD_PROP_INDEX)); + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/utils/bean/BeanValidators.java b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/bean/BeanValidators.java new file mode 100644 index 0000000..4f24a78 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/bean/BeanValidators.java @@ -0,0 +1,24 @@ +package com.cmvr.common.utils.bean; + +import java.util.Set; +import javax.validation.ConstraintViolation; +import javax.validation.ConstraintViolationException; +import javax.validation.Validator; + +/** + * bean对象属性验证 + * + * @author cmvrIot + */ +public class BeanValidators +{ + public static void validateWithException(Validator validator, Object object, Class... groups) + throws ConstraintViolationException + { + Set> constraintViolations = validator.validate(object, groups); + if (!constraintViolations.isEmpty()) + { + throw new ConstraintViolationException(constraintViolations); + } + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/utils/file/FileTypeUtils.java b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/file/FileTypeUtils.java new file mode 100644 index 0000000..8fb6325 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/file/FileTypeUtils.java @@ -0,0 +1,76 @@ +package com.cmvr.common.utils.file; + +import java.io.File; +import org.apache.commons.lang3.StringUtils; + +/** + * 文件类型工具类 + * + * @author cmvrIot + */ +public class FileTypeUtils +{ + /** + * 获取文件类型 + *

+ * 例如: cmvrIot.txt, 返回: txt + * + * @param file 文件名 + * @return 后缀(不含".") + */ + public static String getFileType(File file) + { + if (null == file) + { + return StringUtils.EMPTY; + } + return getFileType(file.getName()); + } + + /** + * 获取文件类型 + *

+ * 例如: cmvrIot.txt, 返回: txt + * + * @param fileName 文件名 + * @return 后缀(不含".") + */ + public static String getFileType(String fileName) + { + int separatorIndex = fileName.lastIndexOf("."); + if (separatorIndex < 0) + { + return ""; + } + return fileName.substring(separatorIndex + 1).toLowerCase(); + } + + /** + * 获取文件类型 + * + * @param photoByte 文件字节码 + * @return 后缀(不含".") + */ + public static String getFileExtendName(byte[] photoByte) + { + String strFileExtendName = "JPG"; + if ((photoByte[0] == 71) && (photoByte[1] == 73) && (photoByte[2] == 70) && (photoByte[3] == 56) + && ((photoByte[4] == 55) || (photoByte[4] == 57)) && (photoByte[5] == 97)) + { + strFileExtendName = "GIF"; + } + else if ((photoByte[6] == 74) && (photoByte[7] == 70) && (photoByte[8] == 73) && (photoByte[9] == 70)) + { + strFileExtendName = "JPG"; + } + else if ((photoByte[0] == 66) && (photoByte[1] == 77)) + { + strFileExtendName = "BMP"; + } + else if ((photoByte[1] == 80) && (photoByte[2] == 78) && (photoByte[3] == 71)) + { + strFileExtendName = "PNG"; + } + return strFileExtendName; + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/utils/file/FileUploadUtils.java b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/file/FileUploadUtils.java new file mode 100644 index 0000000..bb7c0b3 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/file/FileUploadUtils.java @@ -0,0 +1,232 @@ +package com.cmvr.common.utils.file; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Paths; +import java.util.Objects; +import org.apache.commons.io.FilenameUtils; +import org.springframework.web.multipart.MultipartFile; +import com.cmvr.common.config.CmvrIotConfig; +import com.cmvr.common.constant.Constants; +import com.cmvr.common.exception.file.FileNameLengthLimitExceededException; +import com.cmvr.common.exception.file.FileSizeLimitExceededException; +import com.cmvr.common.exception.file.InvalidExtensionException; +import com.cmvr.common.utils.DateUtils; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.common.utils.uuid.Seq; + +/** + * 文件上传工具类 + * + * @author cmvr-iot + */ +public class FileUploadUtils +{ + /** + * 默认大小 50M + */ + public static final long DEFAULT_MAX_SIZE = 50 * 1024 * 1024L; + + /** + * 默认的文件名最大长度 100 + */ + public static final int DEFAULT_FILE_NAME_LENGTH = 100; + + /** + * 默认上传的地址 + */ + private static String defaultBaseDir = CmvrIotConfig.getProfile(); + + public static void setDefaultBaseDir(String defaultBaseDir) + { + FileUploadUtils.defaultBaseDir = defaultBaseDir; + } + + public static String getDefaultBaseDir() + { + return defaultBaseDir; + } + + /** + * 以默认配置进行文件上传 + * + * @param file 上传的文件 + * @return 文件名称 + * @throws Exception + */ + public static final String upload(MultipartFile file) throws IOException + { + try + { + return upload(getDefaultBaseDir(), file, MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION); + } + catch (Exception e) + { + throw new IOException(e.getMessage(), e); + } + } + + /** + * 根据文件路径上传 + * + * @param baseDir 相对应用的基目录 + * @param file 上传的文件 + * @return 文件名称 + * @throws IOException + */ + public static final String upload(String baseDir, MultipartFile file) throws IOException + { + try + { + return upload(baseDir, file, MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION); + } + catch (Exception e) + { + throw new IOException(e.getMessage(), e); + } + } + + /** + * 文件上传 + * + * @param baseDir 相对应用的基目录 + * @param file 上传的文件 + * @param allowedExtension 上传文件类型 + * @return 返回上传成功的文件名 + * @throws FileSizeLimitExceededException 如果超出最大大小 + * @throws FileNameLengthLimitExceededException 文件名太长 + * @throws IOException 比如读写文件出错时 + * @throws InvalidExtensionException 文件校验异常 + */ + public static final String upload(String baseDir, MultipartFile file, String[] allowedExtension) + throws FileSizeLimitExceededException, IOException, FileNameLengthLimitExceededException, + InvalidExtensionException + { + int fileNamelength = Objects.requireNonNull(file.getOriginalFilename()).length(); + if (fileNamelength > FileUploadUtils.DEFAULT_FILE_NAME_LENGTH) + { + throw new FileNameLengthLimitExceededException(FileUploadUtils.DEFAULT_FILE_NAME_LENGTH); + } + + assertAllowed(file, allowedExtension); + + String fileName = extractFilename(file); + + String absPath = getAbsoluteFile(baseDir, fileName).getAbsolutePath(); + file.transferTo(Paths.get(absPath)); + return getPathFileName(baseDir, fileName); + } + + /** + * 编码文件名 + */ + public static final String extractFilename(MultipartFile file) + { + return StringUtils.format("{}/{}_{}.{}", DateUtils.datePath(), + FilenameUtils.getBaseName(file.getOriginalFilename()), Seq.getId(Seq.uploadSeqType), getExtension(file)); + } + + public static final File getAbsoluteFile(String uploadDir, String fileName) throws IOException + { + File desc = new File(uploadDir + File.separator + fileName); + + if (!desc.exists()) + { + if (!desc.getParentFile().exists()) + { + desc.getParentFile().mkdirs(); + } + } + return desc; + } + + public static final String getPathFileName(String uploadDir, String fileName) throws IOException + { + int dirLastIndex = CmvrIotConfig.getProfile().length() + 1; + String currentDir = StringUtils.substring(uploadDir, dirLastIndex); + return Constants.RESOURCE_PREFIX + "/" + currentDir + "/" + fileName; + } + + /** + * 文件大小校验 + * + * @param file 上传的文件 + * @return + * @throws FileSizeLimitExceededException 如果超出最大大小 + * @throws InvalidExtensionException + */ + public static final void assertAllowed(MultipartFile file, String[] allowedExtension) + throws FileSizeLimitExceededException, InvalidExtensionException + { + long size = file.getSize(); + if (size > DEFAULT_MAX_SIZE) + { + throw new FileSizeLimitExceededException(DEFAULT_MAX_SIZE / 1024 / 1024); + } + + String fileName = file.getOriginalFilename(); + String extension = getExtension(file); + if (allowedExtension != null && !isAllowedExtension(extension, allowedExtension)) + { + if (allowedExtension == MimeTypeUtils.IMAGE_EXTENSION) + { + throw new InvalidExtensionException.InvalidImageExtensionException(allowedExtension, extension, + fileName); + } + else if (allowedExtension == MimeTypeUtils.FLASH_EXTENSION) + { + throw new InvalidExtensionException.InvalidFlashExtensionException(allowedExtension, extension, + fileName); + } + else if (allowedExtension == MimeTypeUtils.MEDIA_EXTENSION) + { + throw new InvalidExtensionException.InvalidMediaExtensionException(allowedExtension, extension, + fileName); + } + else if (allowedExtension == MimeTypeUtils.VIDEO_EXTENSION) + { + throw new InvalidExtensionException.InvalidVideoExtensionException(allowedExtension, extension, + fileName); + } + else + { + throw new InvalidExtensionException(allowedExtension, extension, fileName); + } + } + } + + /** + * 判断MIME类型是否是允许的MIME类型 + * + * @param extension + * @param allowedExtension + * @return + */ + public static final boolean isAllowedExtension(String extension, String[] allowedExtension) + { + for (String str : allowedExtension) + { + if (str.equalsIgnoreCase(extension)) + { + return true; + } + } + return false; + } + + /** + * 获取文件名的后缀 + * + * @param file 表单文件 + * @return 后缀名 + */ + public static final String getExtension(MultipartFile file) + { + String extension = FilenameUtils.getExtension(file.getOriginalFilename()); + if (StringUtils.isEmpty(extension)) + { + extension = MimeTypeUtils.getExtension(Objects.requireNonNull(file.getContentType())); + } + return extension; + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/utils/file/FileUtils.java b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/file/FileUtils.java new file mode 100644 index 0000000..8755beb --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/file/FileUtils.java @@ -0,0 +1,291 @@ +package com.cmvr.common.utils.file; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.ArrayUtils; +import com.cmvr.common.config.CmvrIotConfig; +import com.cmvr.common.utils.DateUtils; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.common.utils.uuid.IdUtils; +import org.apache.commons.io.FilenameUtils; + +/** + * 文件处理工具类 + * + * @author cmvrIot + */ +public class FileUtils +{ + public static String FILENAME_PATTERN = "[a-zA-Z0-9_\\-\\|\\.\\u4e00-\\u9fa5]+"; + + /** + * 输出指定文件的byte数组 + * + * @param filePath 文件路径 + * @param os 输出流 + * @return + */ + public static void writeBytes(String filePath, OutputStream os) throws IOException + { + FileInputStream fis = null; + try + { + File file = new File(filePath); + if (!file.exists()) + { + throw new FileNotFoundException(filePath); + } + fis = new FileInputStream(file); + byte[] b = new byte[1024]; + int length; + while ((length = fis.read(b)) > 0) + { + os.write(b, 0, length); + } + } + catch (IOException e) + { + throw e; + } + finally + { + IOUtils.close(os); + IOUtils.close(fis); + } + } + + /** + * 写数据到文件中 + * + * @param data 数据 + * @return 目标文件 + * @throws IOException IO异常 + */ + public static String writeImportBytes(byte[] data) throws IOException + { + return writeBytes(data, CmvrIotConfig.getImportPath()); + } + + /** + * 写数据到文件中 + * + * @param data 数据 + * @param uploadDir 目标文件 + * @return 目标文件 + * @throws IOException IO异常 + */ + public static String writeBytes(byte[] data, String uploadDir) throws IOException + { + FileOutputStream fos = null; + String pathName = ""; + try + { + String extension = getFileExtendName(data); + pathName = DateUtils.datePath() + "/" + IdUtils.fastUUID() + "." + extension; + File file = FileUploadUtils.getAbsoluteFile(uploadDir, pathName); + fos = new FileOutputStream(file); + fos.write(data); + } + finally + { + IOUtils.close(fos); + } + return FileUploadUtils.getPathFileName(uploadDir, pathName); + } + + /** + * 删除文件 + * + * @param filePath 文件 + * @return + */ + public static boolean deleteFile(String filePath) + { + boolean flag = false; + File file = new File(filePath); + // 路径为文件且不为空则进行删除 + if (file.isFile() && file.exists()) + { + flag = file.delete(); + } + return flag; + } + + /** + * 文件名称验证 + * + * @param filename 文件名称 + * @return true 正常 false 非法 + */ + public static boolean isValidFilename(String filename) + { + return filename.matches(FILENAME_PATTERN); + } + + /** + * 检查文件是否可下载 + * + * @param resource 需要下载的文件 + * @return true 正常 false 非法 + */ + public static boolean checkAllowDownload(String resource) + { + // 禁止目录上跳级别 + if (StringUtils.contains(resource, "..")) + { + return false; + } + + // 检查允许下载的文件规则 + if (ArrayUtils.contains(MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION, FileTypeUtils.getFileType(resource))) + { + return true; + } + + // 不在允许下载的文件规则 + return false; + } + + /** + * 下载文件名重新编码 + * + * @param request 请求对象 + * @param fileName 文件名 + * @return 编码后的文件名 + */ + public static String setFileDownloadHeader(HttpServletRequest request, String fileName) throws UnsupportedEncodingException + { + final String agent = request.getHeader("USER-AGENT"); + String filename = fileName; + if (agent.contains("MSIE")) + { + // IE浏览器 + filename = URLEncoder.encode(filename, "utf-8"); + filename = filename.replace("+", " "); + } + else if (agent.contains("Firefox")) + { + // 火狐浏览器 + filename = new String(fileName.getBytes(), "ISO8859-1"); + } + else if (agent.contains("Chrome")) + { + // google浏览器 + filename = URLEncoder.encode(filename, "utf-8"); + } + else + { + // 其它浏览器 + filename = URLEncoder.encode(filename, "utf-8"); + } + return filename; + } + + /** + * 下载文件名重新编码 + * + * @param response 响应对象 + * @param realFileName 真实文件名 + */ + public static void setAttachmentResponseHeader(HttpServletResponse response, String realFileName) throws UnsupportedEncodingException + { + String percentEncodedFileName = percentEncode(realFileName); + + StringBuilder contentDispositionValue = new StringBuilder(); + contentDispositionValue.append("attachment; filename=") + .append(percentEncodedFileName) + .append(";") + .append("filename*=") + .append("utf-8''") + .append(percentEncodedFileName); + + response.addHeader("Access-Control-Expose-Headers", "Content-Disposition,download-filename"); + response.setHeader("Content-disposition", contentDispositionValue.toString()); + response.setHeader("download-filename", percentEncodedFileName); + } + + /** + * 百分号编码工具方法 + * + * @param s 需要百分号编码的字符串 + * @return 百分号编码后的字符串 + */ + public static String percentEncode(String s) throws UnsupportedEncodingException + { + String encode = URLEncoder.encode(s, StandardCharsets.UTF_8.toString()); + return encode.replaceAll("\\+", "%20"); + } + + /** + * 获取图像后缀 + * + * @param photoByte 图像数据 + * @return 后缀名 + */ + public static String getFileExtendName(byte[] photoByte) + { + String strFileExtendName = "jpg"; + if ((photoByte[0] == 71) && (photoByte[1] == 73) && (photoByte[2] == 70) && (photoByte[3] == 56) + && ((photoByte[4] == 55) || (photoByte[4] == 57)) && (photoByte[5] == 97)) + { + strFileExtendName = "gif"; + } + else if ((photoByte[6] == 74) && (photoByte[7] == 70) && (photoByte[8] == 73) && (photoByte[9] == 70)) + { + strFileExtendName = "jpg"; + } + else if ((photoByte[0] == 66) && (photoByte[1] == 77)) + { + strFileExtendName = "bmp"; + } + else if ((photoByte[1] == 80) && (photoByte[2] == 78) && (photoByte[3] == 71)) + { + strFileExtendName = "png"; + } + return strFileExtendName; + } + + /** + * 获取文件名称 /profile/upload/2022/04/16/cmvrIot.png -- cmvrIot.png + * + * @param fileName 路径名称 + * @return 没有文件路径的名称 + */ + public static String getName(String fileName) + { + if (fileName == null) + { + return null; + } + int lastUnixPos = fileName.lastIndexOf('/'); + int lastWindowsPos = fileName.lastIndexOf('\\'); + int index = Math.max(lastUnixPos, lastWindowsPos); + return fileName.substring(index + 1); + } + + /** + * 获取不带后缀文件名称 /profile/upload/2022/04/16/cmvrIot.png -- cmvrIot + * + * @param fileName 路径名称 + * @return 没有文件路径和后缀的名称 + */ + public static String getNameNotSuffix(String fileName) + { + if (fileName == null) + { + return null; + } + String baseName = FilenameUtils.getBaseName(fileName); + return baseName; + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/utils/file/ImageUtils.java b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/file/ImageUtils.java new file mode 100644 index 0000000..ce9c8ad --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/file/ImageUtils.java @@ -0,0 +1,98 @@ +package com.cmvr.common.utils.file; + +import java.io.ByteArrayInputStream; +import java.io.FileInputStream; +import java.io.InputStream; +import java.net.URL; +import java.net.URLConnection; +import java.util.Arrays; +import org.apache.poi.util.IOUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import com.cmvr.common.config.CmvrIotConfig; +import com.cmvr.common.constant.Constants; +import com.cmvr.common.utils.StringUtils; + +/** + * 图片处理工具类 + * + * @author cmvrIot + */ +public class ImageUtils +{ + private static final Logger log = LoggerFactory.getLogger(ImageUtils.class); + + public static byte[] getImage(String imagePath) + { + InputStream is = getFile(imagePath); + try + { + return IOUtils.toByteArray(is); + } + catch (Exception e) + { + log.error("图片加载异常 {}", e); + return null; + } + finally + { + IOUtils.closeQuietly(is); + } + } + + public static InputStream getFile(String imagePath) + { + try + { + byte[] result = readFile(imagePath); + result = Arrays.copyOf(result, result.length); + return new ByteArrayInputStream(result); + } + catch (Exception e) + { + log.error("获取图片异常 {}", e); + } + return null; + } + + /** + * 读取文件为字节数据 + * + * @param url 地址 + * @return 字节数据 + */ + public static byte[] readFile(String url) + { + InputStream in = null; + try + { + if (url.startsWith("http")) + { + // 网络地址 + URL urlObj = new URL(url); + URLConnection urlConnection = urlObj.openConnection(); + urlConnection.setConnectTimeout(30 * 1000); + urlConnection.setReadTimeout(60 * 1000); + urlConnection.setDoInput(true); + in = urlConnection.getInputStream(); + } + else + { + // 本机地址 + String localPath = CmvrIotConfig.getProfile(); + String downloadPath = localPath + StringUtils.substringAfter(url, Constants.RESOURCE_PREFIX); + in = new FileInputStream(downloadPath); + } + return IOUtils.toByteArray(in); + } + catch (Exception e) + { + log.error("获取文件路径异常 {}", e); + return null; + } + finally + { + IOUtils.closeQuietly(in); + } + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/utils/file/MimeTypeUtils.java b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/file/MimeTypeUtils.java new file mode 100644 index 0000000..70ade72 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/file/MimeTypeUtils.java @@ -0,0 +1,59 @@ +package com.cmvr.common.utils.file; + +/** + * 媒体类型工具类 + * + * @author cmvrIot + */ +public class MimeTypeUtils +{ + public static final String IMAGE_PNG = "image/png"; + + public static final String IMAGE_JPG = "image/jpg"; + + public static final String IMAGE_JPEG = "image/jpeg"; + + public static final String IMAGE_BMP = "image/bmp"; + + public static final String IMAGE_GIF = "image/gif"; + + public static final String[] IMAGE_EXTENSION = { "bmp", "gif", "jpg", "jpeg", "png" }; + + public static final String[] FLASH_EXTENSION = { "swf", "flv" }; + + public static final String[] MEDIA_EXTENSION = { "swf", "flv", "mp3", "wav", "wma", "wmv", "mid", "avi", "mpg", + "asf", "rm", "rmvb" }; + + public static final String[] VIDEO_EXTENSION = { "mp4", "avi", "rmvb" }; + + public static final String[] DEFAULT_ALLOWED_EXTENSION = { + // 图片 + "bmp", "gif", "jpg", "jpeg", "png", + // word excel powerpoint + "doc", "docx", "xls", "xlsx", "ppt", "pptx", "html", "htm", "txt", + // 压缩文件 + "rar", "zip", "gz", "bz2", + // 视频格式 + "mp4", "avi", "rmvb", + // pdf + "pdf" }; + + public static String getExtension(String prefix) + { + switch (prefix) + { + case IMAGE_PNG: + return "png"; + case IMAGE_JPG: + return "jpg"; + case IMAGE_JPEG: + return "jpeg"; + case IMAGE_BMP: + return "bmp"; + case IMAGE_GIF: + return "gif"; + default: + return ""; + } + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/utils/html/EscapeUtil.java b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/html/EscapeUtil.java new file mode 100644 index 0000000..ac287a5 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/html/EscapeUtil.java @@ -0,0 +1,167 @@ +package com.cmvr.common.utils.html; + +import com.cmvr.common.utils.StringUtils; + +/** + * 转义和反转义工具类 + * + * @author cmvrIot + */ +public class EscapeUtil +{ + public static final String RE_HTML_MARK = "(<[^<]*?>)|(<[\\s]*?/[^<]*?>)|(<[^<]*?/[\\s]*?>)"; + + private static final char[][] TEXT = new char[64][]; + + static + { + for (int i = 0; i < 64; i++) + { + TEXT[i] = new char[] { (char) i }; + } + + // special HTML characters + TEXT['\''] = "'".toCharArray(); // 单引号 + TEXT['"'] = """.toCharArray(); // 双引号 + TEXT['&'] = "&".toCharArray(); // &符 + TEXT['<'] = "<".toCharArray(); // 小于号 + TEXT['>'] = ">".toCharArray(); // 大于号 + } + + /** + * 转义文本中的HTML字符为安全的字符 + * + * @param text 被转义的文本 + * @return 转义后的文本 + */ + public static String escape(String text) + { + return encode(text); + } + + /** + * 还原被转义的HTML特殊字符 + * + * @param content 包含转义符的HTML内容 + * @return 转换后的字符串 + */ + public static String unescape(String content) + { + return decode(content); + } + + /** + * 清除所有HTML标签,但是不删除标签内的内容 + * + * @param content 文本 + * @return 清除标签后的文本 + */ + public static String clean(String content) + { + return new HTMLFilter().filter(content); + } + + /** + * Escape编码 + * + * @param text 被编码的文本 + * @return 编码后的字符 + */ + private static String encode(String text) + { + if (StringUtils.isEmpty(text)) + { + return StringUtils.EMPTY; + } + + final StringBuilder tmp = new StringBuilder(text.length() * 6); + char c; + for (int i = 0; i < text.length(); i++) + { + c = text.charAt(i); + if (c < 256) + { + tmp.append("%"); + if (c < 16) + { + tmp.append("0"); + } + tmp.append(Integer.toString(c, 16)); + } + else + { + tmp.append("%u"); + if (c <= 0xfff) + { + // issue#I49JU8@Gitee + tmp.append("0"); + } + tmp.append(Integer.toString(c, 16)); + } + } + return tmp.toString(); + } + + /** + * Escape解码 + * + * @param content 被转义的内容 + * @return 解码后的字符串 + */ + public static String decode(String content) + { + if (StringUtils.isEmpty(content)) + { + return content; + } + + StringBuilder tmp = new StringBuilder(content.length()); + int lastPos = 0, pos = 0; + char ch; + while (lastPos < content.length()) + { + pos = content.indexOf("%", lastPos); + if (pos == lastPos) + { + if (content.charAt(pos + 1) == 'u') + { + ch = (char) Integer.parseInt(content.substring(pos + 2, pos + 6), 16); + tmp.append(ch); + lastPos = pos + 6; + } + else + { + ch = (char) Integer.parseInt(content.substring(pos + 1, pos + 3), 16); + tmp.append(ch); + lastPos = pos + 3; + } + } + else + { + if (pos == -1) + { + tmp.append(content.substring(lastPos)); + lastPos = content.length(); + } + else + { + tmp.append(content.substring(lastPos, pos)); + lastPos = pos; + } + } + } + return tmp.toString(); + } + + public static void main(String[] args) + { + String html = ""; + String escape = EscapeUtil.escape(html); + // String html = "ipt>alert(\"XSS\")ipt>"; + // String html = "<123"; + // String html = "123>"; + System.out.println("clean: " + EscapeUtil.clean(html)); + System.out.println("escape: " + escape); + System.out.println("unescape: " + EscapeUtil.unescape(escape)); + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/utils/html/HTMLFilter.java b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/html/HTMLFilter.java new file mode 100644 index 0000000..a638191 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/html/HTMLFilter.java @@ -0,0 +1,570 @@ +package com.cmvr.common.utils.html; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * HTML过滤器,用于去除XSS漏洞隐患。 + * + * @author cmvrIot + */ +public final class HTMLFilter +{ + /** + * regex flag union representing /si modifiers in php + **/ + private static final int REGEX_FLAGS_SI = Pattern.CASE_INSENSITIVE | Pattern.DOTALL; + private static final Pattern P_COMMENTS = Pattern.compile("", Pattern.DOTALL); + private static final Pattern P_COMMENT = Pattern.compile("^!--(.*)--$", REGEX_FLAGS_SI); + private static final Pattern P_TAGS = Pattern.compile("<(.*?)>", Pattern.DOTALL); + private static final Pattern P_END_TAG = Pattern.compile("^/([a-z0-9]+)", REGEX_FLAGS_SI); + private static final Pattern P_START_TAG = Pattern.compile("^([a-z0-9]+)(.*?)(/?)$", REGEX_FLAGS_SI); + private static final Pattern P_QUOTED_ATTRIBUTES = Pattern.compile("([a-z0-9]+)=([\"'])(.*?)\\2", REGEX_FLAGS_SI); + private static final Pattern P_UNQUOTED_ATTRIBUTES = Pattern.compile("([a-z0-9]+)(=)([^\"\\s']+)", REGEX_FLAGS_SI); + private static final Pattern P_PROTOCOL = Pattern.compile("^([^:]+):", REGEX_FLAGS_SI); + private static final Pattern P_ENTITY = Pattern.compile("&#(\\d+);?"); + private static final Pattern P_ENTITY_UNICODE = Pattern.compile("&#x([0-9a-f]+);?"); + private static final Pattern P_ENCODE = Pattern.compile("%([0-9a-f]{2});?"); + private static final Pattern P_VALID_ENTITIES = Pattern.compile("&([^&;]*)(?=(;|&|$))"); + private static final Pattern P_VALID_QUOTES = Pattern.compile("(>|^)([^<]+?)(<|$)", Pattern.DOTALL); + private static final Pattern P_END_ARROW = Pattern.compile("^>"); + private static final Pattern P_BODY_TO_END = Pattern.compile("<([^>]*?)(?=<|$)"); + private static final Pattern P_XML_CONTENT = Pattern.compile("(^|>)([^<]*?)(?=>)"); + private static final Pattern P_STRAY_LEFT_ARROW = Pattern.compile("<([^>]*?)(?=<|$)"); + private static final Pattern P_STRAY_RIGHT_ARROW = Pattern.compile("(^|>)([^<]*?)(?=>)"); + private static final Pattern P_AMP = Pattern.compile("&"); + private static final Pattern P_QUOTE = Pattern.compile("\""); + private static final Pattern P_LEFT_ARROW = Pattern.compile("<"); + private static final Pattern P_RIGHT_ARROW = Pattern.compile(">"); + private static final Pattern P_BOTH_ARROWS = Pattern.compile("<>"); + + // @xxx could grow large... maybe use sesat's ReferenceMap + private static final ConcurrentMap P_REMOVE_PAIR_BLANKS = new ConcurrentHashMap<>(); + private static final ConcurrentMap P_REMOVE_SELF_BLANKS = new ConcurrentHashMap<>(); + + /** + * set of allowed html elements, along with allowed attributes for each element + **/ + private final Map> vAllowed; + /** + * counts of open tags for each (allowable) html element + **/ + private final Map vTagCounts = new HashMap<>(); + + /** + * html elements which must always be self-closing (e.g. "") + **/ + private final String[] vSelfClosingTags; + /** + * html elements which must always have separate opening and closing tags (e.g. "") + **/ + private final String[] vNeedClosingTags; + /** + * set of disallowed html elements + **/ + private final String[] vDisallowed; + /** + * attributes which should be checked for valid protocols + **/ + private final String[] vProtocolAtts; + /** + * allowed protocols + **/ + private final String[] vAllowedProtocols; + /** + * tags which should be removed if they contain no content (e.g. "" or "") + **/ + private final String[] vRemoveBlanks; + /** + * entities allowed within html markup + **/ + private final String[] vAllowedEntities; + /** + * flag determining whether comments are allowed in input String. + */ + private final boolean stripComment; + private final boolean encodeQuotes; + /** + * flag determining whether to try to make tags when presented with "unbalanced" angle brackets (e.g. "" + * becomes " text "). If set to false, unbalanced angle brackets will be html escaped. + */ + private final boolean alwaysMakeTags; + + /** + * Default constructor. + */ + public HTMLFilter() + { + vAllowed = new HashMap<>(); + + final ArrayList a_atts = new ArrayList<>(); + a_atts.add("href"); + a_atts.add("target"); + vAllowed.put("a", a_atts); + + final ArrayList img_atts = new ArrayList<>(); + img_atts.add("src"); + img_atts.add("width"); + img_atts.add("height"); + img_atts.add("alt"); + vAllowed.put("img", img_atts); + + final ArrayList no_atts = new ArrayList<>(); + vAllowed.put("b", no_atts); + vAllowed.put("strong", no_atts); + vAllowed.put("i", no_atts); + vAllowed.put("em", no_atts); + + vSelfClosingTags = new String[] { "img" }; + vNeedClosingTags = new String[] { "a", "b", "strong", "i", "em" }; + vDisallowed = new String[] {}; + vAllowedProtocols = new String[] { "http", "mailto", "https" }; // no ftp. + vProtocolAtts = new String[] { "src", "href" }; + vRemoveBlanks = new String[] { "a", "b", "strong", "i", "em" }; + vAllowedEntities = new String[] { "amp", "gt", "lt", "quot" }; + stripComment = true; + encodeQuotes = true; + alwaysMakeTags = false; + } + + /** + * Map-parameter configurable constructor. + * + * @param conf map containing configuration. keys match field names. + */ + @SuppressWarnings("unchecked") + public HTMLFilter(final Map conf) + { + + assert conf.containsKey("vAllowed") : "configuration requires vAllowed"; + assert conf.containsKey("vSelfClosingTags") : "configuration requires vSelfClosingTags"; + assert conf.containsKey("vNeedClosingTags") : "configuration requires vNeedClosingTags"; + assert conf.containsKey("vDisallowed") : "configuration requires vDisallowed"; + assert conf.containsKey("vAllowedProtocols") : "configuration requires vAllowedProtocols"; + assert conf.containsKey("vProtocolAtts") : "configuration requires vProtocolAtts"; + assert conf.containsKey("vRemoveBlanks") : "configuration requires vRemoveBlanks"; + assert conf.containsKey("vAllowedEntities") : "configuration requires vAllowedEntities"; + + vAllowed = Collections.unmodifiableMap((HashMap>) conf.get("vAllowed")); + vSelfClosingTags = (String[]) conf.get("vSelfClosingTags"); + vNeedClosingTags = (String[]) conf.get("vNeedClosingTags"); + vDisallowed = (String[]) conf.get("vDisallowed"); + vAllowedProtocols = (String[]) conf.get("vAllowedProtocols"); + vProtocolAtts = (String[]) conf.get("vProtocolAtts"); + vRemoveBlanks = (String[]) conf.get("vRemoveBlanks"); + vAllowedEntities = (String[]) conf.get("vAllowedEntities"); + stripComment = conf.containsKey("stripComment") ? (Boolean) conf.get("stripComment") : true; + encodeQuotes = conf.containsKey("encodeQuotes") ? (Boolean) conf.get("encodeQuotes") : true; + alwaysMakeTags = conf.containsKey("alwaysMakeTags") ? (Boolean) conf.get("alwaysMakeTags") : true; + } + + private void reset() + { + vTagCounts.clear(); + } + + // --------------------------------------------------------------- + // my versions of some PHP library functions + public static String chr(final int decimal) + { + return String.valueOf((char) decimal); + } + + public static String htmlSpecialChars(final String s) + { + String result = s; + result = regexReplace(P_AMP, "&", result); + result = regexReplace(P_QUOTE, """, result); + result = regexReplace(P_LEFT_ARROW, "<", result); + result = regexReplace(P_RIGHT_ARROW, ">", result); + return result; + } + + // --------------------------------------------------------------- + + /** + * given a user submitted input String, filter out any invalid or restricted html. + * + * @param input text (i.e. submitted by a user) than may contain html + * @return "clean" version of input, with only valid, whitelisted html elements allowed + */ + public String filter(final String input) + { + reset(); + String s = input; + + s = escapeComments(s); + + s = balanceHTML(s); + + s = checkTags(s); + + s = processRemoveBlanks(s); + + // s = validateEntities(s); + + return s; + } + + public boolean isAlwaysMakeTags() + { + return alwaysMakeTags; + } + + public boolean isStripComments() + { + return stripComment; + } + + private String escapeComments(final String s) + { + final Matcher m = P_COMMENTS.matcher(s); + final StringBuffer buf = new StringBuffer(); + if (m.find()) + { + final String match = m.group(1); // (.*?) + m.appendReplacement(buf, Matcher.quoteReplacement("")); + } + m.appendTail(buf); + + return buf.toString(); + } + + private String balanceHTML(String s) + { + if (alwaysMakeTags) + { + // + // try and form html + // + s = regexReplace(P_END_ARROW, "", s); + // 不追加结束标签 + s = regexReplace(P_BODY_TO_END, "<$1>", s); + s = regexReplace(P_XML_CONTENT, "$1<$2", s); + + } + else + { + // + // escape stray brackets + // + s = regexReplace(P_STRAY_LEFT_ARROW, "<$1", s); + s = regexReplace(P_STRAY_RIGHT_ARROW, "$1$2><", s); + + // + // the last regexp causes '<>' entities to appear + // (we need to do a lookahead assertion so that the last bracket can + // be used in the next pass of the regexp) + // + s = regexReplace(P_BOTH_ARROWS, "", s); + } + + return s; + } + + private String checkTags(String s) + { + Matcher m = P_TAGS.matcher(s); + + final StringBuffer buf = new StringBuffer(); + while (m.find()) + { + String replaceStr = m.group(1); + replaceStr = processTag(replaceStr); + m.appendReplacement(buf, Matcher.quoteReplacement(replaceStr)); + } + m.appendTail(buf); + + // these get tallied in processTag + // (remember to reset before subsequent calls to filter method) + final StringBuilder sBuilder = new StringBuilder(buf.toString()); + for (String key : vTagCounts.keySet()) + { + for (int ii = 0; ii < vTagCounts.get(key); ii++) + { + sBuilder.append(""); + } + } + s = sBuilder.toString(); + + return s; + } + + private String processRemoveBlanks(final String s) + { + String result = s; + for (String tag : vRemoveBlanks) + { + if (!P_REMOVE_PAIR_BLANKS.containsKey(tag)) + { + P_REMOVE_PAIR_BLANKS.putIfAbsent(tag, Pattern.compile("<" + tag + "(\\s[^>]*)?>")); + } + result = regexReplace(P_REMOVE_PAIR_BLANKS.get(tag), "", result); + if (!P_REMOVE_SELF_BLANKS.containsKey(tag)) + { + P_REMOVE_SELF_BLANKS.putIfAbsent(tag, Pattern.compile("<" + tag + "(\\s[^>]*)?/>")); + } + result = regexReplace(P_REMOVE_SELF_BLANKS.get(tag), "", result); + } + + return result; + } + + private static String regexReplace(final Pattern regex_pattern, final String replacement, final String s) + { + Matcher m = regex_pattern.matcher(s); + return m.replaceAll(replacement); + } + + private String processTag(final String s) + { + // ending tags + Matcher m = P_END_TAG.matcher(s); + if (m.find()) + { + final String name = m.group(1).toLowerCase(); + if (allowed(name)) + { + if (!inArray(name, vSelfClosingTags)) + { + if (vTagCounts.containsKey(name)) + { + vTagCounts.put(name, vTagCounts.get(name) - 1); + return ""; + } + } + } + } + + // starting tags + m = P_START_TAG.matcher(s); + if (m.find()) + { + final String name = m.group(1).toLowerCase(); + final String body = m.group(2); + String ending = m.group(3); + + // debug( "in a starting tag, name='" + name + "'; body='" + body + "'; ending='" + ending + "'" ); + if (allowed(name)) + { + final StringBuilder params = new StringBuilder(); + + final Matcher m2 = P_QUOTED_ATTRIBUTES.matcher(body); + final Matcher m3 = P_UNQUOTED_ATTRIBUTES.matcher(body); + final List paramNames = new ArrayList<>(); + final List paramValues = new ArrayList<>(); + while (m2.find()) + { + paramNames.add(m2.group(1)); // ([a-z0-9]+) + paramValues.add(m2.group(3)); // (.*?) + } + while (m3.find()) + { + paramNames.add(m3.group(1)); // ([a-z0-9]+) + paramValues.add(m3.group(3)); // ([^\"\\s']+) + } + + String paramName, paramValue; + for (int ii = 0; ii < paramNames.size(); ii++) + { + paramName = paramNames.get(ii).toLowerCase(); + paramValue = paramValues.get(ii); + + // debug( "paramName='" + paramName + "'" ); + // debug( "paramValue='" + paramValue + "'" ); + // debug( "allowed? " + vAllowed.get( name ).contains( paramName ) ); + + if (allowedAttribute(name, paramName)) + { + if (inArray(paramName, vProtocolAtts)) + { + paramValue = processParamProtocol(paramValue); + } + params.append(' ').append(paramName).append("=\\\"").append(paramValue).append("\\\""); + } + } + + if (inArray(name, vSelfClosingTags)) + { + ending = " /"; + } + + if (inArray(name, vNeedClosingTags)) + { + ending = ""; + } + + if (ending == null || ending.length() < 1) + { + if (vTagCounts.containsKey(name)) + { + vTagCounts.put(name, vTagCounts.get(name) + 1); + } + else + { + vTagCounts.put(name, 1); + } + } + else + { + ending = " /"; + } + return "<" + name + params + ending + ">"; + } + else + { + return ""; + } + } + + // comments + m = P_COMMENT.matcher(s); + if (!stripComment && m.find()) + { + return "<" + m.group() + ">"; + } + + return ""; + } + + private String processParamProtocol(String s) + { + s = decodeEntities(s); + final Matcher m = P_PROTOCOL.matcher(s); + if (m.find()) + { + final String protocol = m.group(1); + if (!inArray(protocol, vAllowedProtocols)) + { + // bad protocol, turn into local anchor link instead + s = "#" + s.substring(protocol.length() + 1); + if (s.startsWith("#//")) + { + s = "#" + s.substring(3); + } + } + } + + return s; + } + + private String decodeEntities(String s) + { + StringBuffer buf = new StringBuffer(); + + Matcher m = P_ENTITY.matcher(s); + while (m.find()) + { + final String match = m.group(1); + final int decimal = Integer.decode(match).intValue(); + m.appendReplacement(buf, Matcher.quoteReplacement(chr(decimal))); + } + m.appendTail(buf); + s = buf.toString(); + + buf = new StringBuffer(); + m = P_ENTITY_UNICODE.matcher(s); + while (m.find()) + { + final String match = m.group(1); + final int decimal = Integer.valueOf(match, 16).intValue(); + m.appendReplacement(buf, Matcher.quoteReplacement(chr(decimal))); + } + m.appendTail(buf); + s = buf.toString(); + + buf = new StringBuffer(); + m = P_ENCODE.matcher(s); + while (m.find()) + { + final String match = m.group(1); + final int decimal = Integer.valueOf(match, 16).intValue(); + m.appendReplacement(buf, Matcher.quoteReplacement(chr(decimal))); + } + m.appendTail(buf); + s = buf.toString(); + + s = validateEntities(s); + return s; + } + + private String validateEntities(final String s) + { + StringBuffer buf = new StringBuffer(); + + // validate entities throughout the string + Matcher m = P_VALID_ENTITIES.matcher(s); + while (m.find()) + { + final String one = m.group(1); // ([^&;]*) + final String two = m.group(2); // (?=(;|&|$)) + m.appendReplacement(buf, Matcher.quoteReplacement(checkEntity(one, two))); + } + m.appendTail(buf); + + return encodeQuotes(buf.toString()); + } + + private String encodeQuotes(final String s) + { + if (encodeQuotes) + { + StringBuffer buf = new StringBuffer(); + Matcher m = P_VALID_QUOTES.matcher(s); + while (m.find()) + { + final String one = m.group(1); // (>|^) + final String two = m.group(2); // ([^<]+?) + final String three = m.group(3); // (<|$) + // 不替换双引号为",防止json格式无效 regexReplace(P_QUOTE, """, two) + m.appendReplacement(buf, Matcher.quoteReplacement(one + two + three)); + } + m.appendTail(buf); + return buf.toString(); + } + else + { + return s; + } + } + + private String checkEntity(final String preamble, final String term) + { + + return ";".equals(term) && isValidEntity(preamble) ? '&' + preamble : "&" + preamble; + } + + private boolean isValidEntity(final String entity) + { + return inArray(entity, vAllowedEntities); + } + + private static boolean inArray(final String s, final String[] array) + { + for (String item : array) + { + if (item != null && item.equals(s)) + { + return true; + } + } + return false; + } + + private boolean allowed(final String name) + { + return (vAllowed.isEmpty() || vAllowed.containsKey(name)) && !inArray(name, vDisallowed); + } + + private boolean allowedAttribute(final String name, final String paramName) + { + return allowed(name) && (vAllowed.isEmpty() || vAllowed.get(name).contains(paramName)); + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/utils/http/CallAPIUtil.java b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/http/CallAPIUtil.java new file mode 100644 index 0000000..2038bb9 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/http/CallAPIUtil.java @@ -0,0 +1,116 @@ +package com.cmvr.common.utils.http; + +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; +import cn.hutool.http.HttpUtil; +import cn.hutool.http.ContentType; +import cn.hutool.json.JSONUtil; + +import java.io.File; +import java.util.Map; + +/** + * API调用 工具类封装(基于 HuTool) + */ +public class CallAPIUtil { + + /** + * 发送 GET 请求 + * + * @param url 请求地址 + * @param headers 请求头(可为 null) + * @param params URL 参数(可为 null) + * @return 响应内容字符串 + */ + public static String doGet(String url, Map headers, Map params) { + HttpRequest request = HttpUtil.createGet(url); + + if (headers != null) { + request.addHeaders(headers); + } + + if (params != null) { + request.form(params); // GET 请求用 form 方式拼接参数 + } + + try (HttpResponse response = request.execute()) { + return response.body(); + } + } + + /** + * 发送 POST 请求 - 表单方式 + * + * @param url 请求地址 + * @param headers 请求头 + * @param params 参数表单 + * @return 响应字符串 + */ + public static String doPostForm(String url, Map headers, Map params) { + HttpRequest request = HttpUtil.createPost(url); + + if (headers != null) { + request.addHeaders(headers); + } + + if (params != null) { + request.form(params); + } + + try (HttpResponse response = request.execute()) { + return response.body(); + } + } + + /** + * 发送 POST 请求 - JSON 格式 + * + * @param url 请求地址 + * @param headers 请求头 + * @param jsonObj 要发送的 JSON 对象(Map 或实体类) + * @return 响应字符串 + */ + public static String doPostJson(String url, Map headers, Object jsonObj) { + HttpRequest request = HttpUtil.createPost(url) + .header("Content-Type", ContentType.JSON.toString()) + .body(JSONUtil.toJsonStr(jsonObj)); + + if (headers != null) { + request.addHeaders(headers); + } + + try (HttpResponse response = request.execute()) { + return response.body(); + } + } + + /** + * 发送 POST 请求 - 文件上传 (multipart/form-data) + * + * @param url 请求地址 + * @param headers 请求头(可为 null) + * @param fileKey 文件字段名(如 "image") + * @param file 文件对象 + * @param params 其他表单参数(可为 null) + * @return 响应字符串 + */ + public static String doPostFile(String url, Map headers, String fileKey, File file, Map params) { + HttpRequest request = HttpRequest.post(url); + + if (headers != null) { + request.addHeaders(headers); + } + + // 添加文件 + request.form(fileKey, file); + + // 其他普通参数 + if (params != null) { + request.form(params); + } + + try (HttpResponse response = request.execute()) { + return response.body(); + } + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/utils/http/HttpHelper.java b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/http/HttpHelper.java new file mode 100644 index 0000000..5a78e7c --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/http/HttpHelper.java @@ -0,0 +1,55 @@ +package com.cmvr.common.utils.http; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; +import javax.servlet.ServletRequest; +import org.apache.commons.lang3.exception.ExceptionUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * 通用http工具封装 + * + * @author cmvrIot + */ +public class HttpHelper +{ + private static final Logger LOGGER = LoggerFactory.getLogger(HttpHelper.class); + + public static String getBodyString(ServletRequest request) + { + StringBuilder sb = new StringBuilder(); + BufferedReader reader = null; + try (InputStream inputStream = request.getInputStream()) + { + reader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8)); + String line = ""; + while ((line = reader.readLine()) != null) + { + sb.append(line); + } + } + catch (IOException e) + { + LOGGER.warn("getBodyString出现问题!"); + } + finally + { + if (reader != null) + { + try + { + reader.close(); + } + catch (IOException e) + { + LOGGER.error(ExceptionUtils.getMessage(e)); + } + } + } + return sb.toString(); + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/utils/http/HttpUtils.java b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/http/HttpUtils.java new file mode 100644 index 0000000..0557d7a --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/http/HttpUtils.java @@ -0,0 +1,274 @@ +package com.cmvr.common.utils.http; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.PrintWriter; +import java.net.ConnectException; +import java.net.SocketTimeoutException; +import java.net.URL; +import java.net.URLConnection; +import java.nio.charset.StandardCharsets; +import java.security.cert.X509Certificate; +import javax.net.ssl.HostnameVerifier; +import javax.net.ssl.HttpsURLConnection; +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLSession; +import javax.net.ssl.TrustManager; +import javax.net.ssl.X509TrustManager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import com.cmvr.common.constant.Constants; +import com.cmvr.common.utils.StringUtils; + +/** + * 通用http发送方法 + * + * @author cmvrIot + */ +public class HttpUtils +{ + private static final Logger log = LoggerFactory.getLogger(HttpUtils.class); + + /** + * 向指定 URL 发送GET方法的请求 + * + * @param url 发送请求的 URL + * @return 所代表远程资源的响应结果 + */ + public static String sendGet(String url) + { + return sendGet(url, StringUtils.EMPTY); + } + + /** + * 向指定 URL 发送GET方法的请求 + * + * @param url 发送请求的 URL + * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 + * @return 所代表远程资源的响应结果 + */ + public static String sendGet(String url, String param) + { + return sendGet(url, param, Constants.UTF8); + } + + /** + * 向指定 URL 发送GET方法的请求 + * + * @param url 发送请求的 URL + * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 + * @param contentType 编码类型 + * @return 所代表远程资源的响应结果 + */ + public static String sendGet(String url, String param, String contentType) + { + StringBuilder result = new StringBuilder(); + BufferedReader in = null; + try + { + String urlNameString = StringUtils.isNotBlank(param) ? url + "?" + param : url; + log.info("sendGet - {}", urlNameString); + URL realUrl = new URL(urlNameString); + URLConnection connection = realUrl.openConnection(); + connection.setRequestProperty("accept", "*/*"); + connection.setRequestProperty("connection", "Keep-Alive"); + connection.setRequestProperty("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"); + connection.connect(); + in = new BufferedReader(new InputStreamReader(connection.getInputStream(), contentType)); + String line; + while ((line = in.readLine()) != null) + { + result.append(line); + } + log.info("recv - {}", result); + } + catch (ConnectException e) + { + log.error("调用HttpUtils.sendGet ConnectException, url=" + url + ",param=" + param, e); + } + catch (SocketTimeoutException e) + { + log.error("调用HttpUtils.sendGet SocketTimeoutException, url=" + url + ",param=" + param, e); + } + catch (IOException e) + { + log.error("调用HttpUtils.sendGet IOException, url=" + url + ",param=" + param, e); + } + catch (Exception e) + { + log.error("调用HttpsUtil.sendGet Exception, url=" + url + ",param=" + param, e); + } + finally + { + try + { + if (in != null) + { + in.close(); + } + } + catch (Exception ex) + { + log.error("调用in.close Exception, url=" + url + ",param=" + param, ex); + } + } + return result.toString(); + } + + /** + * 向指定 URL 发送POST方法的请求 + * + * @param url 发送请求的 URL + * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 + * @return 所代表远程资源的响应结果 + */ + public static String sendPost(String url, String param) + { + PrintWriter out = null; + BufferedReader in = null; + StringBuilder result = new StringBuilder(); + try + { + log.info("sendPost - {}", url); + URL realUrl = new URL(url); + URLConnection conn = realUrl.openConnection(); + conn.setRequestProperty("accept", "*/*"); + conn.setRequestProperty("connection", "Keep-Alive"); + conn.setRequestProperty("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"); + conn.setRequestProperty("Accept-Charset", "utf-8"); + conn.setRequestProperty("contentType", "utf-8"); + conn.setDoOutput(true); + conn.setDoInput(true); + out = new PrintWriter(conn.getOutputStream()); + out.print(param); + out.flush(); + in = new BufferedReader(new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8)); + String line; + while ((line = in.readLine()) != null) + { + result.append(line); + } + log.info("recv - {}", result); + } + catch (ConnectException e) + { + log.error("调用HttpUtils.sendPost ConnectException, url=" + url + ",param=" + param, e); + } + catch (SocketTimeoutException e) + { + log.error("调用HttpUtils.sendPost SocketTimeoutException, url=" + url + ",param=" + param, e); + } + catch (IOException e) + { + log.error("调用HttpUtils.sendPost IOException, url=" + url + ",param=" + param, e); + } + catch (Exception e) + { + log.error("调用HttpsUtil.sendPost Exception, url=" + url + ",param=" + param, e); + } + finally + { + try + { + if (out != null) + { + out.close(); + } + if (in != null) + { + in.close(); + } + } + catch (IOException ex) + { + log.error("调用in.close Exception, url=" + url + ",param=" + param, ex); + } + } + return result.toString(); + } + + public static String sendSSLPost(String url, String param) + { + StringBuilder result = new StringBuilder(); + String urlNameString = url + "?" + param; + try + { + log.info("sendSSLPost - {}", urlNameString); + SSLContext sc = SSLContext.getInstance("SSL"); + sc.init(null, new TrustManager[] { new TrustAnyTrustManager() }, new java.security.SecureRandom()); + URL console = new URL(urlNameString); + HttpsURLConnection conn = (HttpsURLConnection) console.openConnection(); + conn.setRequestProperty("accept", "*/*"); + conn.setRequestProperty("connection", "Keep-Alive"); + conn.setRequestProperty("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"); + conn.setRequestProperty("Accept-Charset", "utf-8"); + conn.setRequestProperty("contentType", "utf-8"); + conn.setDoOutput(true); + conn.setDoInput(true); + + conn.setSSLSocketFactory(sc.getSocketFactory()); + conn.setHostnameVerifier(new TrustAnyHostnameVerifier()); + conn.connect(); + InputStream is = conn.getInputStream(); + BufferedReader br = new BufferedReader(new InputStreamReader(is)); + String ret = ""; + while ((ret = br.readLine()) != null) + { + if (ret != null && !"".equals(ret.trim())) + { + result.append(new String(ret.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8)); + } + } + log.info("recv - {}", result); + conn.disconnect(); + br.close(); + } + catch (ConnectException e) + { + log.error("调用HttpUtils.sendSSLPost ConnectException, url=" + url + ",param=" + param, e); + } + catch (SocketTimeoutException e) + { + log.error("调用HttpUtils.sendSSLPost SocketTimeoutException, url=" + url + ",param=" + param, e); + } + catch (IOException e) + { + log.error("调用HttpUtils.sendSSLPost IOException, url=" + url + ",param=" + param, e); + } + catch (Exception e) + { + log.error("调用HttpsUtil.sendSSLPost Exception, url=" + url + ",param=" + param, e); + } + return result.toString(); + } + + private static class TrustAnyTrustManager implements X509TrustManager + { + @Override + public void checkClientTrusted(X509Certificate[] chain, String authType) + { + } + + @Override + public void checkServerTrusted(X509Certificate[] chain, String authType) + { + } + + @Override + public X509Certificate[] getAcceptedIssuers() + { + return new X509Certificate[] {}; + } + } + + private static class TrustAnyHostnameVerifier implements HostnameVerifier + { + @Override + public boolean verify(String hostname, SSLSession session) + { + return true; + } + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/utils/ip/AddressUtils.java b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/ip/AddressUtils.java new file mode 100644 index 0000000..7d7759f --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/ip/AddressUtils.java @@ -0,0 +1,56 @@ +package com.cmvr.common.utils.ip; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.cmvr.common.config.CmvrIotConfig; +import com.cmvr.common.constant.Constants; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.common.utils.http.HttpUtils; + +/** + * 获取地址类 + * + * @author cmvrIot + */ +public class AddressUtils +{ + private static final Logger log = LoggerFactory.getLogger(AddressUtils.class); + + // IP地址查询 + public static final String IP_URL = "http://whois.pconline.com.cn/ipJson.jsp"; + + // 未知地址 + public static final String UNKNOWN = "XX XX"; + + public static String getRealAddressByIP(String ip) + { + // 内网不查询 + if (IpUtils.internalIp(ip)) + { + return "内网IP"; + } + if (CmvrIotConfig.isAddressEnabled()) + { + try + { + String rspStr = HttpUtils.sendGet(IP_URL, "ip=" + ip + "&json=true", Constants.GBK); + if (StringUtils.isEmpty(rspStr)) + { + log.error("获取地理位置异常 {}", ip); + return UNKNOWN; + } + JSONObject obj = JSON.parseObject(rspStr); + String region = obj.getString("pro"); + String city = obj.getString("city"); + return String.format("%s %s", region, city); + } + catch (Exception e) + { + log.error("获取地理位置异常 {}", ip); + } + } + return UNKNOWN; + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/utils/ip/IpUtils.java b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/ip/IpUtils.java new file mode 100644 index 0000000..7780d3e --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/ip/IpUtils.java @@ -0,0 +1,382 @@ +package com.cmvr.common.utils.ip; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import javax.servlet.http.HttpServletRequest; +import com.cmvr.common.utils.ServletUtils; +import com.cmvr.common.utils.StringUtils; + +/** + * 获取IP方法 + * + * @author cmvrIot + */ +public class IpUtils +{ + public final static String REGX_0_255 = "(25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]\\d|\\d)"; + // 匹配 ip + public final static String REGX_IP = "((" + REGX_0_255 + "\\.){3}" + REGX_0_255 + ")"; + public final static String REGX_IP_WILDCARD = "(((\\*\\.){3}\\*)|(" + REGX_0_255 + "(\\.\\*){3})|(" + REGX_0_255 + "\\." + REGX_0_255 + ")(\\.\\*){2}" + "|((" + REGX_0_255 + "\\.){3}\\*))"; + // 匹配网段 + public final static String REGX_IP_SEG = "(" + REGX_IP + "\\-" + REGX_IP + ")"; + + /** + * 获取客户端IP + * + * @return IP地址 + */ + public static String getIpAddr() + { + return getIpAddr(ServletUtils.getRequest()); + } + + /** + * 获取客户端IP + * + * @param request 请求对象 + * @return IP地址 + */ + public static String getIpAddr(HttpServletRequest request) + { + if (request == null) + { + return "unknown"; + } + String ip = request.getHeader("x-forwarded-for"); + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) + { + ip = request.getHeader("Proxy-Client-IP"); + } + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) + { + ip = request.getHeader("X-Forwarded-For"); + } + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) + { + ip = request.getHeader("WL-Proxy-Client-IP"); + } + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) + { + ip = request.getHeader("X-Real-IP"); + } + + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) + { + ip = request.getRemoteAddr(); + } + + return "0:0:0:0:0:0:0:1".equals(ip) ? "127.0.0.1" : getMultistageReverseProxyIp(ip); + } + + /** + * 检查是否为内部IP地址 + * + * @param ip IP地址 + * @return 结果 + */ + public static boolean internalIp(String ip) + { + byte[] addr = textToNumericFormatV4(ip); + return internalIp(addr) || "127.0.0.1".equals(ip); + } + + /** + * 检查是否为内部IP地址 + * + * @param addr byte地址 + * @return 结果 + */ + private static boolean internalIp(byte[] addr) + { + if (StringUtils.isNull(addr) || addr.length < 2) + { + return true; + } + final byte b0 = addr[0]; + final byte b1 = addr[1]; + // 10.x.x.x/8 + final byte SECTION_1 = 0x0A; + // 172.16.x.x/12 + final byte SECTION_2 = (byte) 0xAC; + final byte SECTION_3 = (byte) 0x10; + final byte SECTION_4 = (byte) 0x1F; + // 192.168.x.x/16 + final byte SECTION_5 = (byte) 0xC0; + final byte SECTION_6 = (byte) 0xA8; + switch (b0) + { + case SECTION_1: + return true; + case SECTION_2: + if (b1 >= SECTION_3 && b1 <= SECTION_4) + { + return true; + } + case SECTION_5: + switch (b1) + { + case SECTION_6: + return true; + } + default: + return false; + } + } + + /** + * 将IPv4地址转换成字节 + * + * @param text IPv4地址 + * @return byte 字节 + */ + public static byte[] textToNumericFormatV4(String text) + { + if (text.length() == 0) + { + return null; + } + + byte[] bytes = new byte[4]; + String[] elements = text.split("\\.", -1); + try + { + long l; + int i; + switch (elements.length) + { + case 1: + l = Long.parseLong(elements[0]); + if ((l < 0L) || (l > 4294967295L)) + { + return null; + } + bytes[0] = (byte) (int) (l >> 24 & 0xFF); + bytes[1] = (byte) (int) ((l & 0xFFFFFF) >> 16 & 0xFF); + bytes[2] = (byte) (int) ((l & 0xFFFF) >> 8 & 0xFF); + bytes[3] = (byte) (int) (l & 0xFF); + break; + case 2: + l = Integer.parseInt(elements[0]); + if ((l < 0L) || (l > 255L)) + { + return null; + } + bytes[0] = (byte) (int) (l & 0xFF); + l = Integer.parseInt(elements[1]); + if ((l < 0L) || (l > 16777215L)) + { + return null; + } + bytes[1] = (byte) (int) (l >> 16 & 0xFF); + bytes[2] = (byte) (int) ((l & 0xFFFF) >> 8 & 0xFF); + bytes[3] = (byte) (int) (l & 0xFF); + break; + case 3: + for (i = 0; i < 2; ++i) + { + l = Integer.parseInt(elements[i]); + if ((l < 0L) || (l > 255L)) + { + return null; + } + bytes[i] = (byte) (int) (l & 0xFF); + } + l = Integer.parseInt(elements[2]); + if ((l < 0L) || (l > 65535L)) + { + return null; + } + bytes[2] = (byte) (int) (l >> 8 & 0xFF); + bytes[3] = (byte) (int) (l & 0xFF); + break; + case 4: + for (i = 0; i < 4; ++i) + { + l = Integer.parseInt(elements[i]); + if ((l < 0L) || (l > 255L)) + { + return null; + } + bytes[i] = (byte) (int) (l & 0xFF); + } + break; + default: + return null; + } + } + catch (NumberFormatException e) + { + return null; + } + return bytes; + } + + /** + * 获取IP地址 + * + * @return 本地IP地址 + */ + public static String getHostIp() + { + try + { + return InetAddress.getLocalHost().getHostAddress(); + } + catch (UnknownHostException e) + { + } + return "127.0.0.1"; + } + + /** + * 获取主机名 + * + * @return 本地主机名 + */ + public static String getHostName() + { + try + { + return InetAddress.getLocalHost().getHostName(); + } + catch (UnknownHostException e) + { + } + return "未知"; + } + + /** + * 从多级反向代理中获得第一个非unknown IP地址 + * + * @param ip 获得的IP地址 + * @return 第一个非unknown IP地址 + */ + public static String getMultistageReverseProxyIp(String ip) + { + // 多级反向代理检测 + if (ip != null && ip.indexOf(",") > 0) + { + final String[] ips = ip.trim().split(","); + for (String subIp : ips) + { + if (false == isUnknown(subIp)) + { + ip = subIp; + break; + } + } + } + return StringUtils.substring(ip, 0, 255); + } + + /** + * 检测给定字符串是否为未知,多用于检测HTTP请求相关 + * + * @param checkString 被检测的字符串 + * @return 是否未知 + */ + public static boolean isUnknown(String checkString) + { + return StringUtils.isBlank(checkString) || "unknown".equalsIgnoreCase(checkString); + } + + /** + * 是否为IP + */ + public static boolean isIP(String ip) + { + return StringUtils.isNotBlank(ip) && ip.matches(REGX_IP); + } + + /** + * 是否为IP,或 *为间隔的通配符地址 + */ + public static boolean isIpWildCard(String ip) + { + return StringUtils.isNotBlank(ip) && ip.matches(REGX_IP_WILDCARD); + } + + /** + * 检测参数是否在ip通配符里 + */ + public static boolean ipIsInWildCardNoCheck(String ipWildCard, String ip) + { + String[] s1 = ipWildCard.split("\\."); + String[] s2 = ip.split("\\."); + boolean isMatchedSeg = true; + for (int i = 0; i < s1.length && !s1[i].equals("*"); i++) + { + if (!s1[i].equals(s2[i])) + { + isMatchedSeg = false; + break; + } + } + return isMatchedSeg; + } + + /** + * 是否为特定格式如:“10.10.10.1-10.10.10.99”的ip段字符串 + */ + public static boolean isIPSegment(String ipSeg) + { + return StringUtils.isNotBlank(ipSeg) && ipSeg.matches(REGX_IP_SEG); + } + + /** + * 判断ip是否在指定网段中 + */ + public static boolean ipIsInNetNoCheck(String iparea, String ip) + { + int idx = iparea.indexOf('-'); + String[] sips = iparea.substring(0, idx).split("\\."); + String[] sipe = iparea.substring(idx + 1).split("\\."); + String[] sipt = ip.split("\\."); + long ips = 0L, ipe = 0L, ipt = 0L; + for (int i = 0; i < 4; ++i) + { + ips = ips << 8 | Integer.parseInt(sips[i]); + ipe = ipe << 8 | Integer.parseInt(sipe[i]); + ipt = ipt << 8 | Integer.parseInt(sipt[i]); + } + if (ips > ipe) + { + long t = ips; + ips = ipe; + ipe = t; + } + return ips <= ipt && ipt <= ipe; + } + + /** + * 校验ip是否符合过滤串规则 + * + * @param filter 过滤IP列表,支持后缀'*'通配,支持网段如:`10.10.10.1-10.10.10.99` + * @param ip 校验IP地址 + * @return boolean 结果 + */ + public static boolean isMatchedIp(String filter, String ip) + { + if (StringUtils.isEmpty(filter) || StringUtils.isEmpty(ip)) + { + return false; + } + String[] ips = filter.split(";"); + for (String iStr : ips) + { + if (isIP(iStr) && iStr.equals(ip)) + { + return true; + } + else if (isIpWildCard(iStr) && ipIsInWildCardNoCheck(iStr, ip)) + { + return true; + } + else if (isIPSegment(iStr) && ipIsInNetNoCheck(iStr, ip)) + { + return true; + } + } + return false; + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/utils/poi/ExcelHandlerAdapter.java b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/poi/ExcelHandlerAdapter.java new file mode 100644 index 0000000..0ea0a11 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/poi/ExcelHandlerAdapter.java @@ -0,0 +1,24 @@ +package com.cmvr.common.utils.poi; + +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.Workbook; + +/** + * Excel数据格式处理适配器 + * + * @author cmvrIot + */ +public interface ExcelHandlerAdapter +{ + /** + * 格式化 + * + * @param value 单元格数据值 + * @param args excel注解args参数组 + * @param cell 单元格对象 + * @param wb 工作簿对象 + * + * @return 处理后的值 + */ + Object format(Object value, String[] args, Cell cell, Workbook wb); +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/utils/poi/ExcelUtil.java b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/poi/ExcelUtil.java new file mode 100644 index 0000000..b232ad3 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/poi/ExcelUtil.java @@ -0,0 +1,1900 @@ +package com.cmvr.common.utils.poi; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.lang.reflect.ParameterizedType; +import java.math.BigDecimal; +import java.text.DecimalFormat; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Comparator; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; +import java.util.stream.Collectors; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.lang3.RegExUtils; +import org.apache.commons.lang3.reflect.FieldUtils; +import org.apache.poi.hssf.usermodel.HSSFClientAnchor; +import org.apache.poi.hssf.usermodel.HSSFPicture; +import org.apache.poi.hssf.usermodel.HSSFPictureData; +import org.apache.poi.hssf.usermodel.HSSFShape; +import org.apache.poi.hssf.usermodel.HSSFSheet; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.ooxml.POIXMLDocumentPart; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.CellStyle; +import org.apache.poi.ss.usermodel.CellType; +import org.apache.poi.ss.usermodel.ClientAnchor; +import org.apache.poi.ss.usermodel.DataFormat; +import org.apache.poi.ss.usermodel.DataValidation; +import org.apache.poi.ss.usermodel.DataValidationConstraint; +import org.apache.poi.ss.usermodel.DataValidationHelper; +import org.apache.poi.ss.usermodel.DateUtil; +import org.apache.poi.ss.usermodel.Drawing; +import org.apache.poi.ss.usermodel.FillPatternType; +import org.apache.poi.ss.usermodel.Font; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.apache.poi.ss.usermodel.IndexedColors; +import org.apache.poi.ss.usermodel.Name; +import org.apache.poi.ss.usermodel.PictureData; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.VerticalAlignment; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.ss.usermodel.WorkbookFactory; +import org.apache.poi.ss.util.CellRangeAddress; +import org.apache.poi.ss.util.CellRangeAddressList; +import org.apache.poi.util.IOUtils; +import org.apache.poi.xssf.streaming.SXSSFWorkbook; +import org.apache.poi.xssf.usermodel.XSSFClientAnchor; +import org.apache.poi.xssf.usermodel.XSSFDataValidation; +import org.apache.poi.xssf.usermodel.XSSFDrawing; +import org.apache.poi.xssf.usermodel.XSSFPicture; +import org.apache.poi.xssf.usermodel.XSSFShape; +import org.apache.poi.xssf.usermodel.XSSFSheet; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.CTMarker; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import com.cmvr.common.annotation.Excel; +import com.cmvr.common.annotation.Excel.ColumnType; +import com.cmvr.common.annotation.Excel.Type; +import com.cmvr.common.annotation.Excels; +import com.cmvr.common.config.CmvrIotConfig; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.core.text.Convert; +import com.cmvr.common.exception.UtilException; +import com.cmvr.common.utils.DateUtils; +import com.cmvr.common.utils.DictUtils; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.common.utils.file.FileTypeUtils; +import com.cmvr.common.utils.file.FileUtils; +import com.cmvr.common.utils.file.ImageUtils; +import com.cmvr.common.utils.reflect.ReflectUtils; + +/** + * Excel相关处理 + * + * @author cmvr-iot + */ +public class ExcelUtil +{ + private static final Logger log = LoggerFactory.getLogger(ExcelUtil.class); + + public static final String FORMULA_REGEX_STR = "=|-|\\+|@"; + + public static final String[] FORMULA_STR = { "=", "-", "+", "@" }; + + /** + * 用于dictType属性数据存储,避免重复查缓存 + */ + public Map sysDictMap = new HashMap(); + + /** + * Excel sheet最大行数,默认65536 + */ + public static final int sheetSize = 65536; + + /** + * 工作表名称 + */ + private String sheetName; + + /** + * 导出类型(EXPORT:导出数据;IMPORT:导入模板) + */ + private Type type; + + /** + * 工作薄对象 + */ + private Workbook wb; + + /** + * 工作表对象 + */ + private Sheet sheet; + + /** + * 样式列表 + */ + private Map styles; + + /** + * 导入导出数据列表 + */ + private List list; + + /** + * 注解列表 + */ + private List fields; + + /** + * 当前行号 + */ + private int rownum; + + /** + * 标题 + */ + private String title; + + /** + * 最大高度 + */ + private short maxHeight; + + /** + * 合并后最后行数 + */ + private int subMergedLastRowNum = 0; + + /** + * 合并后开始行数 + */ + private int subMergedFirstRowNum = 1; + + /** + * 对象的子列表方法 + */ + private Method subMethod; + + /** + * 对象的子列表属性 + */ + private List subFields; + + /** + * 统计列表 + */ + private Map statistics = new HashMap(); + + /** + * 数字格式 + */ + private static final DecimalFormat DOUBLE_FORMAT = new DecimalFormat("######0.00"); + + /** + * 实体对象 + */ + public Class clazz; + + /** + * 需要显示列属性 + */ + public String[] includeFields; + + /** + * 需要排除列属性 + */ + public String[] excludeFields; + + public ExcelUtil(Class clazz) + { + this.clazz = clazz; + } + + /** + * 仅在Excel中显示列属性 + * + * @param fields 列属性名 示例[单个"name"/多个"id","name"] + */ + public void showColumn(String... fields) + { + this.includeFields = fields; + } + + /** + * 隐藏Excel中列属性 + * + * @param fields 列属性名 示例[单个"name"/多个"id","name"] + */ + public void hideColumn(String... fields) + { + this.excludeFields = fields; + } + + public void init(List list, String sheetName, String title, Type type) + { + if (list == null) + { + list = new ArrayList(); + } + this.list = list; + this.sheetName = sheetName; + this.type = type; + this.title = title; + createExcelField(); + createWorkbook(); + createTitle(); + createSubHead(); + } + + /** + * 创建excel第一行标题 + */ + public void createTitle() + { + if (StringUtils.isNotEmpty(title)) + { + int titleLastCol = this.fields.size() - 1; + if (isSubList()) + { + titleLastCol = titleLastCol + subFields.size() - 1; + } + Row titleRow = sheet.createRow(rownum == 0 ? rownum++ : 0); + titleRow.setHeightInPoints(30); + Cell titleCell = titleRow.createCell(0); + titleCell.setCellStyle(styles.get("title")); + titleCell.setCellValue(title); + sheet.addMergedRegion(new CellRangeAddress(titleRow.getRowNum(), titleRow.getRowNum(), 0, titleLastCol)); + } + } + + /** + * 创建对象的子列表名称 + */ + public void createSubHead() + { + if (isSubList()) + { + Row subRow = sheet.createRow(rownum); + int column = 0; + int subFieldSize = subFields != null ? subFields.size() : 0; + for (Object[] objects : fields) + { + Field field = (Field) objects[0]; + Excel attr = (Excel) objects[1]; + if (Collection.class.isAssignableFrom(field.getType())) + { + Cell cell = subRow.createCell(column); + cell.setCellValue(attr.name()); + cell.setCellStyle(styles.get(StringUtils.format("header_{}_{}", attr.headerColor(), attr.headerBackgroundColor()))); + if (subFieldSize > 1) + { + CellRangeAddress cellAddress = new CellRangeAddress(rownum, rownum, column, column + subFieldSize - 1); + sheet.addMergedRegion(cellAddress); + } + column += subFieldSize; + } + else + { + Cell cell = subRow.createCell(column++); + cell.setCellValue(attr.name()); + cell.setCellStyle(styles.get(StringUtils.format("header_{}_{}", attr.headerColor(), attr.headerBackgroundColor()))); + } + } + rownum++; + } + } + + /** + * 对excel表单默认第一个索引名转换成list + * + * @param is 输入流 + * @return 转换后集合 + */ + public List importExcel(InputStream is) + { + return importExcel(is, 0); + } + + /** + * 对excel表单默认第一个索引名转换成list + * + * @param is 输入流 + * @param titleNum 标题占用行数 + * @return 转换后集合 + */ + public List importExcel(InputStream is, int titleNum) + { + List list = null; + try + { + list = importExcel(StringUtils.EMPTY, is, titleNum); + } + catch (Exception e) + { + log.error("导入Excel异常{}", e.getMessage()); + throw new UtilException(e.getMessage()); + } + finally + { + IOUtils.closeQuietly(is); + } + return list; + } + + /** + * 对excel表单指定表格索引名转换成list + * + * @param sheetName 表格索引名 + * @param titleNum 标题占用行数 + * @param is 输入流 + * @return 转换后集合 + */ + public List importExcel(String sheetName, InputStream is, int titleNum) throws Exception + { + this.type = Type.IMPORT; + this.wb = WorkbookFactory.create(is); + List list = new ArrayList(); + // 如果指定sheet名,则取指定sheet中的内容 否则默认指向第1个sheet + Sheet sheet = StringUtils.isNotEmpty(sheetName) ? wb.getSheet(sheetName) : wb.getSheetAt(0); + if (sheet == null) + { + throw new IOException("文件sheet不存在"); + } + boolean isXSSFWorkbook = !(wb instanceof HSSFWorkbook); + Map pictures; + if (isXSSFWorkbook) + { + pictures = getSheetPictures07((XSSFSheet) sheet, (XSSFWorkbook) wb); + } + else + { + pictures = getSheetPictures03((HSSFSheet) sheet, (HSSFWorkbook) wb); + } + // 获取最后一个非空行的行下标,比如总行数为n,则返回的为n-1 + int rows = sheet.getLastRowNum(); + if (rows > 0) + { + // 定义一个map用于存放excel列的序号和field. + Map cellMap = new HashMap(); + // 获取表头 + Row heard = sheet.getRow(titleNum); + for (int i = 0; i < heard.getPhysicalNumberOfCells(); i++) + { + Cell cell = heard.getCell(i); + if (StringUtils.isNotNull(cell)) + { + String value = this.getCellValue(heard, i).toString(); + cellMap.put(value, i); + } + else + { + cellMap.put(null, i); + } + } + // 有数据时才处理 得到类的所有field. + List fields = this.getFields(); + Map fieldsMap = new HashMap(); + for (Object[] objects : fields) + { + Excel attr = (Excel) objects[1]; + Integer column = cellMap.get(attr.name()); + if (column != null) + { + fieldsMap.put(column, objects); + } + } + for (int i = titleNum + 1; i <= rows; i++) + { + // 从第2行开始取数据,默认第一行是表头. + Row row = sheet.getRow(i); + // 判断当前行是否是空行 + if (isRowEmpty(row)) + { + continue; + } + T entity = null; + for (Map.Entry entry : fieldsMap.entrySet()) + { + Object val = this.getCellValue(row, entry.getKey()); + + // 如果不存在实例则新建. + entity = (entity == null ? clazz.newInstance() : entity); + // 从map中得到对应列的field. + Field field = (Field) entry.getValue()[0]; + Excel attr = (Excel) entry.getValue()[1]; + // 取得类型,并根据对象类型设置值. + Class fieldType = field.getType(); + if (String.class == fieldType) + { + String s = Convert.toStr(val); + if (StringUtils.endsWith(s, ".0")) + { + val = StringUtils.substringBefore(s, ".0"); + } + else + { + String dateFormat = field.getAnnotation(Excel.class).dateFormat(); + if (StringUtils.isNotEmpty(dateFormat)) + { + val = parseDateToStr(dateFormat, val); + } + else + { + val = Convert.toStr(val); + } + } + } + else if ((Integer.TYPE == fieldType || Integer.class == fieldType) && StringUtils.isNumeric(Convert.toStr(val))) + { + val = Convert.toInt(val); + } + else if ((Long.TYPE == fieldType || Long.class == fieldType) && StringUtils.isNumeric(Convert.toStr(val))) + { + val = Convert.toLong(val); + } + else if (Double.TYPE == fieldType || Double.class == fieldType) + { + val = Convert.toDouble(val); + } + else if (Float.TYPE == fieldType || Float.class == fieldType) + { + val = Convert.toFloat(val); + } + else if (BigDecimal.class == fieldType) + { + val = Convert.toBigDecimal(val); + } + else if (Date.class == fieldType) + { + if (val instanceof String) + { + val = DateUtils.parseDate(val); + } + else if (val instanceof Double) + { + val = DateUtil.getJavaDate((Double) val); + } + } + else if (Boolean.TYPE == fieldType || Boolean.class == fieldType) + { + val = Convert.toBool(val, false); + } + if (StringUtils.isNotNull(fieldType)) + { + String propertyName = field.getName(); + if (StringUtils.isNotEmpty(attr.targetAttr())) + { + propertyName = field.getName() + "." + attr.targetAttr(); + } + if (StringUtils.isNotEmpty(attr.readConverterExp())) + { + val = reverseByExp(Convert.toStr(val), attr.readConverterExp(), attr.separator()); + } + else if (StringUtils.isNotEmpty(attr.dictType())) + { + if (!sysDictMap.containsKey(attr.dictType() + val)) + { + String dictValue = reverseDictByExp(Convert.toStr(val), attr.dictType(), attr.separator()); + sysDictMap.put(attr.dictType() + val, dictValue); + } + val = sysDictMap.get(attr.dictType() + val); + } + else if (!attr.handler().equals(ExcelHandlerAdapter.class)) + { + val = dataFormatHandlerAdapter(val, attr, null); + } + else if (ColumnType.IMAGE == attr.cellType() && StringUtils.isNotEmpty(pictures)) + { + PictureData image = pictures.get(row.getRowNum() + "_" + entry.getKey()); + if (image == null) + { + val = ""; + } + else + { + byte[] data = image.getData(); + val = FileUtils.writeImportBytes(data); + } + } + ReflectUtils.invokeSetter(entity, propertyName, val); + } + } + list.add(entity); + } + } + return list; + } + + /** + * 对list数据源将其里面的数据导入到excel表单 + * + * @param list 导出数据集合 + * @param sheetName 工作表的名称 + * @return 结果 + */ + public AjaxResult exportExcel(List list, String sheetName) + { + return exportExcel(list, sheetName, StringUtils.EMPTY); + } + + /** + * 对list数据源将其里面的数据导入到excel表单 + * + * @param list 导出数据集合 + * @param sheetName 工作表的名称 + * @param title 标题 + * @return 结果 + */ + public AjaxResult exportExcel(List list, String sheetName, String title) + { + this.init(list, sheetName, title, Type.EXPORT); + return exportExcel(); + } + + /** + * 对list数据源将其里面的数据导入到excel表单 + * + * @param response 返回数据 + * @param list 导出数据集合 + * @param sheetName 工作表的名称 + * @return 结果 + */ + public void exportExcel(HttpServletResponse response, List list, String sheetName) + { + exportExcel(response, list, sheetName, StringUtils.EMPTY); + } + + /** + * 对list数据源将其里面的数据导入到excel表单 + * + * @param response 返回数据 + * @param list 导出数据集合 + * @param sheetName 工作表的名称 + * @param title 标题 + * @return 结果 + */ + public void exportExcel(HttpServletResponse response, List list, String sheetName, String title) + { + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("utf-8"); + this.init(list, sheetName, title, Type.EXPORT); + exportExcel(response); + } + + /** + * 对list数据源将其里面的数据导入到excel表单 + * + * @param sheetName 工作表的名称 + * @return 结果 + */ + public AjaxResult importTemplateExcel(String sheetName) + { + return importTemplateExcel(sheetName, StringUtils.EMPTY); + } + + /** + * 对list数据源将其里面的数据导入到excel表单 + * + * @param sheetName 工作表的名称 + * @param title 标题 + * @return 结果 + */ + public AjaxResult importTemplateExcel(String sheetName, String title) + { + this.init(null, sheetName, title, Type.IMPORT); + return exportExcel(); + } + + /** + * 对list数据源将其里面的数据导入到excel表单 + * + * @param sheetName 工作表的名称 + * @return 结果 + */ + public void importTemplateExcel(HttpServletResponse response, String sheetName) + { + importTemplateExcel(response, sheetName, StringUtils.EMPTY); + } + + /** + * 对list数据源将其里面的数据导入到excel表单 + * + * @param sheetName 工作表的名称 + * @param title 标题 + * @return 结果 + */ + public void importTemplateExcel(HttpServletResponse response, String sheetName, String title) + { + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("utf-8"); + this.init(null, sheetName, title, Type.IMPORT); + exportExcel(response); + } + + /** + * 对list数据源将其里面的数据导入到excel表单 + * + * @return 结果 + */ + public void exportExcel(HttpServletResponse response) + { + try + { + writeSheet(); + wb.write(response.getOutputStream()); + } + catch (Exception e) + { + log.error("导出Excel异常{}", e.getMessage()); + } + finally + { + IOUtils.closeQuietly(wb); + } + } + + /** + * 对list数据源将其里面的数据导入到excel表单 + * + * @return 结果 + */ + public AjaxResult exportExcel() + { + OutputStream out = null; + try + { + writeSheet(); + String filename = encodingFilename(sheetName); + out = new FileOutputStream(getAbsoluteFile(filename)); + wb.write(out); + return AjaxResult.success(filename); + } + catch (Exception e) + { + log.error("导出Excel异常{}", e.getMessage()); + throw new UtilException("导出Excel失败,请联系网站管理员!"); + } + finally + { + IOUtils.closeQuietly(wb); + IOUtils.closeQuietly(out); + } + } + + /** + * 创建写入数据到Sheet + */ + public void writeSheet() + { + // 取出一共有多少个sheet. + int sheetNo = Math.max(1, (int) Math.ceil(list.size() * 1.0 / sheetSize)); + for (int index = 0; index < sheetNo; index++) + { + createSheet(sheetNo, index); + + // 产生一行 + Row row = sheet.createRow(rownum); + int column = 0; + // 写入各个字段的列头名称 + for (Object[] os : fields) + { + Field field = (Field) os[0]; + Excel excel = (Excel) os[1]; + if (Collection.class.isAssignableFrom(field.getType())) + { + for (Field subField : subFields) + { + Excel subExcel = subField.getAnnotation(Excel.class); + this.createHeadCell(subExcel, row, column++); + } + } + else + { + this.createHeadCell(excel, row, column++); + } + } + if (Type.EXPORT.equals(type)) + { + fillExcelData(index, row); + addStatisticsRow(); + } + } + } + + /** + * 填充excel数据 + * + * @param index 序号 + * @param row 单元格行 + */ + @SuppressWarnings("unchecked") + public void fillExcelData(int index, Row row) + { + int startNo = index * sheetSize; + int endNo = Math.min(startNo + sheetSize, list.size()); + int currentRowNum = rownum + 1; // 从标题行后开始 + + for (int i = startNo; i < endNo; i++) + { + row = sheet.createRow(currentRowNum); + T vo = (T) list.get(i); + int column = 0; + int maxSubListSize = getCurrentMaxSubListSize(vo); + for (Object[] os : fields) + { + Field field = (Field) os[0]; + Excel excel = (Excel) os[1]; + if (Collection.class.isAssignableFrom(field.getType())) + { + try + { + Collection subList = (Collection) getTargetValue(vo, field, excel); + if (subList != null && !subList.isEmpty()) + { + int subIndex = 0; + for (Object subVo : subList) + { + Row subRow = sheet.getRow(currentRowNum + subIndex); + if (subRow == null) + { + subRow = sheet.createRow(currentRowNum + subIndex); + } + + int subColumn = column; + for (Field subField : subFields) + { + Excel subExcel = subField.getAnnotation(Excel.class); + addCell(subExcel, subRow, (T) subVo, subField, subColumn++); + } + subIndex++; + } + column += subFields.size(); + } + } + catch (Exception e) + { + log.error("填充集合数据失败", e); + } + } + else + { + // 创建单元格并设置值 + addCell(excel, row, vo, field, column); + if (maxSubListSize > 1 && excel.needMerge()) + { + sheet.addMergedRegion(new CellRangeAddress(currentRowNum, currentRowNum + maxSubListSize - 1, column, column)); + } + column++; + } + } + currentRowNum += maxSubListSize; + } + } + + /** + * 获取子列表最大数 + */ + private int getCurrentMaxSubListSize(T vo) + { + int maxSubListSize = 1; + for (Object[] os : fields) + { + Field field = (Field) os[0]; + if (Collection.class.isAssignableFrom(field.getType())) + { + try + { + Collection subList = (Collection) getTargetValue(vo, field, (Excel) os[1]); + if (subList != null && !subList.isEmpty()) + { + maxSubListSize = Math.max(maxSubListSize, subList.size()); + } + } + catch (Exception e) + { + log.error("获取集合大小失败", e); + } + } + } + return maxSubListSize; + } + + /** + * 创建表格样式 + * + * @param wb 工作薄对象 + * @return 样式列表 + */ + private Map createStyles(Workbook wb) + { + // 写入各条记录,每条记录对应excel表中的一行 + Map styles = new HashMap(); + CellStyle style = wb.createCellStyle(); + style.setAlignment(HorizontalAlignment.CENTER); + style.setVerticalAlignment(VerticalAlignment.CENTER); + Font titleFont = wb.createFont(); + titleFont.setFontName("Arial"); + titleFont.setFontHeightInPoints((short) 16); + titleFont.setBold(true); + style.setFont(titleFont); + DataFormat dataFormat = wb.createDataFormat(); + style.setDataFormat(dataFormat.getFormat("@")); + styles.put("title", style); + + style = wb.createCellStyle(); + style.setAlignment(HorizontalAlignment.CENTER); + style.setVerticalAlignment(VerticalAlignment.CENTER); + style.setBorderRight(BorderStyle.THIN); + style.setRightBorderColor(IndexedColors.GREY_50_PERCENT.getIndex()); + style.setBorderLeft(BorderStyle.THIN); + style.setLeftBorderColor(IndexedColors.GREY_50_PERCENT.getIndex()); + style.setBorderTop(BorderStyle.THIN); + style.setTopBorderColor(IndexedColors.GREY_50_PERCENT.getIndex()); + style.setBorderBottom(BorderStyle.THIN); + style.setBottomBorderColor(IndexedColors.GREY_50_PERCENT.getIndex()); + Font dataFont = wb.createFont(); + dataFont.setFontName("Arial"); + dataFont.setFontHeightInPoints((short) 10); + style.setFont(dataFont); + styles.put("data", style); + + style = wb.createCellStyle(); + style.setAlignment(HorizontalAlignment.CENTER); + style.setVerticalAlignment(VerticalAlignment.CENTER); + Font totalFont = wb.createFont(); + totalFont.setFontName("Arial"); + totalFont.setFontHeightInPoints((short) 10); + style.setFont(totalFont); + styles.put("total", style); + + styles.putAll(annotationHeaderStyles(wb, styles)); + + styles.putAll(annotationDataStyles(wb)); + + return styles; + } + + /** + * 根据Excel注解创建表格头样式 + * + * @param wb 工作薄对象 + * @return 自定义样式列表 + */ + private Map annotationHeaderStyles(Workbook wb, Map styles) + { + Map headerStyles = new HashMap(); + for (Object[] os : fields) + { + Excel excel = (Excel) os[1]; + String key = StringUtils.format("header_{}_{}", excel.headerColor(), excel.headerBackgroundColor()); + if (!headerStyles.containsKey(key)) + { + CellStyle style = wb.createCellStyle(); + style.cloneStyleFrom(styles.get("data")); + style.setAlignment(HorizontalAlignment.CENTER); + style.setVerticalAlignment(VerticalAlignment.CENTER); + style.setFillForegroundColor(excel.headerBackgroundColor().index); + style.setFillPattern(FillPatternType.SOLID_FOREGROUND); + Font headerFont = wb.createFont(); + headerFont.setFontName("Arial"); + headerFont.setFontHeightInPoints((short) 10); + headerFont.setBold(true); + headerFont.setColor(excel.headerColor().index); + style.setFont(headerFont); + // 设置表格头单元格文本形式 + DataFormat dataFormat = wb.createDataFormat(); + style.setDataFormat(dataFormat.getFormat("@")); + headerStyles.put(key, style); + } + } + return headerStyles; + } + + /** + * 根据Excel注解创建表格列样式 + * + * @param wb 工作薄对象 + * @return 自定义样式列表 + */ + private Map annotationDataStyles(Workbook wb) + { + Map styles = new HashMap(); + for (Object[] os : fields) + { + Field field = (Field) os[0]; + Excel excel = (Excel) os[1]; + if (Collection.class.isAssignableFrom(field.getType())) + { + ParameterizedType pt = (ParameterizedType) field.getGenericType(); + Class subClass = (Class) pt.getActualTypeArguments()[0]; + List subFields = FieldUtils.getFieldsListWithAnnotation(subClass, Excel.class); + for (Field subField : subFields) + { + Excel subExcel = subField.getAnnotation(Excel.class); + annotationDataStyles(styles, subField, subExcel); + } + } + else + { + annotationDataStyles(styles, field, excel); + } + } + return styles; + } + + /** + * 根据Excel注解创建表格列样式 + * + * @param styles 自定义样式列表 + * @param field 属性列信息 + * @param excel 注解信息 + */ + public void annotationDataStyles(Map styles, Field field, Excel excel) + { + String key = StringUtils.format("data_{}_{}_{}_{}_{}", excel.align(), excel.color(), excel.backgroundColor(), excel.cellType(), excel.wrapText()); + if (!styles.containsKey(key)) + { + CellStyle style = wb.createCellStyle(); + style.setAlignment(excel.align()); + style.setVerticalAlignment(VerticalAlignment.CENTER); + style.setBorderRight(BorderStyle.THIN); + style.setRightBorderColor(IndexedColors.GREY_50_PERCENT.getIndex()); + style.setBorderLeft(BorderStyle.THIN); + style.setLeftBorderColor(IndexedColors.GREY_50_PERCENT.getIndex()); + style.setBorderTop(BorderStyle.THIN); + style.setTopBorderColor(IndexedColors.GREY_50_PERCENT.getIndex()); + style.setBorderBottom(BorderStyle.THIN); + style.setBottomBorderColor(IndexedColors.GREY_50_PERCENT.getIndex()); + style.setFillPattern(FillPatternType.SOLID_FOREGROUND); + style.setFillForegroundColor(excel.backgroundColor().getIndex()); + style.setWrapText(excel.wrapText()); + Font dataFont = wb.createFont(); + dataFont.setFontName("Arial"); + dataFont.setFontHeightInPoints((short) 10); + dataFont.setColor(excel.color().index); + style.setFont(dataFont); + if (ColumnType.TEXT == excel.cellType()) + { + DataFormat dataFormat = wb.createDataFormat(); + style.setDataFormat(dataFormat.getFormat("@")); + } + styles.put(key, style); + } + } + + /** + * 创建单元格 + */ + public Cell createHeadCell(Excel attr, Row row, int column) + { + // 创建列 + Cell cell = row.createCell(column); + // 写入列信息 + cell.setCellValue(attr.name()); + setDataValidation(attr, row, column); + cell.setCellStyle(styles.get(StringUtils.format("header_{}_{}", attr.headerColor(), attr.headerBackgroundColor()))); + if (isSubList()) + { + // 填充默认样式,防止合并单元格样式失效 + sheet.setDefaultColumnStyle(column, styles.get(StringUtils.format("data_{}_{}_{}_{}_{}", attr.align(), attr.color(), attr.backgroundColor(), attr.cellType(), attr.wrapText()))); + if (attr.needMerge()) + { + sheet.addMergedRegion(new CellRangeAddress(rownum - 1, rownum, column, column)); + } + } + return cell; + } + + /** + * 设置单元格信息 + * + * @param value 单元格值 + * @param attr 注解相关 + * @param cell 单元格信息 + */ + public void setCellVo(Object value, Excel attr, Cell cell) + { + if (ColumnType.STRING == attr.cellType() || ColumnType.TEXT == attr.cellType()) + { + String cellValue = Convert.toStr(value); + // 对于任何以表达式触发字符 =-+@开头的单元格,直接使用tab字符作为前缀,防止CSV注入。 + if (StringUtils.startsWithAny(cellValue, FORMULA_STR)) + { + cellValue = RegExUtils.replaceFirst(cellValue, FORMULA_REGEX_STR, "\t$0"); + } + if (value instanceof Collection && StringUtils.equals("[]", cellValue)) + { + cellValue = StringUtils.EMPTY; + } + cell.setCellValue(StringUtils.isNull(cellValue) ? attr.defaultValue() : cellValue + attr.suffix()); + } + else if (ColumnType.NUMERIC == attr.cellType()) + { + if (StringUtils.isNotNull(value)) + { + cell.setCellValue(StringUtils.contains(Convert.toStr(value), ".") ? Convert.toDouble(value) : Convert.toInt(value)); + } + } + else if (ColumnType.IMAGE == attr.cellType()) + { + ClientAnchor anchor = new XSSFClientAnchor(0, 0, 0, 0, (short) cell.getColumnIndex(), cell.getRow().getRowNum(), (short) (cell.getColumnIndex() + 1), cell.getRow().getRowNum() + 1); + String imagePath = Convert.toStr(value); + if (StringUtils.isNotEmpty(imagePath)) + { + byte[] data = ImageUtils.getImage(imagePath); + getDrawingPatriarch(cell.getSheet()).createPicture(anchor, + cell.getSheet().getWorkbook().addPicture(data, getImageType(data))); + } + } + } + + /** + * 获取画布 + */ + public static Drawing getDrawingPatriarch(Sheet sheet) + { + if (sheet.getDrawingPatriarch() == null) + { + sheet.createDrawingPatriarch(); + } + return sheet.getDrawingPatriarch(); + } + + /** + * 获取图片类型,设置图片插入类型 + */ + public int getImageType(byte[] value) + { + String type = FileTypeUtils.getFileExtendName(value); + if ("JPG".equalsIgnoreCase(type)) + { + return Workbook.PICTURE_TYPE_JPEG; + } + else if ("PNG".equalsIgnoreCase(type)) + { + return Workbook.PICTURE_TYPE_PNG; + } + return Workbook.PICTURE_TYPE_JPEG; + } + + /** + * 创建表格样式 + */ + public void setDataValidation(Excel attr, Row row, int column) + { + if (attr.name().indexOf("注:") >= 0) + { + sheet.setColumnWidth(column, 6000); + } + else + { + // 设置列宽 + sheet.setColumnWidth(column, (int) ((attr.width() + 0.72) * 256)); + } + if (StringUtils.isNotEmpty(attr.prompt()) || attr.combo().length > 0 || attr.comboReadDict()) + { + String[] comboArray = attr.combo(); + if (attr.comboReadDict()) + { + if (!sysDictMap.containsKey("combo_" + attr.dictType())) + { + String labels = DictUtils.getDictLabels(attr.dictType()); + sysDictMap.put("combo_" + attr.dictType(), labels); + } + String val = sysDictMap.get("combo_" + attr.dictType()); + comboArray = StringUtils.split(val, DictUtils.SEPARATOR); + } + if (comboArray.length > 15 || StringUtils.join(comboArray).length() > 255) + { + // 如果下拉数大于15或字符串长度大于255,则使用一个新sheet存储,避免生成的模板下拉值获取不到 + setXSSFValidationWithHidden(sheet, comboArray, attr.prompt(), 1, 100, column, column); + } + else + { + // 提示信息或只能选择不能输入的列内容. + setPromptOrValidation(sheet, comboArray, attr.prompt(), 1, 100, column, column); + } + } + } + + /** + * 添加单元格 + */ + public Cell addCell(Excel attr, Row row, T vo, Field field, int column) + { + Cell cell = null; + try + { + // 设置行高 + row.setHeight(maxHeight); + // 根据Excel中设置情况决定是否导出,有些情况需要保持为空,希望用户填写这一列. + if (attr.isExport()) + { + // 创建cell + cell = row.createCell(column); + if (isSubListValue(vo) && getListCellValue(vo).size() > 1 && attr.needMerge()) + { + if (subMergedLastRowNum >= subMergedFirstRowNum) + { + sheet.addMergedRegion(new CellRangeAddress(subMergedFirstRowNum, subMergedLastRowNum, column, column)); + } + } + cell.setCellStyle(styles.get(StringUtils.format("data_{}_{}_{}_{}_{}", attr.align(), attr.color(), attr.backgroundColor(), attr.cellType(), attr.wrapText()))); + + // 用于读取对象中的属性 + Object value = getTargetValue(vo, field, attr); + String dateFormat = attr.dateFormat(); + String readConverterExp = attr.readConverterExp(); + String separator = attr.separator(); + String dictType = attr.dictType(); + if (StringUtils.isNotEmpty(dateFormat) && StringUtils.isNotNull(value)) + { + cell.setCellValue(parseDateToStr(dateFormat, value)); + } + else if (StringUtils.isNotEmpty(readConverterExp) && StringUtils.isNotNull(value)) + { + cell.setCellValue(convertByExp(Convert.toStr(value), readConverterExp, separator)); + } + else if (StringUtils.isNotEmpty(dictType) && StringUtils.isNotNull(value)) + { + if (!sysDictMap.containsKey(dictType + value)) + { + String lable = convertDictByExp(Convert.toStr(value), dictType, separator); + sysDictMap.put(dictType + value, lable); + } + cell.setCellValue(sysDictMap.get(dictType + value)); + } + else if (value instanceof BigDecimal && -1 != attr.scale()) + { + cell.setCellValue((((BigDecimal) value).setScale(attr.scale(), attr.roundingMode())).doubleValue()); + } + else if (!attr.handler().equals(ExcelHandlerAdapter.class)) + { + cell.setCellValue(dataFormatHandlerAdapter(value, attr, cell)); + } + else + { + // 设置列类型 + setCellVo(value, attr, cell); + } + addStatisticsData(column, Convert.toStr(value), attr); + } + } + catch (Exception e) + { + log.error("导出Excel失败{}", e); + } + return cell; + } + + /** + * 设置 POI XSSFSheet 单元格提示或选择框 + * + * @param sheet 表单 + * @param textlist 下拉框显示的内容 + * @param promptContent 提示内容 + * @param firstRow 开始行 + * @param endRow 结束行 + * @param firstCol 开始列 + * @param endCol 结束列 + */ + public void setPromptOrValidation(Sheet sheet, String[] textlist, String promptContent, int firstRow, int endRow, + int firstCol, int endCol) + { + DataValidationHelper helper = sheet.getDataValidationHelper(); + DataValidationConstraint constraint = textlist.length > 0 ? helper.createExplicitListConstraint(textlist) : helper.createCustomConstraint("DD1"); + CellRangeAddressList regions = new CellRangeAddressList(firstRow, endRow, firstCol, endCol); + DataValidation dataValidation = helper.createValidation(constraint, regions); + if (StringUtils.isNotEmpty(promptContent)) + { + // 如果设置了提示信息则鼠标放上去提示 + dataValidation.createPromptBox("", promptContent); + dataValidation.setShowPromptBox(true); + } + // 处理Excel兼容性问题 + if (dataValidation instanceof XSSFDataValidation) + { + dataValidation.setSuppressDropDownArrow(true); + dataValidation.setShowErrorBox(true); + } + else + { + dataValidation.setSuppressDropDownArrow(false); + } + sheet.addValidationData(dataValidation); + } + + /** + * 设置某些列的值只能输入预制的数据,显示下拉框(兼容超出一定数量的下拉框). + * + * @param sheet 要设置的sheet. + * @param textlist 下拉框显示的内容 + * @param promptContent 提示内容 + * @param firstRow 开始行 + * @param endRow 结束行 + * @param firstCol 开始列 + * @param endCol 结束列 + */ + public void setXSSFValidationWithHidden(Sheet sheet, String[] textlist, String promptContent, int firstRow, int endRow, int firstCol, int endCol) + { + String hideSheetName = "combo_" + firstCol + "_" + endCol; + Sheet hideSheet = wb.createSheet(hideSheetName); // 用于存储 下拉菜单数据 + for (int i = 0; i < textlist.length; i++) + { + hideSheet.createRow(i).createCell(0).setCellValue(textlist[i]); + } + // 创建名称,可被其他单元格引用 + Name name = wb.createName(); + name.setNameName(hideSheetName + "_data"); + name.setRefersToFormula(hideSheetName + "!$A$1:$A$" + textlist.length); + DataValidationHelper helper = sheet.getDataValidationHelper(); + // 加载下拉列表内容 + DataValidationConstraint constraint = helper.createFormulaListConstraint(hideSheetName + "_data"); + // 设置数据有效性加载在哪个单元格上,四个参数分别是:起始行、终止行、起始列、终止列 + CellRangeAddressList regions = new CellRangeAddressList(firstRow, endRow, firstCol, endCol); + // 数据有效性对象 + DataValidation dataValidation = helper.createValidation(constraint, regions); + if (StringUtils.isNotEmpty(promptContent)) + { + // 如果设置了提示信息则鼠标放上去提示 + dataValidation.createPromptBox("", promptContent); + dataValidation.setShowPromptBox(true); + } + // 处理Excel兼容性问题 + if (dataValidation instanceof XSSFDataValidation) + { + dataValidation.setSuppressDropDownArrow(true); + dataValidation.setShowErrorBox(true); + } + else + { + dataValidation.setSuppressDropDownArrow(false); + } + + sheet.addValidationData(dataValidation); + // 设置hiddenSheet隐藏 + wb.setSheetHidden(wb.getSheetIndex(hideSheet), true); + } + + /** + * 解析导出值 0=男,1=女,2=未知 + * + * @param propertyValue 参数值 + * @param converterExp 翻译注解 + * @param separator 分隔符 + * @return 解析后值 + */ + public static String convertByExp(String propertyValue, String converterExp, String separator) + { + StringBuilder propertyString = new StringBuilder(); + String[] convertSource = converterExp.split(","); + for (String item : convertSource) + { + String[] itemArray = item.split("="); + if (StringUtils.containsAny(propertyValue, separator)) + { + for (String value : propertyValue.split(separator)) + { + if (itemArray[0].equals(value)) + { + propertyString.append(itemArray[1] + separator); + break; + } + } + } + else + { + if (itemArray[0].equals(propertyValue)) + { + return itemArray[1]; + } + } + } + return StringUtils.stripEnd(propertyString.toString(), separator); + } + + /** + * 反向解析值 男=0,女=1,未知=2 + * + * @param propertyValue 参数值 + * @param converterExp 翻译注解 + * @param separator 分隔符 + * @return 解析后值 + */ + public static String reverseByExp(String propertyValue, String converterExp, String separator) + { + StringBuilder propertyString = new StringBuilder(); + String[] convertSource = converterExp.split(","); + for (String item : convertSource) + { + String[] itemArray = item.split("="); + if (StringUtils.containsAny(propertyValue, separator)) + { + for (String value : propertyValue.split(separator)) + { + if (itemArray[1].equals(value)) + { + propertyString.append(itemArray[0] + separator); + break; + } + } + } + else + { + if (itemArray[1].equals(propertyValue)) + { + return itemArray[0]; + } + } + } + return StringUtils.stripEnd(propertyString.toString(), separator); + } + + /** + * 解析字典值 + * + * @param dictValue 字典值 + * @param dictType 字典类型 + * @param separator 分隔符 + * @return 字典标签 + */ + public static String convertDictByExp(String dictValue, String dictType, String separator) + { + return DictUtils.getDictLabel(dictType, dictValue, separator); + } + + /** + * 反向解析值字典值 + * + * @param dictLabel 字典标签 + * @param dictType 字典类型 + * @param separator 分隔符 + * @return 字典值 + */ + public static String reverseDictByExp(String dictLabel, String dictType, String separator) + { + return DictUtils.getDictValue(dictType, dictLabel, separator); + } + + /** + * 数据处理器 + * + * @param value 数据值 + * @param excel 数据注解 + * @return + */ + public String dataFormatHandlerAdapter(Object value, Excel excel, Cell cell) + { + try + { + Object instance = excel.handler().newInstance(); + Method formatMethod = excel.handler().getMethod("format", new Class[] { Object.class, String[].class, Cell.class, Workbook.class }); + value = formatMethod.invoke(instance, value, excel.args(), cell, this.wb); + } + catch (Exception e) + { + log.error("不能格式化数据 " + excel.handler(), e.getMessage()); + } + return Convert.toStr(value); + } + + /** + * 合计统计信息 + */ + private void addStatisticsData(Integer index, String text, Excel entity) + { + if (entity != null && entity.isStatistics()) + { + Double temp = 0D; + if (!statistics.containsKey(index)) + { + statistics.put(index, temp); + } + try + { + temp = Double.valueOf(text); + } + catch (NumberFormatException e) + { + } + statistics.put(index, statistics.get(index) + temp); + } + } + + /** + * 创建统计行 + */ + public void addStatisticsRow() + { + if (statistics.size() > 0) + { + Row row = sheet.createRow(sheet.getLastRowNum() + 1); + Set keys = statistics.keySet(); + Cell cell = row.createCell(0); + cell.setCellStyle(styles.get("total")); + cell.setCellValue("合计"); + + for (Integer key : keys) + { + cell = row.createCell(key); + cell.setCellStyle(styles.get("total")); + cell.setCellValue(DOUBLE_FORMAT.format(statistics.get(key))); + } + statistics.clear(); + } + } + + /** + * 编码文件名 + */ + public String encodingFilename(String filename) + { + filename = UUID.randomUUID() + "_" + filename + ".xlsx"; + return filename; + } + + /** + * 获取下载路径 + * + * @param filename 文件名称 + */ + public String getAbsoluteFile(String filename) + { + String downloadPath = CmvrIotConfig.getDownloadPath() + filename; + File desc = new File(downloadPath); + if (!desc.getParentFile().exists()) + { + desc.getParentFile().mkdirs(); + } + return downloadPath; + } + + /** + * 获取bean中的属性值 + * + * @param vo 实体对象 + * @param field 字段 + * @param excel 注解 + * @return 最终的属性值 + * @throws Exception + */ + private Object getTargetValue(T vo, Field field, Excel excel) throws Exception + { + field.setAccessible(true); + Object o = field.get(vo); + if (StringUtils.isNotEmpty(excel.targetAttr())) + { + String target = excel.targetAttr(); + if (target.contains(".")) + { + String[] targets = target.split("[.]"); + for (String name : targets) + { + o = getValue(o, name); + } + } + else + { + o = getValue(o, target); + } + } + return o; + } + + /** + * 以类的属性的get方法方法形式获取值 + * + * @param o + * @param name + * @return value + * @throws Exception + */ + private Object getValue(Object o, String name) throws Exception + { + if (StringUtils.isNotNull(o) && StringUtils.isNotEmpty(name)) + { + Class clazz = o.getClass(); + Field field = clazz.getDeclaredField(name); + field.setAccessible(true); + o = field.get(o); + } + return o; + } + + /** + * 得到所有定义字段 + */ + private void createExcelField() + { + this.fields = getFields(); + this.fields = this.fields.stream().sorted(Comparator.comparing(objects -> ((Excel) objects[1]).sort())).collect(Collectors.toList()); + this.maxHeight = getRowHeight(); + } + + /** + * 获取字段注解信息 + */ + public List getFields() + { + List fields = new ArrayList(); + List tempFields = new ArrayList<>(); + tempFields.addAll(Arrays.asList(clazz.getSuperclass().getDeclaredFields())); + tempFields.addAll(Arrays.asList(clazz.getDeclaredFields())); + if (StringUtils.isNotEmpty(includeFields)) + { + for (Field field : tempFields) + { + if (ArrayUtils.contains(this.includeFields, field.getName()) || field.isAnnotationPresent(Excels.class)) + { + addField(fields, field); + } + } + } + else if (StringUtils.isNotEmpty(excludeFields)) + { + for (Field field : tempFields) + { + if (!ArrayUtils.contains(this.excludeFields, field.getName())) + { + addField(fields, field); + } + } + } + else + { + for (Field field : tempFields) + { + addField(fields, field); + } + } + return fields; + } + + /** + * 添加字段信息 + */ + public void addField(List fields, Field field) + { + // 单注解 + if (field.isAnnotationPresent(Excel.class)) + { + Excel attr = field.getAnnotation(Excel.class); + if (attr != null && (attr.type() == Type.ALL || attr.type() == type)) + { + fields.add(new Object[] { field, attr }); + } + if (Collection.class.isAssignableFrom(field.getType())) + { + subMethod = getSubMethod(field.getName(), clazz); + ParameterizedType pt = (ParameterizedType) field.getGenericType(); + Class subClass = (Class) pt.getActualTypeArguments()[0]; + this.subFields = FieldUtils.getFieldsListWithAnnotation(subClass, Excel.class); + } + } + + // 多注解 + if (field.isAnnotationPresent(Excels.class)) + { + Excels attrs = field.getAnnotation(Excels.class); + Excel[] excels = attrs.value(); + for (Excel attr : excels) + { + if (StringUtils.isNotEmpty(includeFields)) + { + if (ArrayUtils.contains(this.includeFields, field.getName() + "." + attr.targetAttr()) + && (attr != null && (attr.type() == Type.ALL || attr.type() == type))) + { + fields.add(new Object[] { field, attr }); + } + } + else + { + if (!ArrayUtils.contains(this.excludeFields, field.getName() + "." + attr.targetAttr()) + && (attr != null && (attr.type() == Type.ALL || attr.type() == type))) + { + fields.add(new Object[] { field, attr }); + } + } + } + } + } + + /** + * 根据注解获取最大行高 + */ + public short getRowHeight() + { + double maxHeight = 0; + for (Object[] os : this.fields) + { + Excel excel = (Excel) os[1]; + maxHeight = Math.max(maxHeight, excel.height()); + } + return (short) (maxHeight * 20); + } + + /** + * 创建一个工作簿 + */ + public void createWorkbook() + { + this.wb = new SXSSFWorkbook(500); + this.sheet = wb.createSheet(); + wb.setSheetName(0, sheetName); + this.styles = createStyles(wb); + } + + /** + * 创建工作表 + * + * @param sheetNo sheet数量 + * @param index 序号 + */ + public void createSheet(int sheetNo, int index) + { + // 设置工作表的名称. + if (sheetNo > 1 && index > 0) + { + this.sheet = wb.createSheet(); + this.createTitle(); + wb.setSheetName(index, sheetName + index); + } + } + + /** + * 获取单元格值 + * + * @param row 获取的行 + * @param column 获取单元格列号 + * @return 单元格值 + */ + public Object getCellValue(Row row, int column) + { + if (row == null) + { + return row; + } + Object val = ""; + try + { + Cell cell = row.getCell(column); + if (StringUtils.isNotNull(cell)) + { + if (cell.getCellType() == CellType.NUMERIC || cell.getCellType() == CellType.FORMULA) + { + val = cell.getNumericCellValue(); + if (DateUtil.isCellDateFormatted(cell)) + { + val = DateUtil.getJavaDate((Double) val); // POI Excel 日期格式转换 + } + else + { + if ((Double) val % 1 != 0) + { + val = new BigDecimal(val.toString()); + } + else + { + val = new DecimalFormat("0").format(val); + } + } + } + else if (cell.getCellType() == CellType.STRING) + { + val = cell.getStringCellValue(); + } + else if (cell.getCellType() == CellType.BOOLEAN) + { + val = cell.getBooleanCellValue(); + } + else if (cell.getCellType() == CellType.ERROR) + { + val = cell.getErrorCellValue(); + } + + } + } + catch (Exception e) + { + return val; + } + return val; + } + + /** + * 判断是否是空行 + * + * @param row 判断的行 + * @return + */ + private boolean isRowEmpty(Row row) + { + if (row == null) + { + return true; + } + for (int i = row.getFirstCellNum(); i < row.getLastCellNum(); i++) + { + Cell cell = row.getCell(i); + if (cell != null && cell.getCellType() != CellType.BLANK) + { + return false; + } + } + return true; + } + + /** + * 获取Excel2003图片 + * + * @param sheet 当前sheet对象 + * @param workbook 工作簿对象 + * @return Map key:图片单元格索引(1_1)String,value:图片流PictureData + */ + public static Map getSheetPictures03(HSSFSheet sheet, HSSFWorkbook workbook) + { + Map sheetIndexPicMap = new HashMap(); + List pictures = workbook.getAllPictures(); + if (!pictures.isEmpty()) + { + for (HSSFShape shape : sheet.getDrawingPatriarch().getChildren()) + { + HSSFClientAnchor anchor = (HSSFClientAnchor) shape.getAnchor(); + if (shape instanceof HSSFPicture) + { + HSSFPicture pic = (HSSFPicture) shape; + int pictureIndex = pic.getPictureIndex() - 1; + HSSFPictureData picData = pictures.get(pictureIndex); + String picIndex = anchor.getRow1() + "_" + anchor.getCol1(); + sheetIndexPicMap.put(picIndex, picData); + } + } + return sheetIndexPicMap; + } + else + { + return sheetIndexPicMap; + } + } + + /** + * 获取Excel2007图片 + * + * @param sheet 当前sheet对象 + * @param workbook 工作簿对象 + * @return Map key:图片单元格索引(1_1)String,value:图片流PictureData + */ + public static Map getSheetPictures07(XSSFSheet sheet, XSSFWorkbook workbook) + { + Map sheetIndexPicMap = new HashMap(); + for (POIXMLDocumentPart dr : sheet.getRelations()) + { + if (dr instanceof XSSFDrawing) + { + XSSFDrawing drawing = (XSSFDrawing) dr; + List shapes = drawing.getShapes(); + for (XSSFShape shape : shapes) + { + if (shape instanceof XSSFPicture) + { + XSSFPicture pic = (XSSFPicture) shape; + XSSFClientAnchor anchor = pic.getPreferredSize(); + CTMarker ctMarker = anchor.getFrom(); + String picIndex = ctMarker.getRow() + "_" + ctMarker.getCol(); + sheetIndexPicMap.put(picIndex, pic.getPictureData()); + } + } + } + } + return sheetIndexPicMap; + } + + /** + * 格式化不同类型的日期对象 + * + * @param dateFormat 日期格式 + * @param val 被格式化的日期对象 + * @return 格式化后的日期字符 + */ + public String parseDateToStr(String dateFormat, Object val) + { + if (val == null) + { + return ""; + } + String str; + if (val instanceof Date) + { + str = DateUtils.parseDateToStr(dateFormat, (Date) val); + } + else if (val instanceof LocalDateTime) + { + str = DateUtils.parseDateToStr(dateFormat, DateUtils.toDate((LocalDateTime) val)); + } + else if (val instanceof LocalDate) + { + str = DateUtils.parseDateToStr(dateFormat, DateUtils.toDate((LocalDate) val)); + } + else + { + str = val.toString(); + } + return str; + } + + /** + * 是否有对象的子列表 + */ + public boolean isSubList() + { + return StringUtils.isNotNull(subFields) && subFields.size() > 0; + } + + /** + * 是否有对象的子列表,集合不为空 + */ + public boolean isSubListValue(T vo) + { + return StringUtils.isNotNull(subFields) && subFields.size() > 0 && StringUtils.isNotNull(getListCellValue(vo)) && getListCellValue(vo).size() > 0; + } + + /** + * 获取集合的值 + */ + public Collection getListCellValue(Object obj) + { + Object value; + try + { + value = subMethod.invoke(obj, new Object[] {}); + } + catch (Exception e) + { + return new ArrayList(); + } + return (Collection) value; + } + + /** + * 获取对象的子列表方法 + * + * @param name 名称 + * @param pojoClass 类对象 + * @return 子列表方法 + */ + public Method getSubMethod(String name, Class pojoClass) + { + StringBuffer getMethodName = new StringBuffer("get"); + getMethodName.append(name.substring(0, 1).toUpperCase()); + getMethodName.append(name.substring(1)); + Method method = null; + try + { + method = pojoClass.getMethod(getMethodName.toString(), new Class[] {}); + } + catch (Exception e) + { + log.error("获取对象异常{}", e.getMessage()); + } + return method; + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/utils/reflect/ReflectUtils.java b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/reflect/ReflectUtils.java new file mode 100644 index 0000000..16cfe03 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/reflect/ReflectUtils.java @@ -0,0 +1,410 @@ +package com.cmvr.common.utils.reflect; + +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; +import java.util.Date; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.Validate; +import org.apache.poi.ss.usermodel.DateUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import com.cmvr.common.core.text.Convert; +import com.cmvr.common.utils.DateUtils; + +/** + * 反射工具类. 提供调用getter/setter方法, 访问私有变量, 调用私有方法, 获取泛型类型Class, 被AOP过的真实类等工具函数. + * + * @author cmvrIot + */ +@SuppressWarnings("rawtypes") +public class ReflectUtils +{ + private static final String SETTER_PREFIX = "set"; + + private static final String GETTER_PREFIX = "get"; + + private static final String CGLIB_CLASS_SEPARATOR = "$$"; + + private static Logger logger = LoggerFactory.getLogger(ReflectUtils.class); + + /** + * 调用Getter方法. + * 支持多级,如:对象名.对象名.方法 + */ + @SuppressWarnings("unchecked") + public static E invokeGetter(Object obj, String propertyName) + { + Object object = obj; + for (String name : StringUtils.split(propertyName, ".")) + { + String getterMethodName = GETTER_PREFIX + StringUtils.capitalize(name); + object = invokeMethod(object, getterMethodName, new Class[] {}, new Object[] {}); + } + return (E) object; + } + + /** + * 调用Setter方法, 仅匹配方法名。 + * 支持多级,如:对象名.对象名.方法 + */ + public static void invokeSetter(Object obj, String propertyName, E value) + { + Object object = obj; + String[] names = StringUtils.split(propertyName, "."); + for (int i = 0; i < names.length; i++) + { + if (i < names.length - 1) + { + String getterMethodName = GETTER_PREFIX + StringUtils.capitalize(names[i]); + object = invokeMethod(object, getterMethodName, new Class[] {}, new Object[] {}); + } + else + { + String setterMethodName = SETTER_PREFIX + StringUtils.capitalize(names[i]); + invokeMethodByName(object, setterMethodName, new Object[] { value }); + } + } + } + + /** + * 直接读取对象属性值, 无视private/protected修饰符, 不经过getter函数. + */ + @SuppressWarnings("unchecked") + public static E getFieldValue(final Object obj, final String fieldName) + { + Field field = getAccessibleField(obj, fieldName); + if (field == null) + { + logger.debug("在 [" + obj.getClass() + "] 中,没有找到 [" + fieldName + "] 字段 "); + return null; + } + E result = null; + try + { + result = (E) field.get(obj); + } + catch (IllegalAccessException e) + { + logger.error("不可能抛出的异常{}", e.getMessage()); + } + return result; + } + + /** + * 直接设置对象属性值, 无视private/protected修饰符, 不经过setter函数. + */ + public static void setFieldValue(final Object obj, final String fieldName, final E value) + { + Field field = getAccessibleField(obj, fieldName); + if (field == null) + { + // throw new IllegalArgumentException("在 [" + obj.getClass() + "] 中,没有找到 [" + fieldName + "] 字段 "); + logger.debug("在 [" + obj.getClass() + "] 中,没有找到 [" + fieldName + "] 字段 "); + return; + } + try + { + field.set(obj, value); + } + catch (IllegalAccessException e) + { + logger.error("不可能抛出的异常: {}", e.getMessage()); + } + } + + /** + * 直接调用对象方法, 无视private/protected修饰符. + * 用于一次性调用的情况,否则应使用getAccessibleMethod()函数获得Method后反复调用. + * 同时匹配方法名+参数类型, + */ + @SuppressWarnings("unchecked") + public static E invokeMethod(final Object obj, final String methodName, final Class[] parameterTypes, + final Object[] args) + { + if (obj == null || methodName == null) + { + return null; + } + Method method = getAccessibleMethod(obj, methodName, parameterTypes); + if (method == null) + { + logger.debug("在 [" + obj.getClass() + "] 中,没有找到 [" + methodName + "] 方法 "); + return null; + } + try + { + return (E) method.invoke(obj, args); + } + catch (Exception e) + { + String msg = "method: " + method + ", obj: " + obj + ", args: " + args + ""; + throw convertReflectionExceptionToUnchecked(msg, e); + } + } + + /** + * 直接调用对象方法, 无视private/protected修饰符, + * 用于一次性调用的情况,否则应使用getAccessibleMethodByName()函数获得Method后反复调用. + * 只匹配函数名,如果有多个同名函数调用第一个。 + */ + @SuppressWarnings("unchecked") + public static E invokeMethodByName(final Object obj, final String methodName, final Object[] args) + { + Method method = getAccessibleMethodByName(obj, methodName, args.length); + if (method == null) + { + // 如果为空不报错,直接返回空。 + logger.debug("在 [" + obj.getClass() + "] 中,没有找到 [" + methodName + "] 方法 "); + return null; + } + try + { + // 类型转换(将参数数据类型转换为目标方法参数类型) + Class[] cs = method.getParameterTypes(); + for (int i = 0; i < cs.length; i++) + { + if (args[i] != null && !args[i].getClass().equals(cs[i])) + { + if (cs[i] == String.class) + { + args[i] = Convert.toStr(args[i]); + if (StringUtils.endsWith((String) args[i], ".0")) + { + args[i] = StringUtils.substringBefore((String) args[i], ".0"); + } + } + else if (cs[i] == Integer.class) + { + args[i] = Convert.toInt(args[i]); + } + else if (cs[i] == Long.class) + { + args[i] = Convert.toLong(args[i]); + } + else if (cs[i] == Double.class) + { + args[i] = Convert.toDouble(args[i]); + } + else if (cs[i] == Float.class) + { + args[i] = Convert.toFloat(args[i]); + } + else if (cs[i] == Date.class) + { + if (args[i] instanceof String) + { + args[i] = DateUtils.parseDate(args[i]); + } + else + { + args[i] = DateUtil.getJavaDate((Double) args[i]); + } + } + else if (cs[i] == boolean.class || cs[i] == Boolean.class) + { + args[i] = Convert.toBool(args[i]); + } + } + } + return (E) method.invoke(obj, args); + } + catch (Exception e) + { + String msg = "method: " + method + ", obj: " + obj + ", args: " + args + ""; + throw convertReflectionExceptionToUnchecked(msg, e); + } + } + + /** + * 循环向上转型, 获取对象的DeclaredField, 并强制设置为可访问. + * 如向上转型到Object仍无法找到, 返回null. + */ + public static Field getAccessibleField(final Object obj, final String fieldName) + { + // 为空不报错。直接返回 null + if (obj == null) + { + return null; + } + Validate.notBlank(fieldName, "fieldName can't be blank"); + for (Class superClass = obj.getClass(); superClass != Object.class; superClass = superClass.getSuperclass()) + { + try + { + Field field = superClass.getDeclaredField(fieldName); + makeAccessible(field); + return field; + } + catch (NoSuchFieldException e) + { + continue; + } + } + return null; + } + + /** + * 循环向上转型, 获取对象的DeclaredMethod,并强制设置为可访问. + * 如向上转型到Object仍无法找到, 返回null. + * 匹配函数名+参数类型。 + * 用于方法需要被多次调用的情况. 先使用本函数先取得Method,然后调用Method.invoke(Object obj, Object... args) + */ + public static Method getAccessibleMethod(final Object obj, final String methodName, + final Class... parameterTypes) + { + // 为空不报错。直接返回 null + if (obj == null) + { + return null; + } + Validate.notBlank(methodName, "methodName can't be blank"); + for (Class searchType = obj.getClass(); searchType != Object.class; searchType = searchType.getSuperclass()) + { + try + { + Method method = searchType.getDeclaredMethod(methodName, parameterTypes); + makeAccessible(method); + return method; + } + catch (NoSuchMethodException e) + { + continue; + } + } + return null; + } + + /** + * 循环向上转型, 获取对象的DeclaredMethod,并强制设置为可访问. + * 如向上转型到Object仍无法找到, 返回null. + * 只匹配函数名。 + * 用于方法需要被多次调用的情况. 先使用本函数先取得Method,然后调用Method.invoke(Object obj, Object... args) + */ + public static Method getAccessibleMethodByName(final Object obj, final String methodName, int argsNum) + { + // 为空不报错。直接返回 null + if (obj == null) + { + return null; + } + Validate.notBlank(methodName, "methodName can't be blank"); + for (Class searchType = obj.getClass(); searchType != Object.class; searchType = searchType.getSuperclass()) + { + Method[] methods = searchType.getDeclaredMethods(); + for (Method method : methods) + { + if (method.getName().equals(methodName) && method.getParameterTypes().length == argsNum) + { + makeAccessible(method); + return method; + } + } + } + return null; + } + + /** + * 改变private/protected的方法为public,尽量不调用实际改动的语句,避免JDK的SecurityManager抱怨。 + */ + public static void makeAccessible(Method method) + { + if ((!Modifier.isPublic(method.getModifiers()) || !Modifier.isPublic(method.getDeclaringClass().getModifiers())) + && !method.isAccessible()) + { + method.setAccessible(true); + } + } + + /** + * 改变private/protected的成员变量为public,尽量不调用实际改动的语句,避免JDK的SecurityManager抱怨。 + */ + public static void makeAccessible(Field field) + { + if ((!Modifier.isPublic(field.getModifiers()) || !Modifier.isPublic(field.getDeclaringClass().getModifiers()) + || Modifier.isFinal(field.getModifiers())) && !field.isAccessible()) + { + field.setAccessible(true); + } + } + + /** + * 通过反射, 获得Class定义中声明的泛型参数的类型, 注意泛型必须定义在父类处 + * 如无法找到, 返回Object.class. + */ + @SuppressWarnings("unchecked") + public static Class getClassGenricType(final Class clazz) + { + return getClassGenricType(clazz, 0); + } + + /** + * 通过反射, 获得Class定义中声明的父类的泛型参数的类型. + * 如无法找到, 返回Object.class. + */ + public static Class getClassGenricType(final Class clazz, final int index) + { + Type genType = clazz.getGenericSuperclass(); + + if (!(genType instanceof ParameterizedType)) + { + logger.debug(clazz.getSimpleName() + "'s superclass not ParameterizedType"); + return Object.class; + } + + Type[] params = ((ParameterizedType) genType).getActualTypeArguments(); + + if (index >= params.length || index < 0) + { + logger.debug("Index: " + index + ", Size of " + clazz.getSimpleName() + "'s Parameterized Type: " + + params.length); + return Object.class; + } + if (!(params[index] instanceof Class)) + { + logger.debug(clazz.getSimpleName() + " not set the actual class on superclass generic parameter"); + return Object.class; + } + + return (Class) params[index]; + } + + public static Class getUserClass(Object instance) + { + if (instance == null) + { + throw new RuntimeException("Instance must not be null"); + } + Class clazz = instance.getClass(); + if (clazz != null && clazz.getName().contains(CGLIB_CLASS_SEPARATOR)) + { + Class superClass = clazz.getSuperclass(); + if (superClass != null && !Object.class.equals(superClass)) + { + return superClass; + } + } + return clazz; + + } + + /** + * 将反射时的checked exception转换为unchecked exception. + */ + public static RuntimeException convertReflectionExceptionToUnchecked(String msg, Exception e) + { + if (e instanceof IllegalAccessException || e instanceof IllegalArgumentException + || e instanceof NoSuchMethodException) + { + return new IllegalArgumentException(msg, e); + } + else if (e instanceof InvocationTargetException) + { + return new RuntimeException(msg, ((InvocationTargetException) e).getTargetException()); + } + return new RuntimeException(msg, e); + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/utils/sign/Base64.java b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/sign/Base64.java new file mode 100644 index 0000000..c87960a --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/sign/Base64.java @@ -0,0 +1,291 @@ +package com.cmvr.common.utils.sign; + +/** + * Base64工具类 + * + * @author cmvrIot + */ +public final class Base64 +{ + static private final int BASELENGTH = 128; + static private final int LOOKUPLENGTH = 64; + static private final int TWENTYFOURBITGROUP = 24; + static private final int EIGHTBIT = 8; + static private final int SIXTEENBIT = 16; + static private final int FOURBYTE = 4; + static private final int SIGN = -128; + static private final char PAD = '='; + static final private byte[] base64Alphabet = new byte[BASELENGTH]; + static final private char[] lookUpBase64Alphabet = new char[LOOKUPLENGTH]; + + static + { + for (int i = 0; i < BASELENGTH; ++i) + { + base64Alphabet[i] = -1; + } + for (int i = 'Z'; i >= 'A'; i--) + { + base64Alphabet[i] = (byte) (i - 'A'); + } + for (int i = 'z'; i >= 'a'; i--) + { + base64Alphabet[i] = (byte) (i - 'a' + 26); + } + + for (int i = '9'; i >= '0'; i--) + { + base64Alphabet[i] = (byte) (i - '0' + 52); + } + + base64Alphabet['+'] = 62; + base64Alphabet['/'] = 63; + + for (int i = 0; i <= 25; i++) + { + lookUpBase64Alphabet[i] = (char) ('A' + i); + } + + for (int i = 26, j = 0; i <= 51; i++, j++) + { + lookUpBase64Alphabet[i] = (char) ('a' + j); + } + + for (int i = 52, j = 0; i <= 61; i++, j++) + { + lookUpBase64Alphabet[i] = (char) ('0' + j); + } + lookUpBase64Alphabet[62] = (char) '+'; + lookUpBase64Alphabet[63] = (char) '/'; + } + + private static boolean isWhiteSpace(char octect) + { + return (octect == 0x20 || octect == 0xd || octect == 0xa || octect == 0x9); + } + + private static boolean isPad(char octect) + { + return (octect == PAD); + } + + private static boolean isData(char octect) + { + return (octect < BASELENGTH && base64Alphabet[octect] != -1); + } + + /** + * Encodes hex octects into Base64 + * + * @param binaryData Array containing binaryData + * @return Encoded Base64 array + */ + public static String encode(byte[] binaryData) + { + if (binaryData == null) + { + return null; + } + + int lengthDataBits = binaryData.length * EIGHTBIT; + if (lengthDataBits == 0) + { + return ""; + } + + int fewerThan24bits = lengthDataBits % TWENTYFOURBITGROUP; + int numberTriplets = lengthDataBits / TWENTYFOURBITGROUP; + int numberQuartet = fewerThan24bits != 0 ? numberTriplets + 1 : numberTriplets; + char encodedData[] = null; + + encodedData = new char[numberQuartet * 4]; + + byte k = 0, l = 0, b1 = 0, b2 = 0, b3 = 0; + + int encodedIndex = 0; + int dataIndex = 0; + + for (int i = 0; i < numberTriplets; i++) + { + b1 = binaryData[dataIndex++]; + b2 = binaryData[dataIndex++]; + b3 = binaryData[dataIndex++]; + + l = (byte) (b2 & 0x0f); + k = (byte) (b1 & 0x03); + + byte val1 = ((b1 & SIGN) == 0) ? (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0); + byte val2 = ((b2 & SIGN) == 0) ? (byte) (b2 >> 4) : (byte) ((b2) >> 4 ^ 0xf0); + byte val3 = ((b3 & SIGN) == 0) ? (byte) (b3 >> 6) : (byte) ((b3) >> 6 ^ 0xfc); + + encodedData[encodedIndex++] = lookUpBase64Alphabet[val1]; + encodedData[encodedIndex++] = lookUpBase64Alphabet[val2 | (k << 4)]; + encodedData[encodedIndex++] = lookUpBase64Alphabet[(l << 2) | val3]; + encodedData[encodedIndex++] = lookUpBase64Alphabet[b3 & 0x3f]; + } + + // form integral number of 6-bit groups + if (fewerThan24bits == EIGHTBIT) + { + b1 = binaryData[dataIndex]; + k = (byte) (b1 & 0x03); + byte val1 = ((b1 & SIGN) == 0) ? (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0); + encodedData[encodedIndex++] = lookUpBase64Alphabet[val1]; + encodedData[encodedIndex++] = lookUpBase64Alphabet[k << 4]; + encodedData[encodedIndex++] = PAD; + encodedData[encodedIndex++] = PAD; + } + else if (fewerThan24bits == SIXTEENBIT) + { + b1 = binaryData[dataIndex]; + b2 = binaryData[dataIndex + 1]; + l = (byte) (b2 & 0x0f); + k = (byte) (b1 & 0x03); + + byte val1 = ((b1 & SIGN) == 0) ? (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0); + byte val2 = ((b2 & SIGN) == 0) ? (byte) (b2 >> 4) : (byte) ((b2) >> 4 ^ 0xf0); + + encodedData[encodedIndex++] = lookUpBase64Alphabet[val1]; + encodedData[encodedIndex++] = lookUpBase64Alphabet[val2 | (k << 4)]; + encodedData[encodedIndex++] = lookUpBase64Alphabet[l << 2]; + encodedData[encodedIndex++] = PAD; + } + return new String(encodedData); + } + + /** + * Decodes Base64 data into octects + * + * @param encoded string containing Base64 data + * @return Array containind decoded data. + */ + public static byte[] decode(String encoded) + { + if (encoded == null) + { + return null; + } + + char[] base64Data = encoded.toCharArray(); + // remove white spaces + int len = removeWhiteSpace(base64Data); + + if (len % FOURBYTE != 0) + { + return null;// should be divisible by four + } + + int numberQuadruple = (len / FOURBYTE); + + if (numberQuadruple == 0) + { + return new byte[0]; + } + + byte decodedData[] = null; + byte b1 = 0, b2 = 0, b3 = 0, b4 = 0; + char d1 = 0, d2 = 0, d3 = 0, d4 = 0; + + int i = 0; + int encodedIndex = 0; + int dataIndex = 0; + decodedData = new byte[(numberQuadruple) * 3]; + + for (; i < numberQuadruple - 1; i++) + { + + if (!isData((d1 = base64Data[dataIndex++])) || !isData((d2 = base64Data[dataIndex++])) + || !isData((d3 = base64Data[dataIndex++])) || !isData((d4 = base64Data[dataIndex++]))) + { + return null; + } // if found "no data" just return null + + b1 = base64Alphabet[d1]; + b2 = base64Alphabet[d2]; + b3 = base64Alphabet[d3]; + b4 = base64Alphabet[d4]; + + decodedData[encodedIndex++] = (byte) (b1 << 2 | b2 >> 4); + decodedData[encodedIndex++] = (byte) (((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf)); + decodedData[encodedIndex++] = (byte) (b3 << 6 | b4); + } + + if (!isData((d1 = base64Data[dataIndex++])) || !isData((d2 = base64Data[dataIndex++]))) + { + return null;// if found "no data" just return null + } + + b1 = base64Alphabet[d1]; + b2 = base64Alphabet[d2]; + + d3 = base64Data[dataIndex++]; + d4 = base64Data[dataIndex++]; + if (!isData((d3)) || !isData((d4))) + {// Check if they are PAD characters + if (isPad(d3) && isPad(d4)) + { + if ((b2 & 0xf) != 0)// last 4 bits should be zero + { + return null; + } + byte[] tmp = new byte[i * 3 + 1]; + System.arraycopy(decodedData, 0, tmp, 0, i * 3); + tmp[encodedIndex] = (byte) (b1 << 2 | b2 >> 4); + return tmp; + } + else if (!isPad(d3) && isPad(d4)) + { + b3 = base64Alphabet[d3]; + if ((b3 & 0x3) != 0)// last 2 bits should be zero + { + return null; + } + byte[] tmp = new byte[i * 3 + 2]; + System.arraycopy(decodedData, 0, tmp, 0, i * 3); + tmp[encodedIndex++] = (byte) (b1 << 2 | b2 >> 4); + tmp[encodedIndex] = (byte) (((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf)); + return tmp; + } + else + { + return null; + } + } + else + { // No PAD e.g 3cQl + b3 = base64Alphabet[d3]; + b4 = base64Alphabet[d4]; + decodedData[encodedIndex++] = (byte) (b1 << 2 | b2 >> 4); + decodedData[encodedIndex++] = (byte) (((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf)); + decodedData[encodedIndex++] = (byte) (b3 << 6 | b4); + + } + return decodedData; + } + + /** + * remove WhiteSpace from MIME containing encoded Base64 data. + * + * @param data the byte array of base64 data (with WS) + * @return the new length + */ + private static int removeWhiteSpace(char[] data) + { + if (data == null) + { + return 0; + } + + // count characters that's not whitespace + int newSize = 0; + int len = data.length; + for (int i = 0; i < len; i++) + { + if (!isWhiteSpace(data[i])) + { + data[newSize++] = data[i]; + } + } + return newSize; + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/utils/sign/Md5Utils.java b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/sign/Md5Utils.java new file mode 100644 index 0000000..170e602 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/sign/Md5Utils.java @@ -0,0 +1,67 @@ +package com.cmvr.common.utils.sign; + +import java.nio.charset.StandardCharsets; +import java.security.MessageDigest; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Md5加密方法 + * + * @author cmvrIot + */ +public class Md5Utils +{ + private static final Logger log = LoggerFactory.getLogger(Md5Utils.class); + + private static byte[] md5(String s) + { + MessageDigest algorithm; + try + { + algorithm = MessageDigest.getInstance("MD5"); + algorithm.reset(); + algorithm.update(s.getBytes("UTF-8")); + byte[] messageDigest = algorithm.digest(); + return messageDigest; + } + catch (Exception e) + { + log.error("MD5 Error...", e); + } + return null; + } + + private static final String toHex(byte hash[]) + { + if (hash == null) + { + return null; + } + StringBuffer buf = new StringBuffer(hash.length * 2); + int i; + + for (i = 0; i < hash.length; i++) + { + if ((hash[i] & 0xff) < 0x10) + { + buf.append("0"); + } + buf.append(Long.toString(hash[i] & 0xff, 16)); + } + return buf.toString(); + } + + public static String hash(String s) + { + try + { + return new String(toHex(md5(s)).getBytes(StandardCharsets.UTF_8), StandardCharsets.UTF_8); + } + catch (Exception e) + { + log.error("not supported charset...{}", e); + return s; + } + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/utils/spring/SpringUtils.java b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/spring/SpringUtils.java new file mode 100644 index 0000000..4d40194 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/spring/SpringUtils.java @@ -0,0 +1,158 @@ +package com.cmvr.common.utils.spring; + +import org.springframework.aop.framework.AopContext; +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.NoSuchBeanDefinitionException; +import org.springframework.beans.factory.config.BeanFactoryPostProcessor; +import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.stereotype.Component; +import com.cmvr.common.utils.StringUtils; + +/** + * spring工具类 方便在非spring管理环境中获取bean + * + * @author cmvrIot + */ +@Component +public final class SpringUtils implements BeanFactoryPostProcessor, ApplicationContextAware +{ + /** Spring应用上下文环境 */ + private static ConfigurableListableBeanFactory beanFactory; + + private static ApplicationContext applicationContext; + + @Override + public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException + { + SpringUtils.beanFactory = beanFactory; + } + + @Override + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException + { + SpringUtils.applicationContext = applicationContext; + } + + /** + * 获取对象 + * + * @param name + * @return Object 一个以所给名字注册的bean的实例 + * @throws org.springframework.beans.BeansException + * + */ + @SuppressWarnings("unchecked") + public static T getBean(String name) throws BeansException + { + return (T) beanFactory.getBean(name); + } + + /** + * 获取类型为requiredType的对象 + * + * @param clz + * @return + * @throws org.springframework.beans.BeansException + * + */ + public static T getBean(Class clz) throws BeansException + { + T result = (T) beanFactory.getBean(clz); + return result; + } + + /** + * 如果BeanFactory包含一个与所给名称匹配的bean定义,则返回true + * + * @param name + * @return boolean + */ + public static boolean containsBean(String name) + { + return beanFactory.containsBean(name); + } + + /** + * 判断以给定名字注册的bean定义是一个singleton还是一个prototype。 如果与给定名字相应的bean定义没有被找到,将会抛出一个异常(NoSuchBeanDefinitionException) + * + * @param name + * @return boolean + * @throws org.springframework.beans.factory.NoSuchBeanDefinitionException + * + */ + public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException + { + return beanFactory.isSingleton(name); + } + + /** + * @param name + * @return Class 注册对象的类型 + * @throws org.springframework.beans.factory.NoSuchBeanDefinitionException + * + */ + public static Class getType(String name) throws NoSuchBeanDefinitionException + { + return beanFactory.getType(name); + } + + /** + * 如果给定的bean名字在bean定义中有别名,则返回这些别名 + * + * @param name + * @return + * @throws org.springframework.beans.factory.NoSuchBeanDefinitionException + * + */ + public static String[] getAliases(String name) throws NoSuchBeanDefinitionException + { + return beanFactory.getAliases(name); + } + + /** + * 获取aop代理对象 + * + * @param invoker + * @return + */ + @SuppressWarnings("unchecked") + public static T getAopProxy(T invoker) + { + return (T) AopContext.currentProxy(); + } + + /** + * 获取当前的环境配置,无配置返回null + * + * @return 当前的环境配置 + */ + public static String[] getActiveProfiles() + { + return applicationContext.getEnvironment().getActiveProfiles(); + } + + /** + * 获取当前的环境配置,当有多个环境配置时,只获取第一个 + * + * @return 当前的环境配置 + */ + public static String getActiveProfile() + { + final String[] activeProfiles = getActiveProfiles(); + return StringUtils.isNotEmpty(activeProfiles) ? activeProfiles[0] : null; + } + + /** + * 获取配置文件中的值 + * + * @param key 配置文件的key + * @return 当前的配置文件的值 + * + */ + public static String getRequiredProperty(String key) + { + return applicationContext.getEnvironment().getRequiredProperty(key); + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/utils/sql/SqlUtil.java b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/sql/SqlUtil.java new file mode 100644 index 0000000..daa9c85 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/sql/SqlUtil.java @@ -0,0 +1,70 @@ +package com.cmvr.common.utils.sql; + +import com.cmvr.common.exception.UtilException; +import com.cmvr.common.utils.StringUtils; + +/** + * sql操作工具类 + * + * @author cmvrIot + */ +public class SqlUtil +{ + /** + * 定义常用的 sql关键字 + */ + public static String SQL_REGEX = "\u000B|and |extractvalue|updatexml|sleep|exec |insert |select |delete |update |drop |count |chr |mid |master |truncate |char |declare |or |union |like |+|/*|user()"; + + /** + * 仅支持字母、数字、下划线、空格、逗号、小数点(支持多个字段排序) + */ + public static String SQL_PATTERN = "[a-zA-Z0-9_\\ \\,\\.]+"; + + /** + * 限制orderBy最大长度 + */ + private static final int ORDER_BY_MAX_LENGTH = 500; + + /** + * 检查字符,防止注入绕过 + */ + public static String escapeOrderBySql(String value) + { + if (StringUtils.isNotEmpty(value) && !isValidOrderBySql(value)) + { + throw new UtilException("参数不符合规范,不能进行查询"); + } + if (StringUtils.length(value) > ORDER_BY_MAX_LENGTH) + { + throw new UtilException("参数已超过最大限制,不能进行查询"); + } + return value; + } + + /** + * 验证 order by 语法是否符合规范 + */ + public static boolean isValidOrderBySql(String value) + { + return value.matches(SQL_PATTERN); + } + + /** + * SQL关键字检查 + */ + public static void filterKeyword(String value) + { + if (StringUtils.isEmpty(value)) + { + return; + } + String[] sqlKeywords = StringUtils.split(SQL_REGEX, "\\|"); + for (String sqlKeyword : sqlKeywords) + { + if (StringUtils.indexOfIgnoreCase(value, sqlKeyword) > -1) + { + throw new UtilException("参数存在SQL注入风险"); + } + } + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/utils/uuid/IdUtils.java b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/uuid/IdUtils.java new file mode 100644 index 0000000..c494a3e --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/uuid/IdUtils.java @@ -0,0 +1,49 @@ +package com.cmvr.common.utils.uuid; + +/** + * ID生成器工具类 + * + * @author cmvrIot + */ +public class IdUtils +{ + /** + * 获取随机UUID + * + * @return 随机UUID + */ + public static String randomUUID() + { + return UUID.randomUUID().toString(); + } + + /** + * 简化的UUID,去掉了横线 + * + * @return 简化的UUID,去掉了横线 + */ + public static String simpleUUID() + { + return UUID.randomUUID().toString(true); + } + + /** + * 获取随机UUID,使用性能更好的ThreadLocalRandom生成UUID + * + * @return 随机UUID + */ + public static String fastUUID() + { + return UUID.fastUUID().toString(); + } + + /** + * 简化的UUID,去掉了横线,使用性能更好的ThreadLocalRandom生成UUID + * + * @return 简化的UUID,去掉了横线 + */ + public static String fastSimpleUUID() + { + return UUID.fastUUID().toString(true); + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/utils/uuid/Seq.java b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/uuid/Seq.java new file mode 100644 index 0000000..c2b35e6 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/uuid/Seq.java @@ -0,0 +1,86 @@ +package com.cmvr.common.utils.uuid; + +import java.util.concurrent.atomic.AtomicInteger; +import com.cmvr.common.utils.DateUtils; +import com.cmvr.common.utils.StringUtils; + +/** + * @author cmvrIot 序列生成类 + */ +public class Seq +{ + // 通用序列类型 + public static final String commSeqType = "COMMON"; + + // 上传序列类型 + public static final String uploadSeqType = "UPLOAD"; + + // 通用接口序列数 + private static AtomicInteger commSeq = new AtomicInteger(1); + + // 上传接口序列数 + private static AtomicInteger uploadSeq = new AtomicInteger(1); + + // 机器标识 + private static final String machineCode = "A"; + + /** + * 获取通用序列号 + * + * @return 序列值 + */ + public static String getId() + { + return getId(commSeqType); + } + + /** + * 默认16位序列号 yyMMddHHmmss + 一位机器标识 + 3长度循环递增字符串 + * + * @return 序列值 + */ + public static String getId(String type) + { + AtomicInteger atomicInt = commSeq; + if (uploadSeqType.equals(type)) + { + atomicInt = uploadSeq; + } + return getId(atomicInt, 3); + } + + /** + * 通用接口序列号 yyMMddHHmmss + 一位机器标识 + length长度循环递增字符串 + * + * @param atomicInt 序列数 + * @param length 数值长度 + * @return 序列值 + */ + public static String getId(AtomicInteger atomicInt, int length) + { + String result = DateUtils.dateTimeNow(); + result += machineCode; + result += getSeq(atomicInt, length); + return result; + } + + /** + * 序列循环递增字符串[1, 10 的 (length)幂次方), 用0左补齐length位数 + * + * @return 序列值 + */ + private synchronized static String getSeq(AtomicInteger atomicInt, int length) + { + // 先取值再+1 + int value = atomicInt.getAndIncrement(); + + // 如果更新后值>=10 的 (length)幂次方则重置为1 + int maxSeq = (int) Math.pow(10, length); + if (atomicInt.get() >= maxSeq) + { + atomicInt.set(1); + } + // 转字符串,用0左补齐 + return StringUtils.padl(value, length); + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/utils/uuid/UUID.java b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/uuid/UUID.java new file mode 100644 index 0000000..b7650fe --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/utils/uuid/UUID.java @@ -0,0 +1,484 @@ +package com.cmvr.common.utils.uuid; + +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.security.SecureRandom; +import java.util.Random; +import java.util.concurrent.ThreadLocalRandom; +import com.cmvr.common.exception.UtilException; + +/** + * 提供通用唯一识别码(universally unique identifier)(UUID)实现 + * + * @author cmvrIot + */ +public final class UUID implements java.io.Serializable, Comparable +{ + private static final long serialVersionUID = -1185015143654744140L; + + /** + * SecureRandom 的单例 + * + */ + private static class Holder + { + static final SecureRandom numberGenerator = getSecureRandom(); + } + + /** 此UUID的最高64有效位 */ + private final long mostSigBits; + + /** 此UUID的最低64有效位 */ + private final long leastSigBits; + + /** + * 私有构造 + * + * @param data 数据 + */ + private UUID(byte[] data) + { + long msb = 0; + long lsb = 0; + assert data.length == 16 : "data must be 16 bytes in length"; + for (int i = 0; i < 8; i++) + { + msb = (msb << 8) | (data[i] & 0xff); + } + for (int i = 8; i < 16; i++) + { + lsb = (lsb << 8) | (data[i] & 0xff); + } + this.mostSigBits = msb; + this.leastSigBits = lsb; + } + + /** + * 使用指定的数据构造新的 UUID。 + * + * @param mostSigBits 用于 {@code UUID} 的最高有效 64 位 + * @param leastSigBits 用于 {@code UUID} 的最低有效 64 位 + */ + public UUID(long mostSigBits, long leastSigBits) + { + this.mostSigBits = mostSigBits; + this.leastSigBits = leastSigBits; + } + + /** + * 获取类型 4(伪随机生成的)UUID 的静态工厂。 + * + * @return 随机生成的 {@code UUID} + */ + public static UUID fastUUID() + { + return randomUUID(false); + } + + /** + * 获取类型 4(伪随机生成的)UUID 的静态工厂。 使用加密的强伪随机数生成器生成该 UUID。 + * + * @return 随机生成的 {@code UUID} + */ + public static UUID randomUUID() + { + return randomUUID(true); + } + + /** + * 获取类型 4(伪随机生成的)UUID 的静态工厂。 使用加密的强伪随机数生成器生成该 UUID。 + * + * @param isSecure 是否使用{@link SecureRandom}如果是可以获得更安全的随机码,否则可以得到更好的性能 + * @return 随机生成的 {@code UUID} + */ + public static UUID randomUUID(boolean isSecure) + { + final Random ng = isSecure ? Holder.numberGenerator : getRandom(); + + byte[] randomBytes = new byte[16]; + ng.nextBytes(randomBytes); + randomBytes[6] &= 0x0f; /* clear version */ + randomBytes[6] |= 0x40; /* set to version 4 */ + randomBytes[8] &= 0x3f; /* clear variant */ + randomBytes[8] |= 0x80; /* set to IETF variant */ + return new UUID(randomBytes); + } + + /** + * 根据指定的字节数组获取类型 3(基于名称的)UUID 的静态工厂。 + * + * @param name 用于构造 UUID 的字节数组。 + * + * @return 根据指定数组生成的 {@code UUID} + */ + public static UUID nameUUIDFromBytes(byte[] name) + { + MessageDigest md; + try + { + md = MessageDigest.getInstance("MD5"); + } + catch (NoSuchAlgorithmException nsae) + { + throw new InternalError("MD5 not supported"); + } + byte[] md5Bytes = md.digest(name); + md5Bytes[6] &= 0x0f; /* clear version */ + md5Bytes[6] |= 0x30; /* set to version 3 */ + md5Bytes[8] &= 0x3f; /* clear variant */ + md5Bytes[8] |= 0x80; /* set to IETF variant */ + return new UUID(md5Bytes); + } + + /** + * 根据 {@link #toString()} 方法中描述的字符串标准表示形式创建{@code UUID}。 + * + * @param name 指定 {@code UUID} 字符串 + * @return 具有指定值的 {@code UUID} + * @throws IllegalArgumentException 如果 name 与 {@link #toString} 中描述的字符串表示形式不符抛出此异常 + * + */ + public static UUID fromString(String name) + { + String[] components = name.split("-"); + if (components.length != 5) + { + throw new IllegalArgumentException("Invalid UUID string: " + name); + } + for (int i = 0; i < 5; i++) + { + components[i] = "0x" + components[i]; + } + + long mostSigBits = Long.decode(components[0]).longValue(); + mostSigBits <<= 16; + mostSigBits |= Long.decode(components[1]).longValue(); + mostSigBits <<= 16; + mostSigBits |= Long.decode(components[2]).longValue(); + + long leastSigBits = Long.decode(components[3]).longValue(); + leastSigBits <<= 48; + leastSigBits |= Long.decode(components[4]).longValue(); + + return new UUID(mostSigBits, leastSigBits); + } + + /** + * 返回此 UUID 的 128 位值中的最低有效 64 位。 + * + * @return 此 UUID 的 128 位值中的最低有效 64 位。 + */ + public long getLeastSignificantBits() + { + return leastSigBits; + } + + /** + * 返回此 UUID 的 128 位值中的最高有效 64 位。 + * + * @return 此 UUID 的 128 位值中最高有效 64 位。 + */ + public long getMostSignificantBits() + { + return mostSigBits; + } + + /** + * 与此 {@code UUID} 相关联的版本号. 版本号描述此 {@code UUID} 是如何生成的。 + *

+ * 版本号具有以下含意: + *

    + *
  • 1 基于时间的 UUID + *
  • 2 DCE 安全 UUID + *
  • 3 基于名称的 UUID + *
  • 4 随机生成的 UUID + *
+ * + * @return 此 {@code UUID} 的版本号 + */ + public int version() + { + // Version is bits masked by 0x000000000000F000 in MS long + return (int) ((mostSigBits >> 12) & 0x0f); + } + + /** + * 与此 {@code UUID} 相关联的变体号。变体号描述 {@code UUID} 的布局。 + *

+ * 变体号具有以下含意: + *

    + *
  • 0 为 NCS 向后兼容保留 + *
  • 2 IETF RFC 4122(Leach-Salz), 用于此类 + *
  • 6 保留,微软向后兼容 + *
  • 7 保留供以后定义使用 + *
+ * + * @return 此 {@code UUID} 相关联的变体号 + */ + public int variant() + { + // This field is composed of a varying number of bits. + // 0 - - Reserved for NCS backward compatibility + // 1 0 - The IETF aka Leach-Salz variant (used by this class) + // 1 1 0 Reserved, Microsoft backward compatibility + // 1 1 1 Reserved for future definition. + return (int) ((leastSigBits >>> (64 - (leastSigBits >>> 62))) & (leastSigBits >> 63)); + } + + /** + * 与此 UUID 相关联的时间戳值。 + * + *

+ * 60 位的时间戳值根据此 {@code UUID} 的 time_low、time_mid 和 time_hi 字段构造。
+ * 所得到的时间戳以 100 毫微秒为单位,从 UTC(通用协调时间) 1582 年 10 月 15 日零时开始。 + * + *

+ * 时间戳值仅在在基于时间的 UUID(其 version 类型为 1)中才有意义。
+ * 如果此 {@code UUID} 不是基于时间的 UUID,则此方法抛出 UnsupportedOperationException。 + * + * @throws UnsupportedOperationException 如果此 {@code UUID} 不是 version 为 1 的 UUID。 + */ + public long timestamp() throws UnsupportedOperationException + { + checkTimeBase(); + return (mostSigBits & 0x0FFFL) << 48// + | ((mostSigBits >> 16) & 0x0FFFFL) << 32// + | mostSigBits >>> 32; + } + + /** + * 与此 UUID 相关联的时钟序列值。 + * + *

+ * 14 位的时钟序列值根据此 UUID 的 clock_seq 字段构造。clock_seq 字段用于保证在基于时间的 UUID 中的时间唯一性。 + *

+ * {@code clockSequence} 值仅在基于时间的 UUID(其 version 类型为 1)中才有意义。 如果此 UUID 不是基于时间的 UUID,则此方法抛出 + * UnsupportedOperationException。 + * + * @return 此 {@code UUID} 的时钟序列 + * + * @throws UnsupportedOperationException 如果此 UUID 的 version 不为 1 + */ + public int clockSequence() throws UnsupportedOperationException + { + checkTimeBase(); + return (int) ((leastSigBits & 0x3FFF000000000000L) >>> 48); + } + + /** + * 与此 UUID 相关的节点值。 + * + *

+ * 48 位的节点值根据此 UUID 的 node 字段构造。此字段旨在用于保存机器的 IEEE 802 地址,该地址用于生成此 UUID 以保证空间唯一性。 + *

+ * 节点值仅在基于时间的 UUID(其 version 类型为 1)中才有意义。
+ * 如果此 UUID 不是基于时间的 UUID,则此方法抛出 UnsupportedOperationException。 + * + * @return 此 {@code UUID} 的节点值 + * + * @throws UnsupportedOperationException 如果此 UUID 的 version 不为 1 + */ + public long node() throws UnsupportedOperationException + { + checkTimeBase(); + return leastSigBits & 0x0000FFFFFFFFFFFFL; + } + + /** + * 返回此{@code UUID} 的字符串表现形式。 + * + *

+ * UUID 的字符串表示形式由此 BNF 描述: + * + *

+     * {@code
+     * UUID                   = ----
+     * time_low               = 4*
+     * time_mid               = 2*
+     * time_high_and_version  = 2*
+     * variant_and_sequence   = 2*
+     * node                   = 6*
+     * hexOctet               = 
+     * hexDigit               = [0-9a-fA-F]
+     * }
+     * 
+ * + * + * + * @return 此{@code UUID} 的字符串表现形式 + * @see #toString(boolean) + */ + @Override + public String toString() + { + return toString(false); + } + + /** + * 返回此{@code UUID} 的字符串表现形式。 + * + *

+ * UUID 的字符串表示形式由此 BNF 描述: + * + *

+     * {@code
+     * UUID                   = ----
+     * time_low               = 4*
+     * time_mid               = 2*
+     * time_high_and_version  = 2*
+     * variant_and_sequence   = 2*
+     * node                   = 6*
+     * hexOctet               = 
+     * hexDigit               = [0-9a-fA-F]
+     * }
+     * 
+ * + * + * + * @param isSimple 是否简单模式,简单模式为不带'-'的UUID字符串 + * @return 此{@code UUID} 的字符串表现形式 + */ + public String toString(boolean isSimple) + { + final StringBuilder builder = new StringBuilder(isSimple ? 32 : 36); + // time_low + builder.append(digits(mostSigBits >> 32, 8)); + if (!isSimple) + { + builder.append('-'); + } + // time_mid + builder.append(digits(mostSigBits >> 16, 4)); + if (!isSimple) + { + builder.append('-'); + } + // time_high_and_version + builder.append(digits(mostSigBits, 4)); + if (!isSimple) + { + builder.append('-'); + } + // variant_and_sequence + builder.append(digits(leastSigBits >> 48, 4)); + if (!isSimple) + { + builder.append('-'); + } + // node + builder.append(digits(leastSigBits, 12)); + + return builder.toString(); + } + + /** + * 返回此 UUID 的哈希码。 + * + * @return UUID 的哈希码值。 + */ + @Override + public int hashCode() + { + long hilo = mostSigBits ^ leastSigBits; + return ((int) (hilo >> 32)) ^ (int) hilo; + } + + /** + * 将此对象与指定对象比较。 + *

+ * 当且仅当参数不为 {@code null}、而是一个 UUID 对象、具有与此 UUID 相同的 varriant、包含相同的值(每一位均相同)时,结果才为 {@code true}。 + * + * @param obj 要与之比较的对象 + * + * @return 如果对象相同,则返回 {@code true};否则返回 {@code false} + */ + @Override + public boolean equals(Object obj) + { + if ((null == obj) || (obj.getClass() != UUID.class)) + { + return false; + } + UUID id = (UUID) obj; + return (mostSigBits == id.mostSigBits && leastSigBits == id.leastSigBits); + } + + // Comparison Operations + + /** + * 将此 UUID 与指定的 UUID 比较。 + * + *

+ * 如果两个 UUID 不同,且第一个 UUID 的最高有效字段大于第二个 UUID 的对应字段,则第一个 UUID 大于第二个 UUID。 + * + * @param val 与此 UUID 比较的 UUID + * + * @return 在此 UUID 小于、等于或大于 val 时,分别返回 -1、0 或 1。 + * + */ + @Override + public int compareTo(UUID val) + { + // The ordering is intentionally set up so that the UUIDs + // can simply be numerically compared as two numbers + return (this.mostSigBits < val.mostSigBits ? -1 : // + (this.mostSigBits > val.mostSigBits ? 1 : // + (this.leastSigBits < val.leastSigBits ? -1 : // + (this.leastSigBits > val.leastSigBits ? 1 : // + 0)))); + } + + // ------------------------------------------------------------------------------------------------------------------- + // Private method start + /** + * 返回指定数字对应的hex值 + * + * @param val 值 + * @param digits 位 + * @return 值 + */ + private static String digits(long val, int digits) + { + long hi = 1L << (digits * 4); + return Long.toHexString(hi | (val & (hi - 1))).substring(1); + } + + /** + * 检查是否为time-based版本UUID + */ + private void checkTimeBase() + { + if (version() != 1) + { + throw new UnsupportedOperationException("Not a time-based UUID"); + } + } + + /** + * 获取{@link SecureRandom},类提供加密的强随机数生成器 (RNG) + * + * @return {@link SecureRandom} + */ + public static SecureRandom getSecureRandom() + { + try + { + return SecureRandom.getInstance("SHA1PRNG"); + } + catch (NoSuchAlgorithmException e) + { + throw new UtilException(e); + } + } + + /** + * 获取随机数生成器对象
+ * ThreadLocalRandom是JDK 7之后提供并发产生随机数,能够解决多个线程发生的竞争争夺。 + * + * @return {@link ThreadLocalRandom} + */ + public static ThreadLocalRandom getRandom() + { + return ThreadLocalRandom.current(); + } +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/xss/Xss.java b/cmvr-iot-common/src/main/java/com/cmvr/common/xss/Xss.java new file mode 100644 index 0000000..2784863 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/xss/Xss.java @@ -0,0 +1,27 @@ +package com.cmvr.common.xss; + +import javax.validation.Constraint; +import javax.validation.Payload; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * 自定义xss校验注解 + * + * @author cmvrIot + */ +@Retention(RetentionPolicy.RUNTIME) +@Target(value = { ElementType.METHOD, ElementType.FIELD, ElementType.CONSTRUCTOR, ElementType.PARAMETER }) +@Constraint(validatedBy = { XssValidator.class }) +public @interface Xss +{ + String message() + + default "不允许任何脚本运行"; + + Class[] groups() default {}; + + Class[] payload() default {}; +} diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/xss/XssValidator.java b/cmvr-iot-common/src/main/java/com/cmvr/common/xss/XssValidator.java new file mode 100644 index 0000000..7c68c90 --- /dev/null +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/xss/XssValidator.java @@ -0,0 +1,39 @@ +package com.cmvr.common.xss; + +import com.cmvr.common.utils.StringUtils; +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * 自定义xss校验注解实现 + * + * @author cmvrIot + */ +public class XssValidator implements ConstraintValidator +{ + private static final String HTML_PATTERN = "<(\\S*?)[^>]*>.*?|<.*? />"; + + @Override + public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) + { + if (StringUtils.isBlank(value)) + { + return true; + } + return !containsHtml(value); + } + + public static boolean containsHtml(String value) + { + StringBuilder sHtml = new StringBuilder(); + Pattern pattern = Pattern.compile(HTML_PATTERN); + Matcher matcher = pattern.matcher(value); + while (matcher.find()) + { + sHtml.append(matcher.group()); + } + return pattern.matcher(sHtml).matches(); + } +} diff --git a/cmvr-iot-device/pom.xml b/cmvr-iot-device/pom.xml new file mode 100644 index 0000000..344f455 --- /dev/null +++ b/cmvr-iot-device/pom.xml @@ -0,0 +1,27 @@ + + + 4.0.0 + + com.cmvr + cmvr-iot + 3.8.9 + + + cmvr-iot-device + + + 设备管理模块 + + + + + + + com.cmvr + cmvr-iot-common + + + + \ No newline at end of file diff --git a/cmvr-iot-device/src/main/java/com/cmvr/device/domain/DeDeviceProfile.java b/cmvr-iot-device/src/main/java/com/cmvr/device/domain/DeDeviceProfile.java new file mode 100644 index 0000000..704e06e --- /dev/null +++ b/cmvr-iot-device/src/main/java/com/cmvr/device/domain/DeDeviceProfile.java @@ -0,0 +1,70 @@ +package com.cmvr.device.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.cmvr.common.annotation.Excel; +import com.cmvr.common.core.domain.BaseEntity; + +/** + * 设备配置信息对象 de_device_profile + * + * @author cmvr-iot + * @date 2025-05-09 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@ApiModel("设备配置类") +public class DeDeviceProfile extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** id */ + @ApiModelProperty("id") + @TableId(value = "id",type = IdType.ASSIGN_UUID) + private String id; + + /** 备注 */ + @Excel(name = "备注") + @ApiModelProperty("备注") + private String remark; + + /** 设备id */ + @Excel(name = "设备id") + @ApiModelProperty("设备id") + private String idDeDeviceRegistration; + + /** 设备终端id */ + @Excel(name = "设备终端id") + @ApiModelProperty("设备终端id") + private String id_de_device_terminal_config; + + /** 设备类型 */ + @Excel(name = "设备类型") + @ApiModelProperty("设备类型") + private String deviceModel; + + /** 参数名称 */ + @Excel(name = "参数名称") + @ApiModelProperty("参数名称") + private String paramName; + + + /** 参数默认值 */ + @Excel(name = "参数默认值") + @ApiModelProperty("参数默认值") + private String defaultValue; + + /** 参数类型 */ + @Excel(name = "参数类型") + @ApiModelProperty("参数类型") + private String paramType; + +} diff --git a/cmvr-iot-device/src/main/java/com/cmvr/device/domain/DeDeviceRegistration.java b/cmvr-iot-device/src/main/java/com/cmvr/device/domain/DeDeviceRegistration.java new file mode 100644 index 0000000..ff91529 --- /dev/null +++ b/cmvr-iot-device/src/main/java/com/cmvr/device/domain/DeDeviceRegistration.java @@ -0,0 +1,71 @@ +package com.cmvr.device.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.cmvr.common.annotation.Excel; +import com.cmvr.common.core.domain.BaseEntity; + +/** + * 设备注册对象 de_device_registration + * + * @author cmvr-iot + * @date 2025-05-08 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@ApiModel("设备注册") +public class DeDeviceRegistration extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + + public DeDeviceRegistration(String deviceCode,String deviceModel){ + this.deviceCode=deviceCode; + this.deviceModel=deviceModel; + } + + /** id */ + @ApiModelProperty("id") + @TableId(value = "id",type = IdType.ASSIGN_UUID) + private String id; + + /** 备注 */ + @Excel(name = "备注") + @ApiModelProperty("备注") + private String remake; + + /** 设备终端配置id */ + @Excel(name = "设备终端配置id") + @ApiModelProperty("设备终端id") + private String idDeDeviceTerminalConfig; + + /** 设备编码 */ + @Excel(name = "设备编码") + @ApiModelProperty("设备编码") + private String deviceCode; + + /** 设备名称 */ + @Excel(name = "设备名称") + @ApiModelProperty("设备名称") + private String deviceName; + + + /** 设备型号 */ + @Excel(name = "设备型号") + @ApiModelProperty("设备型号") + private String deviceModel; + + /** 设备状态 */ + @Excel(name = "设备状态") + @ApiModelProperty(value = "设备状态 (0正常 1停用)") + private String status; + +} diff --git a/cmvr-iot-device/src/main/java/com/cmvr/device/domain/DeDeviceTerminalConfig.java b/cmvr-iot-device/src/main/java/com/cmvr/device/domain/DeDeviceTerminalConfig.java new file mode 100644 index 0000000..9905ae1 --- /dev/null +++ b/cmvr-iot-device/src/main/java/com/cmvr/device/domain/DeDeviceTerminalConfig.java @@ -0,0 +1,64 @@ +package com.cmvr.device.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.cmvr.common.annotation.Excel; +import com.cmvr.common.core.domain.BaseEntity; + +/** + * 设备终端配置对象 de_device_terminal_config + * + * @author cmvr-iot + * @date 2025-05-08 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@ApiModel("设备终端配置") +public class DeDeviceTerminalConfig extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** id */ + @ApiModelProperty("id") + @TableId(value = "id" , type = IdType.ASSIGN_UUID) + private String id; + + /** 备注 */ + @Excel(name = "备注") + @ApiModelProperty("备注") + private String remake; + + /** 终端名称 */ + @Excel(name = "终端名称") + @ApiModelProperty("终端名称") + private String name; + + /** 主机 */ + @Excel(name = "主机") + @ApiModelProperty("主机") + private String host; + + /** 端口号 */ + @Excel(name = "端口号") + @ApiModelProperty("端口号") + private Long port; + + /** 状态 */ + @Excel(name = "状态") + @ApiModelProperty("状态") + private String status; + + /** 说明 */ + @Excel(name = "说明") + @ApiModelProperty("说明") + private String description; + +} diff --git a/cmvr-iot-device/src/main/java/com/cmvr/device/domain/vo/Device.java b/cmvr-iot-device/src/main/java/com/cmvr/device/domain/vo/Device.java new file mode 100644 index 0000000..f28211c --- /dev/null +++ b/cmvr-iot-device/src/main/java/com/cmvr/device/domain/vo/Device.java @@ -0,0 +1,19 @@ +package com.cmvr.device.domain.vo; + +import com.cmvr.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@ApiModel("设备类") +public class Device extends BaseEntity { + @ApiModelProperty("设备编号") + private String device_id; + @ApiModelProperty("设备类型") + private String device_type; +} diff --git a/cmvr-iot-device/src/main/java/com/cmvr/device/domain/vo/ParameterVo.java b/cmvr-iot-device/src/main/java/com/cmvr/device/domain/vo/ParameterVo.java new file mode 100644 index 0000000..62a050f --- /dev/null +++ b/cmvr-iot-device/src/main/java/com/cmvr/device/domain/vo/ParameterVo.java @@ -0,0 +1,39 @@ +package com.cmvr.device.domain.vo; + +import com.cmvr.common.annotation.Excel; +import com.cmvr.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@ApiModel("参数列表") +public class ParameterVo extends BaseEntity { + + + /** 设备参数id */ + @Excel(name = "设备参数id") + @ApiModelProperty("设备参数id") + String id; + + /** 参数名称 */ + @Excel(name = "参数名称") + @ApiModelProperty("参数名称") + private String paramName; + + + /** 参数默认值 */ + @Excel(name = "参数默认值") + @ApiModelProperty("参数默认值") + private String defaultValue; + + /** 参数类型 */ + @Excel(name = "参数类型") + @ApiModelProperty("参数类型") + private String paramType; + +} diff --git a/cmvr-iot-device/src/main/java/com/cmvr/device/domain/vo/ProfileVo.java b/cmvr-iot-device/src/main/java/com/cmvr/device/domain/vo/ProfileVo.java new file mode 100644 index 0000000..47b0315 --- /dev/null +++ b/cmvr-iot-device/src/main/java/com/cmvr/device/domain/vo/ProfileVo.java @@ -0,0 +1,55 @@ +package com.cmvr.device.domain.vo; + + +import com.cmvr.common.annotation.Excel; +import com.cmvr.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@ApiModel("参数视图类") +public class ProfileVo extends BaseEntity { + + + /** 设备类型 */ + @Excel(name = "设备类型") + @ApiModelProperty("设备类型") + private String deviceModel; + + /** 备注 */ + @Excel(name = "备注") + @ApiModelProperty("备注") + private String remark; + + /** 设备id */ + @Excel(name = "设备id") + @ApiModelProperty("设备id") + private String idDeDeviceRegistration; + + /** 设备终端id */ + @Excel(name = "设备终端id") + @ApiModelProperty("设备终端id") + private String id_de_device_terminal_config; + + /** 设备名称 */ + @Excel(name = "设备名称") + @ApiModelProperty("设备名称") + private String deviceName; + + /** 终端名称 */ + @Excel(name = "终端名称") + @ApiModelProperty("终端名称") + private String terminalName; + + @Excel(name = "参数列表") + @ApiModelProperty("参数列表") + private List parameters; + +} diff --git a/cmvr-iot-device/src/main/java/com/cmvr/device/domain/vo/TeMechanicalArmVo.java b/cmvr-iot-device/src/main/java/com/cmvr/device/domain/vo/TeMechanicalArmVo.java new file mode 100644 index 0000000..360f0d7 --- /dev/null +++ b/cmvr-iot-device/src/main/java/com/cmvr/device/domain/vo/TeMechanicalArmVo.java @@ -0,0 +1,89 @@ +package com.cmvr.device.domain.vo; + +import com.cmvr.common.annotation.Excel; +import com.cmvr.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +@ApiModel("机械臂相关参数") +public class TeMechanicalArmVo extends BaseEntity { + + @Excel(name = "设备id") + @ApiModelProperty("设备id") + private String idDeDeviceRegistration; + + @Excel(name = "工作模式") + @ApiModelProperty("工作模式") + private String workModule; + + @Excel(name = "位置步进") + @ApiModelProperty("位置步进") + private String posStep; + + @Excel(name = "姿态步进") + @ApiModelProperty("姿态步进") + private String postureStep; + + @Excel(name = "关节步进") + @ApiModelProperty("关节步进") + private String jointStep; + + @Excel(name = "关节1") + @ApiModelProperty("关节1") + private String joint1; + + @Excel(name = "关节2") + @ApiModelProperty("关节2") + private String joint2; + + @Excel(name = "关节3") + @ApiModelProperty("关节3") + private String joint3; + + @Excel(name = "关节4") + @ApiModelProperty("关节4") + private String joint4; + + @Excel(name = "关节5") + @ApiModelProperty("关节5") + private String joint5; + + @Excel(name = "关节6") + @ApiModelProperty("关节6") + private String joint6; + + @Excel(name = "x轴") + @ApiModelProperty("x轴") + private String x; + + @Excel(name = "y轴") + @ApiModelProperty("y轴") + private String y; + + @Excel(name = "z轴") + @ApiModelProperty("z轴") + private String z; + + @Excel(name = "rx轴") + @ApiModelProperty("rx轴") + private String rx; + + @Excel(name = "ry轴") + @ApiModelProperty("ry轴") + private String ry; + + @Excel(name = "rz轴") + @ApiModelProperty("rz轴") + private String rz; + + +} diff --git a/cmvr-iot-device/src/main/java/com/cmvr/device/domain/vo/TeMotorVo.java b/cmvr-iot-device/src/main/java/com/cmvr/device/domain/vo/TeMotorVo.java new file mode 100644 index 0000000..e777d48 --- /dev/null +++ b/cmvr-iot-device/src/main/java/com/cmvr/device/domain/vo/TeMotorVo.java @@ -0,0 +1,49 @@ +package com.cmvr.device.domain.vo; + +import com.cmvr.common.annotation.Excel; +import com.cmvr.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@ApiModel("电机相关参数") +public class TeMotorVo extends BaseEntity { + + @Excel(name = "额定功率") + @ApiModelProperty("额定功率") + private String ratedPower; + + @Excel(name = "额定电压") + @ApiModelProperty("额定电压") + private String ratedVoltage; + + @Excel(name = "额定电流") + @ApiModelProperty("额定电流") + private String ratedCurrent; + + @Excel(name = "转速范围") + @ApiModelProperty("转速范围") + private String speedRange; + + @Excel(name = "扭矩") + @ApiModelProperty("扭矩") + private String torque; + + @Excel(name = "编码器分辨率") + @ApiModelProperty("编码器分辨率") + private String encoderResolution; + + @Excel(name = "控制模式") + @ApiModelProperty("控制模式") + private String controlMode; + + @Excel(name = "当前位置") + @ApiModelProperty("当前位置") + private String currentState; + +} diff --git a/cmvr-iot-device/src/main/java/com/cmvr/device/mapper/DeDeviceProfileMapper.java b/cmvr-iot-device/src/main/java/com/cmvr/device/mapper/DeDeviceProfileMapper.java new file mode 100644 index 0000000..755c001 --- /dev/null +++ b/cmvr-iot-device/src/main/java/com/cmvr/device/mapper/DeDeviceProfileMapper.java @@ -0,0 +1,108 @@ +package com.cmvr.device.mapper; + +import java.util.List; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.cmvr.device.domain.DeDeviceProfile; +import com.cmvr.device.domain.vo.ParameterVo; +import com.cmvr.device.domain.vo.ProfileVo; +import com.cmvr.device.domain.vo.TeMechanicalArmVo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.context.annotation.Primary; + +/** + * 设备配置信息Mapper接口 + * + * @author cmvr-iot + * @date 2025-05-09 + */ +@Mapper +public interface DeDeviceProfileMapper extends BaseMapper +{ + /** + * 根据设备id查询当前设备的所有配置信息 + * + * @param id 设备配置信息主键 + * @return 设备配置信息 + */ + public List selectDeDeviceProfileById(String id); + + /** + * 根据id查询参数信息 + * @param id + * @return + */ + public DeDeviceProfile selectProfileById(String id); + + +// 查询所有设备配置列表信息 + public List selectAllProfilesVo(); + + + /** + * 根据设备id和备注查询相关参数信息 + * @param id 设备id + * @param remark 备注 + * @return 返回设备参数对象 + */ + public List selectProfileByIdAndRemark(@Param("id") String id,@Param("remark") String remark); + + + /** + * 根据设备id和备注查询相关参数信息 + * @param id 设备id + * @param remark 备注 + * @return 返回视图对象 + */ + public List selectParameterByIdAndRemark(@Param("id") String id, @Param("remark") String remark); + + + /** + * 根据设备参数id去修改参数默认值 + * @param id 设备id + * @return 结果 + */ + public int updateProfileByIdAndByName(@Param("id") String id, @Param("name") String name, @Param("value") String value); + + /** + * 查询设备配置信息列表 + * + * @param deDeviceProfile 设备配置信息 + * @return 设备配置信息集合 + */ + public List selectDeDeviceProfileList(DeDeviceProfile deDeviceProfile); + + + /** + * 新增设备配置信息 + * + * @param deDeviceProfile 设备配置信息 + * @return 结果 + */ + public int insertDeDeviceProfile(DeDeviceProfile deDeviceProfile); + + /** + * 修改设备配置信息 + * + * @param deDeviceProfile 设备配置信息 + * @return 结果 + */ + public int updateDeDeviceProfile(DeDeviceProfile deDeviceProfile); + + /** + * 删除设备配置信息 + * + * @param id 设备配置信息主键 + * @return 结果 + */ + public int deleteDeDeviceProfileById(String id); + + /** + * 批量删除设备配置信息 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteDeDeviceProfileByIds(String[] ids); +} diff --git a/cmvr-iot-device/src/main/java/com/cmvr/device/mapper/DeDeviceRegistrationMapper.java b/cmvr-iot-device/src/main/java/com/cmvr/device/mapper/DeDeviceRegistrationMapper.java new file mode 100644 index 0000000..68e8938 --- /dev/null +++ b/cmvr-iot-device/src/main/java/com/cmvr/device/mapper/DeDeviceRegistrationMapper.java @@ -0,0 +1,76 @@ +package com.cmvr.device.mapper; + +import java.util.List; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.cmvr.device.domain.DeDeviceRegistration; +import org.apache.ibatis.annotations.Mapper; + +/** + * 设备注册Mapper接口 + * + * @author cmvr-iot + * @date 2025-05-08 + */ +@Mapper +public interface DeDeviceRegistrationMapper extends BaseMapper +{ + /** + * 查询设备注册 + * + * @param id 设备注册主键 + * @return 设备注册 + */ + public DeDeviceRegistration selectDeDeviceRegistrationById(String id); + + + /** + * 查询设备表中所有的设备编号 + * @return 设备编号集合 + */ + public List selectAllDeviceCode(); + + + public String selectDeviceModelById(String id); + + + /** + * 查询设备注册列表 + * + * @param deDeviceRegistration 设备注册 + * @return 设备注册集合 + */ + public List selectDeDeviceRegistrationList(DeDeviceRegistration deDeviceRegistration); + + /** + * 新增设备注册 + * + * @param deDeviceRegistration 设备注册 + * @return 结果 + */ + public int insertDeDeviceRegistration(DeDeviceRegistration deDeviceRegistration); + + /** + * 修改设备注册 + * + * @param deDeviceRegistration 设备注册 + * @return 结果 + */ + public int updateDeDeviceRegistration(DeDeviceRegistration deDeviceRegistration); + + /** + * 删除设备注册 + * + * @param id 设备注册主键 + * @return 结果 + */ + public int deleteDeDeviceRegistrationById(String id); + + /** + * 批量删除设备注册 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteDeDeviceRegistrationByIds(String[] ids); +} diff --git a/cmvr-iot-device/src/main/java/com/cmvr/device/mapper/DeDeviceTerminalConfigMapper.java b/cmvr-iot-device/src/main/java/com/cmvr/device/mapper/DeDeviceTerminalConfigMapper.java new file mode 100644 index 0000000..c9d5da1 --- /dev/null +++ b/cmvr-iot-device/src/main/java/com/cmvr/device/mapper/DeDeviceTerminalConfigMapper.java @@ -0,0 +1,65 @@ +package com.cmvr.device.mapper; + +import java.util.List; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.cmvr.device.domain.DeDeviceTerminalConfig; +import org.apache.ibatis.annotations.Mapper; + +/** + * 设备终端配置Mapper接口 + * + * @author cmvr-iot + * @date 2025-05-08 + */ +@Mapper +public interface DeDeviceTerminalConfigMapper extends BaseMapper +{ + /** + * 查询设备终端配置 + * + * @param id 设备终端配置主键 + * @return 设备终端配置 + */ + public DeDeviceTerminalConfig selectDeDeviceTerminalConfigById(String id); + + /** + * 查询设备终端配置列表 + * + * @param deDeviceTerminalConfig 设备终端配置 + * @return 设备终端配置集合 + */ + public List selectDeDeviceTerminalConfigList(DeDeviceTerminalConfig deDeviceTerminalConfig); + + /** + * 新增设备终端配置 + * + * @param deDeviceTerminalConfig 设备终端配置 + * @return 结果 + */ + public int insertDeDeviceTerminalConfig(DeDeviceTerminalConfig deDeviceTerminalConfig); + + /** + * 修改设备终端配置 + * + * @param deDeviceTerminalConfig 设备终端配置 + * @return 结果 + */ + public int updateDeDeviceTerminalConfig(DeDeviceTerminalConfig deDeviceTerminalConfig); + + /** + * 删除设备终端配置 + * + * @param id 设备终端配置主键 + * @return 结果 + */ + public int deleteDeDeviceTerminalConfigById(String id); + + /** + * 批量删除设备终端配置 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteDeDeviceTerminalConfigByIds(String[] ids); +} diff --git a/cmvr-iot-device/src/main/java/com/cmvr/device/service/IDeDeviceProfileService.java b/cmvr-iot-device/src/main/java/com/cmvr/device/service/IDeDeviceProfileService.java new file mode 100644 index 0000000..ada785c --- /dev/null +++ b/cmvr-iot-device/src/main/java/com/cmvr/device/service/IDeDeviceProfileService.java @@ -0,0 +1,83 @@ +package com.cmvr.device.service; + +import java.util.List; +import com.cmvr.device.domain.DeDeviceProfile; +import com.cmvr.device.domain.DeDeviceRegistration; +import com.cmvr.device.domain.vo.ProfileVo; +import com.cmvr.device.domain.vo.TeMechanicalArmVo; +import org.apache.ibatis.annotations.Param; + +/** + * 设备配置信息Service接口 + * + * @author cmvr-iot + * @date 2025-05-09 + */ +public interface IDeDeviceProfileService +{ + /** + * 根据设备id查询设备配置信息 + * + * @param id 设备id + * @return 设备配置信息 + */ + public List selectDeDeviceProfileById(String id); + + + /** + * 根据设备id和备注查询相关参数信息 + * @param id 设备id + * @param remark 备注 + * @return + */ + public List selectProfileByIdAndRemark(String id,String remark); + + + /** + * 根据设备id和参数名称,修改参数值 + * @param mechanicalArmVo 配置参数信息 + * @return 结果 + */ + public int updateProfileByIdAndByName(TeMechanicalArmVo mechanicalArmVo); + + + /** + * 查询设备配置信息列表 + * + * @param deDeviceProfile 设备配置信息 + * @return 设备配置信息集合 + */ + public List selectDeDeviceProfileList(DeDeviceProfile deDeviceProfile); + + /** + * 新增设备配置信息 + * + * @param deDeviceProfile 设备配置信息 + * @return 结果 + */ + public int insertDeDeviceProfile(List deDeviceProfile); + + /** + * 修改设备配置信息 + * + * @param deDeviceProfiles 设备配置信息 + * @return 结果 + */ + public int updateDeDeviceProfile(List deDeviceProfiles); + + /** + * 批量删除设备配置信息 + * + * @param ids 需要删除的设备配置信息主键集合 + * @return 结果 + */ + public int deleteDeDeviceProfileByIds(String[] ids); + + /** + * 删除设备配置信息信息 + * + * @param id 设备配置信息主键 + * @return 结果 + */ + public int deleteDeDeviceProfileById(String id); +} diff --git a/cmvr-iot-device/src/main/java/com/cmvr/device/service/IDeDeviceRegistrationService.java b/cmvr-iot-device/src/main/java/com/cmvr/device/service/IDeDeviceRegistrationService.java new file mode 100644 index 0000000..283f0fb --- /dev/null +++ b/cmvr-iot-device/src/main/java/com/cmvr/device/service/IDeDeviceRegistrationService.java @@ -0,0 +1,69 @@ +package com.cmvr.device.service; + +import java.util.List; +import com.cmvr.device.domain.DeDeviceRegistration; +import com.cmvr.device.domain.vo.Device; + +/** + * 设备注册Service接口 + * + * @author cmvr-iot + * @date 2025-05-08 + */ +public interface IDeDeviceRegistrationService +{ + /** + * 查询设备注册 + * + * @param id 设备注册主键 + * @return 设备注册 + */ + public DeDeviceRegistration selectDeDeviceRegistrationById(String id); + + /** + * 新增获取到的 + * @param devices 设备列表 + * @return + */ + public int addDeviceList(List devices); + + /** + * 查询设备注册列表 + * + * @param deDeviceRegistration 设备注册 + * @return 设备注册集合 + */ + public List selectDeDeviceRegistrationList(DeDeviceRegistration deDeviceRegistration); + + /** + * 新增设备注册 + * + * @param deDeviceRegistration 设备注册 + * @return 结果 + */ + public int insertDeDeviceRegistration(DeDeviceRegistration deDeviceRegistration); + + /** + * 修改设备注册 + * + * @param deDeviceRegistration 设备注册 + * @return 结果 + */ + public int updateDeDeviceRegistration(DeDeviceRegistration deDeviceRegistration); + + /** + * 批量删除设备注册 + * + * @param ids 需要删除的设备注册主键集合 + * @return 结果 + */ + public int deleteDeDeviceRegistrationByIds(String[] ids); + + /** + * 删除设备注册信息 + * + * @param id 设备注册主键 + * @return 结果 + */ + public int deleteDeDeviceRegistrationById(String id); +} diff --git a/cmvr-iot-device/src/main/java/com/cmvr/device/service/IDeDeviceTerminalConfigService.java b/cmvr-iot-device/src/main/java/com/cmvr/device/service/IDeDeviceTerminalConfigService.java new file mode 100644 index 0000000..83a22b9 --- /dev/null +++ b/cmvr-iot-device/src/main/java/com/cmvr/device/service/IDeDeviceTerminalConfigService.java @@ -0,0 +1,61 @@ +package com.cmvr.device.service; + +import java.util.List; +import com.cmvr.device.domain.DeDeviceTerminalConfig; + +/** + * 设备终端配置Service接口 + * + * @author cmvr-iot + * @date 2025-05-08 + */ +public interface IDeDeviceTerminalConfigService +{ + /** + * 查询设备终端配置 + * + * @param id 设备终端配置主键 + * @return 设备终端配置 + */ + public DeDeviceTerminalConfig selectDeDeviceTerminalConfigById(String id); + + /** + * 查询设备终端配置列表 + * + * @param deDeviceTerminalConfig 设备终端配置 + * @return 设备终端配置集合 + */ + public List selectDeDeviceTerminalConfigList(DeDeviceTerminalConfig deDeviceTerminalConfig); + + /** + * 新增设备终端配置 + * + * @param deDeviceTerminalConfig 设备终端配置 + * @return 结果 + */ + public int insertDeDeviceTerminalConfig(DeDeviceTerminalConfig deDeviceTerminalConfig); + + /** + * 修改设备终端配置 + * + * @param deDeviceTerminalConfig 设备终端配置 + * @return 结果 + */ + public int updateDeDeviceTerminalConfig(DeDeviceTerminalConfig deDeviceTerminalConfig); + + /** + * 批量删除设备终端配置 + * + * @param ids 需要删除的设备终端配置主键集合 + * @return 结果 + */ + public int deleteDeDeviceTerminalConfigByIds(String[] ids); + + /** + * 删除设备终端配置信息 + * + * @param id 设备终端配置主键 + * @return 结果 + */ + public int deleteDeDeviceTerminalConfigById(String id); +} diff --git a/cmvr-iot-device/src/main/java/com/cmvr/device/service/impl/DeDeviceProfileServiceImpl.java b/cmvr-iot-device/src/main/java/com/cmvr/device/service/impl/DeDeviceProfileServiceImpl.java new file mode 100644 index 0000000..c351e14 --- /dev/null +++ b/cmvr-iot-device/src/main/java/com/cmvr/device/service/impl/DeDeviceProfileServiceImpl.java @@ -0,0 +1,176 @@ +package com.cmvr.device.service.impl; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import com.cmvr.common.utils.DateUtils; +import com.cmvr.device.domain.DeDeviceRegistration; +import com.cmvr.device.domain.vo.ParameterVo; +import com.cmvr.device.domain.vo.ProfileVo; +import com.cmvr.device.domain.vo.TeMechanicalArmVo; +import com.cmvr.device.mapper.DeDeviceRegistrationMapper; +import org.apache.commons.collections4.list.PredicatedList; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.cmvr.device.mapper.DeDeviceProfileMapper; +import com.cmvr.device.domain.DeDeviceProfile; +import com.cmvr.device.service.IDeDeviceProfileService; +import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; + +/** + * 设备配置信息Service业务层处理 + * + * @author cmvr-iot + * @date 2025-05-09 + */ +@Service +public class DeDeviceProfileServiceImpl implements IDeDeviceProfileService +{ + @Autowired + private DeDeviceProfileMapper deDeviceProfileMapper; + + @Autowired + private DeDeviceRegistrationMapper deviceRegistrationMapper; + + /** + * 根据设备id查询当前设备设备配置信息 + * + * @param id 设备id + * @return 设备配置信息 + */ + @Override + public List selectDeDeviceProfileById(String id) + { + //根据设备id查询设备配置信息 + DeDeviceProfile deviceProfile=deDeviceProfileMapper.selectProfileById(id); + //根据设备id和备注查询设备配置信息 + List deviceProfiles=deDeviceProfileMapper + .selectProfileByIdAndRemark( + deviceProfile.getIdDeDeviceRegistration(), + deviceProfile.getRemark() + ); + //打印设备配置信息 + System.out.println(deviceProfiles); + //返回设备配置信息 + return deviceProfiles; + + } + + @Override + public List selectProfileByIdAndRemark(String id, String remark) { + return deDeviceProfileMapper.selectProfileByIdAndRemark(id,remark); + } + + + /** + * 根据设备参数id去修改参数默认值 + * @param mechanicalArmVo 配置参数信息 + * @return 结果 + */ + @Override + public int updateProfileByIdAndByName(TeMechanicalArmVo mechanicalArmVo) { + if (mechanicalArmVo == null || StringUtils.isEmpty(mechanicalArmVo.getIdDeDeviceRegistration())) { + return 0; + } + int totalUpdated = 0; + String deviceId = mechanicalArmVo.getIdDeDeviceRegistration(); + // 使用 Map 收集非空属性 + Map fieldMap = new HashMap<>(); + if (mechanicalArmVo.getWorkModule() != null) fieldMap.put("workModule", mechanicalArmVo.getWorkModule()); + if (mechanicalArmVo.getPosStep() != null) fieldMap.put("posStep", mechanicalArmVo.getPosStep()); + if (mechanicalArmVo.getJointStep() != null) fieldMap.put("jointStep", mechanicalArmVo.getJointStep()); + if (mechanicalArmVo.getJoint1() != null) fieldMap.put("joint1", mechanicalArmVo.getJoint1()); + if (mechanicalArmVo.getJoint2() != null) fieldMap.put("joint2", mechanicalArmVo.getJoint2()); + if (mechanicalArmVo.getJoint3() != null) fieldMap.put("joint3", mechanicalArmVo.getJoint3()); + if (mechanicalArmVo.getJoint4() != null) fieldMap.put("joint4", mechanicalArmVo.getJoint4()); + if (mechanicalArmVo.getJoint5() != null) fieldMap.put("joint5", mechanicalArmVo.getJoint5()); + if (mechanicalArmVo.getJoint6() != null) fieldMap.put("joint6", mechanicalArmVo.getJoint6()); + if (mechanicalArmVo.getX() != null) fieldMap.put("x", mechanicalArmVo.getX()); + if (mechanicalArmVo.getY() != null) fieldMap.put("y", mechanicalArmVo.getY()); + if (mechanicalArmVo.getZ() != null) fieldMap.put("z", mechanicalArmVo.getZ()); + if (mechanicalArmVo.getRx() != null) fieldMap.put("rx", mechanicalArmVo.getRx()); + if (mechanicalArmVo.getRy() != null) fieldMap.put("ry", mechanicalArmVo.getRy()); + if (mechanicalArmVo.getRz() != null) fieldMap.put("rz", mechanicalArmVo.getRz()); + // 遍历 Map 执行更新 + for (Map.Entry entry : fieldMap.entrySet()) { + totalUpdated += deDeviceProfileMapper.updateProfileByIdAndByName( + deviceId, entry.getKey(), (String)entry.getValue()); + } + return totalUpdated; + } + + /** + * 查询设备配置信息列表 + * + * @param deDeviceProfile 设备配置信息 + * @return 设备配置信息 + */ + @Override + public List selectDeDeviceProfileList(DeDeviceProfile deDeviceProfile) + { + List profileVoList=deDeviceProfileMapper.selectAllProfilesVo(); + return profileVoList; + } + + /** + * 新增设备配置信息 + * + * @param deDeviceProfile 设备配置信息 + * @return 结果 + */ + @Override + public int insertDeDeviceProfile(List deDeviceProfile) + { + int i=0; + for (DeDeviceProfile profile : deDeviceProfile) { + i=deDeviceProfileMapper.insert(profile); + } + return i; + } + + /** + * 修改设备配置信息 + * + * @param deDeviceProfiles 设备配置信息 + * @return 结果 + */ + @Override + public int updateDeDeviceProfile(List deDeviceProfiles) + { + int i=0; + for (DeDeviceProfile profile : deDeviceProfiles) { + i=deDeviceProfileMapper.updateDeDeviceProfile(profile); + } + return i; + } + + /** + * 批量删除设备配置信息 + * + * @param ids 需要删除的设备配置信息主键 + * @return 结果 + */ + @Override + public int deleteDeDeviceProfileByIds(String[] ids) + { + return deDeviceProfileMapper.deleteDeDeviceProfileByIds(ids); + } + + /** + * 删除设备配置信息信息 + * + * @param id 设备配置信息主键 + * @return 结果 + */ + @Override + public int deleteDeDeviceProfileById(String id) + { + return deDeviceProfileMapper.deleteDeDeviceProfileById(id); + } +} diff --git a/cmvr-iot-device/src/main/java/com/cmvr/device/service/impl/DeDeviceRegistrationServiceImpl.java b/cmvr-iot-device/src/main/java/com/cmvr/device/service/impl/DeDeviceRegistrationServiceImpl.java new file mode 100644 index 0000000..19d076f --- /dev/null +++ b/cmvr-iot-device/src/main/java/com/cmvr/device/service/impl/DeDeviceRegistrationServiceImpl.java @@ -0,0 +1,125 @@ +package com.cmvr.device.service.impl; + +import java.util.List; + +import com.cmvr.common.utils.DateUtils; +import com.cmvr.common.utils.DateUtils; +import com.cmvr.device.domain.DeDeviceProfile; +import com.cmvr.device.domain.vo.Device; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.cmvr.device.mapper.DeDeviceRegistrationMapper; +import com.cmvr.device.domain.DeDeviceRegistration; +import com.cmvr.device.service.IDeDeviceRegistrationService; + +/** + * 设备注册Service业务层处理 + * + * @author cmvr-iot + * @date 2025-05-08 + */ +@Service +public class DeDeviceRegistrationServiceImpl implements IDeDeviceRegistrationService +{ + @Autowired + private DeDeviceRegistrationMapper deDeviceRegistrationMapper; + + /** + * 查询设备注册 + * + * @param id 设备注册主键 + * @return 设备注册 + */ + @Override + public DeDeviceRegistration selectDeDeviceRegistrationById(String id) + { + return deDeviceRegistrationMapper.selectDeDeviceRegistrationById(id); + } + + + @Override + public int addDeviceList(List devices) { + + // 2. 获取数据库中已有设备 + List deviceCodes= deDeviceRegistrationMapper.selectAllDeviceCode(); + + int addedCount = 0; + + for (DeDeviceRegistration edgeDevice : devices) { + if (!deviceCodes.contains(edgeDevice.getDeviceCode())) { + + deDeviceRegistrationMapper.insert(edgeDevice); + addedCount++; + } + } + + return addedCount; + + } + + + + + /** + * 查询设备注册列表 + * + * @param deDeviceRegistration 设备注册 + * @return 设备注册 + */ + @Override + public List selectDeDeviceRegistrationList(DeDeviceRegistration deDeviceRegistration) + { + return deDeviceRegistrationMapper.selectDeDeviceRegistrationList(deDeviceRegistration); + } + + /** + * 新增设备注册 + * + * @param deDeviceRegistration 设备注册 + * @return 结果 + */ + @Override + public int insertDeDeviceRegistration(DeDeviceRegistration deDeviceRegistration) + { + deDeviceRegistration.setCreateTime(DateUtils.getNowDate()); + deDeviceRegistration.setStatus("1"); + return deDeviceRegistrationMapper.insert(deDeviceRegistration); + } + + /** + * 修改设备注册 + * + * @param deDeviceRegistration 设备注册 + * @return 结果 + */ + @Override + public int updateDeDeviceRegistration(DeDeviceRegistration deDeviceRegistration) + { + deDeviceRegistration.setUpdateTime(DateUtils.getNowDate()); + return deDeviceRegistrationMapper.updateDeDeviceRegistration(deDeviceRegistration); + } + + /** + * 批量删除设备注册 + * + * @param ids 需要删除的设备注册主键 + * @return 结果 + */ + @Override + public int deleteDeDeviceRegistrationByIds(String[] ids) + { + return deDeviceRegistrationMapper.deleteDeDeviceRegistrationByIds(ids); + } + + /** + * 删除设备注册信息 + * + * @param id 设备注册主键 + * @return 结果 + */ + @Override + public int deleteDeDeviceRegistrationById(String id) + { + return deDeviceRegistrationMapper.deleteDeDeviceRegistrationById(id); + } +} diff --git a/cmvr-iot-device/src/main/java/com/cmvr/device/service/impl/DeDeviceTerminalConfigServiceImpl.java b/cmvr-iot-device/src/main/java/com/cmvr/device/service/impl/DeDeviceTerminalConfigServiceImpl.java new file mode 100644 index 0000000..a70afae --- /dev/null +++ b/cmvr-iot-device/src/main/java/com/cmvr/device/service/impl/DeDeviceTerminalConfigServiceImpl.java @@ -0,0 +1,98 @@ +package com.cmvr.device.service.impl; + +import java.util.List; +import com.cmvr.common.utils.DateUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Primary; +import org.springframework.stereotype.Service; +import com.cmvr.device.mapper.DeDeviceTerminalConfigMapper; +import com.cmvr.device.domain.DeDeviceTerminalConfig; +import com.cmvr.device.service.IDeDeviceTerminalConfigService; + +/** + * 设备终端配置Service业务层处理 + * + * @author cmvr-iot + * @date 2025-05-08 + */ +@Service +public class DeDeviceTerminalConfigServiceImpl implements IDeDeviceTerminalConfigService +{ + @Autowired + private DeDeviceTerminalConfigMapper deDeviceTerminalConfigMapper; + + /** + * 查询设备终端配置 + * + * @param id 设备终端配置主键 + * @return 设备终端配置 + */ + @Override + public DeDeviceTerminalConfig selectDeDeviceTerminalConfigById(String id) + { + return deDeviceTerminalConfigMapper.selectDeDeviceTerminalConfigById(id); + } + + /** + * 查询设备终端配置列表 + * + * @param deDeviceTerminalConfig 设备终端配置 + * @return 设备终端配置 + */ + @Override + public List selectDeDeviceTerminalConfigList(DeDeviceTerminalConfig deDeviceTerminalConfig) + { + return deDeviceTerminalConfigMapper.selectDeDeviceTerminalConfigList(deDeviceTerminalConfig); + } + + /** + * 新增设备终端配置 + * + * @param deDeviceTerminalConfig 设备终端配置 + * @return 结果 + */ + @Override + public int insertDeDeviceTerminalConfig(DeDeviceTerminalConfig deDeviceTerminalConfig) + { + deDeviceTerminalConfig.setCreateTime(DateUtils.getNowDate()); + deDeviceTerminalConfig.setStatus("1"); + return this.deDeviceTerminalConfigMapper.insert(deDeviceTerminalConfig); + } + + /** + * 修改设备终端配置 + * + * @param deDeviceTerminalConfig 设备终端配置 + * @return 结果 + */ + @Override + public int updateDeDeviceTerminalConfig(DeDeviceTerminalConfig deDeviceTerminalConfig) + { + deDeviceTerminalConfig.setUpdateTime(DateUtils.getNowDate()); + return deDeviceTerminalConfigMapper.updateDeDeviceTerminalConfig(deDeviceTerminalConfig); + } + + /** + * 批量删除设备终端配置 + * + * @param ids 需要删除的设备终端配置主键 + * @return 结果 + */ + @Override + public int deleteDeDeviceTerminalConfigByIds(String[] ids) + { + return deDeviceTerminalConfigMapper.deleteDeDeviceTerminalConfigByIds(ids); + } + + /** + * 删除设备终端配置信息 + * + * @param id 设备终端配置主键 + * @return 结果 + */ + @Override + public int deleteDeDeviceTerminalConfigById(String id) + { + return deDeviceTerminalConfigMapper.deleteDeDeviceTerminalConfigById(id); + } +} diff --git a/cmvr-iot-device/src/main/java/com/cmvr/device/util/VoUtil.java b/cmvr-iot-device/src/main/java/com/cmvr/device/util/VoUtil.java new file mode 100644 index 0000000..84830d6 --- /dev/null +++ b/cmvr-iot-device/src/main/java/com/cmvr/device/util/VoUtil.java @@ -0,0 +1,38 @@ +package com.cmvr.device.util; + +import com.cmvr.device.domain.vo.TeMechanicalArmVo; + +import java.lang.reflect.Field; + +public class VoUtil { + /** + * 获取TeMechanicalArmVo对象中除设备ID外的非空属性名 + * @param vo TeMechanicalArmVo对象 + * @return 非空属性名,如果没有则返回null + */ + public static String getNonNullPropertyName(TeMechanicalArmVo vo) { + if (vo == null) return null; + + try { + for (Field field : TeMechanicalArmVo.class.getDeclaredFields()) { + if ("idDeDeviceRegistration".equals(field.getName())) continue; + + field.setAccessible(true); + Object value = field.get(vo); + + // 排除null和空字符串 + if (value instanceof String) { + if (!((String) value).trim().isEmpty()) { + return field.getName(); + } + } else if (value != null) { + return field.getName(); + } + } + } catch (IllegalAccessException e) { + throw new RuntimeException("获取属性值失败", e); + } + + return null; + } +} \ No newline at end of file diff --git a/cmvr-iot-device/src/main/resources/device/readme b/cmvr-iot-device/src/main/resources/device/readme new file mode 100644 index 0000000..e69de29 diff --git a/cmvr-iot-device/src/main/resources/mapper/device/DeDeviceProfileMapper.xml b/cmvr-iot-device/src/main/resources/mapper/device/DeDeviceProfileMapper.xml new file mode 100644 index 0000000..ddd69f4 --- /dev/null +++ b/cmvr-iot-device/src/main/resources/mapper/device/DeDeviceProfileMapper.xml @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + + + + + + select id, create_by, create_time, update_by, update_time, remark, device_model , id_de_device_terminal_config ,id_de_device_registration, param_name, default_value , param_type from de_device_profile + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + insert into de_device_profile + + id, + create_by, + create_time, + update_by, + update_time, + remark, + device_model, + id_de_device_registration, + param_name, + default_value, + param_type, + + + #{id}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{remark}, + #{deviceModel}, + #{idDeDeviceRegistration}, + #{paramName}, + #{defaultValue}, + #{paramType}, + + + + + update de_device_profile + + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + remark = #{remark}, + id_de_device_registration = #{idDeDeviceRegistration}, + param_name = #{paramName}, + default_value = #{defaultValue}, + param_type = #{paramType}, + + where id = #{id} + + + + + UPDATE de_device_profile set default_value=#{value} + WHERE id_de_device_registration = #{id} AND param_name = #{name} + + + + + + + + delete from de_device_profile where id = #{id} + + + + delete from de_device_profile where id in + + #{id} + + + \ No newline at end of file diff --git a/cmvr-iot-device/src/main/resources/mapper/device/DeDeviceRegistrationMapper.xml b/cmvr-iot-device/src/main/resources/mapper/device/DeDeviceRegistrationMapper.xml new file mode 100644 index 0000000..9c68ee5 --- /dev/null +++ b/cmvr-iot-device/src/main/resources/mapper/device/DeDeviceRegistrationMapper.xml @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + select id, create_by, create_time, update_by, update_time, remake, id_de_device_terminal_config, device_code, device_name, device_model, status from de_device_registration + + + + + + + + + + + + + insert into de_device_registration + + id, + create_by, + create_time, + update_by, + update_time, + remake, + id_de_device_terminal_config, + device_code, + device_name, + device_model, + status, + + + #{id}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{remake}, + #{idDeDeviceTerminalConfig}, + #{deviceCode}, + #{deviceName}, + #{deviceModel}, + #{status}, + + + + + update de_device_registration + + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + remake = #{remake}, + id_de_device_terminal_config = #{idDeDeviceTerminalConfig}, + device_code = #{deviceCode}, + device_name = #{deviceName}, + device_model = #{deviceModel}, + status = #{status}, + + where id = #{id} + + + + delete from de_device_registration where id = #{id} + + + + delete from de_device_registration where id in + + #{id} + + + \ No newline at end of file diff --git a/cmvr-iot-device/src/main/resources/mapper/device/DeDeviceTerminalConfigMapper.xml b/cmvr-iot-device/src/main/resources/mapper/device/DeDeviceTerminalConfigMapper.xml new file mode 100644 index 0000000..90d4ea9 --- /dev/null +++ b/cmvr-iot-device/src/main/resources/mapper/device/DeDeviceTerminalConfigMapper.xml @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + select id, create_by, create_time, update_by, update_time, remake, name, host, port, status, description from de_device_terminal_config + + + + + + + + insert into de_device_terminal_config + + id, + create_by, + create_time, + update_by, + update_time, + remake, + name, + host, + port, + status, + description, + + + #{id}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{remake}, + #{name}, + #{host}, + #{port}, + #{status}, + #{description}, + + + + + update de_device_terminal_config + + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + remake = #{remake}, + name = #{name}, + host = #{host}, + port = #{port}, + status = #{status}, + description = #{description}, + + where id = #{id} + + + + delete from de_device_terminal_config where id = #{id} + + + + delete from de_device_terminal_config where id in + + #{id} + + + \ No newline at end of file diff --git a/cmvr-iot-framework/pom.xml b/cmvr-iot-framework/pom.xml new file mode 100644 index 0000000..f96c9ce --- /dev/null +++ b/cmvr-iot-framework/pom.xml @@ -0,0 +1,75 @@ + + + + cmvr-iot + com.cmvr + 3.8.9 + + 4.0.0 + + cmvr-iot-framework + + + framework框架核心 + + + + + + + org.springframework.boot + spring-boot-starter-web + + + + + org.springframework.boot + spring-boot-starter-aop + + + + + com.alibaba + druid-spring-boot-starter + + + + + pro.fessional + kaptcha + + + servlet-api + javax.servlet + + + + + + + com.github.oshi + oshi-core + + + + + com.cmvr + cmvr-iot-system + + + + + com.baomidou + mybatis-plus-boot-starter + + + + + org.springframework.boot + spring-boot-starter-websocket + + + + diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/aspectj/DataScopeAspect.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/aspectj/DataScopeAspect.java new file mode 100644 index 0000000..4628b50 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/aspectj/DataScopeAspect.java @@ -0,0 +1,184 @@ +package com.cmvr.framework.aspectj; + +import java.util.ArrayList; +import java.util.List; +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; +import org.springframework.stereotype.Component; +import com.cmvr.common.annotation.DataScope; +import com.cmvr.common.constant.UserConstants; +import com.cmvr.common.core.domain.BaseEntity; +import com.cmvr.common.core.domain.entity.SysRole; +import com.cmvr.common.core.domain.entity.SysUser; +import com.cmvr.common.core.domain.model.LoginUser; +import com.cmvr.common.core.text.Convert; +import com.cmvr.common.utils.SecurityUtils; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.framework.security.context.PermissionContextHolder; + +/** + * 数据过滤处理 + * + * @author cmvr-iot + */ +@Aspect +@Component +public class DataScopeAspect +{ + /** + * 全部数据权限 + */ + public static final String DATA_SCOPE_ALL = "1"; + + /** + * 自定数据权限 + */ + public static final String DATA_SCOPE_CUSTOM = "2"; + + /** + * 部门数据权限 + */ + public static final String DATA_SCOPE_DEPT = "3"; + + /** + * 部门及以下数据权限 + */ + public static final String DATA_SCOPE_DEPT_AND_CHILD = "4"; + + /** + * 仅本人数据权限 + */ + public static final String DATA_SCOPE_SELF = "5"; + + /** + * 数据权限过滤关键字 + */ + public static final String DATA_SCOPE = "dataScope"; + + @Before("@annotation(controllerDataScope)") + public void doBefore(JoinPoint point, DataScope controllerDataScope) throws Throwable + { + clearDataScope(point); + handleDataScope(point, controllerDataScope); + } + + protected void handleDataScope(final JoinPoint joinPoint, DataScope controllerDataScope) + { + // 获取当前的用户 + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (StringUtils.isNotNull(loginUser)) + { + SysUser currentUser = loginUser.getUser(); + // 如果是超级管理员,则不过滤数据 + if (StringUtils.isNotNull(currentUser) && !currentUser.isAdmin()) + { + String permission = StringUtils.defaultIfEmpty(controllerDataScope.permission(), PermissionContextHolder.getContext()); + dataScopeFilter(joinPoint, currentUser, controllerDataScope.deptAlias(), controllerDataScope.userAlias(), permission); + } + } + } + + /** + * 数据范围过滤 + * + * @param joinPoint 切点 + * @param user 用户 + * @param deptAlias 部门别名 + * @param userAlias 用户别名 + * @param permission 权限字符 + */ + public static void dataScopeFilter(JoinPoint joinPoint, SysUser user, String deptAlias, String userAlias, String permission) + { + StringBuilder sqlString = new StringBuilder(); + List conditions = new ArrayList(); + List scopeCustomIds = new ArrayList(); + user.getRoles().forEach(role -> { + if (DATA_SCOPE_CUSTOM.equals(role.getDataScope()) && StringUtils.equals(role.getStatus(), UserConstants.ROLE_NORMAL) && StringUtils.containsAny(role.getPermissions(), Convert.toStrArray(permission))) + { + scopeCustomIds.add(Convert.toStr(role.getRoleId())); + } + }); + + for (SysRole role : user.getRoles()) + { + String dataScope = role.getDataScope(); + if (conditions.contains(dataScope) || StringUtils.equals(role.getStatus(), UserConstants.ROLE_DISABLE)) + { + continue; + } + if (!StringUtils.containsAny(role.getPermissions(), Convert.toStrArray(permission))) + { + continue; + } + if (DATA_SCOPE_ALL.equals(dataScope)) + { + sqlString = new StringBuilder(); + conditions.add(dataScope); + break; + } + else if (DATA_SCOPE_CUSTOM.equals(dataScope)) + { + if (scopeCustomIds.size() > 1) + { + // 多个自定数据权限使用in查询,避免多次拼接。 + sqlString.append(StringUtils.format(" OR {}.dept_id IN ( SELECT dept_id FROM sys_role_dept WHERE role_id in ({}) ) ", deptAlias, String.join(",", scopeCustomIds))); + } + else + { + sqlString.append(StringUtils.format(" OR {}.dept_id IN ( SELECT dept_id FROM sys_role_dept WHERE role_id = {} ) ", deptAlias, role.getRoleId())); + } + } + else if (DATA_SCOPE_DEPT.equals(dataScope)) + { + sqlString.append(StringUtils.format(" OR {}.dept_id = {} ", deptAlias, user.getDeptId())); + } + else if (DATA_SCOPE_DEPT_AND_CHILD.equals(dataScope)) + { + sqlString.append(StringUtils.format(" OR {}.dept_id IN ( SELECT dept_id FROM sys_dept WHERE dept_id = {} or find_in_set( {} , ancestors ) )", deptAlias, user.getDeptId(), user.getDeptId())); + } + else if (DATA_SCOPE_SELF.equals(dataScope)) + { + if (StringUtils.isNotBlank(userAlias)) + { + sqlString.append(StringUtils.format(" OR {}.user_id = {} ", userAlias, user.getUserId())); + } + else + { + // 数据权限为仅本人且没有userAlias别名不查询任何数据 + sqlString.append(StringUtils.format(" OR {}.dept_id = 0 ", deptAlias)); + } + } + conditions.add(dataScope); + } + + // 角色都不包含传递过来的权限字符,这个时候sqlString也会为空,所以要限制一下,不查询任何数据 + if (StringUtils.isEmpty(conditions)) + { + sqlString.append(StringUtils.format(" OR {}.dept_id = 0 ", deptAlias)); + } + + if (StringUtils.isNotBlank(sqlString.toString())) + { + Object params = joinPoint.getArgs()[0]; + if (StringUtils.isNotNull(params) && params instanceof BaseEntity) + { + BaseEntity baseEntity = (BaseEntity) params; + baseEntity.getParams().put(DATA_SCOPE, " AND (" + sqlString.substring(4) + ")"); + } + } + } + + /** + * 拼接权限sql前先清空params.dataScope参数防止注入 + */ + private void clearDataScope(final JoinPoint joinPoint) + { + Object params = joinPoint.getArgs()[0]; + if (StringUtils.isNotNull(params) && params instanceof BaseEntity) + { + BaseEntity baseEntity = (BaseEntity) params; + baseEntity.getParams().put(DATA_SCOPE, ""); + } + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/aspectj/DataSourceAspect.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/aspectj/DataSourceAspect.java new file mode 100644 index 0000000..ac8ab1a --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/aspectj/DataSourceAspect.java @@ -0,0 +1,72 @@ +package com.cmvr.framework.aspectj; + +import java.util.Objects; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Pointcut; +import org.aspectj.lang.reflect.MethodSignature; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.core.annotation.AnnotationUtils; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; +import com.cmvr.common.annotation.DataSource; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.framework.datasource.DynamicDataSourceContextHolder; + +/** + * 多数据源处理 + * + * @author cmvr-iot + */ +@Aspect +@Order(1) +@Component +public class DataSourceAspect +{ + protected Logger logger = LoggerFactory.getLogger(getClass()); + + @Pointcut("@annotation(com.cmvr.common.annotation.DataSource)" + + "|| @within(com.cmvr.common.annotation.DataSource)") + public void dsPointCut() + { + + } + + @Around("dsPointCut()") + public Object around(ProceedingJoinPoint point) throws Throwable + { + DataSource dataSource = getDataSource(point); + + if (StringUtils.isNotNull(dataSource)) + { + DynamicDataSourceContextHolder.setDataSourceType(dataSource.value().name()); + } + + try + { + return point.proceed(); + } + finally + { + // 销毁数据源 在执行方法之后 + DynamicDataSourceContextHolder.clearDataSourceType(); + } + } + + /** + * 获取需要切换的数据源 + */ + public DataSource getDataSource(ProceedingJoinPoint point) + { + MethodSignature signature = (MethodSignature) point.getSignature(); + DataSource dataSource = AnnotationUtils.findAnnotation(signature.getMethod(), DataSource.class); + if (Objects.nonNull(dataSource)) + { + return dataSource; + } + + return AnnotationUtils.findAnnotation(signature.getDeclaringType(), DataSource.class); + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/aspectj/LogAspect.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/aspectj/LogAspect.java new file mode 100644 index 0000000..48336d2 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/aspectj/LogAspect.java @@ -0,0 +1,254 @@ +package com.cmvr.framework.aspectj; + +import java.util.Collection; +import java.util.Map; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.lang3.ArrayUtils; +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.annotation.AfterReturning; +import org.aspectj.lang.annotation.AfterThrowing; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.core.NamedThreadLocal; +import org.springframework.stereotype.Component; +import org.springframework.validation.BindingResult; +import org.springframework.web.multipart.MultipartFile; +import com.alibaba.fastjson2.JSON; +import com.cmvr.common.annotation.Log; +import com.cmvr.common.core.domain.entity.SysUser; +import com.cmvr.common.core.domain.model.LoginUser; +import com.cmvr.common.enums.BusinessStatus; +import com.cmvr.common.enums.HttpMethod; +import com.cmvr.common.filter.PropertyPreExcludeFilter; +import com.cmvr.common.utils.SecurityUtils; +import com.cmvr.common.utils.ServletUtils; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.common.utils.ip.IpUtils; +import com.cmvr.framework.manager.AsyncManager; +import com.cmvr.framework.manager.factory.AsyncFactory; +import com.cmvr.system.domain.SysOperLog; + +/** + * 操作日志记录处理 + * + * @author cmvr-iot + */ +@Aspect +@Component +public class LogAspect +{ + private static final Logger log = LoggerFactory.getLogger(LogAspect.class); + + /** 排除敏感属性字段 */ + public static final String[] EXCLUDE_PROPERTIES = { "password", "oldPassword", "newPassword", "confirmPassword" }; + + /** 计算操作消耗时间 */ + private static final ThreadLocal TIME_THREADLOCAL = new NamedThreadLocal("Cost Time"); + + /** + * 处理请求前执行 + */ + @Before(value = "@annotation(controllerLog)") + public void boBefore(JoinPoint joinPoint, Log controllerLog) + { + TIME_THREADLOCAL.set(System.currentTimeMillis()); + } + + /** + * 处理完请求后执行 + * + * @param joinPoint 切点 + */ + @AfterReturning(pointcut = "@annotation(controllerLog)", returning = "jsonResult") + public void doAfterReturning(JoinPoint joinPoint, Log controllerLog, Object jsonResult) + { + handleLog(joinPoint, controllerLog, null, jsonResult); + } + + /** + * 拦截异常操作 + * + * @param joinPoint 切点 + * @param e 异常 + */ + @AfterThrowing(value = "@annotation(controllerLog)", throwing = "e") + public void doAfterThrowing(JoinPoint joinPoint, Log controllerLog, Exception e) + { + handleLog(joinPoint, controllerLog, e, null); + } + + protected void handleLog(final JoinPoint joinPoint, Log controllerLog, final Exception e, Object jsonResult) + { + try + { + // 获取当前的用户 + LoginUser loginUser = SecurityUtils.getLoginUser(); + + // *========数据库日志=========*// + SysOperLog operLog = new SysOperLog(); + operLog.setStatus(BusinessStatus.SUCCESS.ordinal()); + // 请求的地址 + String ip = IpUtils.getIpAddr(); + operLog.setOperIp(ip); + operLog.setOperUrl(StringUtils.substring(ServletUtils.getRequest().getRequestURI(), 0, 255)); + if (loginUser != null) + { + operLog.setOperName(loginUser.getUsername()); + SysUser currentUser = loginUser.getUser(); + if (StringUtils.isNotNull(currentUser) && StringUtils.isNotNull(currentUser.getDept())) + { + operLog.setDeptName(currentUser.getDept().getDeptName()); + } + } + + if (e != null) + { + operLog.setStatus(BusinessStatus.FAIL.ordinal()); + operLog.setErrorMsg(StringUtils.substring(e.getMessage(), 0, 2000)); + } + // 设置方法名称 + String className = joinPoint.getTarget().getClass().getName(); + String methodName = joinPoint.getSignature().getName(); + operLog.setMethod(className + "." + methodName + "()"); + // 设置请求方式 + operLog.setRequestMethod(ServletUtils.getRequest().getMethod()); + // 处理设置注解上的参数 + getControllerMethodDescription(joinPoint, controllerLog, operLog, jsonResult); + // 设置消耗时间 + operLog.setCostTime(System.currentTimeMillis() - TIME_THREADLOCAL.get()); + // 保存数据库 + AsyncManager.me().execute(AsyncFactory.recordOper(operLog)); + } + catch (Exception exp) + { + // 记录本地异常日志 + log.error("异常信息:{}", exp.getMessage()); + exp.printStackTrace(); + } + finally + { + TIME_THREADLOCAL.remove(); + } + } + + /** + * 获取注解中对方法的描述信息 用于Controller层注解 + * + * @param log 日志 + * @param operLog 操作日志 + * @throws Exception + */ + public void getControllerMethodDescription(JoinPoint joinPoint, Log log, SysOperLog operLog, Object jsonResult) throws Exception + { + // 设置action动作 + operLog.setBusinessType(log.businessType().ordinal()); + // 设置标题 + operLog.setTitle(log.title()); + // 设置操作人类别 + operLog.setOperatorType(log.operatorType().ordinal()); + // 是否需要保存request,参数和值 + if (log.isSaveRequestData()) + { + // 获取参数的信息,传入到数据库中。 + setRequestValue(joinPoint, operLog, log.excludeParamNames()); + } + // 是否需要保存response,参数和值 + if (log.isSaveResponseData() && StringUtils.isNotNull(jsonResult)) + { + operLog.setJsonResult(StringUtils.substring(JSON.toJSONString(jsonResult), 0, 2000)); + } + } + + /** + * 获取请求的参数,放到log中 + * + * @param operLog 操作日志 + * @throws Exception 异常 + */ + private void setRequestValue(JoinPoint joinPoint, SysOperLog operLog, String[] excludeParamNames) throws Exception + { + Map paramsMap = ServletUtils.getParamMap(ServletUtils.getRequest()); + String requestMethod = operLog.getRequestMethod(); + if (StringUtils.isEmpty(paramsMap) && StringUtils.equalsAny(requestMethod, HttpMethod.PUT.name(), HttpMethod.POST.name(), HttpMethod.DELETE.name())) + { + String params = argsArrayToString(joinPoint.getArgs(), excludeParamNames); + operLog.setOperParam(StringUtils.substring(params, 0, 2000)); + } + else + { + operLog.setOperParam(StringUtils.substring(JSON.toJSONString(paramsMap, excludePropertyPreFilter(excludeParamNames)), 0, 2000)); + } + } + + /** + * 参数拼装 + */ + private String argsArrayToString(Object[] paramsArray, String[] excludeParamNames) + { + String params = ""; + if (paramsArray != null && paramsArray.length > 0) + { + for (Object o : paramsArray) + { + if (StringUtils.isNotNull(o) && !isFilterObject(o)) + { + try + { + String jsonObj = JSON.toJSONString(o, excludePropertyPreFilter(excludeParamNames)); + params += jsonObj.toString() + " "; + } + catch (Exception e) + { + } + } + } + } + return params.trim(); + } + + /** + * 忽略敏感属性 + */ + public PropertyPreExcludeFilter excludePropertyPreFilter(String[] excludeParamNames) + { + return new PropertyPreExcludeFilter().addExcludes(ArrayUtils.addAll(EXCLUDE_PROPERTIES, excludeParamNames)); + } + + /** + * 判断是否需要过滤的对象。 + * + * @param o 对象信息。 + * @return 如果是需要过滤的对象,则返回true;否则返回false。 + */ + @SuppressWarnings("rawtypes") + public boolean isFilterObject(final Object o) + { + Class clazz = o.getClass(); + if (clazz.isArray()) + { + return clazz.getComponentType().isAssignableFrom(MultipartFile.class); + } + else if (Collection.class.isAssignableFrom(clazz)) + { + Collection collection = (Collection) o; + for (Object value : collection) + { + return value instanceof MultipartFile; + } + } + else if (Map.class.isAssignableFrom(clazz)) + { + Map map = (Map) o; + for (Object value : map.entrySet()) + { + Map.Entry entry = (Map.Entry) value; + return entry.getValue() instanceof MultipartFile; + } + } + return o instanceof MultipartFile || o instanceof HttpServletRequest || o instanceof HttpServletResponse + || o instanceof BindingResult; + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/aspectj/RateLimiterAspect.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/aspectj/RateLimiterAspect.java new file mode 100644 index 0000000..5f1eda0 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/aspectj/RateLimiterAspect.java @@ -0,0 +1,89 @@ +package com.cmvr.framework.aspectj; + +import java.lang.reflect.Method; +import java.util.Collections; +import java.util.List; +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; +import org.aspectj.lang.reflect.MethodSignature; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.script.RedisScript; +import org.springframework.stereotype.Component; +import com.cmvr.common.annotation.RateLimiter; +import com.cmvr.common.enums.LimitType; +import com.cmvr.common.exception.ServiceException; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.common.utils.ip.IpUtils; + +/** + * 限流处理 + * + * @author cmvr-iot + */ +@Aspect +@Component +public class RateLimiterAspect +{ + private static final Logger log = LoggerFactory.getLogger(RateLimiterAspect.class); + + private RedisTemplate redisTemplate; + + private RedisScript limitScript; + + @Autowired + public void setRedisTemplate1(RedisTemplate redisTemplate) + { + this.redisTemplate = redisTemplate; + } + + @Autowired + public void setLimitScript(RedisScript limitScript) + { + this.limitScript = limitScript; + } + + @Before("@annotation(rateLimiter)") + public void doBefore(JoinPoint point, RateLimiter rateLimiter) throws Throwable + { + int time = rateLimiter.time(); + int count = rateLimiter.count(); + + String combineKey = getCombineKey(rateLimiter, point); + List keys = Collections.singletonList(combineKey); + try + { + Long number = redisTemplate.execute(limitScript, keys, count, time); + if (StringUtils.isNull(number) || number.intValue() > count) + { + throw new ServiceException("访问过于频繁,请稍候再试"); + } + log.info("限制请求'{}',当前请求'{}',缓存key'{}'", count, number.intValue(), combineKey); + } + catch (ServiceException e) + { + throw e; + } + catch (Exception e) + { + throw new RuntimeException("服务器限流异常,请稍候再试"); + } + } + + public String getCombineKey(RateLimiter rateLimiter, JoinPoint point) + { + StringBuffer stringBuffer = new StringBuffer(rateLimiter.key()); + if (rateLimiter.limitType() == LimitType.IP) + { + stringBuffer.append(IpUtils.getIpAddr()).append("-"); + } + MethodSignature signature = (MethodSignature) point.getSignature(); + Method method = signature.getMethod(); + Class targetClass = method.getDeclaringClass(); + stringBuffer.append(targetClass.getName()).append("-").append(method.getName()); + return stringBuffer.toString(); + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/ApplicationConfig.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/ApplicationConfig.java new file mode 100644 index 0000000..64ed1b0 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/ApplicationConfig.java @@ -0,0 +1,30 @@ +package com.cmvr.framework.config; + +import java.util.TimeZone; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.EnableAspectJAutoProxy; + +/** + * 程序注解配置 + * + * @author cmvr-iot + */ +@Configuration +// 表示通过aop框架暴露该代理对象,AopContext能够访问 +@EnableAspectJAutoProxy(exposeProxy = true) +// 指定要扫描的Mapper类的包的路径 +@MapperScan("com.cmvr.**.mapper") +public class ApplicationConfig +{ + /** + * 时区配置 + */ + @Bean + public Jackson2ObjectMapperBuilderCustomizer jacksonObjectMapperCustomization() + { + return jacksonObjectMapperBuilder -> jacksonObjectMapperBuilder.timeZone(TimeZone.getDefault()); + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/CaptchaConfig.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/CaptchaConfig.java new file mode 100644 index 0000000..500b9f3 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/CaptchaConfig.java @@ -0,0 +1,83 @@ +package com.cmvr.framework.config; + +import java.util.Properties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import com.google.code.kaptcha.impl.DefaultKaptcha; +import com.google.code.kaptcha.util.Config; +import static com.google.code.kaptcha.Constants.*; + +/** + * 验证码配置 + * + * @author cmvr-iot + */ +@Configuration +public class CaptchaConfig +{ + @Bean(name = "captchaProducer") + public DefaultKaptcha getKaptchaBean() + { + DefaultKaptcha defaultKaptcha = new DefaultKaptcha(); + Properties properties = new Properties(); + // 是否有边框 默认为true 我们可以自己设置yes,no + properties.setProperty(KAPTCHA_BORDER, "yes"); + // 验证码文本字符颜色 默认为Color.BLACK + properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_COLOR, "black"); + // 验证码图片宽度 默认为200 + properties.setProperty(KAPTCHA_IMAGE_WIDTH, "160"); + // 验证码图片高度 默认为50 + properties.setProperty(KAPTCHA_IMAGE_HEIGHT, "60"); + // 验证码文本字符大小 默认为40 + properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_SIZE, "38"); + // KAPTCHA_SESSION_KEY + properties.setProperty(KAPTCHA_SESSION_CONFIG_KEY, "kaptchaCode"); + // 验证码文本字符长度 默认为5 + properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, "4"); + // 验证码文本字体样式 默认为new Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize) + properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_NAMES, "Arial,Courier"); + // 图片样式 水纹com.google.code.kaptcha.impl.WaterRipple 鱼眼com.google.code.kaptcha.impl.FishEyeGimpy 阴影com.google.code.kaptcha.impl.ShadowGimpy + properties.setProperty(KAPTCHA_OBSCURIFICATOR_IMPL, "com.google.code.kaptcha.impl.ShadowGimpy"); + Config config = new Config(properties); + defaultKaptcha.setConfig(config); + return defaultKaptcha; + } + + @Bean(name = "captchaProducerMath") + public DefaultKaptcha getKaptchaBeanMath() + { + DefaultKaptcha defaultKaptcha = new DefaultKaptcha(); + Properties properties = new Properties(); + // 是否有边框 默认为true 我们可以自己设置yes,no + properties.setProperty(KAPTCHA_BORDER, "yes"); + // 边框颜色 默认为Color.BLACK + properties.setProperty(KAPTCHA_BORDER_COLOR, "105,179,90"); + // 验证码文本字符颜色 默认为Color.BLACK + properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_COLOR, "blue"); + // 验证码图片宽度 默认为200 + properties.setProperty(KAPTCHA_IMAGE_WIDTH, "160"); + // 验证码图片高度 默认为50 + properties.setProperty(KAPTCHA_IMAGE_HEIGHT, "60"); + // 验证码文本字符大小 默认为40 + properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_SIZE, "35"); + // KAPTCHA_SESSION_KEY + properties.setProperty(KAPTCHA_SESSION_CONFIG_KEY, "kaptchaCodeMath"); + // 验证码文本生成器 + properties.setProperty(KAPTCHA_TEXTPRODUCER_IMPL, "com.cmvr.framework.config.KaptchaTextCreator"); + // 验证码文本字符间距 默认为2 + properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_SPACE, "3"); + // 验证码文本字符长度 默认为5 + properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, "6"); + // 验证码文本字体样式 默认为new Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize) + properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_NAMES, "Arial,Courier"); + // 验证码噪点颜色 默认为Color.BLACK + properties.setProperty(KAPTCHA_NOISE_COLOR, "white"); + // 干扰实现类 + properties.setProperty(KAPTCHA_NOISE_IMPL, "com.google.code.kaptcha.impl.NoNoise"); + // 图片样式 水纹com.google.code.kaptcha.impl.WaterRipple 鱼眼com.google.code.kaptcha.impl.FishEyeGimpy 阴影com.google.code.kaptcha.impl.ShadowGimpy + properties.setProperty(KAPTCHA_OBSCURIFICATOR_IMPL, "com.google.code.kaptcha.impl.ShadowGimpy"); + Config config = new Config(properties); + defaultKaptcha.setConfig(config); + return defaultKaptcha; + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/DruidConfig.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/DruidConfig.java new file mode 100644 index 0000000..9eb1799 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/DruidConfig.java @@ -0,0 +1,126 @@ +package com.cmvr.framework.config; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.sql.DataSource; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.web.servlet.FilterRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import com.alibaba.druid.pool.DruidDataSource; +import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder; +import com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties; +import com.alibaba.druid.util.Utils; +import com.cmvr.common.enums.DataSourceType; +import com.cmvr.common.utils.spring.SpringUtils; +import com.cmvr.framework.config.properties.DruidProperties; +import com.cmvr.framework.datasource.DynamicDataSource; + +/** + * druid 配置多数据源 + * + * @author cmvr-iot + */ +@Configuration +public class DruidConfig +{ + @Bean + @ConfigurationProperties("spring.datasource.druid.master") + public DataSource masterDataSource(DruidProperties druidProperties) + { + DruidDataSource dataSource = DruidDataSourceBuilder.create().build(); + return druidProperties.dataSource(dataSource); + } + + @Bean + @ConfigurationProperties("spring.datasource.druid.slave") + @ConditionalOnProperty(prefix = "spring.datasource.druid.slave", name = "enabled", havingValue = "true") + public DataSource slaveDataSource(DruidProperties druidProperties) + { + DruidDataSource dataSource = DruidDataSourceBuilder.create().build(); + return druidProperties.dataSource(dataSource); + } + + @Bean(name = "dynamicDataSource") + @Primary + public DynamicDataSource dataSource(DataSource masterDataSource) + { + Map targetDataSources = new HashMap<>(); + targetDataSources.put(DataSourceType.MASTER.name(), masterDataSource); + setDataSource(targetDataSources, DataSourceType.SLAVE.name(), "slaveDataSource"); + return new DynamicDataSource(masterDataSource, targetDataSources); + } + + /** + * 设置数据源 + * + * @param targetDataSources 备选数据源集合 + * @param sourceName 数据源名称 + * @param beanName bean名称 + */ + public void setDataSource(Map targetDataSources, String sourceName, String beanName) + { + try + { + DataSource dataSource = SpringUtils.getBean(beanName); + targetDataSources.put(sourceName, dataSource); + } + catch (Exception e) + { + } + } + + /** + * 去除监控页面底部的广告 + */ + @SuppressWarnings({ "rawtypes", "unchecked" }) + @Bean + @ConditionalOnProperty(name = "spring.datasource.druid.statViewServlet.enabled", havingValue = "true") + public FilterRegistrationBean removeDruidFilterRegistrationBean(DruidStatProperties properties) + { + // 获取web监控页面的参数 + DruidStatProperties.StatViewServlet config = properties.getStatViewServlet(); + // 提取common.js的配置路径 + String pattern = config.getUrlPattern() != null ? config.getUrlPattern() : "/druid/*"; + String commonJsPattern = pattern.replaceAll("\\*", "js/common.js"); + final String filePath = "support/http/resources/js/common.js"; + // 创建filter进行过滤 + Filter filter = new Filter() + { + @Override + public void init(javax.servlet.FilterConfig filterConfig) throws ServletException + { + } + @Override + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) + throws IOException, ServletException + { + chain.doFilter(request, response); + // 重置缓冲区,响应头不会被重置 + response.resetBuffer(); + // 获取common.js + String text = Utils.readFromResource(filePath); + // 正则替换banner, 除去底部的广告信息 + text = text.replaceAll("
", ""); + text = text.replaceAll("powered.*?shrek.wang", ""); + response.getWriter().write(text); + } + @Override + public void destroy() + { + } + }; + FilterRegistrationBean registrationBean = new FilterRegistrationBean(); + registrationBean.setFilter(filter); + registrationBean.addUrlPatterns(commonJsPattern); + return registrationBean; + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/FastJson2JsonRedisSerializer.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/FastJson2JsonRedisSerializer.java new file mode 100644 index 0000000..7545f3f --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/FastJson2JsonRedisSerializer.java @@ -0,0 +1,52 @@ +package com.cmvr.framework.config; + +import java.nio.charset.Charset; +import org.springframework.data.redis.serializer.RedisSerializer; +import org.springframework.data.redis.serializer.SerializationException; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONReader; +import com.alibaba.fastjson2.JSONWriter; +import com.alibaba.fastjson2.filter.Filter; +import com.cmvr.common.constant.Constants; + +/** + * Redis使用FastJson序列化 + * + * @author cmvr-iot + */ +public class FastJson2JsonRedisSerializer implements RedisSerializer +{ + public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8"); + + static final Filter AUTO_TYPE_FILTER = JSONReader.autoTypeFilter(Constants.JSON_WHITELIST_STR); + + private Class clazz; + + public FastJson2JsonRedisSerializer(Class clazz) + { + super(); + this.clazz = clazz; + } + + @Override + public byte[] serialize(T t) throws SerializationException + { + if (t == null) + { + return new byte[0]; + } + return JSON.toJSONString(t, JSONWriter.Feature.WriteClassName).getBytes(DEFAULT_CHARSET); + } + + @Override + public T deserialize(byte[] bytes) throws SerializationException + { + if (bytes == null || bytes.length <= 0) + { + return null; + } + String str = new String(bytes, DEFAULT_CHARSET); + + return JSON.parseObject(str, clazz, AUTO_TYPE_FILTER); + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/FilterConfig.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/FilterConfig.java new file mode 100644 index 0000000..42ad640 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/FilterConfig.java @@ -0,0 +1,58 @@ +package com.cmvr.framework.config; + +import java.util.HashMap; +import java.util.Map; +import javax.servlet.DispatcherType; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.web.servlet.FilterRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import com.cmvr.common.filter.RepeatableFilter; +import com.cmvr.common.filter.XssFilter; +import com.cmvr.common.utils.StringUtils; + +/** + * Filter配置 + * + * @author cmvr-iot + */ +@Configuration +public class FilterConfig +{ + @Value("${xss.excludes}") + private String excludes; + + @Value("${xss.urlPatterns}") + private String urlPatterns; + + @SuppressWarnings({ "rawtypes", "unchecked" }) + @Bean + @ConditionalOnProperty(value = "xss.enabled", havingValue = "true") + public FilterRegistrationBean xssFilterRegistration() + { + FilterRegistrationBean registration = new FilterRegistrationBean(); + registration.setDispatcherTypes(DispatcherType.REQUEST); + registration.setFilter(new XssFilter()); + registration.addUrlPatterns(StringUtils.split(urlPatterns, ",")); + registration.setName("xssFilter"); + registration.setOrder(FilterRegistrationBean.HIGHEST_PRECEDENCE); + Map initParameters = new HashMap(); + initParameters.put("excludes", excludes); + registration.setInitParameters(initParameters); + return registration; + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) + @Bean + public FilterRegistrationBean someFilterRegistration() + { + FilterRegistrationBean registration = new FilterRegistrationBean(); + registration.setFilter(new RepeatableFilter()); + registration.addUrlPatterns("/*"); + registration.setName("repeatableFilter"); + registration.setOrder(FilterRegistrationBean.LOWEST_PRECEDENCE); + return registration; + } + +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/I18nConfig.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/I18nConfig.java new file mode 100644 index 0000000..c9ca137 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/I18nConfig.java @@ -0,0 +1,43 @@ +package com.cmvr.framework.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.LocaleResolver; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; +import org.springframework.web.servlet.i18n.LocaleChangeInterceptor; +import org.springframework.web.servlet.i18n.SessionLocaleResolver; +import com.cmvr.common.constant.Constants; + +/** + * 资源文件配置加载 + * + * @author cmvr-iot + */ +@Configuration +public class I18nConfig implements WebMvcConfigurer +{ + @Bean + public LocaleResolver localeResolver() + { + SessionLocaleResolver slr = new SessionLocaleResolver(); + // 默认语言 + slr.setDefaultLocale(Constants.DEFAULT_LOCALE); + return slr; + } + + @Bean + public LocaleChangeInterceptor localeChangeInterceptor() + { + LocaleChangeInterceptor lci = new LocaleChangeInterceptor(); + // 参数名 + lci.setParamName("lang"); + return lci; + } + + @Override + public void addInterceptors(InterceptorRegistry registry) + { + registry.addInterceptor(localeChangeInterceptor()); + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/KaptchaTextCreator.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/KaptchaTextCreator.java new file mode 100644 index 0000000..8ad5729 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/KaptchaTextCreator.java @@ -0,0 +1,68 @@ +package com.cmvr.framework.config; + +import java.util.Random; +import com.google.code.kaptcha.text.impl.DefaultTextCreator; + +/** + * 验证码文本生成器 + * + * @author cmvr-iot + */ +public class KaptchaTextCreator extends DefaultTextCreator +{ + private static final String[] CNUMBERS = "0,1,2,3,4,5,6,7,8,9,10".split(","); + + @Override + public String getText() + { + Integer result = 0; + Random random = new Random(); + int x = random.nextInt(10); + int y = random.nextInt(10); + StringBuilder suChinese = new StringBuilder(); + int randomoperands = random.nextInt(3); + if (randomoperands == 0) + { + result = x * y; + suChinese.append(CNUMBERS[x]); + suChinese.append("*"); + suChinese.append(CNUMBERS[y]); + } + else if (randomoperands == 1) + { + if ((x != 0) && y % x == 0) + { + result = y / x; + suChinese.append(CNUMBERS[y]); + suChinese.append("/"); + suChinese.append(CNUMBERS[x]); + } + else + { + result = x + y; + suChinese.append(CNUMBERS[x]); + suChinese.append("+"); + suChinese.append(CNUMBERS[y]); + } + } + else + { + if (x >= y) + { + result = x - y; + suChinese.append(CNUMBERS[x]); + suChinese.append("-"); + suChinese.append(CNUMBERS[y]); + } + else + { + result = y - x; + suChinese.append(CNUMBERS[y]); + suChinese.append("-"); + suChinese.append(CNUMBERS[x]); + } + } + suChinese.append("=?@" + result); + return suChinese.toString(); + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/MybatisPlusConfig.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/MybatisPlusConfig.java new file mode 100644 index 0000000..e5f2b95 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/MybatisPlusConfig.java @@ -0,0 +1,57 @@ +package com.cmvr.framework.config; + +import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +/** + * Mybatis Plus 配置 + * + * @author ruoyi + */ +@EnableTransactionManagement(proxyTargetClass = true) +@Configuration +public class MybatisPlusConfig { + @Bean + public MybatisPlusInterceptor mybatisPlusInterceptor() { + MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); + // 分页插件 + interceptor.addInnerInterceptor(paginationInnerInterceptor()); + // 乐观锁插件 + interceptor.addInnerInterceptor(optimisticLockerInnerInterceptor()); + // 阻断插件 + interceptor.addInnerInterceptor(blockAttackInnerInterceptor()); + return interceptor; + } + + /** + * 分页插件,自动识别数据库类型 + */ + public PaginationInnerInterceptor paginationInnerInterceptor() { + PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(); + // 设置数据库类型为mysql + paginationInnerInterceptor.setDbType(DbType.MYSQL); + // 设置最大单页限制数量,默认 500 条,-1 不受限制 + paginationInnerInterceptor.setMaxLimit(-1L); + return paginationInnerInterceptor; + } + + /** + * 乐观锁插件 + */ + public OptimisticLockerInnerInterceptor optimisticLockerInnerInterceptor() { + return new OptimisticLockerInnerInterceptor(); + } + + /** + * 如果是对全表的删除或更新操作,就会终止该操作 + */ + public BlockAttackInnerInterceptor blockAttackInnerInterceptor() { + return new BlockAttackInnerInterceptor(); + } +} \ No newline at end of file diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/RedisConfig.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/RedisConfig.java new file mode 100644 index 0000000..40f049b --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/RedisConfig.java @@ -0,0 +1,69 @@ +package com.cmvr.framework.config; + +import org.springframework.cache.annotation.CachingConfigurerSupport; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.script.DefaultRedisScript; +import org.springframework.data.redis.serializer.StringRedisSerializer; + +/** + * redis配置 + * + * @author cmvr-iot + */ +@Configuration +@EnableCaching +public class RedisConfig extends CachingConfigurerSupport +{ + @Bean + @SuppressWarnings(value = { "unchecked", "rawtypes" }) + public RedisTemplate redisTemplate(RedisConnectionFactory connectionFactory) + { + RedisTemplate template = new RedisTemplate<>(); + template.setConnectionFactory(connectionFactory); + + FastJson2JsonRedisSerializer serializer = new FastJson2JsonRedisSerializer(Object.class); + + // 使用StringRedisSerializer来序列化和反序列化redis的key值 + template.setKeySerializer(new StringRedisSerializer()); + template.setValueSerializer(serializer); + + // Hash的key也采用StringRedisSerializer的序列化方式 + template.setHashKeySerializer(new StringRedisSerializer()); + template.setHashValueSerializer(serializer); + + template.afterPropertiesSet(); + return template; + } + + @Bean + public DefaultRedisScript limitScript() + { + DefaultRedisScript redisScript = new DefaultRedisScript<>(); + redisScript.setScriptText(limitScriptText()); + redisScript.setResultType(Long.class); + return redisScript; + } + + /** + * 限流脚本 + */ + private String limitScriptText() + { + return "local key = KEYS[1]\n" + + "local count = tonumber(ARGV[1])\n" + + "local time = tonumber(ARGV[2])\n" + + "local current = redis.call('get', key);\n" + + "if current and tonumber(current) > count then\n" + + " return tonumber(current);\n" + + "end\n" + + "current = redis.call('incr', key)\n" + + "if tonumber(current) == 1 then\n" + + " redis.call('expire', key, time)\n" + + "end\n" + + "return tonumber(current);"; + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/ResourcesConfig.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/ResourcesConfig.java new file mode 100644 index 0000000..513f6c2 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/ResourcesConfig.java @@ -0,0 +1,73 @@ +package com.cmvr.framework.config; + +import java.util.concurrent.TimeUnit; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.CacheControl; +import org.springframework.web.cors.CorsConfiguration; +import org.springframework.web.cors.UrlBasedCorsConfigurationSource; +import org.springframework.web.filter.CorsFilter; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; +import com.cmvr.common.config.CmvrIotConfig; +import com.cmvr.common.constant.Constants; +import com.cmvr.framework.interceptor.RepeatSubmitInterceptor; + +/** + * 通用配置 + * + * @author cmvr-iot + */ +@Configuration +public class ResourcesConfig implements WebMvcConfigurer +{ + @Autowired + private RepeatSubmitInterceptor repeatSubmitInterceptor; + + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) + { + /** 本地文件上传路径 */ + registry.addResourceHandler(Constants.RESOURCE_PREFIX + "/**") + .addResourceLocations("file:" + CmvrIotConfig.getProfile() + "/"); + + /** swagger配置 */ + registry.addResourceHandler("/swagger-ui/**") + .addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/") + .setCacheControl(CacheControl.maxAge(5, TimeUnit.HOURS).cachePublic()); + } + + /** + * 自定义拦截规则 + */ + @Override + public void addInterceptors(InterceptorRegistry registry) + { + registry.addInterceptor(repeatSubmitInterceptor).addPathPatterns("/**"); + } + + /** + * 跨域配置 + */ + @Bean + public CorsFilter corsFilter() + { + CorsConfiguration config = new CorsConfiguration(); + config.setAllowCredentials(true); + // 设置访问源地址 + config.addAllowedOriginPattern("*"); + // 设置访问源请求头 + config.addAllowedHeader("*"); + // 设置访问源请求方法 + config.addAllowedMethod("*"); + // 有效期 1800秒 + config.setMaxAge(1800L); + // 添加映射路径,拦截一切请求 + UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); + source.registerCorsConfiguration("/**", config); + // 返回新的CorsFilter + return new CorsFilter(source); + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/SecurityConfig.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/SecurityConfig.java new file mode 100644 index 0000000..4f724cb --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/SecurityConfig.java @@ -0,0 +1,139 @@ +package com.cmvr.framework.config; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.HttpMethod; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.authentication.ProviderManager; +import org.springframework.security.authentication.dao.DaoAuthenticationProvider; +import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.http.SessionCreationPolicy; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.web.SecurityFilterChain; +import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; +import org.springframework.security.web.authentication.logout.LogoutFilter; +import org.springframework.web.filter.CorsFilter; +import com.cmvr.framework.config.properties.PermitAllUrlProperties; +import com.cmvr.framework.security.filter.JwtAuthenticationTokenFilter; +import com.cmvr.framework.security.handle.AuthenticationEntryPointImpl; +import com.cmvr.framework.security.handle.LogoutSuccessHandlerImpl; + +/** + * spring security配置 + * + * @author cmvr-iot + */ +@EnableMethodSecurity(prePostEnabled = true, securedEnabled = true) +@Configuration +public class SecurityConfig +{ + /** + * 自定义用户认证逻辑 + */ + @Autowired + private UserDetailsService userDetailsService; + + /** + * 认证失败处理类 + */ + @Autowired + private AuthenticationEntryPointImpl unauthorizedHandler; + + /** + * 退出处理类 + */ + @Autowired + private LogoutSuccessHandlerImpl logoutSuccessHandler; + + /** + * token认证过滤器 + */ + @Autowired + private JwtAuthenticationTokenFilter authenticationTokenFilter; + + /** + * 跨域过滤器 + */ + @Autowired + private CorsFilter corsFilter; + + /** + * 允许匿名访问的地址 + */ + @Autowired + private PermitAllUrlProperties permitAllUrl; + + /** + * 身份验证实现 + */ + @Bean + public AuthenticationManager authenticationManager() + { + DaoAuthenticationProvider daoAuthenticationProvider = new DaoAuthenticationProvider(); + daoAuthenticationProvider.setUserDetailsService(userDetailsService); + daoAuthenticationProvider.setPasswordEncoder(bCryptPasswordEncoder()); + return new ProviderManager(daoAuthenticationProvider); + } + + /** + * anyRequest | 匹配所有请求路径 + * access | SpringEl表达式结果为true时可以访问 + * anonymous | 匿名可以访问 + * denyAll | 用户不能访问 + * fullyAuthenticated | 用户完全认证可以访问(非remember-me下自动登录) + * hasAnyAuthority | 如果有参数,参数表示权限,则其中任何一个权限可以访问 + * hasAnyRole | 如果有参数,参数表示角色,则其中任何一个角色可以访问 + * hasAuthority | 如果有参数,参数表示权限,则其权限可以访问 + * hasIpAddress | 如果有参数,参数表示IP地址,如果用户IP和参数匹配,则可以访问 + * hasRole | 如果有参数,参数表示角色,则其角色可以访问 + * permitAll | 用户可以任意访问 + * rememberMe | 允许通过remember-me登录的用户访问 + * authenticated | 用户登录后可访问 + */ + @Bean + protected SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception + { + return httpSecurity + // CSRF禁用,因为不使用session + .csrf(csrf -> csrf.disable()) + // 禁用HTTP响应标头 + .headers((headersCustomizer) -> { + headersCustomizer.cacheControl(cache -> cache.disable()).frameOptions(options -> options.sameOrigin()); + }) + // 认证失败处理类 + .exceptionHandling(exception -> exception.authenticationEntryPoint(unauthorizedHandler)) + // 基于token,所以不需要session + .sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS)) + // 注解标记允许匿名访问的url + .authorizeHttpRequests((requests) -> { + permitAllUrl.getUrls().forEach(url -> requests.antMatchers(url).permitAll()); + // 对于登录login 注册register 验证码captchaImage 允许匿名访问 + requests.antMatchers("/login", "/register", "/captchaImage").permitAll() + // 静态资源,可匿名访问 + .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll() + .antMatchers("/ws/**","/api/grpc/**","/show/**","/node-red/**","/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll() + // 除上面外的所有请求全部需要鉴权认证 + .anyRequest().authenticated(); + }) + // 添加Logout filter + .logout(logout -> logout.logoutUrl("/logout").logoutSuccessHandler(logoutSuccessHandler)) + // 添加JWT filter + .addFilterBefore(authenticationTokenFilter, UsernamePasswordAuthenticationFilter.class) + // 添加CORS filter + .addFilterBefore(corsFilter, JwtAuthenticationTokenFilter.class) + .addFilterBefore(corsFilter, LogoutFilter.class) + .build(); + } + + /** + * 强散列哈希加密实现 + */ + @Bean + public BCryptPasswordEncoder bCryptPasswordEncoder() + { + return new BCryptPasswordEncoder(); + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/ServerConfig.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/ServerConfig.java new file mode 100644 index 0000000..a0e3f4c --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/ServerConfig.java @@ -0,0 +1,32 @@ +package com.cmvr.framework.config; + +import javax.servlet.http.HttpServletRequest; +import org.springframework.stereotype.Component; +import com.cmvr.common.utils.ServletUtils; + +/** + * 服务相关配置 + * + * @author cmvr-iot + */ +@Component +public class ServerConfig +{ + /** + * 获取完整的请求路径,包括:域名,端口,上下文访问路径 + * + * @return 服务地址 + */ + public String getUrl() + { + HttpServletRequest request = ServletUtils.getRequest(); + return getDomain(request); + } + + public static String getDomain(HttpServletRequest request) + { + StringBuffer url = request.getRequestURL(); + String contextPath = request.getServletContext().getContextPath(); + return url.delete(url.length() - request.getRequestURI().length(), url.length()).append(contextPath).toString(); + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/ThreadPoolConfig.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/ThreadPoolConfig.java new file mode 100644 index 0000000..69f87d1 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/ThreadPoolConfig.java @@ -0,0 +1,63 @@ +package com.cmvr.framework.config; + +import com.cmvr.common.utils.Threads; +import org.apache.commons.lang3.concurrent.BasicThreadFactory; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledThreadPoolExecutor; +import java.util.concurrent.ThreadPoolExecutor; + +/** + * 线程池配置 + * + * @author cmvr-iot + **/ +@Configuration +public class ThreadPoolConfig +{ + // 核心线程池大小 + private int corePoolSize = 50; + + // 最大可创建的线程数 + private int maxPoolSize = 200; + + // 队列最大长度 + private int queueCapacity = 1000; + + // 线程池维护线程所允许的空闲时间 + private int keepAliveSeconds = 300; + + @Bean(name = "threadPoolTaskExecutor") + public ThreadPoolTaskExecutor threadPoolTaskExecutor() + { + ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); + executor.setMaxPoolSize(maxPoolSize); + executor.setCorePoolSize(corePoolSize); + executor.setQueueCapacity(queueCapacity); + executor.setKeepAliveSeconds(keepAliveSeconds); + // 线程池对拒绝任务(无线程可用)的处理策略 + executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); + return executor; + } + + /** + * 执行周期性或定时任务 + */ + @Bean(name = "scheduledExecutorService") + protected ScheduledExecutorService scheduledExecutorService() + { + return new ScheduledThreadPoolExecutor(corePoolSize, + new BasicThreadFactory.Builder().namingPattern("schedule-pool-%d").daemon(true).build(), + new ThreadPoolExecutor.CallerRunsPolicy()) + { + @Override + protected void afterExecute(Runnable r, Throwable t) + { + super.afterExecute(r, t); + Threads.printException(r, t); + } + }; + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/properties/DruidProperties.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/properties/DruidProperties.java new file mode 100644 index 0000000..458a11a --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/properties/DruidProperties.java @@ -0,0 +1,89 @@ +package com.cmvr.framework.config.properties; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import com.alibaba.druid.pool.DruidDataSource; + +/** + * druid 配置属性 + * + * @author cmvr-iot + */ +@Configuration +public class DruidProperties +{ + @Value("${spring.datasource.druid.initialSize}") + private int initialSize; + + @Value("${spring.datasource.druid.minIdle}") + private int minIdle; + + @Value("${spring.datasource.druid.maxActive}") + private int maxActive; + + @Value("${spring.datasource.druid.maxWait}") + private int maxWait; + + @Value("${spring.datasource.druid.connectTimeout}") + private int connectTimeout; + + @Value("${spring.datasource.druid.socketTimeout}") + private int socketTimeout; + + @Value("${spring.datasource.druid.timeBetweenEvictionRunsMillis}") + private int timeBetweenEvictionRunsMillis; + + @Value("${spring.datasource.druid.minEvictableIdleTimeMillis}") + private int minEvictableIdleTimeMillis; + + @Value("${spring.datasource.druid.maxEvictableIdleTimeMillis}") + private int maxEvictableIdleTimeMillis; + + @Value("${spring.datasource.druid.validationQuery}") + private String validationQuery; + + @Value("${spring.datasource.druid.testWhileIdle}") + private boolean testWhileIdle; + + @Value("${spring.datasource.druid.testOnBorrow}") + private boolean testOnBorrow; + + @Value("${spring.datasource.druid.testOnReturn}") + private boolean testOnReturn; + + public DruidDataSource dataSource(DruidDataSource datasource) + { + /** 配置初始化大小、最小、最大 */ + datasource.setInitialSize(initialSize); + datasource.setMaxActive(maxActive); + datasource.setMinIdle(minIdle); + + /** 配置获取连接等待超时的时间 */ + datasource.setMaxWait(maxWait); + + /** 配置驱动连接超时时间,检测数据库建立连接的超时时间,单位是毫秒 */ + datasource.setConnectTimeout(connectTimeout); + + /** 配置网络超时时间,等待数据库操作完成的网络超时时间,单位是毫秒 */ + datasource.setSocketTimeout(socketTimeout); + + /** 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 */ + datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis); + + /** 配置一个连接在池中最小、最大生存的时间,单位是毫秒 */ + datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis); + datasource.setMaxEvictableIdleTimeMillis(maxEvictableIdleTimeMillis); + + /** + * 用来检测连接是否有效的sql,要求是一个查询语句,常用select 'x'。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会起作用。 + */ + datasource.setValidationQuery(validationQuery); + /** 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。 */ + datasource.setTestWhileIdle(testWhileIdle); + /** 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。 */ + datasource.setTestOnBorrow(testOnBorrow); + /** 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。 */ + datasource.setTestOnReturn(testOnReturn); + return datasource; + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/properties/PermitAllUrlProperties.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/properties/PermitAllUrlProperties.java new file mode 100644 index 0000000..0c0d99c --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/config/properties/PermitAllUrlProperties.java @@ -0,0 +1,73 @@ +package com.cmvr.framework.config.properties; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import java.util.regex.Pattern; +import org.apache.commons.lang3.RegExUtils; +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.annotation.AnnotationUtils; +import org.springframework.web.method.HandlerMethod; +import org.springframework.web.servlet.mvc.method.RequestMappingInfo; +import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; +import com.cmvr.common.annotation.Anonymous; + +/** + * 设置Anonymous注解允许匿名访问的url + * + * @author cmvr-iot + */ +@Configuration +public class PermitAllUrlProperties implements InitializingBean, ApplicationContextAware +{ + private static final Pattern PATTERN = Pattern.compile("\\{(.*?)\\}"); + + private ApplicationContext applicationContext; + + private List urls = new ArrayList<>(); + + public String ASTERISK = "*"; + + @Override + public void afterPropertiesSet() + { + RequestMappingHandlerMapping mapping = applicationContext.getBean(RequestMappingHandlerMapping.class); + Map map = mapping.getHandlerMethods(); + + map.keySet().forEach(info -> { + HandlerMethod handlerMethod = map.get(info); + + // 获取方法上边的注解 替代path variable 为 * + Anonymous method = AnnotationUtils.findAnnotation(handlerMethod.getMethod(), Anonymous.class); + Optional.ofNullable(method).ifPresent(anonymous -> Objects.requireNonNull(info.getPatternsCondition().getPatterns()) + .forEach(url -> urls.add(RegExUtils.replaceAll(url, PATTERN, ASTERISK)))); + + // 获取类上边的注解, 替代path variable 为 * + Anonymous controller = AnnotationUtils.findAnnotation(handlerMethod.getBeanType(), Anonymous.class); + Optional.ofNullable(controller).ifPresent(anonymous -> Objects.requireNonNull(info.getPatternsCondition().getPatterns()) + .forEach(url -> urls.add(RegExUtils.replaceAll(url, PATTERN, ASTERISK)))); + }); + } + + @Override + public void setApplicationContext(ApplicationContext context) throws BeansException + { + this.applicationContext = context; + } + + public List getUrls() + { + return urls; + } + + public void setUrls(List urls) + { + this.urls = urls; + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/datasource/DynamicDataSource.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/datasource/DynamicDataSource.java new file mode 100644 index 0000000..86e2532 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/datasource/DynamicDataSource.java @@ -0,0 +1,26 @@ +package com.cmvr.framework.datasource; + +import java.util.Map; +import javax.sql.DataSource; +import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource; + +/** + * 动态数据源 + * + * @author cmvr-iot + */ +public class DynamicDataSource extends AbstractRoutingDataSource +{ + public DynamicDataSource(DataSource defaultTargetDataSource, Map targetDataSources) + { + super.setDefaultTargetDataSource(defaultTargetDataSource); + super.setTargetDataSources(targetDataSources); + super.afterPropertiesSet(); + } + + @Override + protected Object determineCurrentLookupKey() + { + return DynamicDataSourceContextHolder.getDataSourceType(); + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/datasource/DynamicDataSourceContextHolder.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/datasource/DynamicDataSourceContextHolder.java new file mode 100644 index 0000000..702bfc0 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/datasource/DynamicDataSourceContextHolder.java @@ -0,0 +1,45 @@ +package com.cmvr.framework.datasource; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * 数据源切换处理 + * + * @author cmvr-iot + */ +public class DynamicDataSourceContextHolder +{ + public static final Logger log = LoggerFactory.getLogger(DynamicDataSourceContextHolder.class); + + /** + * 使用ThreadLocal维护变量,ThreadLocal为每个使用该变量的线程提供独立的变量副本, + * 所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。 + */ + private static final ThreadLocal CONTEXT_HOLDER = new ThreadLocal<>(); + + /** + * 设置数据源的变量 + */ + public static void setDataSourceType(String dsType) + { + log.info("切换到{}数据源", dsType); + CONTEXT_HOLDER.set(dsType); + } + + /** + * 获得数据源的变量 + */ + public static String getDataSourceType() + { + return CONTEXT_HOLDER.get(); + } + + /** + * 清空数据源变量 + */ + public static void clearDataSourceType() + { + CONTEXT_HOLDER.remove(); + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/interceptor/RepeatSubmitInterceptor.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/interceptor/RepeatSubmitInterceptor.java new file mode 100644 index 0000000..60b21b2 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/interceptor/RepeatSubmitInterceptor.java @@ -0,0 +1,56 @@ +package com.cmvr.framework.interceptor; + +import java.lang.reflect.Method; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.springframework.stereotype.Component; +import org.springframework.web.method.HandlerMethod; +import org.springframework.web.servlet.HandlerInterceptor; +import com.alibaba.fastjson2.JSON; +import com.cmvr.common.annotation.RepeatSubmit; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.utils.ServletUtils; + +/** + * 防止重复提交拦截器 + * + * @author cmvr-iot + */ +@Component +public abstract class RepeatSubmitInterceptor implements HandlerInterceptor +{ + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception + { + if (handler instanceof HandlerMethod) + { + HandlerMethod handlerMethod = (HandlerMethod) handler; + Method method = handlerMethod.getMethod(); + RepeatSubmit annotation = method.getAnnotation(RepeatSubmit.class); + if (annotation != null) + { + if (this.isRepeatSubmit(request, annotation)) + { + AjaxResult ajaxResult = AjaxResult.error(annotation.message()); + ServletUtils.renderString(response, JSON.toJSONString(ajaxResult)); + return false; + } + } + return true; + } + else + { + return true; + } + } + + /** + * 验证是否重复提交由子类实现具体的防重复提交的规则 + * + * @param request 请求信息 + * @param annotation 防重复注解参数 + * @return 结果 + * @throws Exception + */ + public abstract boolean isRepeatSubmit(HttpServletRequest request, RepeatSubmit annotation); +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/interceptor/impl/SameUrlDataInterceptor.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/interceptor/impl/SameUrlDataInterceptor.java new file mode 100644 index 0000000..2665744 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/interceptor/impl/SameUrlDataInterceptor.java @@ -0,0 +1,110 @@ +package com.cmvr.framework.interceptor.impl; + +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.TimeUnit; +import javax.servlet.http.HttpServletRequest; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; +import com.alibaba.fastjson2.JSON; +import com.cmvr.common.annotation.RepeatSubmit; +import com.cmvr.common.constant.CacheConstants; +import com.cmvr.common.core.redis.RedisCache; +import com.cmvr.common.filter.RepeatedlyRequestWrapper; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.common.utils.http.HttpHelper; +import com.cmvr.framework.interceptor.RepeatSubmitInterceptor; + +/** + * 判断请求url和数据是否和上一次相同, + * 如果和上次相同,则是重复提交表单。 有效时间为10秒内。 + * + * @author cmvr-iot + */ +@Component +public class SameUrlDataInterceptor extends RepeatSubmitInterceptor +{ + public final String REPEAT_PARAMS = "repeatParams"; + + public final String REPEAT_TIME = "repeatTime"; + + // 令牌自定义标识 + @Value("${token.header}") + private String header; + + @Autowired + private RedisCache redisCache; + + @SuppressWarnings("unchecked") + @Override + public boolean isRepeatSubmit(HttpServletRequest request, RepeatSubmit annotation) + { + String nowParams = ""; + if (request instanceof RepeatedlyRequestWrapper) + { + RepeatedlyRequestWrapper repeatedlyRequest = (RepeatedlyRequestWrapper) request; + nowParams = HttpHelper.getBodyString(repeatedlyRequest); + } + + // body参数为空,获取Parameter的数据 + if (StringUtils.isEmpty(nowParams)) + { + nowParams = JSON.toJSONString(request.getParameterMap()); + } + Map nowDataMap = new HashMap(); + nowDataMap.put(REPEAT_PARAMS, nowParams); + nowDataMap.put(REPEAT_TIME, System.currentTimeMillis()); + + // 请求地址(作为存放cache的key值) + String url = request.getRequestURI(); + + // 唯一值(没有消息头则使用请求地址) + String submitKey = StringUtils.trimToEmpty(request.getHeader(header)); + + // 唯一标识(指定key + url + 消息头) + String cacheRepeatKey = CacheConstants.REPEAT_SUBMIT_KEY + url + submitKey; + + Object sessionObj = redisCache.getCacheObject(cacheRepeatKey); + if (sessionObj != null) + { + Map sessionMap = (Map) sessionObj; + if (sessionMap.containsKey(url)) + { + Map preDataMap = (Map) sessionMap.get(url); + if (compareParams(nowDataMap, preDataMap) && compareTime(nowDataMap, preDataMap, annotation.interval())) + { + return true; + } + } + } + Map cacheMap = new HashMap(); + cacheMap.put(url, nowDataMap); + redisCache.setCacheObject(cacheRepeatKey, cacheMap, annotation.interval(), TimeUnit.MILLISECONDS); + return false; + } + + /** + * 判断参数是否相同 + */ + private boolean compareParams(Map nowMap, Map preMap) + { + String nowParams = (String) nowMap.get(REPEAT_PARAMS); + String preParams = (String) preMap.get(REPEAT_PARAMS); + return nowParams.equals(preParams); + } + + /** + * 判断两次间隔时间 + */ + private boolean compareTime(Map nowMap, Map preMap, int interval) + { + long time1 = (Long) nowMap.get(REPEAT_TIME); + long time2 = (Long) preMap.get(REPEAT_TIME); + if ((time1 - time2) < interval) + { + return true; + } + return false; + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/manager/AsyncManager.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/manager/AsyncManager.java new file mode 100644 index 0000000..7d79d1b --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/manager/AsyncManager.java @@ -0,0 +1,55 @@ +package com.cmvr.framework.manager; + +import java.util.TimerTask; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; +import com.cmvr.common.utils.Threads; +import com.cmvr.common.utils.spring.SpringUtils; + +/** + * 异步任务管理器 + * + * @author cmvr-iot + */ +public class AsyncManager +{ + /** + * 操作延迟10毫秒 + */ + private final int OPERATE_DELAY_TIME = 10; + + /** + * 异步操作任务调度线程池 + */ + private ScheduledExecutorService executor = SpringUtils.getBean("scheduledExecutorService"); + + /** + * 单例模式 + */ + private AsyncManager(){} + + private static AsyncManager me = new AsyncManager(); + + public static AsyncManager me() + { + return me; + } + + /** + * 执行任务 + * + * @param task 任务 + */ + public void execute(TimerTask task) + { + executor.schedule(task, OPERATE_DELAY_TIME, TimeUnit.MILLISECONDS); + } + + /** + * 停止任务线程池 + */ + public void shutdown() + { + Threads.shutdownAndAwaitTermination(executor); + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/manager/ShutdownManager.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/manager/ShutdownManager.java new file mode 100644 index 0000000..4d3ff91 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/manager/ShutdownManager.java @@ -0,0 +1,39 @@ +package com.cmvr.framework.manager; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; +import javax.annotation.PreDestroy; + +/** + * 确保应用退出时能关闭后台线程 + * + * @author cmvr-iot + */ +@Component +public class ShutdownManager +{ + private static final Logger logger = LoggerFactory.getLogger("sys-user"); + + @PreDestroy + public void destroy() + { + shutdownAsyncManager(); + } + + /** + * 停止异步执行任务 + */ + private void shutdownAsyncManager() + { + try + { + logger.info("====关闭后台任务任务线程池===="); + AsyncManager.me().shutdown(); + } + catch (Exception e) + { + logger.error(e.getMessage(), e); + } + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/manager/factory/AsyncFactory.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/manager/factory/AsyncFactory.java new file mode 100644 index 0000000..1dbca85 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/manager/factory/AsyncFactory.java @@ -0,0 +1,102 @@ +package com.cmvr.framework.manager.factory; + +import java.util.TimerTask; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import com.cmvr.common.constant.Constants; +import com.cmvr.common.utils.LogUtils; +import com.cmvr.common.utils.ServletUtils; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.common.utils.ip.AddressUtils; +import com.cmvr.common.utils.ip.IpUtils; +import com.cmvr.common.utils.spring.SpringUtils; +import com.cmvr.system.domain.SysLogininfor; +import com.cmvr.system.domain.SysOperLog; +import com.cmvr.system.service.ISysLogininforService; +import com.cmvr.system.service.ISysOperLogService; +import eu.bitwalker.useragentutils.UserAgent; + +/** + * 异步工厂(产生任务用) + * + * @author cmvr-iot + */ +public class AsyncFactory +{ + private static final Logger sys_user_logger = LoggerFactory.getLogger("sys-user"); + + /** + * 记录登录信息 + * + * @param username 用户名 + * @param status 状态 + * @param message 消息 + * @param args 列表 + * @return 任务task + */ + public static TimerTask recordLogininfor(final String username, final String status, final String message, + final Object... args) + { + final UserAgent userAgent = UserAgent.parseUserAgentString(ServletUtils.getRequest().getHeader("User-Agent")); + final String ip = IpUtils.getIpAddr(); + return new TimerTask() + { + @Override + public void run() + { + String address = AddressUtils.getRealAddressByIP(ip); + StringBuilder s = new StringBuilder(); + s.append(LogUtils.getBlock(ip)); + s.append(address); + s.append(LogUtils.getBlock(username)); + s.append(LogUtils.getBlock(status)); + s.append(LogUtils.getBlock(message)); + // 打印信息到日志 + sys_user_logger.info(s.toString(), args); + // 获取客户端操作系统 + String os = userAgent.getOperatingSystem().getName(); + // 获取客户端浏览器 + String browser = userAgent.getBrowser().getName(); + // 封装对象 + SysLogininfor logininfor = new SysLogininfor(); + logininfor.setUserName(username); + logininfor.setIpaddr(ip); + logininfor.setLoginLocation(address); + logininfor.setBrowser(browser); + logininfor.setOs(os); + logininfor.setMsg(message); + // 日志状态 + if (StringUtils.equalsAny(status, Constants.LOGIN_SUCCESS, Constants.LOGOUT, Constants.REGISTER)) + { + logininfor.setStatus(Constants.SUCCESS); + } + else if (Constants.LOGIN_FAIL.equals(status)) + { + logininfor.setStatus(Constants.FAIL); + } + // 插入数据 + SpringUtils.getBean(ISysLogininforService.class).insertLogininfor(logininfor); + } + }; + } + + /** + * 操作日志记录 + * + * @param operLog 操作日志信息 + * @return 任务task + */ + public static TimerTask recordOper(final SysOperLog operLog) + { + return new TimerTask() + { + @Override + public void run() + { + // 远程查询操作地点 + operLog.setOperLocation(AddressUtils.getRealAddressByIP(operLog.getOperIp())); + SpringUtils.getBean(ISysOperLogService.class).insertOperlog(operLog); + } + }; + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/mybatisPlus/MyMetaObjectHandler.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/mybatisPlus/MyMetaObjectHandler.java new file mode 100644 index 0000000..cd77510 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/mybatisPlus/MyMetaObjectHandler.java @@ -0,0 +1,62 @@ +package com.cmvr.framework.mybatisPlus; + +import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; +import com.cmvr.common.utils.SecurityUtils; +import lombok.extern.slf4j.Slf4j; +import org.apache.ibatis.reflection.MetaObject; +import org.springframework.stereotype.Component; + +import java.time.LocalDateTime; +import java.util.Date; + +@Slf4j +@Component +public class MyMetaObjectHandler implements MetaObjectHandler { + public static final String CREATE_BY = "createBy"; + public static final String CREATE_TIME = "createTime"; + public static final String UPDATE_BY = "updateBy"; + public static final String UPDATE_TIME = "updateTime"; + public static final String DELETED = "delFlag"; + public static final String STATUS = "status"; + + /** + * 插入时的填充策略 + */ + @Override + public void insertFill(MetaObject metaObject) { + // 起始版本 3.3.0(推荐使用) + this.setFieldValByName(CREATE_BY, SecurityUtils.getUsername(), metaObject); + this.setFieldValByName(CREATE_TIME, formatDate(metaObject.getSetterType(CREATE_TIME)), metaObject); + this.setFieldValByName(UPDATE_BY, SecurityUtils.getUsername(), metaObject); + this.setFieldValByName(UPDATE_TIME, formatDate(metaObject.getSetterType(CREATE_TIME)), metaObject); + this.setFieldValByName(DELETED, "0", metaObject); + this.setFieldValByName(STATUS, "1", metaObject); + } + + /** + * 更新时的填充策略 + */ + @Override + public void updateFill(MetaObject metaObject) { + this.setFieldValByName(UPDATE_BY, SecurityUtils.getUsername(), metaObject); + this.setFieldValByName(UPDATE_TIME, formatDate(metaObject.getSetterType(CREATE_TIME)), metaObject); + } + + + /** + * 处理特殊日期 + * + * @param setterType 参数类型 + * @return 日期类型 + */ + private Object formatDate(Class setterType) { + if (Date.class.equals(setterType)) { + return new Date(); + } else if (LocalDateTime.class.equals(setterType)) { + return LocalDateTime.now(); + } else if (Long.class.equals(setterType)) { + return System.currentTimeMillis(); + } + return null; + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/security/context/AuthenticationContextHolder.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/security/context/AuthenticationContextHolder.java new file mode 100644 index 0000000..2c5ab62 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/security/context/AuthenticationContextHolder.java @@ -0,0 +1,28 @@ +package com.cmvr.framework.security.context; + +import org.springframework.security.core.Authentication; + +/** + * 身份验证信息 + * + * @author cmvr-iot + */ +public class AuthenticationContextHolder +{ + private static final ThreadLocal contextHolder = new ThreadLocal<>(); + + public static Authentication getContext() + { + return contextHolder.get(); + } + + public static void setContext(Authentication context) + { + contextHolder.set(context); + } + + public static void clearContext() + { + contextHolder.remove(); + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/security/context/PermissionContextHolder.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/security/context/PermissionContextHolder.java new file mode 100644 index 0000000..e32e556 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/security/context/PermissionContextHolder.java @@ -0,0 +1,27 @@ +package com.cmvr.framework.security.context; + +import org.springframework.web.context.request.RequestAttributes; +import org.springframework.web.context.request.RequestContextHolder; +import com.cmvr.common.core.text.Convert; + +/** + * 权限信息 + * + * @author cmvr-iot + */ +public class PermissionContextHolder +{ + private static final String PERMISSION_CONTEXT_ATTRIBUTES = "PERMISSION_CONTEXT"; + + public static void setContext(String permission) + { + RequestContextHolder.currentRequestAttributes().setAttribute(PERMISSION_CONTEXT_ATTRIBUTES, permission, + RequestAttributes.SCOPE_REQUEST); + } + + public static String getContext() + { + return Convert.toStr(RequestContextHolder.currentRequestAttributes().getAttribute(PERMISSION_CONTEXT_ATTRIBUTES, + RequestAttributes.SCOPE_REQUEST)); + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/security/filter/JwtAuthenticationTokenFilter.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/security/filter/JwtAuthenticationTokenFilter.java new file mode 100644 index 0000000..cfd0270 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/security/filter/JwtAuthenticationTokenFilter.java @@ -0,0 +1,44 @@ +package com.cmvr.framework.security.filter; + +import java.io.IOException; +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.web.authentication.WebAuthenticationDetailsSource; +import org.springframework.stereotype.Component; +import org.springframework.web.filter.OncePerRequestFilter; +import com.cmvr.common.core.domain.model.LoginUser; +import com.cmvr.common.utils.SecurityUtils; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.framework.web.service.TokenService; + +/** + * token过滤器 验证token有效性 + * + * @author cmvr-iot + */ +@Component +public class JwtAuthenticationTokenFilter extends OncePerRequestFilter +{ + @Autowired + private TokenService tokenService; + + @Override + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) + throws ServletException, IOException + { + LoginUser loginUser = tokenService.getLoginUser(request); + if (StringUtils.isNotNull(loginUser) && StringUtils.isNull(SecurityUtils.getAuthentication())) + { + tokenService.verifyToken(loginUser); + UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(loginUser, null, loginUser.getAuthorities()); + authenticationToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request)); + SecurityContextHolder.getContext().setAuthentication(authenticationToken); + } + chain.doFilter(request, response); + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/security/handle/AuthenticationEntryPointImpl.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/security/handle/AuthenticationEntryPointImpl.java new file mode 100644 index 0000000..ca1e887 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/security/handle/AuthenticationEntryPointImpl.java @@ -0,0 +1,34 @@ +package com.cmvr.framework.security.handle; + +import java.io.IOException; +import java.io.Serializable; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.springframework.security.core.AuthenticationException; +import org.springframework.security.web.AuthenticationEntryPoint; +import org.springframework.stereotype.Component; +import com.alibaba.fastjson2.JSON; +import com.cmvr.common.constant.HttpStatus; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.utils.ServletUtils; +import com.cmvr.common.utils.StringUtils; + +/** + * 认证失败处理类 返回未授权 + * + * @author cmvr-iot + */ +@Component +public class AuthenticationEntryPointImpl implements AuthenticationEntryPoint, Serializable +{ + private static final long serialVersionUID = -8970718410437077606L; + + @Override + public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException e) + throws IOException + { + int code = HttpStatus.UNAUTHORIZED; + String msg = StringUtils.format("请求访问:{},认证失败,无法访问系统资源", request.getRequestURI()); + ServletUtils.renderString(response, JSON.toJSONString(AjaxResult.error(code, msg))); + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/security/handle/LogoutSuccessHandlerImpl.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/security/handle/LogoutSuccessHandlerImpl.java new file mode 100644 index 0000000..69a3a26 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/security/handle/LogoutSuccessHandlerImpl.java @@ -0,0 +1,53 @@ +package com.cmvr.framework.security.handle; + +import java.io.IOException; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.core.Authentication; +import org.springframework.security.web.authentication.logout.LogoutSuccessHandler; +import com.alibaba.fastjson2.JSON; +import com.cmvr.common.constant.Constants; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.core.domain.model.LoginUser; +import com.cmvr.common.utils.MessageUtils; +import com.cmvr.common.utils.ServletUtils; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.framework.manager.AsyncManager; +import com.cmvr.framework.manager.factory.AsyncFactory; +import com.cmvr.framework.web.service.TokenService; + +/** + * 自定义退出处理类 返回成功 + * + * @author cmvr-iot + */ +@Configuration +public class LogoutSuccessHandlerImpl implements LogoutSuccessHandler +{ + @Autowired + private TokenService tokenService; + + /** + * 退出处理 + * + * @return + */ + @Override + public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) + throws IOException, ServletException + { + LoginUser loginUser = tokenService.getLoginUser(request); + if (StringUtils.isNotNull(loginUser)) + { + String userName = loginUser.getUsername(); + // 删除用户缓存记录 + tokenService.delLoginUser(loginUser.getToken()); + // 记录用户退出日志 + AsyncManager.me().execute(AsyncFactory.recordLogininfor(userName, Constants.LOGOUT, MessageUtils.message("user.logout.success"))); + } + ServletUtils.renderString(response, JSON.toJSONString(AjaxResult.success(MessageUtils.message("user.logout.success")))); + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/web/domain/Server.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/web/domain/Server.java new file mode 100644 index 0000000..ff10872 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/web/domain/Server.java @@ -0,0 +1,240 @@ +package com.cmvr.framework.web.domain; + +import java.net.UnknownHostException; +import java.util.LinkedList; +import java.util.List; +import java.util.Properties; +import com.cmvr.common.utils.Arith; +import com.cmvr.common.utils.ip.IpUtils; +import com.cmvr.framework.web.domain.server.Cpu; +import com.cmvr.framework.web.domain.server.Jvm; +import com.cmvr.framework.web.domain.server.Mem; +import com.cmvr.framework.web.domain.server.Sys; +import com.cmvr.framework.web.domain.server.SysFile; +import oshi.SystemInfo; +import oshi.hardware.CentralProcessor; +import oshi.hardware.CentralProcessor.TickType; +import oshi.hardware.GlobalMemory; +import oshi.hardware.HardwareAbstractionLayer; +import oshi.software.os.FileSystem; +import oshi.software.os.OSFileStore; +import oshi.software.os.OperatingSystem; +import oshi.util.Util; + +/** + * 服务器相关信息 + * + * @author cmvr-iot + */ +public class Server +{ + private static final int OSHI_WAIT_SECOND = 1000; + + /** + * CPU相关信息 + */ + private Cpu cpu = new Cpu(); + + /** + * 內存相关信息 + */ + private Mem mem = new Mem(); + + /** + * JVM相关信息 + */ + private Jvm jvm = new Jvm(); + + /** + * 服务器相关信息 + */ + private Sys sys = new Sys(); + + /** + * 磁盘相关信息 + */ + private List sysFiles = new LinkedList(); + + public Cpu getCpu() + { + return cpu; + } + + public void setCpu(Cpu cpu) + { + this.cpu = cpu; + } + + public Mem getMem() + { + return mem; + } + + public void setMem(Mem mem) + { + this.mem = mem; + } + + public Jvm getJvm() + { + return jvm; + } + + public void setJvm(Jvm jvm) + { + this.jvm = jvm; + } + + public Sys getSys() + { + return sys; + } + + public void setSys(Sys sys) + { + this.sys = sys; + } + + public List getSysFiles() + { + return sysFiles; + } + + public void setSysFiles(List sysFiles) + { + this.sysFiles = sysFiles; + } + + public void copyTo() throws Exception + { + SystemInfo si = new SystemInfo(); + HardwareAbstractionLayer hal = si.getHardware(); + + setCpuInfo(hal.getProcessor()); + + setMemInfo(hal.getMemory()); + + setSysInfo(); + + setJvmInfo(); + + setSysFiles(si.getOperatingSystem()); + } + + /** + * 设置CPU信息 + */ + private void setCpuInfo(CentralProcessor processor) + { + // CPU信息 + long[] prevTicks = processor.getSystemCpuLoadTicks(); + Util.sleep(OSHI_WAIT_SECOND); + long[] ticks = processor.getSystemCpuLoadTicks(); + long nice = ticks[TickType.NICE.getIndex()] - prevTicks[TickType.NICE.getIndex()]; + long irq = ticks[TickType.IRQ.getIndex()] - prevTicks[TickType.IRQ.getIndex()]; + long softirq = ticks[TickType.SOFTIRQ.getIndex()] - prevTicks[TickType.SOFTIRQ.getIndex()]; + long steal = ticks[TickType.STEAL.getIndex()] - prevTicks[TickType.STEAL.getIndex()]; + long cSys = ticks[TickType.SYSTEM.getIndex()] - prevTicks[TickType.SYSTEM.getIndex()]; + long user = ticks[TickType.USER.getIndex()] - prevTicks[TickType.USER.getIndex()]; + long iowait = ticks[TickType.IOWAIT.getIndex()] - prevTicks[TickType.IOWAIT.getIndex()]; + long idle = ticks[TickType.IDLE.getIndex()] - prevTicks[TickType.IDLE.getIndex()]; + long totalCpu = user + nice + cSys + idle + iowait + irq + softirq + steal; + cpu.setCpuNum(processor.getLogicalProcessorCount()); + cpu.setTotal(totalCpu); + cpu.setSys(cSys); + cpu.setUsed(user); + cpu.setWait(iowait); + cpu.setFree(idle); + } + + /** + * 设置内存信息 + */ + private void setMemInfo(GlobalMemory memory) + { + mem.setTotal(memory.getTotal()); + mem.setUsed(memory.getTotal() - memory.getAvailable()); + mem.setFree(memory.getAvailable()); + } + + /** + * 设置服务器信息 + */ + private void setSysInfo() + { + Properties props = System.getProperties(); + sys.setComputerName(IpUtils.getHostName()); + sys.setComputerIp(IpUtils.getHostIp()); + sys.setOsName(props.getProperty("os.name")); + sys.setOsArch(props.getProperty("os.arch")); + sys.setUserDir(props.getProperty("user.dir")); + } + + /** + * 设置Java虚拟机 + */ + private void setJvmInfo() throws UnknownHostException + { + Properties props = System.getProperties(); + jvm.setTotal(Runtime.getRuntime().totalMemory()); + jvm.setMax(Runtime.getRuntime().maxMemory()); + jvm.setFree(Runtime.getRuntime().freeMemory()); + jvm.setVersion(props.getProperty("java.version")); + jvm.setHome(props.getProperty("java.home")); + } + + /** + * 设置磁盘信息 + */ + private void setSysFiles(OperatingSystem os) + { + FileSystem fileSystem = os.getFileSystem(); + List fsArray = fileSystem.getFileStores(); + for (OSFileStore fs : fsArray) + { + long free = fs.getUsableSpace(); + long total = fs.getTotalSpace(); + long used = total - free; + SysFile sysFile = new SysFile(); + sysFile.setDirName(fs.getMount()); + sysFile.setSysTypeName(fs.getType()); + sysFile.setTypeName(fs.getName()); + sysFile.setTotal(convertFileSize(total)); + sysFile.setFree(convertFileSize(free)); + sysFile.setUsed(convertFileSize(used)); + sysFile.setUsage(Arith.mul(Arith.div(used, total, 4), 100)); + sysFiles.add(sysFile); + } + } + + /** + * 字节转换 + * + * @param size 字节大小 + * @return 转换后值 + */ + public String convertFileSize(long size) + { + long kb = 1024; + long mb = kb * 1024; + long gb = mb * 1024; + if (size >= gb) + { + return String.format("%.1f GB", (float) size / gb); + } + else if (size >= mb) + { + float f = (float) size / mb; + return String.format(f > 100 ? "%.0f MB" : "%.1f MB", f); + } + else if (size >= kb) + { + float f = (float) size / kb; + return String.format(f > 100 ? "%.0f KB" : "%.1f KB", f); + } + else + { + return String.format("%d B", size); + } + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/web/domain/server/Cpu.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/web/domain/server/Cpu.java new file mode 100644 index 0000000..9f4d183 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/web/domain/server/Cpu.java @@ -0,0 +1,101 @@ +package com.cmvr.framework.web.domain.server; + +import com.cmvr.common.utils.Arith; + +/** + * CPU相关信息 + * + * @author cmvr-iot + */ +public class Cpu +{ + /** + * 核心数 + */ + private int cpuNum; + + /** + * CPU总的使用率 + */ + private double total; + + /** + * CPU系统使用率 + */ + private double sys; + + /** + * CPU用户使用率 + */ + private double used; + + /** + * CPU当前等待率 + */ + private double wait; + + /** + * CPU当前空闲率 + */ + private double free; + + public int getCpuNum() + { + return cpuNum; + } + + public void setCpuNum(int cpuNum) + { + this.cpuNum = cpuNum; + } + + public double getTotal() + { + return Arith.round(Arith.mul(total, 100), 2); + } + + public void setTotal(double total) + { + this.total = total; + } + + public double getSys() + { + return Arith.round(Arith.mul(sys / total, 100), 2); + } + + public void setSys(double sys) + { + this.sys = sys; + } + + public double getUsed() + { + return Arith.round(Arith.mul(used / total, 100), 2); + } + + public void setUsed(double used) + { + this.used = used; + } + + public double getWait() + { + return Arith.round(Arith.mul(wait / total, 100), 2); + } + + public void setWait(double wait) + { + this.wait = wait; + } + + public double getFree() + { + return Arith.round(Arith.mul(free / total, 100), 2); + } + + public void setFree(double free) + { + this.free = free; + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/web/domain/server/Jvm.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/web/domain/server/Jvm.java new file mode 100644 index 0000000..c79c9bd --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/web/domain/server/Jvm.java @@ -0,0 +1,130 @@ +package com.cmvr.framework.web.domain.server; + +import java.lang.management.ManagementFactory; +import com.cmvr.common.utils.Arith; +import com.cmvr.common.utils.DateUtils; + +/** + * JVM相关信息 + * + * @author cmvr-iot + */ +public class Jvm +{ + /** + * 当前JVM占用的内存总数(M) + */ + private double total; + + /** + * JVM最大可用内存总数(M) + */ + private double max; + + /** + * JVM空闲内存(M) + */ + private double free; + + /** + * JDK版本 + */ + private String version; + + /** + * JDK路径 + */ + private String home; + + public double getTotal() + { + return Arith.div(total, (1024 * 1024), 2); + } + + public void setTotal(double total) + { + this.total = total; + } + + public double getMax() + { + return Arith.div(max, (1024 * 1024), 2); + } + + public void setMax(double max) + { + this.max = max; + } + + public double getFree() + { + return Arith.div(free, (1024 * 1024), 2); + } + + public void setFree(double free) + { + this.free = free; + } + + public double getUsed() + { + return Arith.div(total - free, (1024 * 1024), 2); + } + + public double getUsage() + { + return Arith.mul(Arith.div(total - free, total, 4), 100); + } + + /** + * 获取JDK名称 + */ + public String getName() + { + return ManagementFactory.getRuntimeMXBean().getVmName(); + } + + public String getVersion() + { + return version; + } + + public void setVersion(String version) + { + this.version = version; + } + + public String getHome() + { + return home; + } + + public void setHome(String home) + { + this.home = home; + } + + /** + * JDK启动时间 + */ + public String getStartTime() + { + return DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, DateUtils.getServerStartDate()); + } + + /** + * JDK运行时间 + */ + public String getRunTime() + { + return DateUtils.timeDistance(DateUtils.getNowDate(), DateUtils.getServerStartDate()); + } + + /** + * 运行参数 + */ + public String getInputArgs() + { + return ManagementFactory.getRuntimeMXBean().getInputArguments().toString(); + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/web/domain/server/Mem.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/web/domain/server/Mem.java new file mode 100644 index 0000000..e47c3c3 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/web/domain/server/Mem.java @@ -0,0 +1,61 @@ +package com.cmvr.framework.web.domain.server; + +import com.cmvr.common.utils.Arith; + +/** + * 內存相关信息 + * + * @author cmvr-iot + */ +public class Mem +{ + /** + * 内存总量 + */ + private double total; + + /** + * 已用内存 + */ + private double used; + + /** + * 剩余内存 + */ + private double free; + + public double getTotal() + { + return Arith.div(total, (1024 * 1024 * 1024), 2); + } + + public void setTotal(long total) + { + this.total = total; + } + + public double getUsed() + { + return Arith.div(used, (1024 * 1024 * 1024), 2); + } + + public void setUsed(long used) + { + this.used = used; + } + + public double getFree() + { + return Arith.div(free, (1024 * 1024 * 1024), 2); + } + + public void setFree(long free) + { + this.free = free; + } + + public double getUsage() + { + return Arith.mul(Arith.div(used, total, 4), 100); + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/web/domain/server/Sys.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/web/domain/server/Sys.java new file mode 100644 index 0000000..dbbcd7f --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/web/domain/server/Sys.java @@ -0,0 +1,84 @@ +package com.cmvr.framework.web.domain.server; + +/** + * 系统相关信息 + * + * @author cmvr-iot + */ +public class Sys +{ + /** + * 服务器名称 + */ + private String computerName; + + /** + * 服务器Ip + */ + private String computerIp; + + /** + * 项目路径 + */ + private String userDir; + + /** + * 操作系统 + */ + private String osName; + + /** + * 系统架构 + */ + private String osArch; + + public String getComputerName() + { + return computerName; + } + + public void setComputerName(String computerName) + { + this.computerName = computerName; + } + + public String getComputerIp() + { + return computerIp; + } + + public void setComputerIp(String computerIp) + { + this.computerIp = computerIp; + } + + public String getUserDir() + { + return userDir; + } + + public void setUserDir(String userDir) + { + this.userDir = userDir; + } + + public String getOsName() + { + return osName; + } + + public void setOsName(String osName) + { + this.osName = osName; + } + + public String getOsArch() + { + return osArch; + } + + public void setOsArch(String osArch) + { + this.osArch = osArch; + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/web/domain/server/SysFile.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/web/domain/server/SysFile.java new file mode 100644 index 0000000..2c605d4 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/web/domain/server/SysFile.java @@ -0,0 +1,114 @@ +package com.cmvr.framework.web.domain.server; + +/** + * 系统文件相关信息 + * + * @author cmvr-iot + */ +public class SysFile +{ + /** + * 盘符路径 + */ + private String dirName; + + /** + * 盘符类型 + */ + private String sysTypeName; + + /** + * 文件类型 + */ + private String typeName; + + /** + * 总大小 + */ + private String total; + + /** + * 剩余大小 + */ + private String free; + + /** + * 已经使用量 + */ + private String used; + + /** + * 资源的使用率 + */ + private double usage; + + public String getDirName() + { + return dirName; + } + + public void setDirName(String dirName) + { + this.dirName = dirName; + } + + public String getSysTypeName() + { + return sysTypeName; + } + + public void setSysTypeName(String sysTypeName) + { + this.sysTypeName = sysTypeName; + } + + public String getTypeName() + { + return typeName; + } + + public void setTypeName(String typeName) + { + this.typeName = typeName; + } + + public String getTotal() + { + return total; + } + + public void setTotal(String total) + { + this.total = total; + } + + public String getFree() + { + return free; + } + + public void setFree(String free) + { + this.free = free; + } + + public String getUsed() + { + return used; + } + + public void setUsed(String used) + { + this.used = used; + } + + public double getUsage() + { + return usage; + } + + public void setUsage(double usage) + { + this.usage = usage; + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/web/exception/GlobalExceptionHandler.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/web/exception/GlobalExceptionHandler.java new file mode 100644 index 0000000..ceda19c --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/web/exception/GlobalExceptionHandler.java @@ -0,0 +1,145 @@ +package com.cmvr.framework.web.exception; + +import javax.servlet.http.HttpServletRequest; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.security.access.AccessDeniedException; +import org.springframework.validation.BindException; +import org.springframework.web.HttpRequestMethodNotSupportedException; +import org.springframework.web.bind.MethodArgumentNotValidException; +import org.springframework.web.bind.MissingPathVariableException; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RestControllerAdvice; +import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException; +import com.cmvr.common.constant.HttpStatus; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.core.text.Convert; +import com.cmvr.common.exception.DemoModeException; +import com.cmvr.common.exception.ServiceException; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.common.utils.html.EscapeUtil; + +/** + * 全局异常处理器 + * + * @author cmvr-iot + */ +@RestControllerAdvice +public class GlobalExceptionHandler +{ + private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class); + + /** + * 权限校验异常 + */ + @ExceptionHandler(AccessDeniedException.class) + public AjaxResult handleAccessDeniedException(AccessDeniedException e, HttpServletRequest request) + { + String requestURI = request.getRequestURI(); + log.error("请求地址'{}',权限校验失败'{}'", requestURI, e.getMessage()); + return AjaxResult.error(HttpStatus.FORBIDDEN, "没有权限,请联系管理员授权"); + } + + /** + * 请求方式不支持 + */ + @ExceptionHandler(HttpRequestMethodNotSupportedException.class) + public AjaxResult handleHttpRequestMethodNotSupported(HttpRequestMethodNotSupportedException e, + HttpServletRequest request) + { + String requestURI = request.getRequestURI(); + log.error("请求地址'{}',不支持'{}'请求", requestURI, e.getMethod()); + return AjaxResult.error(e.getMessage()); + } + + /** + * 业务异常 + */ + @ExceptionHandler(ServiceException.class) + public AjaxResult handleServiceException(ServiceException e, HttpServletRequest request) + { + log.error(e.getMessage(), e); + Integer code = e.getCode(); + return StringUtils.isNotNull(code) ? AjaxResult.error(code, e.getMessage()) : AjaxResult.error(e.getMessage()); + } + + /** + * 请求路径中缺少必需的路径变量 + */ + @ExceptionHandler(MissingPathVariableException.class) + public AjaxResult handleMissingPathVariableException(MissingPathVariableException e, HttpServletRequest request) + { + String requestURI = request.getRequestURI(); + log.error("请求路径中缺少必需的路径变量'{}',发生系统异常.", requestURI, e); + return AjaxResult.error(String.format("请求路径中缺少必需的路径变量[%s]", e.getVariableName())); + } + + /** + * 请求参数类型不匹配 + */ + @ExceptionHandler(MethodArgumentTypeMismatchException.class) + public AjaxResult handleMethodArgumentTypeMismatchException(MethodArgumentTypeMismatchException e, HttpServletRequest request) + { + String requestURI = request.getRequestURI(); + String value = Convert.toStr(e.getValue()); + if (StringUtils.isNotEmpty(value)) + { + value = EscapeUtil.clean(value); + } + log.error("请求参数类型不匹配'{}',发生系统异常.", requestURI, e); + return AjaxResult.error(String.format("请求参数类型不匹配,参数[%s]要求类型为:'%s',但输入值为:'%s'", e.getName(), e.getRequiredType().getName(), value)); + } + + /** + * 拦截未知的运行时异常 + */ + @ExceptionHandler(RuntimeException.class) + public AjaxResult handleRuntimeException(RuntimeException e, HttpServletRequest request) + { + String requestURI = request.getRequestURI(); + log.error("请求地址'{}',发生未知异常.", requestURI, e); + return AjaxResult.error(e.getMessage()); + } + + /** + * 系统异常 + */ + @ExceptionHandler(Exception.class) + public AjaxResult handleException(Exception e, HttpServletRequest request) + { + String requestURI = request.getRequestURI(); + log.error("请求地址'{}',发生系统异常.", requestURI, e); + return AjaxResult.error(e.getMessage()); + } + + /** + * 自定义验证异常 + */ + @ExceptionHandler(BindException.class) + public AjaxResult handleBindException(BindException e) + { + log.error(e.getMessage(), e); + String message = e.getAllErrors().get(0).getDefaultMessage(); + return AjaxResult.error(message); + } + + /** + * 自定义验证异常 + */ + @ExceptionHandler(MethodArgumentNotValidException.class) + public Object handleMethodArgumentNotValidException(MethodArgumentNotValidException e) + { + log.error(e.getMessage(), e); + String message = e.getBindingResult().getFieldError().getDefaultMessage(); + return AjaxResult.error(message); + } + + /** + * 演示模式异常 + */ + @ExceptionHandler(DemoModeException.class) + public AjaxResult handleDemoModeException(DemoModeException e) + { + return AjaxResult.error("演示模式,不允许操作"); + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/web/service/PermissionService.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/web/service/PermissionService.java new file mode 100644 index 0000000..7325687 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/web/service/PermissionService.java @@ -0,0 +1,159 @@ +package com.cmvr.framework.web.service; + +import java.util.Set; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; +import com.cmvr.common.constant.Constants; +import com.cmvr.common.core.domain.entity.SysRole; +import com.cmvr.common.core.domain.model.LoginUser; +import com.cmvr.common.utils.SecurityUtils; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.framework.security.context.PermissionContextHolder; + +/** + * CmvrIot首创 自定义权限实现,ss取自SpringSecurity首字母 + * + * @author cmvr-iot + */ +@Service("ss") +public class PermissionService +{ + /** + * 验证用户是否具备某权限 + * + * @param permission 权限字符串 + * @return 用户是否具备某权限 + */ + public boolean hasPermi(String permission) + { + if (StringUtils.isEmpty(permission)) + { + return false; + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (StringUtils.isNull(loginUser) || CollectionUtils.isEmpty(loginUser.getPermissions())) + { + return false; + } + PermissionContextHolder.setContext(permission); + return hasPermissions(loginUser.getPermissions(), permission); + } + + /** + * 验证用户是否不具备某权限,与 hasPermi逻辑相反 + * + * @param permission 权限字符串 + * @return 用户是否不具备某权限 + */ + public boolean lacksPermi(String permission) + { + return hasPermi(permission) != true; + } + + /** + * 验证用户是否具有以下任意一个权限 + * + * @param permissions 以 PERMISSION_DELIMETER 为分隔符的权限列表 + * @return 用户是否具有以下任意一个权限 + */ + public boolean hasAnyPermi(String permissions) + { + if (StringUtils.isEmpty(permissions)) + { + return false; + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (StringUtils.isNull(loginUser) || CollectionUtils.isEmpty(loginUser.getPermissions())) + { + return false; + } + PermissionContextHolder.setContext(permissions); + Set authorities = loginUser.getPermissions(); + for (String permission : permissions.split(Constants.PERMISSION_DELIMETER)) + { + if (permission != null && hasPermissions(authorities, permission)) + { + return true; + } + } + return false; + } + + /** + * 判断用户是否拥有某个角色 + * + * @param role 角色字符串 + * @return 用户是否具备某角色 + */ + public boolean hasRole(String role) + { + if (StringUtils.isEmpty(role)) + { + return false; + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (StringUtils.isNull(loginUser) || CollectionUtils.isEmpty(loginUser.getUser().getRoles())) + { + return false; + } + for (SysRole sysRole : loginUser.getUser().getRoles()) + { + String roleKey = sysRole.getRoleKey(); + if (Constants.SUPER_ADMIN.equals(roleKey) || roleKey.equals(StringUtils.trim(role))) + { + return true; + } + } + return false; + } + + /** + * 验证用户是否不具备某角色,与 isRole逻辑相反。 + * + * @param role 角色名称 + * @return 用户是否不具备某角色 + */ + public boolean lacksRole(String role) + { + return hasRole(role) != true; + } + + /** + * 验证用户是否具有以下任意一个角色 + * + * @param roles 以 ROLE_NAMES_DELIMETER 为分隔符的角色列表 + * @return 用户是否具有以下任意一个角色 + */ + public boolean hasAnyRoles(String roles) + { + if (StringUtils.isEmpty(roles)) + { + return false; + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (StringUtils.isNull(loginUser) || CollectionUtils.isEmpty(loginUser.getUser().getRoles())) + { + return false; + } + for (String role : roles.split(Constants.ROLE_DELIMETER)) + { + if (hasRole(role)) + { + return true; + } + } + return false; + } + + /** + * 判断是否包含权限 + * + * @param permissions 权限列表 + * @param permission 权限字符串 + * @return 用户是否具备某权限 + */ + private boolean hasPermissions(Set permissions, String permission) + { + return permissions.contains(Constants.ALL_PERMISSION) || permissions.contains(StringUtils.trim(permission)); + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/web/service/SysLoginService.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/web/service/SysLoginService.java new file mode 100644 index 0000000..3d4def1 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/web/service/SysLoginService.java @@ -0,0 +1,181 @@ +package com.cmvr.framework.web.service; + +import javax.annotation.Resource; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.authentication.BadCredentialsException; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.stereotype.Component; +import com.cmvr.common.constant.CacheConstants; +import com.cmvr.common.constant.Constants; +import com.cmvr.common.constant.UserConstants; +import com.cmvr.common.core.domain.entity.SysUser; +import com.cmvr.common.core.domain.model.LoginUser; +import com.cmvr.common.core.redis.RedisCache; +import com.cmvr.common.exception.ServiceException; +import com.cmvr.common.exception.user.BlackListException; +import com.cmvr.common.exception.user.CaptchaException; +import com.cmvr.common.exception.user.CaptchaExpireException; +import com.cmvr.common.exception.user.UserNotExistsException; +import com.cmvr.common.exception.user.UserPasswordNotMatchException; +import com.cmvr.common.utils.DateUtils; +import com.cmvr.common.utils.MessageUtils; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.common.utils.ip.IpUtils; +import com.cmvr.framework.manager.AsyncManager; +import com.cmvr.framework.manager.factory.AsyncFactory; +import com.cmvr.framework.security.context.AuthenticationContextHolder; +import com.cmvr.system.service.ISysConfigService; +import com.cmvr.system.service.ISysUserService; + +/** + * 登录校验方法 + * + * @author cmvr-iot + */ +@Component +public class SysLoginService +{ + @Autowired + private TokenService tokenService; + + @Resource + private AuthenticationManager authenticationManager; + + @Autowired + private RedisCache redisCache; + + @Autowired + private ISysUserService userService; + + @Autowired + private ISysConfigService configService; + + /** + * 登录验证 + * + * @param username 用户名 + * @param password 密码 + * @param code 验证码 + * @param uuid 唯一标识 + * @return 结果 + */ + public String login(String username, String password, String code, String uuid) + { + // 验证码校验 + validateCaptcha(username, code, uuid); + // 登录前置校验 + loginPreCheck(username, password); + // 用户验证 + Authentication authentication = null; + try + { + UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username, password); + AuthenticationContextHolder.setContext(authenticationToken); + // 该方法会去调用UserDetailsServiceImpl.loadUserByUsername + authentication = authenticationManager.authenticate(authenticationToken); + } + catch (Exception e) + { + if (e instanceof BadCredentialsException) + { + AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match"))); + throw new UserPasswordNotMatchException(); + } + else + { + AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, e.getMessage())); + throw new ServiceException(e.getMessage()); + } + } + finally + { + AuthenticationContextHolder.clearContext(); + } + AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"))); + LoginUser loginUser = (LoginUser) authentication.getPrincipal(); + recordLoginInfo(loginUser.getUserId()); + // 生成token + return tokenService.createToken(loginUser); + } + + /** + * 校验验证码 + * + * @param username 用户名 + * @param code 验证码 + * @param uuid 唯一标识 + * @return 结果 + */ + public void validateCaptcha(String username, String code, String uuid) + { + boolean captchaEnabled = configService.selectCaptchaEnabled(); + if (captchaEnabled) + { + String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + StringUtils.nvl(uuid, ""); + String captcha = redisCache.getCacheObject(verifyKey); + if (captcha == null) + { + AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire"))); + throw new CaptchaExpireException(); + } + redisCache.deleteObject(verifyKey); + if (!code.equalsIgnoreCase(captcha)) + { + AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error"))); + throw new CaptchaException(); + } + } + } + + /** + * 登录前置校验 + * @param username 用户名 + * @param password 用户密码 + */ + public void loginPreCheck(String username, String password) + { + // 用户名或密码为空 错误 + if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password)) + { + AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("not.null"))); + throw new UserNotExistsException(); + } + // 密码如果不在指定范围内 错误 + if (password.length() < UserConstants.PASSWORD_MIN_LENGTH + || password.length() > UserConstants.PASSWORD_MAX_LENGTH) + { + AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match"))); + throw new UserPasswordNotMatchException(); + } + // 用户名不在指定范围内 错误 + if (username.length() < UserConstants.USERNAME_MIN_LENGTH + || username.length() > UserConstants.USERNAME_MAX_LENGTH) + { + AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match"))); + throw new UserPasswordNotMatchException(); + } + // IP黑名单校验 + String blackStr = configService.selectConfigByKey("sys.login.blackIPList"); + if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr())) + { + AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("login.blocked"))); + throw new BlackListException(); + } + } + + /** + * 记录登录信息 + * + * @param userId 用户ID + */ + public void recordLoginInfo(Long userId) + { + SysUser sysUser = new SysUser(); + sysUser.setUserId(userId); + sysUser.setLoginIp(IpUtils.getIpAddr()); + sysUser.setLoginDate(DateUtils.getNowDate()); + userService.updateUserProfile(sysUser); + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/web/service/SysPasswordService.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/web/service/SysPasswordService.java new file mode 100644 index 0000000..289b42f --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/web/service/SysPasswordService.java @@ -0,0 +1,86 @@ +package com.cmvr.framework.web.service; + +import java.util.concurrent.TimeUnit; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.security.core.Authentication; +import org.springframework.stereotype.Component; +import com.cmvr.common.constant.CacheConstants; +import com.cmvr.common.core.domain.entity.SysUser; +import com.cmvr.common.core.redis.RedisCache; +import com.cmvr.common.exception.user.UserPasswordNotMatchException; +import com.cmvr.common.exception.user.UserPasswordRetryLimitExceedException; +import com.cmvr.common.utils.SecurityUtils; +import com.cmvr.framework.security.context.AuthenticationContextHolder; + +/** + * 登录密码方法 + * + * @author cmvr-iot + */ +@Component +public class SysPasswordService +{ + @Autowired + private RedisCache redisCache; + + @Value(value = "${user.password.maxRetryCount}") + private int maxRetryCount; + + @Value(value = "${user.password.lockTime}") + private int lockTime; + + /** + * 登录账户密码错误次数缓存键名 + * + * @param username 用户名 + * @return 缓存键key + */ + private String getCacheKey(String username) + { + return CacheConstants.PWD_ERR_CNT_KEY + username; + } + + public void validate(SysUser user) + { + Authentication usernamePasswordAuthenticationToken = AuthenticationContextHolder.getContext(); + String username = usernamePasswordAuthenticationToken.getName(); + String password = usernamePasswordAuthenticationToken.getCredentials().toString(); + + Integer retryCount = redisCache.getCacheObject(getCacheKey(username)); + + if (retryCount == null) + { + retryCount = 0; + } + + if (retryCount >= Integer.valueOf(maxRetryCount).intValue()) + { + throw new UserPasswordRetryLimitExceedException(maxRetryCount, lockTime); + } + + if (!matches(user, password)) + { + retryCount = retryCount + 1; + redisCache.setCacheObject(getCacheKey(username), retryCount, lockTime, TimeUnit.MINUTES); + throw new UserPasswordNotMatchException(); + } + else + { + clearLoginRecordCache(username); + } + } + + public boolean matches(SysUser user, String rawPassword) + { + return SecurityUtils.matchesPassword(rawPassword, user.getPassword()); + } + + public void clearLoginRecordCache(String loginName) + { + if (redisCache.hasKey(getCacheKey(loginName))) + { + redisCache.deleteObject(getCacheKey(loginName)); + } + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/web/service/SysPermissionService.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/web/service/SysPermissionService.java new file mode 100644 index 0000000..f2cc750 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/web/service/SysPermissionService.java @@ -0,0 +1,88 @@ +package com.cmvr.framework.web.service; + +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; +import com.cmvr.common.constant.UserConstants; +import com.cmvr.common.core.domain.entity.SysRole; +import com.cmvr.common.core.domain.entity.SysUser; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.system.service.ISysMenuService; +import com.cmvr.system.service.ISysRoleService; + +/** + * 用户权限处理 + * + * @author cmvr-iot + */ +@Component +public class SysPermissionService +{ + @Autowired + private ISysRoleService roleService; + + @Autowired + private ISysMenuService menuService; + + /** + * 获取角色数据权限 + * + * @param user 用户信息 + * @return 角色权限信息 + */ + public Set getRolePermission(SysUser user) + { + Set roles = new HashSet(); + // 管理员拥有所有权限 + if (user.isAdmin()) + { + roles.add("admin"); + } + else + { + roles.addAll(roleService.selectRolePermissionByUserId(user.getUserId())); + } + return roles; + } + + /** + * 获取菜单数据权限 + * + * @param user 用户信息 + * @return 菜单权限信息 + */ + public Set getMenuPermission(SysUser user) + { + Set perms = new HashSet(); + // 管理员拥有所有权限 + if (user.isAdmin()) + { + perms.add("*:*:*"); + } + else + { + List roles = user.getRoles(); + if (!CollectionUtils.isEmpty(roles)) + { + // 多角色设置permissions属性,以便数据权限匹配权限 + for (SysRole role : roles) + { + if (StringUtils.equals(role.getStatus(), UserConstants.ROLE_NORMAL)) + { + Set rolePerms = menuService.selectMenuPermsByRoleId(role.getRoleId()); + role.setPermissions(rolePerms); + perms.addAll(rolePerms); + } + } + } + else + { + perms.addAll(menuService.selectMenuPermsByUserId(user.getUserId())); + } + } + return perms; + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/web/service/SysRegisterService.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/web/service/SysRegisterService.java new file mode 100644 index 0000000..9b19bb1 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/web/service/SysRegisterService.java @@ -0,0 +1,115 @@ +package com.cmvr.framework.web.service; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import com.cmvr.common.constant.CacheConstants; +import com.cmvr.common.constant.Constants; +import com.cmvr.common.constant.UserConstants; +import com.cmvr.common.core.domain.entity.SysUser; +import com.cmvr.common.core.domain.model.RegisterBody; +import com.cmvr.common.core.redis.RedisCache; +import com.cmvr.common.exception.user.CaptchaException; +import com.cmvr.common.exception.user.CaptchaExpireException; +import com.cmvr.common.utils.MessageUtils; +import com.cmvr.common.utils.SecurityUtils; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.framework.manager.AsyncManager; +import com.cmvr.framework.manager.factory.AsyncFactory; +import com.cmvr.system.service.ISysConfigService; +import com.cmvr.system.service.ISysUserService; + +/** + * 注册校验方法 + * + * @author cmvr-iot + */ +@Component +public class SysRegisterService +{ + @Autowired + private ISysUserService userService; + + @Autowired + private ISysConfigService configService; + + @Autowired + private RedisCache redisCache; + + /** + * 注册 + */ + public String register(RegisterBody registerBody) + { + String msg = "", username = registerBody.getUsername(), password = registerBody.getPassword(); + SysUser sysUser = new SysUser(); + sysUser.setUserName(username); + + // 验证码开关 + boolean captchaEnabled = configService.selectCaptchaEnabled(); + if (captchaEnabled) + { + validateCaptcha(username, registerBody.getCode(), registerBody.getUuid()); + } + + if (StringUtils.isEmpty(username)) + { + msg = "用户名不能为空"; + } + else if (StringUtils.isEmpty(password)) + { + msg = "用户密码不能为空"; + } + else if (username.length() < UserConstants.USERNAME_MIN_LENGTH + || username.length() > UserConstants.USERNAME_MAX_LENGTH) + { + msg = "账户长度必须在2到20个字符之间"; + } + else if (password.length() < UserConstants.PASSWORD_MIN_LENGTH + || password.length() > UserConstants.PASSWORD_MAX_LENGTH) + { + msg = "密码长度必须在5到20个字符之间"; + } + else if (!userService.checkUserNameUnique(sysUser)) + { + msg = "保存用户'" + username + "'失败,注册账号已存在"; + } + else + { + sysUser.setNickName(username); + sysUser.setPassword(SecurityUtils.encryptPassword(password)); + boolean regFlag = userService.registerUser(sysUser); + if (!regFlag) + { + msg = "注册失败,请联系系统管理人员"; + } + else + { + AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.REGISTER, MessageUtils.message("user.register.success"))); + } + } + return msg; + } + + /** + * 校验验证码 + * + * @param username 用户名 + * @param code 验证码 + * @param uuid 唯一标识 + * @return 结果 + */ + public void validateCaptcha(String username, String code, String uuid) + { + String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + StringUtils.nvl(uuid, ""); + String captcha = redisCache.getCacheObject(verifyKey); + redisCache.deleteObject(verifyKey); + if (captcha == null) + { + throw new CaptchaExpireException(); + } + if (!code.equalsIgnoreCase(captcha)) + { + throw new CaptchaException(); + } + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/web/service/TokenService.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/web/service/TokenService.java new file mode 100644 index 0000000..c98388f --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/web/service/TokenService.java @@ -0,0 +1,232 @@ +package com.cmvr.framework.web.service; + +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; +import java.util.concurrent.TimeUnit; +import javax.servlet.http.HttpServletRequest; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; +import com.cmvr.common.constant.CacheConstants; +import com.cmvr.common.constant.Constants; +import com.cmvr.common.core.domain.model.LoginUser; +import com.cmvr.common.core.redis.RedisCache; +import com.cmvr.common.utils.ServletUtils; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.common.utils.ip.AddressUtils; +import com.cmvr.common.utils.ip.IpUtils; +import com.cmvr.common.utils.uuid.IdUtils; +import eu.bitwalker.useragentutils.UserAgent; +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.Jwts; +import io.jsonwebtoken.SignatureAlgorithm; + +/** + * token验证处理 + * + * @author cmvr-iot + */ +@Component +public class TokenService +{ + private static final Logger log = LoggerFactory.getLogger(TokenService.class); + + // 令牌自定义标识 + @Value("${token.header}") + private String header; + + // 令牌秘钥 + @Value("${token.secret}") + private String secret; + + // 令牌有效期(默认30分钟) + @Value("${token.expireTime}") + private int expireTime; + + protected static final long MILLIS_SECOND = 1000; + + protected static final long MILLIS_MINUTE = 60 * MILLIS_SECOND; + + private static final Long MILLIS_MINUTE_TEN = 20 * 60 * 1000L; + + @Autowired + private RedisCache redisCache; + + /** + * 获取用户身份信息 + * + * @return 用户信息 + */ + public LoginUser getLoginUser(HttpServletRequest request) + { + // 获取请求携带的令牌 + String token = getToken(request); + if (StringUtils.isNotEmpty(token)) + { + try + { + Claims claims = parseToken(token); + // 解析对应的权限以及用户信息 + String uuid = (String) claims.get(Constants.LOGIN_USER_KEY); + String userKey = getTokenKey(uuid); + LoginUser user = redisCache.getCacheObject(userKey); + return user; + } + catch (Exception e) + { + log.error("获取用户信息异常'{}'", e.getMessage()); + } + } + return null; + } + + /** + * 设置用户身份信息 + */ + public void setLoginUser(LoginUser loginUser) + { + if (StringUtils.isNotNull(loginUser) && StringUtils.isNotEmpty(loginUser.getToken())) + { + refreshToken(loginUser); + } + } + + /** + * 删除用户身份信息 + */ + public void delLoginUser(String token) + { + if (StringUtils.isNotEmpty(token)) + { + String userKey = getTokenKey(token); + redisCache.deleteObject(userKey); + } + } + + /** + * 创建令牌 + * + * @param loginUser 用户信息 + * @return 令牌 + */ + public String createToken(LoginUser loginUser) + { + String token = IdUtils.fastUUID(); + loginUser.setToken(token); + setUserAgent(loginUser); + refreshToken(loginUser); + + Map claims = new HashMap<>(); + claims.put(Constants.LOGIN_USER_KEY, token); + return createToken(claims); + } + + /** + * 验证令牌有效期,相差不足20分钟,自动刷新缓存 + * + * @param loginUser + * @return 令牌 + */ + public void verifyToken(LoginUser loginUser) + { + long expireTime = loginUser.getExpireTime(); + long currentTime = System.currentTimeMillis(); + if (expireTime - currentTime <= MILLIS_MINUTE_TEN) + { + refreshToken(loginUser); + } + } + + /** + * 刷新令牌有效期 + * + * @param loginUser 登录信息 + */ + public void refreshToken(LoginUser loginUser) + { + loginUser.setLoginTime(System.currentTimeMillis()); + loginUser.setExpireTime(loginUser.getLoginTime() + expireTime * MILLIS_MINUTE); + // 根据uuid将loginUser缓存 + String userKey = getTokenKey(loginUser.getToken()); + redisCache.setCacheObject(userKey, loginUser, expireTime, TimeUnit.MINUTES); + } + + /** + * 设置用户代理信息 + * + * @param loginUser 登录信息 + */ + public void setUserAgent(LoginUser loginUser) + { + UserAgent userAgent = UserAgent.parseUserAgentString(ServletUtils.getRequest().getHeader("User-Agent")); + String ip = IpUtils.getIpAddr(); + loginUser.setIpaddr(ip); + loginUser.setLoginLocation(AddressUtils.getRealAddressByIP(ip)); + loginUser.setBrowser(userAgent.getBrowser().getName()); + loginUser.setOs(userAgent.getOperatingSystem().getName()); + } + + /** + * 从数据声明生成令牌 + * + * @param claims 数据声明 + * @return 令牌 + */ + private String createToken(Map claims) + { + String token = Jwts.builder() + .setClaims(claims) + .signWith(SignatureAlgorithm.HS512, secret).compact(); + return token; + } + + /** + * 从令牌中获取数据声明 + * + * @param token 令牌 + * @return 数据声明 + */ + private Claims parseToken(String token) + { + return Jwts.parser() + .setSigningKey(secret) + .parseClaimsJws(token) + .getBody(); + } + + /** + * 从令牌中获取用户名 + * + * @param token 令牌 + * @return 用户名 + */ + public String getUsernameFromToken(String token) + { + Claims claims = parseToken(token); + return claims.getSubject(); + } + + /** + * 获取请求token + * + * @param request + * @return token + */ + private String getToken(HttpServletRequest request) + { + String token = Optional.ofNullable(request.getHeader(header)).orElse(request.getParameter(header)); + if (StringUtils.isNotEmpty(token) && token.startsWith(Constants.TOKEN_PREFIX)) + { + token = token.replace(Constants.TOKEN_PREFIX, ""); + } + return token; + } + + private String getTokenKey(String uuid) + { + return CacheConstants.LOGIN_TOKEN_KEY + uuid; + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/web/service/UserDetailsServiceImpl.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/web/service/UserDetailsServiceImpl.java new file mode 100644 index 0000000..d949fc2 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/web/service/UserDetailsServiceImpl.java @@ -0,0 +1,66 @@ +package com.cmvr.framework.web.service; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.stereotype.Service; +import com.cmvr.common.core.domain.entity.SysUser; +import com.cmvr.common.core.domain.model.LoginUser; +import com.cmvr.common.enums.UserStatus; +import com.cmvr.common.exception.ServiceException; +import com.cmvr.common.utils.MessageUtils; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.system.service.ISysUserService; + +/** + * 用户验证处理 + * + * @author cmvr-iot + */ +@Service +public class UserDetailsServiceImpl implements UserDetailsService +{ + private static final Logger log = LoggerFactory.getLogger(UserDetailsServiceImpl.class); + + @Autowired + private ISysUserService userService; + + @Autowired + private SysPasswordService passwordService; + + @Autowired + private SysPermissionService permissionService; + + @Override + public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException + { + SysUser user = userService.selectUserByUserName(username); + if (StringUtils.isNull(user)) + { + log.info("登录用户:{} 不存在.", username); + throw new ServiceException(MessageUtils.message("user.not.exists")); + } + else if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) + { + log.info("登录用户:{} 已被删除.", username); + throw new ServiceException(MessageUtils.message("user.password.delete")); + } + else if (UserStatus.DISABLE.getCode().equals(user.getStatus())) + { + log.info("登录用户:{} 已被停用.", username); + throw new ServiceException(MessageUtils.message("user.blocked")); + } + + passwordService.validate(user); + + return createLoginUser(user); + } + + public UserDetails createLoginUser(SysUser user) + { + return new LoginUser(user.getUserId(), user.getDeptId(), user, permissionService.getMenuPermission(user)); + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/annotation/WSMessageType.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/annotation/WSMessageType.java new file mode 100644 index 0000000..ae67e67 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/annotation/WSMessageType.java @@ -0,0 +1,18 @@ +package com.cmvr.framework.websocket.annotation; + +import com.cmvr.framework.websocket.enums.WSMessageTypeEnum; +import com.cmvr.framework.websocket.message.WSMessage; +import org.springframework.stereotype.Component; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +@Component +public @interface WSMessageType { + WSMessageTypeEnum value(); // 消息类型 + Class messageClass(); // 对应的消息类 +} \ No newline at end of file diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/config/WSConfig.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/config/WSConfig.java new file mode 100644 index 0000000..f2d454f --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/config/WSConfig.java @@ -0,0 +1,25 @@ +package com.cmvr.framework.websocket.config; + + +import com.cmvr.framework.websocket.server.WSServer; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.socket.config.annotation.EnableWebSocket; +import org.springframework.web.socket.config.annotation.WebSocketConfigurer; +import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry; + +@Configuration +@EnableWebSocket +public class WSConfig implements WebSocketConfigurer { + + @Override + public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { + registry.addHandler(myWebSocketHandler(), "/ws") // 指定路径 + .setAllowedOrigins("*");// 允许跨域; + } + + @Bean + public WSServer myWebSocketHandler() { + return new WSServer(); + } +} \ No newline at end of file diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/enums/WSMessageTypeEnum.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/enums/WSMessageTypeEnum.java new file mode 100644 index 0000000..80aa844 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/enums/WSMessageTypeEnum.java @@ -0,0 +1,28 @@ +package com.cmvr.framework.websocket.enums; + +import lombok.Getter; + +@Getter +public enum WSMessageTypeEnum { + COMMON("common"), + CHANNEL_SUBSCRIPTION("channel_subscription"), + CAMERA_COMMAND("camera_command"), + CAMERA_STREAM("camera_stream"), + HEARTBEAT("heartbeat"), + ERROR("error"); + + private final String value; + + WSMessageTypeEnum(String value) { + this.value = value; + } + + public static WSMessageTypeEnum fromValue(String value) { + for (WSMessageTypeEnum type : values()) { + if (type.value.equals(value)) { + return type; + } + } + throw new IllegalArgumentException("未知消息类型: " + value); + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/handler/CameraCommandMessageHandler.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/handler/CameraCommandMessageHandler.java new file mode 100644 index 0000000..068e5b5 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/handler/CameraCommandMessageHandler.java @@ -0,0 +1,27 @@ +package com.cmvr.framework.websocket.handler; + +import com.cmvr.framework.websocket.annotation.WSMessageType; +import com.cmvr.framework.websocket.enums.WSMessageTypeEnum; +import com.cmvr.framework.websocket.message.WSCameraCommandMessage; +import org.springframework.web.socket.TextMessage; +import org.springframework.web.socket.WebSocketSession; + +@WSMessageType(value = WSMessageTypeEnum.CAMERA_COMMAND, messageClass = WSCameraCommandMessage.class) +public class CameraCommandMessageHandler implements WSMessageHandler { + + @Override + public void handle(WebSocketSession session, WSCameraCommandMessage message) throws Exception { + String cameraId = message.getCameraId(); + String action = message.getAction(); + if ("open".equals(action)) { + System.out.println("打开摄像头: " + cameraId); + session.sendMessage(new TextMessage("摄像头 " + cameraId + " 已打开")); + } else if ("close".equals(action)) { + System.out.println("关闭摄像头: " + cameraId); + session.sendMessage(new TextMessage("摄像头 " + cameraId + " 已关闭")); + } else { + System.out.println("未知摄像头操作: " + action); + session.sendMessage(new TextMessage("未知操作: " + action)); + } + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/handler/ChannelSubscriptionMessageHandler.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/handler/ChannelSubscriptionMessageHandler.java new file mode 100644 index 0000000..a1e2a79 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/handler/ChannelSubscriptionMessageHandler.java @@ -0,0 +1,71 @@ +package com.cmvr.framework.websocket.handler; + +import com.cmvr.framework.websocket.annotation.WSMessageType; +import com.cmvr.framework.websocket.enums.WSMessageTypeEnum; +import com.cmvr.framework.websocket.manager.ChannelSubscriptionManager; +import com.cmvr.framework.websocket.message.WSChannelSubscriptionMessage; +import com.cmvr.framework.websocket.service.GrpcClientService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.socket.WebSocketSession; + +import java.util.concurrent.CompletableFuture; + +/** + * 频道订阅消息处理 + */ +@WSMessageType(value = WSMessageTypeEnum.CHANNEL_SUBSCRIPTION, messageClass = WSChannelSubscriptionMessage.class) +public class ChannelSubscriptionMessageHandler implements WSMessageHandler { + private static final Logger log = LoggerFactory.getLogger(ChannelSubscriptionMessageHandler.class); + @Autowired + private ChannelSubscriptionManager channelSubscriptionManager; + @Autowired + private GrpcClientService grpcClientService; + public void handle(WebSocketSession session, WSChannelSubscriptionMessage message) throws Exception { + String action = message.getAction(); + String userId = session.getAttributes().get("userId").toString(); + // service/method/terminalId/deviceId + String channel = message.getChannel(); + String[] channelInfoArr = channel.split("\\/"); + String service = channelInfoArr[0]; + String method = channelInfoArr[1]; + String terminalId = channelInfoArr[2]; + String deviceId = channelInfoArr[3]; + if ("subscribe".equals(action)) { + if (!channelSubscriptionManager.hasSubscribers(channel)) { + // 异步调用gRPC + CompletableFuture.runAsync(() -> { + try { + grpcClientService.send(true, terminalId, deviceId, service, method); + } catch (Exception e) { + log.error("gRPC订阅失败: {}", e.getMessage()); + } + }); + } + channelSubscriptionManager.subscribe(channel, session); + } else if ("unsubscribe".equals(action)) { + channelSubscriptionManager.unsubscribe(channel, session); + if (!channelSubscriptionManager.hasSubscribers(channel)) { + CompletableFuture.runAsync(() -> { + try { + grpcClientService.send(false, terminalId, deviceId, service, method); + } catch (Exception e) { + log.error("gRPC取消订阅失败: {}", e.getMessage()); + } + }); + } + } else { + System.out.println("未知频道操作: " + action); + return; + } + + // 统一记录日志 + log.info("用户{} {} 频道{}", userId, getActionDescription(action), channel); + } + + // 根据动作获取描述文本 + private String getActionDescription(String action) { + return "subscribe".equals(action) ? "订阅了" : "取消订阅了"; + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/handler/CommonMessageHandler.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/handler/CommonMessageHandler.java new file mode 100644 index 0000000..cc6549c --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/handler/CommonMessageHandler.java @@ -0,0 +1,19 @@ +package com.cmvr.framework.websocket.handler; + +import com.cmvr.framework.websocket.annotation.WSMessageType; +import com.cmvr.framework.websocket.enums.WSMessageTypeEnum; +import com.cmvr.framework.websocket.message.WSCommonMessage; +import org.springframework.web.socket.TextMessage; +import org.springframework.web.socket.WebSocketSession; + +import java.io.IOException; + +@WSMessageType(value = WSMessageTypeEnum.COMMON, messageClass = WSCommonMessage.class) +public class CommonMessageHandler implements WSMessageHandler{ + + @Override + public void handle(WebSocketSession session, WSCommonMessage message) throws IOException { + System.out.println("common message: " + message.getContent()); + session.sendMessage(new TextMessage(message.getContent())); + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/handler/HeartbeatMessageHandler.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/handler/HeartbeatMessageHandler.java new file mode 100644 index 0000000..5320b48 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/handler/HeartbeatMessageHandler.java @@ -0,0 +1,17 @@ +package com.cmvr.framework.websocket.handler; + +import com.cmvr.framework.websocket.annotation.WSMessageType; +import com.cmvr.framework.websocket.enums.WSMessageTypeEnum; +import com.cmvr.framework.websocket.message.WSHeartbeatMessage; +import org.springframework.web.socket.WebSocketSession; + +import java.io.IOException; + +@WSMessageType(value = WSMessageTypeEnum.HEARTBEAT, messageClass = WSHeartbeatMessage.class) +public class HeartbeatMessageHandler implements WSMessageHandler{ + + @Override + public void handle(WebSocketSession session, WSHeartbeatMessage message) throws IOException { + System.out.println("heartbeat"); + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/handler/WSMessageHandler.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/handler/WSMessageHandler.java new file mode 100644 index 0000000..174e5ac --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/handler/WSMessageHandler.java @@ -0,0 +1,11 @@ +package com.cmvr.framework.websocket.handler; + +import com.cmvr.framework.websocket.message.WSMessage; +import org.springframework.web.socket.WebSocketSession; + +/** + * 消息分发处理器接口 + */ +public interface WSMessageHandler { + void handle(WebSocketSession session, T message) throws Exception; +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/manager/ChannelSubscriptionManager.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/manager/ChannelSubscriptionManager.java new file mode 100644 index 0000000..8ec9f96 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/manager/ChannelSubscriptionManager.java @@ -0,0 +1,43 @@ +package com.cmvr.framework.websocket.manager; + +import org.springframework.stereotype.Component; +import org.springframework.web.socket.WebSocketSession; + +import java.util.Collections; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; + +@Component +public class ChannelSubscriptionManager { + + // 频道 -> 连接集合 + private final Map> channelSessions = new ConcurrentHashMap<>(); + + public void subscribe(String channel, WebSocketSession session) { + channelSessions.computeIfAbsent(channel, k -> ConcurrentHashMap.newKeySet()).add(session); + } + + public void unsubscribe(String channel, WebSocketSession session) { + Set sessions = channelSessions.get(channel); + if (sessions != null) { + sessions.remove(session); + if (sessions.isEmpty()) { + channelSessions.remove(channel); + } + } + } + + public Set getSubscribedSessions(String channel) { + return channelSessions.getOrDefault(channel, Collections.emptySet()); + } + + public boolean hasSubscribers(String channel) { + return channelSessions.containsKey(channel); + } + + public void clearSession(WebSocketSession session) { + channelSessions.keySet().forEach(channel -> unsubscribe(channel, session)); + } + +} \ No newline at end of file diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/manager/WSSessionManager.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/manager/WSSessionManager.java new file mode 100644 index 0000000..c8fbb3c --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/manager/WSSessionManager.java @@ -0,0 +1,32 @@ +package com.cmvr.framework.websocket.manager; + +import cn.hutool.db.Session; +import org.springframework.stereotype.Component; +import org.springframework.web.socket.TextMessage; +import org.springframework.web.socket.WebSocketSession; + +import java.io.IOException; +import java.util.*; +import java.util.concurrent.ConcurrentHashMap; +import java.util.stream.Collectors; + +@Component +public class WSSessionManager { + private final Set sessionSet = ConcurrentHashMap.newKeySet(); + + public void addSession(WebSocketSession session) { + sessionSet.add(session); + } + + public void removeSession(WebSocketSession session) { + sessionSet.remove(session); + } + + public Collection getAllSessions() { + return sessionSet; + } + + public boolean containsSession(Session session) { + return sessionSet.contains(session); + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/message/WSCameraCommandMessage.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/message/WSCameraCommandMessage.java new file mode 100644 index 0000000..60551a8 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/message/WSCameraCommandMessage.java @@ -0,0 +1,13 @@ +package com.cmvr.framework.websocket.message; + +import com.cmvr.framework.websocket.enums.WSMessageTypeEnum; +import lombok.Data; + +@Data +public class WSCameraCommandMessage extends WSMessage { + private String cameraId; + private String action; + public WSCameraCommandMessage() { + super(WSMessageTypeEnum.CAMERA_COMMAND.getValue()); + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/message/WSCameraStreamMessage.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/message/WSCameraStreamMessage.java new file mode 100644 index 0000000..1e1b52c --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/message/WSCameraStreamMessage.java @@ -0,0 +1,23 @@ +package com.cmvr.framework.websocket.message; + +import com.cmvr.framework.websocket.enums.WSMessageTypeEnum; + +public class WSCameraStreamMessage extends WSMessage{ + private String content; + + public WSCameraStreamMessage() { + super(WSMessageTypeEnum.CAMERA_STREAM.getValue(), "system"); + } + + public WSCameraStreamMessage(String sender, String content) { + super(WSMessageTypeEnum.CAMERA_STREAM.getValue(), sender); + this.content = content; + } + + public String getContent() { + return content; + } + public void setContent(String content) { + this.content = content; + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/message/WSChannelSubscriptionMessage.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/message/WSChannelSubscriptionMessage.java new file mode 100644 index 0000000..1fe7807 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/message/WSChannelSubscriptionMessage.java @@ -0,0 +1,10 @@ +package com.cmvr.framework.websocket.message; + +import lombok.Data; + +@Data +public class WSChannelSubscriptionMessage extends WSMessage { + private String action; + private Object payload; + private String channel; +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/message/WSCommonMessage.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/message/WSCommonMessage.java new file mode 100644 index 0000000..de9b6de --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/message/WSCommonMessage.java @@ -0,0 +1,24 @@ +package com.cmvr.framework.websocket.message; + + +import com.cmvr.framework.websocket.enums.WSMessageTypeEnum; + +public class WSCommonMessage extends WSMessage{ + private String content; + + public WSCommonMessage() { + super(WSMessageTypeEnum.COMMON.getValue(), "system"); + } + + public WSCommonMessage(String sender, String content) { + super(WSMessageTypeEnum.COMMON.getValue(), sender); + this.content = content; + } + + public String getContent() { + return content; + } + public void setContent(String content) { + this.content = content; + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/message/WSHeartbeatMessage.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/message/WSHeartbeatMessage.java new file mode 100644 index 0000000..68cbb44 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/message/WSHeartbeatMessage.java @@ -0,0 +1,14 @@ +package com.cmvr.framework.websocket.message; + + +import com.cmvr.framework.websocket.enums.WSMessageTypeEnum; + +public class WSHeartbeatMessage extends WSMessage{ + + public WSHeartbeatMessage() { + super(WSMessageTypeEnum.HEARTBEAT.getValue(), "system"); + } + public WSHeartbeatMessage(String sender) { + super(WSMessageTypeEnum.HEARTBEAT.getValue(), sender); + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/message/WSMessage.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/message/WSMessage.java new file mode 100644 index 0000000..2adedb3 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/message/WSMessage.java @@ -0,0 +1,29 @@ +package com.cmvr.framework.websocket.message; + +import com.cmvr.framework.websocket.enums.WSMessageTypeEnum; +import lombok.Data; + +@Data +public class WSMessage { + private String type; + private String sender; + private long timestamp; + + + public WSMessage() { + this.sender = "system"; + this.timestamp = System.currentTimeMillis(); + } + + public WSMessage(String type) { + this.type = type; + this.sender = "system"; + this.timestamp = System.currentTimeMillis(); + } + + public WSMessage(String type, String sender) { + this.type = type; + this.sender = sender; + this.timestamp = System.currentTimeMillis(); + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/registry/MessageHandlerRegistry.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/registry/MessageHandlerRegistry.java new file mode 100644 index 0000000..aa844e1 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/registry/MessageHandlerRegistry.java @@ -0,0 +1,62 @@ +package com.cmvr.framework.websocket.registry; + +import com.cmvr.framework.websocket.annotation.WSMessageType; +import com.cmvr.framework.websocket.enums.WSMessageTypeEnum; +import com.cmvr.framework.websocket.handler.WSMessageHandler; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.Getter; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.stereotype.Component; +import org.springframework.web.socket.WebSocketSession; + +import java.lang.reflect.Method; +import java.util.HashMap; +import java.util.Map; + +@Component +public class MessageHandlerRegistry implements ApplicationContextAware { + private final Map> handlerMap = new HashMap<>(); + + @Override + public void setApplicationContext(ApplicationContext context) { + Map beans = context.getBeansWithAnnotation(WSMessageType.class); + for (Object bean : beans.values()) { + if (bean instanceof WSMessageHandler) { + WSMessageHandler handler = (WSMessageHandler) bean; + WSMessageType anno = bean.getClass().getAnnotation(WSMessageType.class); + handlerMap.put(anno.value(), new HandlerEntry<>(handler, anno.messageClass())); + } + } + } + + public void handle(WebSocketSession session, String type, JsonNode payload) throws Exception { + WSMessageTypeEnum typeEnum = WSMessageTypeEnum.fromValue(type); + HandlerEntry entry = handlerMap.get(typeEnum); + if (entry == null) { + throw new IllegalArgumentException("未知消息类型: " + type); + } + + Object message = new ObjectMapper().treeToValue(payload, entry.getMessageClass()); + entry.getHandleMethod().invoke(entry.getHandler(), session, message); + } + + @Getter + static class HandlerEntry, T> { + private final H handler; + private final Class messageClass; + private final Method handleMethod; + + public HandlerEntry(H handler, Class messageClass) { + this.handler = handler; + this.messageClass = messageClass; + try { + this.handleMethod = handler.getClass().getMethod("handle", WebSocketSession.class, messageClass); + } catch (NoSuchMethodException e) { + throw new IllegalStateException("找不到 handle 方法", e); + } + } + + } +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/server/WSServer.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/server/WSServer.java new file mode 100644 index 0000000..08ee7d4 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/server/WSServer.java @@ -0,0 +1,115 @@ +package com.cmvr.framework.websocket.server; + + +import com.cmvr.framework.websocket.manager.ChannelSubscriptionManager; +import com.cmvr.framework.websocket.manager.WSSessionManager; +import com.cmvr.framework.websocket.registry.MessageHandlerRegistry; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ObjectNode; +import org.jetbrains.annotations.NotNull; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.socket.CloseStatus; +import org.springframework.web.socket.TextMessage; +import org.springframework.web.socket.WebSocketSession; +import org.springframework.web.socket.handler.TextWebSocketHandler; + +import java.net.URI; +import java.util.Objects; +import java.util.concurrent.Semaphore; +import java.util.concurrent.atomic.AtomicInteger; + +/** + * WebSocket 消息处理器(支持用户限流、消息推送) + */ +public class WSServer extends TextWebSocketHandler { + + private static final Logger log = LoggerFactory.getLogger(WSServer.class); + + // 最大并发连接数 + public static final int MAX_ONLINE_COUNT = 100; + + // 限流控制 + private static final Semaphore SEMAPHORE = new Semaphore(MAX_ONLINE_COUNT); + + + // 当前在线人数 + private static final AtomicInteger ONLINE_COUNT = new AtomicInteger(0); + + + private final ObjectMapper objectMapper = new ObjectMapper(); + + + @Autowired + private MessageHandlerRegistry registry; + + @Autowired + private WSSessionManager sessionManager; + + @Autowired + private ChannelSubscriptionManager channelSubscriptionManager; + + @Override + public void afterConnectionEstablished(@NotNull WebSocketSession session) throws Exception { + if (!SEMAPHORE.tryAcquire()) { + log.warn("连接拒绝:超过最大在线人数 {}", MAX_ONLINE_COUNT); + registry.handle(session, "common", buildCommonMessage("当前在线人数超过限制:" + MAX_ONLINE_COUNT)); + session.close(); + return; + } + String userId = extractUserIdFromUri(Objects.requireNonNull(session.getUri())); + if (userId != null) { + session.getAttributes().put("userId", userId); + } else { + System.err.println("无法从 URI 中提取 userId"); + } + session.setBinaryMessageSizeLimit(1024 * 1024 * 10); // 设置最大接收消息大小为 10MB + sessionManager.addSession(session); + ONLINE_COUNT.incrementAndGet(); + log.info("WebSocket连接建立:sid={},当前在线:{}", userId, ONLINE_COUNT.get()); + } + + @Override + protected void handleTextMessage(@NotNull WebSocketSession session, TextMessage message) throws Exception { + JsonNode jsonNode = objectMapper.readTree(message.getPayload()); + String type = jsonNode.get("type").asText(); + + registry.handle(session, type, jsonNode); + } + + @Override + public void afterConnectionClosed(@NotNull WebSocketSession session, @NotNull CloseStatus status) throws Exception { + ONLINE_COUNT.decrementAndGet(); + SEMAPHORE.release(); + + sessionManager.removeSession(session); + // 清除通道session + channelSubscriptionManager.clearSession(session); + log.info("连接关闭 sid={},当前在线:{}", session.getAttributes().get("userId"), ONLINE_COUNT.get()); + } + + + public static JsonNode buildCommonMessage(String content) { + ObjectNode node = new ObjectMapper().createObjectNode(); + node.put("type", "common"); + node.put("sender", "system"); + node.put("content", content); + return node; + } + + private String extractUserIdFromUri(URI uri) { + String query = uri.getQuery(); + if (query != null) { + for (String param : query.split("&")) { + if (param.startsWith("userId=")) { + return param.split("=")[1]; + } + } + } + return null; + } + + +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/service/GrpcClientService.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/service/GrpcClientService.java new file mode 100644 index 0000000..01ea461 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/service/GrpcClientService.java @@ -0,0 +1,15 @@ +package com.cmvr.framework.websocket.service; + +/** + * gRPC 客户端服务 + */ +public interface GrpcClientService { + /** + * 发送 gRPC 请求 + * @param isStart 是否开始 + * @param terminalId 终端ID + * @param deviceId 设备ID + * @param method 方法 + */ + void send(boolean isStart, String terminalId, String deviceId, String service,String method); +} diff --git a/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/service/MessagePushService.java b/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/service/MessagePushService.java new file mode 100644 index 0000000..f6ba775 --- /dev/null +++ b/cmvr-iot-framework/src/main/java/com/cmvr/framework/websocket/service/MessagePushService.java @@ -0,0 +1,71 @@ +package com.cmvr.framework.websocket.service; + +import com.cmvr.common.exception.GlobalException; +import com.cmvr.framework.websocket.manager.ChannelSubscriptionManager; +import com.cmvr.framework.websocket.message.WSChannelSubscriptionMessage; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.socket.BinaryMessage; +import org.springframework.web.socket.WebSocketSession; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.zip.GZIPOutputStream; + + +@Service +public class MessagePushService { + + private static final Logger log = LoggerFactory.getLogger(MessagePushService.class); + + @Autowired + private ChannelSubscriptionManager subscriptionManager; + + private final ObjectMapper objectMapper = new ObjectMapper(); + + public void pushToChannel(String channel, Object payload) { + try { + WSChannelSubscriptionMessage message = new WSChannelSubscriptionMessage(); + message.setChannel(channel); + message.setTimestamp(System.currentTimeMillis()); + message.setPayload(payload); + + String json = objectMapper.writeValueAsString(message); + + byte[] data = json.getBytes(); + + // 压缩数据 + byte[] compressedData = compress(data); + + BinaryMessage binaryMessage = new BinaryMessage(compressedData); + if (!subscriptionManager.hasSubscribers(channel)) { + throw new GlobalException("没有订阅该频道的会话"); + } + subscriptionManager.getSubscribedSessions(channel).stream() + .filter(WebSocketSession::isOpen) + .forEach(session -> { + try { + session.sendMessage(binaryMessage); + } catch (IOException e) { + log.error("消息发送失败: {}", e.getMessage()); + } + }); + + } catch (GlobalException e) { + throw new GlobalException(e.getMessage()); + } catch (Exception e) { + log.error(e.getMessage()); + } + } + + private byte[] compress(byte[] data) throws IOException { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + try (GZIPOutputStream gzip = new GZIPOutputStream(baos)) { + gzip.write(data); + } + return baos.toByteArray(); + } +} diff --git a/cmvr-iot-generator/pom.xml b/cmvr-iot-generator/pom.xml new file mode 100644 index 0000000..63eefdd --- /dev/null +++ b/cmvr-iot-generator/pom.xml @@ -0,0 +1,40 @@ + + + + cmvr-iot + com.cmvr + 3.8.9 + + 4.0.0 + + cmvr-iot-generator + + + generator代码生成 + + + + + + + org.apache.velocity + velocity-engine-core + + + + + com.cmvr + cmvr-iot-common + + + + + com.alibaba + druid-spring-boot-starter + + + + + diff --git a/cmvr-iot-generator/src/main/java/com/cmvr/generator/config/GenConfig.java b/cmvr-iot-generator/src/main/java/com/cmvr/generator/config/GenConfig.java new file mode 100644 index 0000000..7ebab08 --- /dev/null +++ b/cmvr-iot-generator/src/main/java/com/cmvr/generator/config/GenConfig.java @@ -0,0 +1,87 @@ +package com.cmvr.generator.config; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.PropertySource; +import org.springframework.stereotype.Component; + +/** + * 读取代码生成相关配置 + * + * @author cmvrIot + */ +@Component +@ConfigurationProperties(prefix = "gen") +@PropertySource(value = { "classpath:generator.yml" }) +public class GenConfig +{ + /** 作者 */ + public static String author; + + /** 生成包路径 */ + public static String packageName; + + /** 自动去除表前缀 */ + public static boolean autoRemovePre; + + /** 表前缀 */ + public static String tablePrefix; + + /** 是否允许生成文件覆盖到本地(自定义路径) */ + public static boolean allowOverwrite; + + public static String getAuthor() + { + return author; + } + + @Value("${author}") + public void setAuthor(String author) + { + GenConfig.author = author; + } + + public static String getPackageName() + { + return packageName; + } + + @Value("${packageName}") + public void setPackageName(String packageName) + { + GenConfig.packageName = packageName; + } + + public static boolean getAutoRemovePre() + { + return autoRemovePre; + } + + @Value("${autoRemovePre}") + public void setAutoRemovePre(boolean autoRemovePre) + { + GenConfig.autoRemovePre = autoRemovePre; + } + + public static String getTablePrefix() + { + return tablePrefix; + } + + @Value("${tablePrefix}") + public void setTablePrefix(String tablePrefix) + { + GenConfig.tablePrefix = tablePrefix; + } + + public static boolean isAllowOverwrite() + { + return allowOverwrite; + } + + @Value("${allowOverwrite}") + public void setAllowOverwrite(boolean allowOverwrite) + { + GenConfig.allowOverwrite = allowOverwrite; + } +} diff --git a/cmvr-iot-generator/src/main/java/com/cmvr/generator/controller/GenController.java b/cmvr-iot-generator/src/main/java/com/cmvr/generator/controller/GenController.java new file mode 100644 index 0000000..f2ae4dc --- /dev/null +++ b/cmvr-iot-generator/src/main/java/com/cmvr/generator/controller/GenController.java @@ -0,0 +1,263 @@ +package com.cmvr.generator.controller; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.io.IOUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.alibaba.druid.DbType; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlCreateTableStatement; +import com.cmvr.common.annotation.Log; +import com.cmvr.common.core.controller.BaseController; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.core.page.TableDataInfo; +import com.cmvr.common.core.text.Convert; +import com.cmvr.common.enums.BusinessType; +import com.cmvr.common.utils.SecurityUtils; +import com.cmvr.common.utils.sql.SqlUtil; +import com.cmvr.generator.config.GenConfig; +import com.cmvr.generator.domain.GenTable; +import com.cmvr.generator.domain.GenTableColumn; +import com.cmvr.generator.service.IGenTableColumnService; +import com.cmvr.generator.service.IGenTableService; + +/** + * 代码生成 操作处理 + * + * @author cmvr-iot + */ +@RestController +@RequestMapping("/tool/gen") +public class GenController extends BaseController +{ + @Autowired + private IGenTableService genTableService; + + @Autowired + private IGenTableColumnService genTableColumnService; + + /** + * 查询代码生成列表 + */ + @PreAuthorize("@ss.hasPermi('tool:gen:list')") + @GetMapping("/list") + public TableDataInfo genList(GenTable genTable) + { + startPage(); + List list = genTableService.selectGenTableList(genTable); + return getDataTable(list); + } + + /** + * 修改代码生成业务 + */ + @PreAuthorize("@ss.hasPermi('tool:gen:query')") + @GetMapping(value = "/{tableId}") + public AjaxResult getInfo(@PathVariable Long tableId) + { + GenTable table = genTableService.selectGenTableById(tableId); + List tables = genTableService.selectGenTableAll(); + List list = genTableColumnService.selectGenTableColumnListByTableId(tableId); + Map map = new HashMap(); + map.put("info", table); + map.put("rows", list); + map.put("tables", tables); + return success(map); + } + + /** + * 查询数据库列表 + */ + @PreAuthorize("@ss.hasPermi('tool:gen:list')") + @GetMapping("/db/list") + public TableDataInfo dataList(GenTable genTable) + { + startPage(); + List list = genTableService.selectDbTableList(genTable); + return getDataTable(list); + } + + /** + * 查询数据表字段列表 + */ + @PreAuthorize("@ss.hasPermi('tool:gen:list')") + @GetMapping(value = "/column/{tableId}") + public TableDataInfo columnList(Long tableId) + { + TableDataInfo dataInfo = new TableDataInfo(); + List list = genTableColumnService.selectGenTableColumnListByTableId(tableId); + dataInfo.setRows(list); + dataInfo.setTotal(list.size()); + return dataInfo; + } + + /** + * 导入表结构(保存) + */ + @PreAuthorize("@ss.hasPermi('tool:gen:import')") + @Log(title = "代码生成", businessType = BusinessType.IMPORT) + @PostMapping("/importTable") + public AjaxResult importTableSave(String tables) + { + String[] tableNames = Convert.toStrArray(tables); + // 查询表信息 + List tableList = genTableService.selectDbTableListByNames(tableNames); + genTableService.importGenTable(tableList, SecurityUtils.getUsername()); + return success(); + } + + /** + * 创建表结构(保存) + */ + @PreAuthorize("@ss.hasRole('admin')") + @Log(title = "创建表", businessType = BusinessType.OTHER) + @PostMapping("/createTable") + public AjaxResult createTableSave(String sql) + { + try + { + SqlUtil.filterKeyword(sql); + List sqlStatements = SQLUtils.parseStatements(sql, DbType.mysql); + List tableNames = new ArrayList<>(); + for (SQLStatement sqlStatement : sqlStatements) + { + if (sqlStatement instanceof MySqlCreateTableStatement) + { + MySqlCreateTableStatement createTableStatement = (MySqlCreateTableStatement) sqlStatement; + if (genTableService.createTable(createTableStatement.toString())) + { + String tableName = createTableStatement.getTableName().replaceAll("`", ""); + tableNames.add(tableName); + } + } + } + List tableList = genTableService.selectDbTableListByNames(tableNames.toArray(new String[tableNames.size()])); + String operName = SecurityUtils.getUsername(); + genTableService.importGenTable(tableList, operName); + return AjaxResult.success(); + } + catch (Exception e) + { + logger.error(e.getMessage(), e); + return AjaxResult.error("创建表结构异常"); + } + } + + /** + * 修改保存代码生成业务 + */ + @PreAuthorize("@ss.hasPermi('tool:gen:edit')") + @Log(title = "代码生成", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult editSave(@Validated @RequestBody GenTable genTable) + { + genTableService.validateEdit(genTable); + genTableService.updateGenTable(genTable); + return success(); + } + + /** + * 删除代码生成 + */ + @PreAuthorize("@ss.hasPermi('tool:gen:remove')") + @Log(title = "代码生成", businessType = BusinessType.DELETE) + @DeleteMapping("/{tableIds}") + public AjaxResult remove(@PathVariable Long[] tableIds) + { + genTableService.deleteGenTableByIds(tableIds); + return success(); + } + + /** + * 预览代码 + */ + @PreAuthorize("@ss.hasPermi('tool:gen:preview')") + @GetMapping("/preview/{tableId}") + public AjaxResult preview(@PathVariable("tableId") Long tableId) throws IOException + { + Map dataMap = genTableService.previewCode(tableId); + return success(dataMap); + } + + /** + * 生成代码(下载方式) + */ + @PreAuthorize("@ss.hasPermi('tool:gen:code')") + @Log(title = "代码生成", businessType = BusinessType.GENCODE) + @GetMapping("/download/{tableName}") + public void download(HttpServletResponse response, @PathVariable("tableName") String tableName) throws IOException + { + byte[] data = genTableService.downloadCode(tableName); + genCode(response, data); + } + + /** + * 生成代码(自定义路径) + */ + @PreAuthorize("@ss.hasPermi('tool:gen:code')") + @Log(title = "代码生成", businessType = BusinessType.GENCODE) + @GetMapping("/genCode/{tableName}") + public AjaxResult genCode(@PathVariable("tableName") String tableName) + { + if (!GenConfig.isAllowOverwrite()) + { + return AjaxResult.error("【系统预设】不允许生成文件覆盖到本地"); + } + genTableService.generatorCode(tableName); + return success(); + } + + /** + * 同步数据库 + */ + @PreAuthorize("@ss.hasPermi('tool:gen:edit')") + @Log(title = "代码生成", businessType = BusinessType.UPDATE) + @GetMapping("/synchDb/{tableName}") + public AjaxResult synchDb(@PathVariable("tableName") String tableName) + { + genTableService.synchDb(tableName); + return success(); + } + + /** + * 批量生成代码 + */ + @PreAuthorize("@ss.hasPermi('tool:gen:code')") + @Log(title = "代码生成", businessType = BusinessType.GENCODE) + @GetMapping("/batchGenCode") + public void batchGenCode(HttpServletResponse response, String tables) throws IOException + { + String[] tableNames = Convert.toStrArray(tables); + byte[] data = genTableService.downloadCode(tableNames); + genCode(response, data); + } + + /** + * 生成zip文件 + */ + private void genCode(HttpServletResponse response, byte[] data) throws IOException + { + response.reset(); + response.addHeader("Access-Control-Allow-Origin", "*"); + response.addHeader("Access-Control-Expose-Headers", "Content-Disposition"); + response.setHeader("Content-Disposition", "attachment; filename=\"cmvr-iot.zip\""); + response.addHeader("Content-Length", "" + data.length); + response.setContentType("application/octet-stream; charset=UTF-8"); + IOUtils.write(data, response.getOutputStream()); + } +} diff --git a/cmvr-iot-generator/src/main/java/com/cmvr/generator/domain/GenTable.java b/cmvr-iot-generator/src/main/java/com/cmvr/generator/domain/GenTable.java new file mode 100644 index 0000000..b007971 --- /dev/null +++ b/cmvr-iot-generator/src/main/java/com/cmvr/generator/domain/GenTable.java @@ -0,0 +1,385 @@ +package com.cmvr.generator.domain; + +import java.util.List; +import javax.validation.Valid; +import javax.validation.constraints.NotBlank; +import org.apache.commons.lang3.ArrayUtils; +import com.cmvr.common.constant.GenConstants; +import com.cmvr.common.core.domain.BaseEntity; +import com.cmvr.common.utils.StringUtils; + +/** + * 业务表 gen_table + * + * @author cmvr-iot + */ +public class GenTable extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 编号 */ + private Long tableId; + + /** 表名称 */ + @NotBlank(message = "表名称不能为空") + private String tableName; + + /** 表描述 */ + @NotBlank(message = "表描述不能为空") + private String tableComment; + + /** 关联父表的表名 */ + private String subTableName; + + /** 本表关联父表的外键名 */ + private String subTableFkName; + + /** 实体类名称(首字母大写) */ + @NotBlank(message = "实体类名称不能为空") + private String className; + + /** 使用的模板(crud单表操作 tree树表操作 sub主子表操作) */ + private String tplCategory; + + /** 前端类型(element-ui模版 element-plus模版) */ + private String tplWebType; + + /** 生成包路径 */ + @NotBlank(message = "生成包路径不能为空") + private String packageName; + + /** 生成模块名 */ + @NotBlank(message = "生成模块名不能为空") + private String moduleName; + + /** 生成业务名 */ + @NotBlank(message = "生成业务名不能为空") + private String businessName; + + /** 生成功能名 */ + @NotBlank(message = "生成功能名不能为空") + private String functionName; + + /** 生成作者 */ + @NotBlank(message = "作者不能为空") + private String functionAuthor; + + /** 生成代码方式(0zip压缩包 1自定义路径) */ + private String genType; + + /** 生成路径(不填默认项目路径) */ + private String genPath; + + /** 主键信息 */ + private GenTableColumn pkColumn; + + /** 子表信息 */ + private GenTable subTable; + + /** 表列信息 */ + @Valid + private List columns; + + /** 其它生成选项 */ + private String options; + + /** 树编码字段 */ + private String treeCode; + + /** 树父编码字段 */ + private String treeParentCode; + + /** 树名称字段 */ + private String treeName; + + /** 上级菜单ID字段 */ + private Long parentMenuId; + + /** 上级菜单名称字段 */ + private String parentMenuName; + + public Long getTableId() + { + return tableId; + } + + public void setTableId(Long tableId) + { + this.tableId = tableId; + } + + public String getTableName() + { + return tableName; + } + + public void setTableName(String tableName) + { + this.tableName = tableName; + } + + public String getTableComment() + { + return tableComment; + } + + public void setTableComment(String tableComment) + { + this.tableComment = tableComment; + } + + public String getSubTableName() + { + return subTableName; + } + + public void setSubTableName(String subTableName) + { + this.subTableName = subTableName; + } + + public String getSubTableFkName() + { + return subTableFkName; + } + + public void setSubTableFkName(String subTableFkName) + { + this.subTableFkName = subTableFkName; + } + + public String getClassName() + { + return className; + } + + public void setClassName(String className) + { + this.className = className; + } + + public String getTplCategory() + { + return tplCategory; + } + + public void setTplCategory(String tplCategory) + { + this.tplCategory = tplCategory; + } + + public String getTplWebType() + { + return tplWebType; + } + + public void setTplWebType(String tplWebType) + { + this.tplWebType = tplWebType; + } + + public String getPackageName() + { + return packageName; + } + + public void setPackageName(String packageName) + { + this.packageName = packageName; + } + + public String getModuleName() + { + return moduleName; + } + + public void setModuleName(String moduleName) + { + this.moduleName = moduleName; + } + + public String getBusinessName() + { + return businessName; + } + + public void setBusinessName(String businessName) + { + this.businessName = businessName; + } + + public String getFunctionName() + { + return functionName; + } + + public void setFunctionName(String functionName) + { + this.functionName = functionName; + } + + public String getFunctionAuthor() + { + return functionAuthor; + } + + public void setFunctionAuthor(String functionAuthor) + { + this.functionAuthor = functionAuthor; + } + + public String getGenType() + { + return genType; + } + + public void setGenType(String genType) + { + this.genType = genType; + } + + public String getGenPath() + { + return genPath; + } + + public void setGenPath(String genPath) + { + this.genPath = genPath; + } + + public GenTableColumn getPkColumn() + { + return pkColumn; + } + + public void setPkColumn(GenTableColumn pkColumn) + { + this.pkColumn = pkColumn; + } + + public GenTable getSubTable() + { + return subTable; + } + + public void setSubTable(GenTable subTable) + { + this.subTable = subTable; + } + + public List getColumns() + { + return columns; + } + + public void setColumns(List columns) + { + this.columns = columns; + } + + public String getOptions() + { + return options; + } + + public void setOptions(String options) + { + this.options = options; + } + + public String getTreeCode() + { + return treeCode; + } + + public void setTreeCode(String treeCode) + { + this.treeCode = treeCode; + } + + public String getTreeParentCode() + { + return treeParentCode; + } + + public void setTreeParentCode(String treeParentCode) + { + this.treeParentCode = treeParentCode; + } + + public String getTreeName() + { + return treeName; + } + + public void setTreeName(String treeName) + { + this.treeName = treeName; + } + + public Long getParentMenuId() + { + return parentMenuId; + } + + public void setParentMenuId(Long parentMenuId) + { + this.parentMenuId = parentMenuId; + } + + public String getParentMenuName() + { + return parentMenuName; + } + + public void setParentMenuName(String parentMenuName) + { + this.parentMenuName = parentMenuName; + } + + public boolean isSub() + { + return isSub(this.tplCategory); + } + + public static boolean isSub(String tplCategory) + { + return tplCategory != null && StringUtils.equals(GenConstants.TPL_SUB, tplCategory); + } + + public boolean isTree() + { + return isTree(this.tplCategory); + } + + public static boolean isTree(String tplCategory) + { + return tplCategory != null && StringUtils.equals(GenConstants.TPL_TREE, tplCategory); + } + + public boolean isCrud() + { + return isCrud(this.tplCategory); + } + + public static boolean isCrud(String tplCategory) + { + return tplCategory != null && StringUtils.equals(GenConstants.TPL_CRUD, tplCategory); + } + + public boolean isSuperColumn(String javaField) + { + return isSuperColumn(this.tplCategory, javaField); + } + + public static boolean isSuperColumn(String tplCategory, String javaField) + { + if (isTree(tplCategory)) + { + return StringUtils.equalsAnyIgnoreCase(javaField, + ArrayUtils.addAll(GenConstants.TREE_ENTITY, GenConstants.BASE_ENTITY)); + } + return StringUtils.equalsAnyIgnoreCase(javaField, GenConstants.BASE_ENTITY); + } +} diff --git a/cmvr-iot-generator/src/main/java/com/cmvr/generator/domain/GenTableColumn.java b/cmvr-iot-generator/src/main/java/com/cmvr/generator/domain/GenTableColumn.java new file mode 100644 index 0000000..43ae572 --- /dev/null +++ b/cmvr-iot-generator/src/main/java/com/cmvr/generator/domain/GenTableColumn.java @@ -0,0 +1,373 @@ +package com.cmvr.generator.domain; + +import javax.validation.constraints.NotBlank; +import com.cmvr.common.core.domain.BaseEntity; +import com.cmvr.common.utils.StringUtils; + +/** + * 代码生成业务字段表 gen_table_column + * + * @author cmvrIot + */ +public class GenTableColumn extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 编号 */ + private Long columnId; + + /** 归属表编号 */ + private Long tableId; + + /** 列名称 */ + private String columnName; + + /** 列描述 */ + private String columnComment; + + /** 列类型 */ + private String columnType; + + /** JAVA类型 */ + private String javaType; + + /** JAVA字段名 */ + @NotBlank(message = "Java属性不能为空") + private String javaField; + + /** 是否主键(1是) */ + private String isPk; + + /** 是否自增(1是) */ + private String isIncrement; + + /** 是否必填(1是) */ + private String isRequired; + + /** 是否为插入字段(1是) */ + private String isInsert; + + /** 是否编辑字段(1是) */ + private String isEdit; + + /** 是否列表字段(1是) */ + private String isList; + + /** 是否查询字段(1是) */ + private String isQuery; + + /** 查询方式(EQ等于、NE不等于、GT大于、LT小于、LIKE模糊、BETWEEN范围) */ + private String queryType; + + /** 显示类型(input文本框、textarea文本域、select下拉框、checkbox复选框、radio单选框、datetime日期控件、image图片上传控件、upload文件上传控件、editor富文本控件) */ + private String htmlType; + + /** 字典类型 */ + private String dictType; + + /** 排序 */ + private Integer sort; + + public void setColumnId(Long columnId) + { + this.columnId = columnId; + } + + public Long getColumnId() + { + return columnId; + } + + public void setTableId(Long tableId) + { + this.tableId = tableId; + } + + public Long getTableId() + { + return tableId; + } + + public void setColumnName(String columnName) + { + this.columnName = columnName; + } + + public String getColumnName() + { + return columnName; + } + + public void setColumnComment(String columnComment) + { + this.columnComment = columnComment; + } + + public String getColumnComment() + { + return columnComment; + } + + public void setColumnType(String columnType) + { + this.columnType = columnType; + } + + public String getColumnType() + { + return columnType; + } + + public void setJavaType(String javaType) + { + this.javaType = javaType; + } + + public String getJavaType() + { + return javaType; + } + + public void setJavaField(String javaField) + { + this.javaField = javaField; + } + + public String getJavaField() + { + return javaField; + } + + public String getCapJavaField() + { + return StringUtils.capitalize(javaField); + } + + public void setIsPk(String isPk) + { + this.isPk = isPk; + } + + public String getIsPk() + { + return isPk; + } + + public boolean isPk() + { + return isPk(this.isPk); + } + + public boolean isPk(String isPk) + { + return isPk != null && StringUtils.equals("1", isPk); + } + + public String getIsIncrement() + { + return isIncrement; + } + + public void setIsIncrement(String isIncrement) + { + this.isIncrement = isIncrement; + } + + public boolean isIncrement() + { + return isIncrement(this.isIncrement); + } + + public boolean isIncrement(String isIncrement) + { + return isIncrement != null && StringUtils.equals("1", isIncrement); + } + + public void setIsRequired(String isRequired) + { + this.isRequired = isRequired; + } + + public String getIsRequired() + { + return isRequired; + } + + public boolean isRequired() + { + return isRequired(this.isRequired); + } + + public boolean isRequired(String isRequired) + { + return isRequired != null && StringUtils.equals("1", isRequired); + } + + public void setIsInsert(String isInsert) + { + this.isInsert = isInsert; + } + + public String getIsInsert() + { + return isInsert; + } + + public boolean isInsert() + { + return isInsert(this.isInsert); + } + + public boolean isInsert(String isInsert) + { + return isInsert != null && StringUtils.equals("1", isInsert); + } + + public void setIsEdit(String isEdit) + { + this.isEdit = isEdit; + } + + public String getIsEdit() + { + return isEdit; + } + + public boolean isEdit() + { + return isInsert(this.isEdit); + } + + public boolean isEdit(String isEdit) + { + return isEdit != null && StringUtils.equals("1", isEdit); + } + + public void setIsList(String isList) + { + this.isList = isList; + } + + public String getIsList() + { + return isList; + } + + public boolean isList() + { + return isList(this.isList); + } + + public boolean isList(String isList) + { + return isList != null && StringUtils.equals("1", isList); + } + + public void setIsQuery(String isQuery) + { + this.isQuery = isQuery; + } + + public String getIsQuery() + { + return isQuery; + } + + public boolean isQuery() + { + return isQuery(this.isQuery); + } + + public boolean isQuery(String isQuery) + { + return isQuery != null && StringUtils.equals("1", isQuery); + } + + public void setQueryType(String queryType) + { + this.queryType = queryType; + } + + public String getQueryType() + { + return queryType; + } + + public String getHtmlType() + { + return htmlType; + } + + public void setHtmlType(String htmlType) + { + this.htmlType = htmlType; + } + + public void setDictType(String dictType) + { + this.dictType = dictType; + } + + public String getDictType() + { + return dictType; + } + + public void setSort(Integer sort) + { + this.sort = sort; + } + + public Integer getSort() + { + return sort; + } + + public boolean isSuperColumn() + { + return isSuperColumn(this.javaField); + } + + public static boolean isSuperColumn(String javaField) + { + return StringUtils.equalsAnyIgnoreCase(javaField, + // BaseEntity + "createBy", "createTime", "updateBy", "updateTime", "remark", + // TreeEntity + "parentName", "parentId", "orderNum", "ancestors"); + } + + public boolean isUsableColumn() + { + return isUsableColumn(javaField); + } + + public static boolean isUsableColumn(String javaField) + { + // isSuperColumn()中的名单用于避免生成多余Domain属性,若某些属性在生成页面时需要用到不能忽略,则放在此处白名单 + return StringUtils.equalsAnyIgnoreCase(javaField, "parentId", "orderNum", "remark"); + } + + public String readConverterExp() + { + String remarks = StringUtils.substringBetween(this.columnComment, "(", ")"); + StringBuffer sb = new StringBuffer(); + if (StringUtils.isNotEmpty(remarks)) + { + for (String value : remarks.split(" ")) + { + if (StringUtils.isNotEmpty(value)) + { + Object startStr = value.subSequence(0, 1); + String endStr = value.substring(1); + sb.append("").append(startStr).append("=").append(endStr).append(","); + } + } + return sb.deleteCharAt(sb.length() - 1).toString(); + } + else + { + return this.columnComment; + } + } +} diff --git a/cmvr-iot-generator/src/main/java/com/cmvr/generator/mapper/GenTableColumnMapper.java b/cmvr-iot-generator/src/main/java/com/cmvr/generator/mapper/GenTableColumnMapper.java new file mode 100644 index 0000000..66af18e --- /dev/null +++ b/cmvr-iot-generator/src/main/java/com/cmvr/generator/mapper/GenTableColumnMapper.java @@ -0,0 +1,60 @@ +package com.cmvr.generator.mapper; + +import java.util.List; +import com.cmvr.generator.domain.GenTableColumn; + +/** + * 业务字段 数据层 + * + * @author cmvrIot + */ +public interface GenTableColumnMapper +{ + /** + * 根据表名称查询列信息 + * + * @param tableName 表名称 + * @return 列信息 + */ + public List selectDbTableColumnsByName(String tableName); + + /** + * 查询业务字段列表 + * + * @param tableId 业务字段编号 + * @return 业务字段集合 + */ + public List selectGenTableColumnListByTableId(Long tableId); + + /** + * 新增业务字段 + * + * @param genTableColumn 业务字段信息 + * @return 结果 + */ + public int insertGenTableColumn(GenTableColumn genTableColumn); + + /** + * 修改业务字段 + * + * @param genTableColumn 业务字段信息 + * @return 结果 + */ + public int updateGenTableColumn(GenTableColumn genTableColumn); + + /** + * 删除业务字段 + * + * @param genTableColumns 列数据 + * @return 结果 + */ + public int deleteGenTableColumns(List genTableColumns); + + /** + * 批量删除业务字段 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + public int deleteGenTableColumnByIds(Long[] ids); +} diff --git a/cmvr-iot-generator/src/main/java/com/cmvr/generator/mapper/GenTableMapper.java b/cmvr-iot-generator/src/main/java/com/cmvr/generator/mapper/GenTableMapper.java new file mode 100644 index 0000000..e47fed2 --- /dev/null +++ b/cmvr-iot-generator/src/main/java/com/cmvr/generator/mapper/GenTableMapper.java @@ -0,0 +1,91 @@ +package com.cmvr.generator.mapper; + +import java.util.List; +import com.cmvr.generator.domain.GenTable; + +/** + * 业务 数据层 + * + * @author cmvr-iot + */ +public interface GenTableMapper +{ + /** + * 查询业务列表 + * + * @param genTable 业务信息 + * @return 业务集合 + */ + public List selectGenTableList(GenTable genTable); + + /** + * 查询据库列表 + * + * @param genTable 业务信息 + * @return 数据库表集合 + */ + public List selectDbTableList(GenTable genTable); + + /** + * 查询据库列表 + * + * @param tableNames 表名称组 + * @return 数据库表集合 + */ + public List selectDbTableListByNames(String[] tableNames); + + /** + * 查询所有表信息 + * + * @return 表信息集合 + */ + public List selectGenTableAll(); + + /** + * 查询表ID业务信息 + * + * @param id 业务ID + * @return 业务信息 + */ + public GenTable selectGenTableById(Long id); + + /** + * 查询表名称业务信息 + * + * @param tableName 表名称 + * @return 业务信息 + */ + public GenTable selectGenTableByName(String tableName); + + /** + * 新增业务 + * + * @param genTable 业务信息 + * @return 结果 + */ + public int insertGenTable(GenTable genTable); + + /** + * 修改业务 + * + * @param genTable 业务信息 + * @return 结果 + */ + public int updateGenTable(GenTable genTable); + + /** + * 批量删除业务 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + public int deleteGenTableByIds(Long[] ids); + + /** + * 创建表 + * + * @param sql 表结构 + * @return 结果 + */ + public int createTable(String sql); +} diff --git a/cmvr-iot-generator/src/main/java/com/cmvr/generator/service/GenTableColumnServiceImpl.java b/cmvr-iot-generator/src/main/java/com/cmvr/generator/service/GenTableColumnServiceImpl.java new file mode 100644 index 0000000..aa1c5ea --- /dev/null +++ b/cmvr-iot-generator/src/main/java/com/cmvr/generator/service/GenTableColumnServiceImpl.java @@ -0,0 +1,68 @@ +package com.cmvr.generator.service; + +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.cmvr.common.core.text.Convert; +import com.cmvr.generator.domain.GenTableColumn; +import com.cmvr.generator.mapper.GenTableColumnMapper; + +/** + * 业务字段 服务层实现 + * + * @author cmvr-iot + */ +@Service +public class GenTableColumnServiceImpl implements IGenTableColumnService +{ + @Autowired + private GenTableColumnMapper genTableColumnMapper; + + /** + * 查询业务字段列表 + * + * @param tableId 业务字段编号 + * @return 业务字段集合 + */ + @Override + public List selectGenTableColumnListByTableId(Long tableId) + { + return genTableColumnMapper.selectGenTableColumnListByTableId(tableId); + } + + /** + * 新增业务字段 + * + * @param genTableColumn 业务字段信息 + * @return 结果 + */ + @Override + public int insertGenTableColumn(GenTableColumn genTableColumn) + { + return genTableColumnMapper.insertGenTableColumn(genTableColumn); + } + + /** + * 修改业务字段 + * + * @param genTableColumn 业务字段信息 + * @return 结果 + */ + @Override + public int updateGenTableColumn(GenTableColumn genTableColumn) + { + return genTableColumnMapper.updateGenTableColumn(genTableColumn); + } + + /** + * 删除业务字段对象 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + @Override + public int deleteGenTableColumnByIds(String ids) + { + return genTableColumnMapper.deleteGenTableColumnByIds(Convert.toLongArray(ids)); + } +} diff --git a/cmvr-iot-generator/src/main/java/com/cmvr/generator/service/GenTableServiceImpl.java b/cmvr-iot-generator/src/main/java/com/cmvr/generator/service/GenTableServiceImpl.java new file mode 100644 index 0000000..88739c7 --- /dev/null +++ b/cmvr-iot-generator/src/main/java/com/cmvr/generator/service/GenTableServiceImpl.java @@ -0,0 +1,531 @@ +package com.cmvr.generator.service; + +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.io.StringWriter; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; +import org.apache.commons.io.FileUtils; +import org.apache.commons.io.IOUtils; +import org.apache.velocity.Template; +import org.apache.velocity.VelocityContext; +import org.apache.velocity.app.Velocity; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.cmvr.common.constant.Constants; +import com.cmvr.common.constant.GenConstants; +import com.cmvr.common.core.text.CharsetKit; +import com.cmvr.common.exception.ServiceException; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.generator.domain.GenTable; +import com.cmvr.generator.domain.GenTableColumn; +import com.cmvr.generator.mapper.GenTableColumnMapper; +import com.cmvr.generator.mapper.GenTableMapper; +import com.cmvr.generator.util.GenUtils; +import com.cmvr.generator.util.VelocityInitializer; +import com.cmvr.generator.util.VelocityUtils; + +/** + * 业务 服务层实现 + * + * @author cmvr-iot + */ +@Service +public class GenTableServiceImpl implements IGenTableService +{ + private static final Logger log = LoggerFactory.getLogger(GenTableServiceImpl.class); + + @Autowired + private GenTableMapper genTableMapper; + + @Autowired + private GenTableColumnMapper genTableColumnMapper; + + /** + * 查询业务信息 + * + * @param id 业务ID + * @return 业务信息 + */ + @Override + public GenTable selectGenTableById(Long id) + { + GenTable genTable = genTableMapper.selectGenTableById(id); + setTableFromOptions(genTable); + return genTable; + } + + /** + * 查询业务列表 + * + * @param genTable 业务信息 + * @return 业务集合 + */ + @Override + public List selectGenTableList(GenTable genTable) + { + return genTableMapper.selectGenTableList(genTable); + } + + /** + * 查询据库列表 + * + * @param genTable 业务信息 + * @return 数据库表集合 + */ + @Override + public List selectDbTableList(GenTable genTable) + { + return genTableMapper.selectDbTableList(genTable); + } + + /** + * 查询据库列表 + * + * @param tableNames 表名称组 + * @return 数据库表集合 + */ + @Override + public List selectDbTableListByNames(String[] tableNames) + { + return genTableMapper.selectDbTableListByNames(tableNames); + } + + /** + * 查询所有表信息 + * + * @return 表信息集合 + */ + @Override + public List selectGenTableAll() + { + return genTableMapper.selectGenTableAll(); + } + + /** + * 修改业务 + * + * @param genTable 业务信息 + * @return 结果 + */ + @Override + @Transactional + public void updateGenTable(GenTable genTable) + { + String options = JSON.toJSONString(genTable.getParams()); + genTable.setOptions(options); + int row = genTableMapper.updateGenTable(genTable); + if (row > 0) + { + for (GenTableColumn cenTableColumn : genTable.getColumns()) + { + genTableColumnMapper.updateGenTableColumn(cenTableColumn); + } + } + } + + /** + * 删除业务对象 + * + * @param tableIds 需要删除的数据ID + * @return 结果 + */ + @Override + @Transactional + public void deleteGenTableByIds(Long[] tableIds) + { + genTableMapper.deleteGenTableByIds(tableIds); + genTableColumnMapper.deleteGenTableColumnByIds(tableIds); + } + + /** + * 创建表 + * + * @param sql 创建表语句 + * @return 结果 + */ + @Override + public boolean createTable(String sql) + { + return genTableMapper.createTable(sql) == 0; + } + + /** + * 导入表结构 + * + * @param tableList 导入表列表 + */ + @Override + @Transactional + public void importGenTable(List tableList, String operName) + { + try + { + for (GenTable table : tableList) + { + String tableName = table.getTableName(); + GenUtils.initTable(table, operName); + int row = genTableMapper.insertGenTable(table); + if (row > 0) + { + // 保存列信息 + List genTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName); + for (GenTableColumn column : genTableColumns) + { + GenUtils.initColumnField(column, table); + genTableColumnMapper.insertGenTableColumn(column); + } + } + } + } + catch (Exception e) + { + throw new ServiceException("导入失败:" + e.getMessage()); + } + } + + /** + * 预览代码 + * + * @param tableId 表编号 + * @return 预览数据列表 + */ + @Override + public Map previewCode(Long tableId) + { + Map dataMap = new LinkedHashMap<>(); + // 查询表信息 + GenTable table = genTableMapper.selectGenTableById(tableId); + // 设置主子表信息 + setSubTable(table); + // 设置主键列信息 + setPkColumn(table); + VelocityInitializer.initVelocity(); + + VelocityContext context = VelocityUtils.prepareContext(table); + + // 获取模板列表 + List templates = VelocityUtils.getTemplateList(table.getTplCategory(), table.getTplWebType()); + for (String template : templates) + { + // 渲染模板 + StringWriter sw = new StringWriter(); + Template tpl = Velocity.getTemplate(template, Constants.UTF8); + tpl.merge(context, sw); + dataMap.put(template, sw.toString()); + } + return dataMap; + } + + /** + * 生成代码(下载方式) + * + * @param tableName 表名称 + * @return 数据 + */ + @Override + public byte[] downloadCode(String tableName) + { + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + ZipOutputStream zip = new ZipOutputStream(outputStream); + generatorCode(tableName, zip); + IOUtils.closeQuietly(zip); + return outputStream.toByteArray(); + } + + /** + * 生成代码(自定义路径) + * + * @param tableName 表名称 + */ + @Override + public void generatorCode(String tableName) + { + // 查询表信息 + GenTable table = genTableMapper.selectGenTableByName(tableName); + // 设置主子表信息 + setSubTable(table); + // 设置主键列信息 + setPkColumn(table); + + VelocityInitializer.initVelocity(); + + VelocityContext context = VelocityUtils.prepareContext(table); + + // 获取模板列表 + List templates = VelocityUtils.getTemplateList(table.getTplCategory(), table.getTplWebType()); + for (String template : templates) + { + if (!StringUtils.containsAny(template, "sql.vm", "api.js.vm", "index.vue.vm", "index-tree.vue.vm")) + { + // 渲染模板 + StringWriter sw = new StringWriter(); + Template tpl = Velocity.getTemplate(template, Constants.UTF8); + tpl.merge(context, sw); + try + { + String path = getGenPath(table, template); + FileUtils.writeStringToFile(new File(path), sw.toString(), CharsetKit.UTF_8); + } + catch (IOException e) + { + throw new ServiceException("渲染模板失败,表名:" + table.getTableName()); + } + } + } + } + + /** + * 同步数据库 + * + * @param tableName 表名称 + */ + @Override + @Transactional + public void synchDb(String tableName) + { + GenTable table = genTableMapper.selectGenTableByName(tableName); + List tableColumns = table.getColumns(); + Map tableColumnMap = tableColumns.stream().collect(Collectors.toMap(GenTableColumn::getColumnName, Function.identity())); + + List dbTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName); + if (StringUtils.isEmpty(dbTableColumns)) + { + throw new ServiceException("同步数据失败,原表结构不存在"); + } + List dbTableColumnNames = dbTableColumns.stream().map(GenTableColumn::getColumnName).collect(Collectors.toList()); + + dbTableColumns.forEach(column -> { + GenUtils.initColumnField(column, table); + if (tableColumnMap.containsKey(column.getColumnName())) + { + GenTableColumn prevColumn = tableColumnMap.get(column.getColumnName()); + column.setColumnId(prevColumn.getColumnId()); + if (column.isList()) + { + // 如果是列表,继续保留查询方式/字典类型选项 + column.setDictType(prevColumn.getDictType()); + column.setQueryType(prevColumn.getQueryType()); + } + if (StringUtils.isNotEmpty(prevColumn.getIsRequired()) && !column.isPk() + && (column.isInsert() || column.isEdit()) + && ((column.isUsableColumn()) || (!column.isSuperColumn()))) + { + // 如果是(新增/修改&非主键/非忽略及父属性),继续保留必填/显示类型选项 + column.setIsRequired(prevColumn.getIsRequired()); + column.setHtmlType(prevColumn.getHtmlType()); + } + genTableColumnMapper.updateGenTableColumn(column); + } + else + { + genTableColumnMapper.insertGenTableColumn(column); + } + }); + + List delColumns = tableColumns.stream().filter(column -> !dbTableColumnNames.contains(column.getColumnName())).collect(Collectors.toList()); + if (StringUtils.isNotEmpty(delColumns)) + { + genTableColumnMapper.deleteGenTableColumns(delColumns); + } + } + + /** + * 批量生成代码(下载方式) + * + * @param tableNames 表数组 + * @return 数据 + */ + @Override + public byte[] downloadCode(String[] tableNames) + { + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + ZipOutputStream zip = new ZipOutputStream(outputStream); + for (String tableName : tableNames) + { + generatorCode(tableName, zip); + } + IOUtils.closeQuietly(zip); + return outputStream.toByteArray(); + } + + /** + * 查询表信息并生成代码 + */ + private void generatorCode(String tableName, ZipOutputStream zip) + { + // 查询表信息 + GenTable table = genTableMapper.selectGenTableByName(tableName); + // 设置主子表信息 + setSubTable(table); + // 设置主键列信息 + setPkColumn(table); + + VelocityInitializer.initVelocity(); + + VelocityContext context = VelocityUtils.prepareContext(table); + + // 获取模板列表 + List templates = VelocityUtils.getTemplateList(table.getTplCategory(), table.getTplWebType()); + for (String template : templates) + { + // 渲染模板 + StringWriter sw = new StringWriter(); + Template tpl = Velocity.getTemplate(template, Constants.UTF8); + tpl.merge(context, sw); + try + { + // 添加到zip + zip.putNextEntry(new ZipEntry(VelocityUtils.getFileName(template, table))); + IOUtils.write(sw.toString(), zip, Constants.UTF8); + IOUtils.closeQuietly(sw); + zip.flush(); + zip.closeEntry(); + } + catch (IOException e) + { + log.error("渲染模板失败,表名:" + table.getTableName(), e); + } + } + } + + /** + * 修改保存参数校验 + * + * @param genTable 业务信息 + */ + @Override + public void validateEdit(GenTable genTable) + { + if (GenConstants.TPL_TREE.equals(genTable.getTplCategory())) + { + String options = JSON.toJSONString(genTable.getParams()); + JSONObject paramsObj = JSON.parseObject(options); + if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_CODE))) + { + throw new ServiceException("树编码字段不能为空"); + } + else if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_PARENT_CODE))) + { + throw new ServiceException("树父编码字段不能为空"); + } + else if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_NAME))) + { + throw new ServiceException("树名称字段不能为空"); + } + else if (GenConstants.TPL_SUB.equals(genTable.getTplCategory())) + { + if (StringUtils.isEmpty(genTable.getSubTableName())) + { + throw new ServiceException("关联子表的表名不能为空"); + } + else if (StringUtils.isEmpty(genTable.getSubTableFkName())) + { + throw new ServiceException("子表关联的外键名不能为空"); + } + } + } + } + + /** + * 设置主键列信息 + * + * @param table 业务表信息 + */ + public void setPkColumn(GenTable table) + { + for (GenTableColumn column : table.getColumns()) + { + if (column.isPk()) + { + table.setPkColumn(column); + break; + } + } + if (StringUtils.isNull(table.getPkColumn())) + { + table.setPkColumn(table.getColumns().get(0)); + } + if (GenConstants.TPL_SUB.equals(table.getTplCategory())) + { + for (GenTableColumn column : table.getSubTable().getColumns()) + { + if (column.isPk()) + { + table.getSubTable().setPkColumn(column); + break; + } + } + if (StringUtils.isNull(table.getSubTable().getPkColumn())) + { + table.getSubTable().setPkColumn(table.getSubTable().getColumns().get(0)); + } + } + } + + /** + * 设置主子表信息 + * + * @param table 业务表信息 + */ + public void setSubTable(GenTable table) + { + String subTableName = table.getSubTableName(); + if (StringUtils.isNotEmpty(subTableName)) + { + table.setSubTable(genTableMapper.selectGenTableByName(subTableName)); + } + } + + /** + * 设置代码生成其他选项值 + * + * @param genTable 设置后的生成对象 + */ + public void setTableFromOptions(GenTable genTable) + { + JSONObject paramsObj = JSON.parseObject(genTable.getOptions()); + if (StringUtils.isNotNull(paramsObj)) + { + String treeCode = paramsObj.getString(GenConstants.TREE_CODE); + String treeParentCode = paramsObj.getString(GenConstants.TREE_PARENT_CODE); + String treeName = paramsObj.getString(GenConstants.TREE_NAME); + Long parentMenuId = paramsObj.getLongValue(GenConstants.PARENT_MENU_ID); + String parentMenuName = paramsObj.getString(GenConstants.PARENT_MENU_NAME); + + genTable.setTreeCode(treeCode); + genTable.setTreeParentCode(treeParentCode); + genTable.setTreeName(treeName); + genTable.setParentMenuId(parentMenuId); + genTable.setParentMenuName(parentMenuName); + } + } + + /** + * 获取代码生成地址 + * + * @param table 业务表信息 + * @param template 模板文件路径 + * @return 生成地址 + */ + public static String getGenPath(GenTable table, String template) + { + String genPath = table.getGenPath(); + if (StringUtils.equals(genPath, "/")) + { + return System.getProperty("user.dir") + File.separator + "src" + File.separator + VelocityUtils.getFileName(template, table); + } + return genPath + File.separator + VelocityUtils.getFileName(template, table); + } +} diff --git a/cmvr-iot-generator/src/main/java/com/cmvr/generator/service/IGenTableColumnService.java b/cmvr-iot-generator/src/main/java/com/cmvr/generator/service/IGenTableColumnService.java new file mode 100644 index 0000000..33a1d07 --- /dev/null +++ b/cmvr-iot-generator/src/main/java/com/cmvr/generator/service/IGenTableColumnService.java @@ -0,0 +1,44 @@ +package com.cmvr.generator.service; + +import java.util.List; +import com.cmvr.generator.domain.GenTableColumn; + +/** + * 业务字段 服务层 + * + * @author cmvr-iot + */ +public interface IGenTableColumnService +{ + /** + * 查询业务字段列表 + * + * @param tableId 业务字段编号 + * @return 业务字段集合 + */ + public List selectGenTableColumnListByTableId(Long tableId); + + /** + * 新增业务字段 + * + * @param genTableColumn 业务字段信息 + * @return 结果 + */ + public int insertGenTableColumn(GenTableColumn genTableColumn); + + /** + * 修改业务字段 + * + * @param genTableColumn 业务字段信息 + * @return 结果 + */ + public int updateGenTableColumn(GenTableColumn genTableColumn); + + /** + * 删除业务字段信息 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + public int deleteGenTableColumnByIds(String ids); +} diff --git a/cmvr-iot-generator/src/main/java/com/cmvr/generator/service/IGenTableService.java b/cmvr-iot-generator/src/main/java/com/cmvr/generator/service/IGenTableService.java new file mode 100644 index 0000000..9a5aeba --- /dev/null +++ b/cmvr-iot-generator/src/main/java/com/cmvr/generator/service/IGenTableService.java @@ -0,0 +1,130 @@ +package com.cmvr.generator.service; + +import java.util.List; +import java.util.Map; +import com.cmvr.generator.domain.GenTable; + +/** + * 业务 服务层 + * + * @author cmvr-iot + */ +public interface IGenTableService +{ + /** + * 查询业务列表 + * + * @param genTable 业务信息 + * @return 业务集合 + */ + public List selectGenTableList(GenTable genTable); + + /** + * 查询据库列表 + * + * @param genTable 业务信息 + * @return 数据库表集合 + */ + public List selectDbTableList(GenTable genTable); + + /** + * 查询据库列表 + * + * @param tableNames 表名称组 + * @return 数据库表集合 + */ + public List selectDbTableListByNames(String[] tableNames); + + /** + * 查询所有表信息 + * + * @return 表信息集合 + */ + public List selectGenTableAll(); + + /** + * 查询业务信息 + * + * @param id 业务ID + * @return 业务信息 + */ + public GenTable selectGenTableById(Long id); + + /** + * 修改业务 + * + * @param genTable 业务信息 + * @return 结果 + */ + public void updateGenTable(GenTable genTable); + + /** + * 删除业务信息 + * + * @param tableIds 需要删除的表数据ID + * @return 结果 + */ + public void deleteGenTableByIds(Long[] tableIds); + + /** + * 创建表 + * + * @param sql 创建表语句 + * @return 结果 + */ + public boolean createTable(String sql); + + /** + * 导入表结构 + * + * @param tableList 导入表列表 + * @param operName 操作人员 + */ + public void importGenTable(List tableList, String operName); + + /** + * 预览代码 + * + * @param tableId 表编号 + * @return 预览数据列表 + */ + public Map previewCode(Long tableId); + + /** + * 生成代码(下载方式) + * + * @param tableName 表名称 + * @return 数据 + */ + public byte[] downloadCode(String tableName); + + /** + * 生成代码(自定义路径) + * + * @param tableName 表名称 + * @return 数据 + */ + public void generatorCode(String tableName); + + /** + * 同步数据库 + * + * @param tableName 表名称 + */ + public void synchDb(String tableName); + + /** + * 批量生成代码(下载方式) + * + * @param tableNames 表数组 + * @return 数据 + */ + public byte[] downloadCode(String[] tableNames); + + /** + * 修改保存参数校验 + * + * @param genTable 业务信息 + */ + public void validateEdit(GenTable genTable); +} diff --git a/cmvr-iot-generator/src/main/java/com/cmvr/generator/util/GenUtils.java b/cmvr-iot-generator/src/main/java/com/cmvr/generator/util/GenUtils.java new file mode 100644 index 0000000..c265d32 --- /dev/null +++ b/cmvr-iot-generator/src/main/java/com/cmvr/generator/util/GenUtils.java @@ -0,0 +1,257 @@ +package com.cmvr.generator.util; + +import java.util.Arrays; +import org.apache.commons.lang3.RegExUtils; +import com.cmvr.common.constant.GenConstants; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.generator.config.GenConfig; +import com.cmvr.generator.domain.GenTable; +import com.cmvr.generator.domain.GenTableColumn; + +/** + * 代码生成器 工具类 + * + * @author cmvrIot + */ +public class GenUtils +{ + /** + * 初始化表信息 + */ + public static void initTable(GenTable genTable, String operName) + { + genTable.setClassName(convertClassName(genTable.getTableName())); + genTable.setPackageName(GenConfig.getPackageName()); + genTable.setModuleName(getModuleName(GenConfig.getPackageName())); + genTable.setBusinessName(getBusinessName(genTable.getTableName())); + genTable.setFunctionName(replaceText(genTable.getTableComment())); + genTable.setFunctionAuthor(GenConfig.getAuthor()); + genTable.setCreateBy(operName); + } + + /** + * 初始化列属性字段 + */ + public static void initColumnField(GenTableColumn column, GenTable table) + { + String dataType = getDbType(column.getColumnType()); + String columnName = column.getColumnName(); + column.setTableId(table.getTableId()); + column.setCreateBy(table.getCreateBy()); + // 设置java字段名 + column.setJavaField(StringUtils.toCamelCase(columnName)); + // 设置默认类型 + column.setJavaType(GenConstants.TYPE_STRING); + column.setQueryType(GenConstants.QUERY_EQ); + + if (arraysContains(GenConstants.COLUMNTYPE_STR, dataType) || arraysContains(GenConstants.COLUMNTYPE_TEXT, dataType)) + { + // 字符串长度超过500设置为文本域 + Integer columnLength = getColumnLength(column.getColumnType()); + String htmlType = columnLength >= 500 || arraysContains(GenConstants.COLUMNTYPE_TEXT, dataType) ? GenConstants.HTML_TEXTAREA : GenConstants.HTML_INPUT; + column.setHtmlType(htmlType); + } + else if (arraysContains(GenConstants.COLUMNTYPE_TIME, dataType)) + { + column.setJavaType(GenConstants.TYPE_DATE); + column.setHtmlType(GenConstants.HTML_DATETIME); + } + else if (arraysContains(GenConstants.COLUMNTYPE_NUMBER, dataType)) + { + column.setHtmlType(GenConstants.HTML_INPUT); + + // 如果是浮点型 统一用BigDecimal + String[] str = StringUtils.split(StringUtils.substringBetween(column.getColumnType(), "(", ")"), ","); + if (str != null && str.length == 2 && Integer.parseInt(str[1]) > 0) + { + column.setJavaType(GenConstants.TYPE_BIGDECIMAL); + } + // 如果是整形 + else if (str != null && str.length == 1 && Integer.parseInt(str[0]) <= 10) + { + column.setJavaType(GenConstants.TYPE_INTEGER); + } + // 长整形 + else + { + column.setJavaType(GenConstants.TYPE_LONG); + } + } + + // 插入字段(默认所有字段都需要插入) + column.setIsInsert(GenConstants.REQUIRE); + + // 编辑字段 + if (!arraysContains(GenConstants.COLUMNNAME_NOT_EDIT, columnName) && !column.isPk()) + { + column.setIsEdit(GenConstants.REQUIRE); + } + // 列表字段 + if (!arraysContains(GenConstants.COLUMNNAME_NOT_LIST, columnName) && !column.isPk()) + { + column.setIsList(GenConstants.REQUIRE); + } + // 查询字段 + if (!arraysContains(GenConstants.COLUMNNAME_NOT_QUERY, columnName) && !column.isPk()) + { + column.setIsQuery(GenConstants.REQUIRE); + } + + // 查询字段类型 + if (StringUtils.endsWithIgnoreCase(columnName, "name")) + { + column.setQueryType(GenConstants.QUERY_LIKE); + } + // 状态字段设置单选框 + if (StringUtils.endsWithIgnoreCase(columnName, "status")) + { + column.setHtmlType(GenConstants.HTML_RADIO); + } + // 类型&性别字段设置下拉框 + else if (StringUtils.endsWithIgnoreCase(columnName, "type") + || StringUtils.endsWithIgnoreCase(columnName, "sex")) + { + column.setHtmlType(GenConstants.HTML_SELECT); + } + // 图片字段设置图片上传控件 + else if (StringUtils.endsWithIgnoreCase(columnName, "image")) + { + column.setHtmlType(GenConstants.HTML_IMAGE_UPLOAD); + } + // 文件字段设置文件上传控件 + else if (StringUtils.endsWithIgnoreCase(columnName, "file")) + { + column.setHtmlType(GenConstants.HTML_FILE_UPLOAD); + } + // 内容字段设置富文本控件 + else if (StringUtils.endsWithIgnoreCase(columnName, "content")) + { + column.setHtmlType(GenConstants.HTML_EDITOR); + } + } + + /** + * 校验数组是否包含指定值 + * + * @param arr 数组 + * @param targetValue 值 + * @return 是否包含 + */ + public static boolean arraysContains(String[] arr, String targetValue) + { + return Arrays.asList(arr).contains(targetValue); + } + + /** + * 获取模块名 + * + * @param packageName 包名 + * @return 模块名 + */ + public static String getModuleName(String packageName) + { + int lastIndex = packageName.lastIndexOf("."); + int nameLength = packageName.length(); + return StringUtils.substring(packageName, lastIndex + 1, nameLength); + } + + /** + * 获取业务名 + * + * @param tableName 表名 + * @return 业务名 + */ + public static String getBusinessName(String tableName) + { + int lastIndex = tableName.lastIndexOf("_"); + int nameLength = tableName.length(); + return StringUtils.substring(tableName, lastIndex + 1, nameLength); + } + + /** + * 表名转换成Java类名 + * + * @param tableName 表名称 + * @return 类名 + */ + public static String convertClassName(String tableName) + { + boolean autoRemovePre = GenConfig.getAutoRemovePre(); + String tablePrefix = GenConfig.getTablePrefix(); + if (autoRemovePre && StringUtils.isNotEmpty(tablePrefix)) + { + String[] searchList = StringUtils.split(tablePrefix, ","); + tableName = replaceFirst(tableName, searchList); + } + return StringUtils.convertToCamelCase(tableName); + } + + /** + * 批量替换前缀 + * + * @param replacementm 替换值 + * @param searchList 替换列表 + * @return + */ + public static String replaceFirst(String replacementm, String[] searchList) + { + String text = replacementm; + for (String searchString : searchList) + { + if (replacementm.startsWith(searchString)) + { + text = replacementm.replaceFirst(searchString, ""); + break; + } + } + return text; + } + + /** + * 关键字替换 + * + * @param text 需要被替换的名字 + * @return 替换后的名字 + */ + public static String replaceText(String text) + { + return RegExUtils.replaceAll(text, "(?:表|招商车研物联网平台)", ""); + } + + /** + * 获取数据库类型字段 + * + * @param columnType 列类型 + * @return 截取后的列类型 + */ + public static String getDbType(String columnType) + { + if (StringUtils.indexOf(columnType, "(") > 0) + { + return StringUtils.substringBefore(columnType, "("); + } + else + { + return columnType; + } + } + + /** + * 获取字段长度 + * + * @param columnType 列类型 + * @return 截取后的列类型 + */ + public static Integer getColumnLength(String columnType) + { + if (StringUtils.indexOf(columnType, "(") > 0) + { + String length = StringUtils.substringBetween(columnType, "(", ")"); + return Integer.valueOf(length); + } + else + { + return 0; + } + } +} diff --git a/cmvr-iot-generator/src/main/java/com/cmvr/generator/util/VelocityInitializer.java b/cmvr-iot-generator/src/main/java/com/cmvr/generator/util/VelocityInitializer.java new file mode 100644 index 0000000..f050a74 --- /dev/null +++ b/cmvr-iot-generator/src/main/java/com/cmvr/generator/util/VelocityInitializer.java @@ -0,0 +1,34 @@ +package com.cmvr.generator.util; + +import java.util.Properties; +import org.apache.velocity.app.Velocity; +import com.cmvr.common.constant.Constants; + +/** + * VelocityEngine工厂 + * + * @author cmvr-iot + */ +public class VelocityInitializer +{ + /** + * 初始化vm方法 + */ + public static void initVelocity() + { + Properties p = new Properties(); + try + { + // 加载classpath目录下的vm文件 + p.setProperty("resource.loader.file.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader"); + // 定义字符集 + p.setProperty(Velocity.INPUT_ENCODING, Constants.UTF8); + // 初始化Velocity引擎,指定配置Properties + Velocity.init(p); + } + catch (Exception e) + { + throw new RuntimeException(e); + } + } +} diff --git a/cmvr-iot-generator/src/main/java/com/cmvr/generator/util/VelocityUtils.java b/cmvr-iot-generator/src/main/java/com/cmvr/generator/util/VelocityUtils.java new file mode 100644 index 0000000..c5d22ba --- /dev/null +++ b/cmvr-iot-generator/src/main/java/com/cmvr/generator/util/VelocityUtils.java @@ -0,0 +1,408 @@ +package com.cmvr.generator.util; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import org.apache.velocity.VelocityContext; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.cmvr.common.constant.GenConstants; +import com.cmvr.common.utils.DateUtils; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.generator.domain.GenTable; +import com.cmvr.generator.domain.GenTableColumn; + +/** + * 模板处理工具类 + * + * @author cmvr-iot + */ +public class VelocityUtils +{ + /** 项目空间路径 */ + private static final String PROJECT_PATH = "main/java"; + + /** mybatis空间路径 */ + private static final String MYBATIS_PATH = "main/resources/mapper"; + + /** 默认上级菜单,系统工具 */ + private static final String DEFAULT_PARENT_MENU_ID = "3"; + + /** + * 设置模板变量信息 + * + * @return 模板列表 + */ + public static VelocityContext prepareContext(GenTable genTable) + { + String moduleName = genTable.getModuleName(); + String businessName = genTable.getBusinessName(); + String packageName = genTable.getPackageName(); + String tplCategory = genTable.getTplCategory(); + String functionName = genTable.getFunctionName(); + + VelocityContext velocityContext = new VelocityContext(); + velocityContext.put("tplCategory", genTable.getTplCategory()); + velocityContext.put("tableName", genTable.getTableName()); + velocityContext.put("functionName", StringUtils.isNotEmpty(functionName) ? functionName : "【请填写功能名称】"); + velocityContext.put("ClassName", genTable.getClassName()); + velocityContext.put("className", StringUtils.uncapitalize(genTable.getClassName())); + velocityContext.put("moduleName", genTable.getModuleName()); + velocityContext.put("BusinessName", StringUtils.capitalize(genTable.getBusinessName())); + velocityContext.put("businessName", genTable.getBusinessName()); + velocityContext.put("basePackage", getPackagePrefix(packageName)); + velocityContext.put("packageName", packageName); + velocityContext.put("author", genTable.getFunctionAuthor()); + velocityContext.put("datetime", DateUtils.getDate()); + velocityContext.put("pkColumn", genTable.getPkColumn()); + velocityContext.put("importList", getImportList(genTable)); + velocityContext.put("permissionPrefix", getPermissionPrefix(moduleName, businessName)); + velocityContext.put("columns", genTable.getColumns()); + velocityContext.put("table", genTable); + velocityContext.put("dicts", getDicts(genTable)); + setMenuVelocityContext(velocityContext, genTable); + if (GenConstants.TPL_TREE.equals(tplCategory)) + { + setTreeVelocityContext(velocityContext, genTable); + } + if (GenConstants.TPL_SUB.equals(tplCategory)) + { + setSubVelocityContext(velocityContext, genTable); + } + return velocityContext; + } + + public static void setMenuVelocityContext(VelocityContext context, GenTable genTable) + { + String options = genTable.getOptions(); + JSONObject paramsObj = JSON.parseObject(options); + String parentMenuId = getParentMenuId(paramsObj); + context.put("parentMenuId", parentMenuId); + } + + public static void setTreeVelocityContext(VelocityContext context, GenTable genTable) + { + String options = genTable.getOptions(); + JSONObject paramsObj = JSON.parseObject(options); + String treeCode = getTreecode(paramsObj); + String treeParentCode = getTreeParentCode(paramsObj); + String treeName = getTreeName(paramsObj); + + context.put("treeCode", treeCode); + context.put("treeParentCode", treeParentCode); + context.put("treeName", treeName); + context.put("expandColumn", getExpandColumn(genTable)); + if (paramsObj.containsKey(GenConstants.TREE_PARENT_CODE)) + { + context.put("tree_parent_code", paramsObj.getString(GenConstants.TREE_PARENT_CODE)); + } + if (paramsObj.containsKey(GenConstants.TREE_NAME)) + { + context.put("tree_name", paramsObj.getString(GenConstants.TREE_NAME)); + } + } + + public static void setSubVelocityContext(VelocityContext context, GenTable genTable) + { + GenTable subTable = genTable.getSubTable(); + String subTableName = genTable.getSubTableName(); + String subTableFkName = genTable.getSubTableFkName(); + String subClassName = genTable.getSubTable().getClassName(); + String subTableFkClassName = StringUtils.convertToCamelCase(subTableFkName); + + context.put("subTable", subTable); + context.put("subTableName", subTableName); + context.put("subTableFkName", subTableFkName); + context.put("subTableFkClassName", subTableFkClassName); + context.put("subTableFkclassName", StringUtils.uncapitalize(subTableFkClassName)); + context.put("subClassName", subClassName); + context.put("subclassName", StringUtils.uncapitalize(subClassName)); + context.put("subImportList", getImportList(genTable.getSubTable())); + } + + /** + * 获取模板信息 + * @param tplCategory 生成的模板 + * @param tplWebType 前端类型 + * @return 模板列表 + */ + public static List getTemplateList(String tplCategory, String tplWebType) + { + String useWebType = "vm/vue"; + if ("element-plus".equals(tplWebType)) + { + useWebType = "vm/vue/v3"; + } + List templates = new ArrayList(); + templates.add("vm/java/domain.java.vm"); + templates.add("vm/java/mapper.java.vm"); + templates.add("vm/java/service.java.vm"); + templates.add("vm/java/serviceImpl.java.vm"); + templates.add("vm/java/controller.java.vm"); + templates.add("vm/xml/mapper.xml.vm"); + templates.add("vm/sql/sql.vm"); + templates.add("vm/js/api.js.vm"); + if (GenConstants.TPL_CRUD.equals(tplCategory)) + { + templates.add(useWebType + "/index.vue.vm"); + } + else if (GenConstants.TPL_TREE.equals(tplCategory)) + { + templates.add(useWebType + "/index-tree.vue.vm"); + } + else if (GenConstants.TPL_SUB.equals(tplCategory)) + { + templates.add(useWebType + "/index.vue.vm"); + templates.add("vm/java/sub-domain.java.vm"); + } + return templates; + } + + /** + * 获取文件名 + */ + public static String getFileName(String template, GenTable genTable) + { + // 文件名称 + String fileName = ""; + // 包路径 + String packageName = genTable.getPackageName(); + // 模块名 + String moduleName = genTable.getModuleName(); + // 大写类名 + String className = genTable.getClassName(); + // 业务名称 + String businessName = genTable.getBusinessName(); + + String javaPath = PROJECT_PATH + "/" + StringUtils.replace(packageName, ".", "/"); + String mybatisPath = MYBATIS_PATH + "/" + moduleName; + String vuePath = "vue"; + + if (template.contains("domain.java.vm")) + { + fileName = StringUtils.format("{}/domain/{}.java", javaPath, className); + } + if (template.contains("sub-domain.java.vm") && StringUtils.equals(GenConstants.TPL_SUB, genTable.getTplCategory())) + { + fileName = StringUtils.format("{}/domain/{}.java", javaPath, genTable.getSubTable().getClassName()); + } + else if (template.contains("mapper.java.vm")) + { + fileName = StringUtils.format("{}/mapper/{}Mapper.java", javaPath, className); + } + else if (template.contains("service.java.vm")) + { + fileName = StringUtils.format("{}/service/I{}Service.java", javaPath, className); + } + else if (template.contains("serviceImpl.java.vm")) + { + fileName = StringUtils.format("{}/service/impl/{}ServiceImpl.java", javaPath, className); + } + else if (template.contains("controller.java.vm")) + { + fileName = StringUtils.format("{}/controller/{}Controller.java", javaPath, className); + } + else if (template.contains("mapper.xml.vm")) + { + fileName = StringUtils.format("{}/{}Mapper.xml", mybatisPath, className); + } + else if (template.contains("sql.vm")) + { + fileName = businessName + "Menu.sql"; + } + else if (template.contains("api.js.vm")) + { + fileName = StringUtils.format("{}/api/{}/{}.js", vuePath, moduleName, businessName); + } + else if (template.contains("index.vue.vm")) + { + fileName = StringUtils.format("{}/views/{}/{}/index.vue", vuePath, moduleName, businessName); + } + else if (template.contains("index-tree.vue.vm")) + { + fileName = StringUtils.format("{}/views/{}/{}/index.vue", vuePath, moduleName, businessName); + } + return fileName; + } + + /** + * 获取包前缀 + * + * @param packageName 包名称 + * @return 包前缀名称 + */ + public static String getPackagePrefix(String packageName) + { + int lastIndex = packageName.lastIndexOf("."); + return StringUtils.substring(packageName, 0, lastIndex); + } + + /** + * 根据列类型获取导入包 + * + * @param genTable 业务表对象 + * @return 返回需要导入的包列表 + */ + public static HashSet getImportList(GenTable genTable) + { + List columns = genTable.getColumns(); + GenTable subGenTable = genTable.getSubTable(); + HashSet importList = new HashSet(); + if (StringUtils.isNotNull(subGenTable)) + { + importList.add("java.util.List"); + } + for (GenTableColumn column : columns) + { + if (!column.isSuperColumn() && GenConstants.TYPE_DATE.equals(column.getJavaType())) + { + importList.add("java.util.Date"); + importList.add("com.fasterxml.jackson.annotation.JsonFormat"); + } + else if (!column.isSuperColumn() && GenConstants.TYPE_BIGDECIMAL.equals(column.getJavaType())) + { + importList.add("java.math.BigDecimal"); + } + } + return importList; + } + + /** + * 根据列类型获取字典组 + * + * @param genTable 业务表对象 + * @return 返回字典组 + */ + public static String getDicts(GenTable genTable) + { + List columns = genTable.getColumns(); + Set dicts = new HashSet(); + addDicts(dicts, columns); + if (StringUtils.isNotNull(genTable.getSubTable())) + { + List subColumns = genTable.getSubTable().getColumns(); + addDicts(dicts, subColumns); + } + return StringUtils.join(dicts, ", "); + } + + /** + * 添加字典列表 + * + * @param dicts 字典列表 + * @param columns 列集合 + */ + public static void addDicts(Set dicts, List columns) + { + for (GenTableColumn column : columns) + { + if (!column.isSuperColumn() && StringUtils.isNotEmpty(column.getDictType()) && StringUtils.equalsAny( + column.getHtmlType(), + new String[] { GenConstants.HTML_SELECT, GenConstants.HTML_RADIO, GenConstants.HTML_CHECKBOX })) + { + dicts.add("'" + column.getDictType() + "'"); + } + } + } + + /** + * 获取权限前缀 + * + * @param moduleName 模块名称 + * @param businessName 业务名称 + * @return 返回权限前缀 + */ + public static String getPermissionPrefix(String moduleName, String businessName) + { + return StringUtils.format("{}:{}", moduleName, businessName); + } + + /** + * 获取上级菜单ID字段 + * + * @param paramsObj 生成其他选项 + * @return 上级菜单ID字段 + */ + public static String getParentMenuId(JSONObject paramsObj) + { + if (StringUtils.isNotEmpty(paramsObj) && paramsObj.containsKey(GenConstants.PARENT_MENU_ID) + && StringUtils.isNotEmpty(paramsObj.getString(GenConstants.PARENT_MENU_ID))) + { + return paramsObj.getString(GenConstants.PARENT_MENU_ID); + } + return DEFAULT_PARENT_MENU_ID; + } + + /** + * 获取树编码 + * + * @param paramsObj 生成其他选项 + * @return 树编码 + */ + public static String getTreecode(JSONObject paramsObj) + { + if (paramsObj.containsKey(GenConstants.TREE_CODE)) + { + return StringUtils.toCamelCase(paramsObj.getString(GenConstants.TREE_CODE)); + } + return StringUtils.EMPTY; + } + + /** + * 获取树父编码 + * + * @param paramsObj 生成其他选项 + * @return 树父编码 + */ + public static String getTreeParentCode(JSONObject paramsObj) + { + if (paramsObj.containsKey(GenConstants.TREE_PARENT_CODE)) + { + return StringUtils.toCamelCase(paramsObj.getString(GenConstants.TREE_PARENT_CODE)); + } + return StringUtils.EMPTY; + } + + /** + * 获取树名称 + * + * @param paramsObj 生成其他选项 + * @return 树名称 + */ + public static String getTreeName(JSONObject paramsObj) + { + if (paramsObj.containsKey(GenConstants.TREE_NAME)) + { + return StringUtils.toCamelCase(paramsObj.getString(GenConstants.TREE_NAME)); + } + return StringUtils.EMPTY; + } + + /** + * 获取需要在哪一列上面显示展开按钮 + * + * @param genTable 业务表对象 + * @return 展开按钮列序号 + */ + public static int getExpandColumn(GenTable genTable) + { + String options = genTable.getOptions(); + JSONObject paramsObj = JSON.parseObject(options); + String treeName = paramsObj.getString(GenConstants.TREE_NAME); + int num = 0; + for (GenTableColumn column : genTable.getColumns()) + { + if (column.isList()) + { + num++; + String columnName = column.getColumnName(); + if (columnName.equals(treeName)) + { + break; + } + } + } + return num; + } +} diff --git a/cmvr-iot-generator/src/main/resources/generator.yml b/cmvr-iot-generator/src/main/resources/generator.yml new file mode 100644 index 0000000..095162f --- /dev/null +++ b/cmvr-iot-generator/src/main/resources/generator.yml @@ -0,0 +1,12 @@ +# 代码生成 +gen: + # 作者 + author: cmvr-iot + # 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool + packageName: com.cmvr.system + # 自动去除表前缀,默认是false + autoRemovePre: false + # 表前缀(生成类名不会包含表前缀,多个用逗号分隔) + tablePrefix: sys_ + # 是否允许生成文件覆盖到本地(自定义路径),默认不允许 + allowOverwrite: false diff --git a/cmvr-iot-generator/src/main/resources/mapper/generator/GenTableColumnMapper.xml b/cmvr-iot-generator/src/main/resources/mapper/generator/GenTableColumnMapper.xml new file mode 100644 index 0000000..23d53e0 --- /dev/null +++ b/cmvr-iot-generator/src/main/resources/mapper/generator/GenTableColumnMapper.xml @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select column_id, table_id, column_name, column_comment, column_type, java_type, java_field, is_pk, is_increment, is_required, is_insert, is_edit, is_list, is_query, query_type, html_type, dict_type, sort, create_by, create_time, update_by, update_time from gen_table_column + + + + + + + + insert into gen_table_column ( + table_id, + column_name, + column_comment, + column_type, + java_type, + java_field, + is_pk, + is_increment, + is_required, + is_insert, + is_edit, + is_list, + is_query, + query_type, + html_type, + dict_type, + sort, + create_by, + create_time + )values( + #{tableId}, + #{columnName}, + #{columnComment}, + #{columnType}, + #{javaType}, + #{javaField}, + #{isPk}, + #{isIncrement}, + #{isRequired}, + #{isInsert}, + #{isEdit}, + #{isList}, + #{isQuery}, + #{queryType}, + #{htmlType}, + #{dictType}, + #{sort}, + #{createBy}, + sysdate() + ) + + + + update gen_table_column + + column_comment = #{columnComment}, + java_type = #{javaType}, + java_field = #{javaField}, + is_insert = #{isInsert}, + is_edit = #{isEdit}, + is_list = #{isList}, + is_query = #{isQuery}, + is_required = #{isRequired}, + query_type = #{queryType}, + html_type = #{htmlType}, + dict_type = #{dictType}, + sort = #{sort}, + update_by = #{updateBy}, + update_time = sysdate() + + where column_id = #{columnId} + + + + delete from gen_table_column where table_id in + + #{tableId} + + + + + delete from gen_table_column where column_id in + + #{item.columnId} + + + + diff --git a/cmvr-iot-generator/src/main/resources/mapper/generator/GenTableMapper.xml b/cmvr-iot-generator/src/main/resources/mapper/generator/GenTableMapper.xml new file mode 100644 index 0000000..2fd495f --- /dev/null +++ b/cmvr-iot-generator/src/main/resources/mapper/generator/GenTableMapper.xml @@ -0,0 +1,210 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select table_id, table_name, table_comment, sub_table_name, sub_table_fk_name, class_name, tpl_category, tpl_web_type, package_name, module_name, business_name, function_name, function_author, gen_type, gen_path, options, create_by, create_time, update_by, update_time, remark from gen_table + + + + + + + + + + + + + + + + + + insert into gen_table ( + table_name, + table_comment, + class_name, + tpl_category, + tpl_web_type, + package_name, + module_name, + business_name, + function_name, + function_author, + gen_type, + gen_path, + remark, + create_by, + create_time + )values( + #{tableName}, + #{tableComment}, + #{className}, + #{tplCategory}, + #{tplWebType}, + #{packageName}, + #{moduleName}, + #{businessName}, + #{functionName}, + #{functionAuthor}, + #{genType}, + #{genPath}, + #{remark}, + #{createBy}, + sysdate() + ) + + + + ${sql} + + + + update gen_table + + table_name = #{tableName}, + table_comment = #{tableComment}, + sub_table_name = #{subTableName}, + sub_table_fk_name = #{subTableFkName}, + class_name = #{className}, + function_author = #{functionAuthor}, + gen_type = #{genType}, + gen_path = #{genPath}, + tpl_category = #{tplCategory}, + tpl_web_type = #{tplWebType}, + package_name = #{packageName}, + module_name = #{moduleName}, + business_name = #{businessName}, + function_name = #{functionName}, + options = #{options}, + update_by = #{updateBy}, + remark = #{remark}, + update_time = sysdate() + + where table_id = #{tableId} + + + + delete from gen_table where table_id in + + #{tableId} + + + + diff --git a/cmvr-iot-generator/src/main/resources/vm/java/controller.java.vm b/cmvr-iot-generator/src/main/resources/vm/java/controller.java.vm new file mode 100644 index 0000000..bf88988 --- /dev/null +++ b/cmvr-iot-generator/src/main/resources/vm/java/controller.java.vm @@ -0,0 +1,115 @@ +package ${packageName}.controller; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.enums.BusinessType; +import ${packageName}.domain.${ClassName}; +import ${packageName}.service.I${ClassName}Service; +import com.ruoyi.common.utils.poi.ExcelUtil; +#if($table.crud || $table.sub) +import com.ruoyi.common.core.page.TableDataInfo; +#elseif($table.tree) +#end + +/** + * ${functionName}Controller + * + * @author ${author} + * @date ${datetime} + */ +@RestController +@RequestMapping("/${moduleName}/${businessName}") +public class ${ClassName}Controller extends BaseController +{ + @Autowired + private I${ClassName}Service ${className}Service; + + /** + * 查询${functionName}列表 + */ + @PreAuthorize("@ss.hasPermi('${permissionPrefix}:list')") + @GetMapping("/list") +#if($table.crud || $table.sub) + public TableDataInfo list(${ClassName} ${className}) + { + startPage(); + List<${ClassName}> list = ${className}Service.select${ClassName}List(${className}); + return getDataTable(list); + } +#elseif($table.tree) + public AjaxResult list(${ClassName} ${className}) + { + List<${ClassName}> list = ${className}Service.select${ClassName}List(${className}); + return success(list); + } +#end + + /** + * 导出${functionName}列表 + */ + @PreAuthorize("@ss.hasPermi('${permissionPrefix}:export')") + @Log(title = "${functionName}", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, ${ClassName} ${className}) + { + List<${ClassName}> list = ${className}Service.select${ClassName}List(${className}); + ExcelUtil<${ClassName}> util = new ExcelUtil<${ClassName}>(${ClassName}.class); + util.exportExcel(response, list, "${functionName}数据"); + } + + /** + * 获取${functionName}详细信息 + */ + @PreAuthorize("@ss.hasPermi('${permissionPrefix}:query')") + @GetMapping(value = "/{${pkColumn.javaField}}") + public AjaxResult getInfo(@PathVariable("${pkColumn.javaField}") ${pkColumn.javaType} ${pkColumn.javaField}) + { + return success(${className}Service.select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField})); + } + + /** + * 新增${functionName} + */ + @PreAuthorize("@ss.hasPermi('${permissionPrefix}:add')") + @Log(title = "${functionName}", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody ${ClassName} ${className}) + { + return toAjax(${className}Service.insert${ClassName}(${className})); + } + + /** + * 修改${functionName} + */ + @PreAuthorize("@ss.hasPermi('${permissionPrefix}:edit')") + @Log(title = "${functionName}", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody ${ClassName} ${className}) + { + return toAjax(${className}Service.update${ClassName}(${className})); + } + + /** + * 删除${functionName} + */ + @PreAuthorize("@ss.hasPermi('${permissionPrefix}:remove')") + @Log(title = "${functionName}", businessType = BusinessType.DELETE) + @DeleteMapping("/{${pkColumn.javaField}s}") + public AjaxResult remove(@PathVariable ${pkColumn.javaType}[] ${pkColumn.javaField}s) + { + return toAjax(${className}Service.delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaField}s)); + } +} diff --git a/cmvr-iot-generator/src/main/resources/vm/java/domain.java.vm b/cmvr-iot-generator/src/main/resources/vm/java/domain.java.vm new file mode 100644 index 0000000..b236ef0 --- /dev/null +++ b/cmvr-iot-generator/src/main/resources/vm/java/domain.java.vm @@ -0,0 +1,105 @@ +package ${packageName}.domain; + +#foreach ($import in $importList) +import ${import}; +#end +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.ruoyi.common.annotation.Excel; +#if($table.crud || $table.sub) +import com.ruoyi.common.core.domain.BaseEntity; +#elseif($table.tree) +import com.ruoyi.common.core.domain.TreeEntity; +#end + +/** + * ${functionName}对象 ${tableName} + * + * @author ${author} + * @date ${datetime} + */ +#if($table.crud || $table.sub) +#set($Entity="BaseEntity") +#elseif($table.tree) +#set($Entity="TreeEntity") +#end +public class ${ClassName} extends ${Entity} +{ + private static final long serialVersionUID = 1L; + +#foreach ($column in $columns) +#if(!$table.isSuperColumn($column.javaField)) + /** $column.columnComment */ +#if($column.list) +#set($parentheseIndex=$column.columnComment.indexOf("(")) +#if($parentheseIndex != -1) +#set($comment=$column.columnComment.substring(0, $parentheseIndex)) +#else +#set($comment=$column.columnComment) +#end +#if($parentheseIndex != -1) + @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") +#elseif($column.javaType == 'Date') + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd") +#else + @Excel(name = "${comment}") +#end +#end + private $column.javaType $column.javaField; + +#end +#end +#if($table.sub) + /** $table.subTable.functionName信息 */ + private List<${subClassName}> ${subclassName}List; + +#end +#foreach ($column in $columns) +#if(!$table.isSuperColumn($column.javaField)) +#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]")) +#set($AttrName=$column.javaField) +#else +#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) +#end + public void set${AttrName}($column.javaType $column.javaField) + { + this.$column.javaField = $column.javaField; + } + + public $column.javaType get${AttrName}() + { + return $column.javaField; + } + +#end +#end +#if($table.sub) + public List<${subClassName}> get${subClassName}List() + { + return ${subclassName}List; + } + + public void set${subClassName}List(List<${subClassName}> ${subclassName}List) + { + this.${subclassName}List = ${subclassName}List; + } + +#end + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) +#foreach ($column in $columns) +#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]")) +#set($AttrName=$column.javaField) +#else +#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) +#end + .append("${column.javaField}", get${AttrName}()) +#end +#if($table.sub) + .append("${subclassName}List", get${subClassName}List()) +#end + .toString(); + } +} diff --git a/cmvr-iot-generator/src/main/resources/vm/java/mapper.java.vm b/cmvr-iot-generator/src/main/resources/vm/java/mapper.java.vm new file mode 100644 index 0000000..7e7d7c2 --- /dev/null +++ b/cmvr-iot-generator/src/main/resources/vm/java/mapper.java.vm @@ -0,0 +1,91 @@ +package ${packageName}.mapper; + +import java.util.List; +import ${packageName}.domain.${ClassName}; +#if($table.sub) +import ${packageName}.domain.${subClassName}; +#end + +/** + * ${functionName}Mapper接口 + * + * @author ${author} + * @date ${datetime} + */ +public interface ${ClassName}Mapper +{ + /** + * 查询${functionName} + * + * @param ${pkColumn.javaField} ${functionName}主键 + * @return ${functionName} + */ + public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}); + + /** + * 查询${functionName}列表 + * + * @param ${className} ${functionName} + * @return ${functionName}集合 + */ + public List<${ClassName}> select${ClassName}List(${ClassName} ${className}); + + /** + * 新增${functionName} + * + * @param ${className} ${functionName} + * @return 结果 + */ + public int insert${ClassName}(${ClassName} ${className}); + + /** + * 修改${functionName} + * + * @param ${className} ${functionName} + * @return 结果 + */ + public int update${ClassName}(${ClassName} ${className}); + + /** + * 删除${functionName} + * + * @param ${pkColumn.javaField} ${functionName}主键 + * @return 结果 + */ + public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}); + + /** + * 批量删除${functionName} + * + * @param ${pkColumn.javaField}s 需要删除的数据主键集合 + * @return 结果 + */ + public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s); +#if($table.sub) + + /** + * 批量删除${subTable.functionName} + * + * @param ${pkColumn.javaField}s 需要删除的数据主键集合 + * @return 结果 + */ + public int delete${subClassName}By${subTableFkClassName}s(${pkColumn.javaType}[] ${pkColumn.javaField}s); + + /** + * 批量新增${subTable.functionName} + * + * @param ${subclassName}List ${subTable.functionName}列表 + * @return 结果 + */ + public int batch${subClassName}(List<${subClassName}> ${subclassName}List); + + + /** + * 通过${functionName}主键删除${subTable.functionName}信息 + * + * @param ${pkColumn.javaField} ${functionName}ID + * @return 结果 + */ + public int delete${subClassName}By${subTableFkClassName}(${pkColumn.javaType} ${pkColumn.javaField}); +#end +} diff --git a/cmvr-iot-generator/src/main/resources/vm/java/service.java.vm b/cmvr-iot-generator/src/main/resources/vm/java/service.java.vm new file mode 100644 index 0000000..264882b --- /dev/null +++ b/cmvr-iot-generator/src/main/resources/vm/java/service.java.vm @@ -0,0 +1,61 @@ +package ${packageName}.service; + +import java.util.List; +import ${packageName}.domain.${ClassName}; + +/** + * ${functionName}Service接口 + * + * @author ${author} + * @date ${datetime} + */ +public interface I${ClassName}Service +{ + /** + * 查询${functionName} + * + * @param ${pkColumn.javaField} ${functionName}主键 + * @return ${functionName} + */ + public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}); + + /** + * 查询${functionName}列表 + * + * @param ${className} ${functionName} + * @return ${functionName}集合 + */ + public List<${ClassName}> select${ClassName}List(${ClassName} ${className}); + + /** + * 新增${functionName} + * + * @param ${className} ${functionName} + * @return 结果 + */ + public int insert${ClassName}(${ClassName} ${className}); + + /** + * 修改${functionName} + * + * @param ${className} ${functionName} + * @return 结果 + */ + public int update${ClassName}(${ClassName} ${className}); + + /** + * 批量删除${functionName} + * + * @param ${pkColumn.javaField}s 需要删除的${functionName}主键集合 + * @return 结果 + */ + public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s); + + /** + * 删除${functionName}信息 + * + * @param ${pkColumn.javaField} ${functionName}主键 + * @return 结果 + */ + public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}); +} diff --git a/cmvr-iot-generator/src/main/resources/vm/java/serviceImpl.java.vm b/cmvr-iot-generator/src/main/resources/vm/java/serviceImpl.java.vm new file mode 100644 index 0000000..14746e1 --- /dev/null +++ b/cmvr-iot-generator/src/main/resources/vm/java/serviceImpl.java.vm @@ -0,0 +1,169 @@ +package ${packageName}.service.impl; + +import java.util.List; +#foreach ($column in $columns) +#if($column.javaField == 'createTime' || $column.javaField == 'updateTime') +import com.ruoyi.common.utils.DateUtils; +#break +#end +#end +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +#if($table.sub) +import java.util.ArrayList; +import com.ruoyi.common.utils.StringUtils; +import org.springframework.transaction.annotation.Transactional; +import ${packageName}.domain.${subClassName}; +#end +import ${packageName}.mapper.${ClassName}Mapper; +import ${packageName}.domain.${ClassName}; +import ${packageName}.service.I${ClassName}Service; + +/** + * ${functionName}Service业务层处理 + * + * @author ${author} + * @date ${datetime} + */ +@Service +public class ${ClassName}ServiceImpl implements I${ClassName}Service +{ + @Autowired + private ${ClassName}Mapper ${className}Mapper; + + /** + * 查询${functionName} + * + * @param ${pkColumn.javaField} ${functionName}主键 + * @return ${functionName} + */ + @Override + public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}) + { + return ${className}Mapper.select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField}); + } + + /** + * 查询${functionName}列表 + * + * @param ${className} ${functionName} + * @return ${functionName} + */ + @Override + public List<${ClassName}> select${ClassName}List(${ClassName} ${className}) + { + return ${className}Mapper.select${ClassName}List(${className}); + } + + /** + * 新增${functionName} + * + * @param ${className} ${functionName} + * @return 结果 + */ +#if($table.sub) + @Transactional +#end + @Override + public int insert${ClassName}(${ClassName} ${className}) + { +#foreach ($column in $columns) +#if($column.javaField == 'createTime') + ${className}.setCreateTime(DateUtils.getNowDate()); +#end +#end +#if($table.sub) + int rows = ${className}Mapper.insert${ClassName}(${className}); + insert${subClassName}(${className}); + return rows; +#else + return ${className}Mapper.insert${ClassName}(${className}); +#end + } + + /** + * 修改${functionName} + * + * @param ${className} ${functionName} + * @return 结果 + */ +#if($table.sub) + @Transactional +#end + @Override + public int update${ClassName}(${ClassName} ${className}) + { +#foreach ($column in $columns) +#if($column.javaField == 'updateTime') + ${className}.setUpdateTime(DateUtils.getNowDate()); +#end +#end +#if($table.sub) + ${className}Mapper.delete${subClassName}By${subTableFkClassName}(${className}.get${pkColumn.capJavaField}()); + insert${subClassName}(${className}); +#end + return ${className}Mapper.update${ClassName}(${className}); + } + + /** + * 批量删除${functionName} + * + * @param ${pkColumn.javaField}s 需要删除的${functionName}主键 + * @return 结果 + */ +#if($table.sub) + @Transactional +#end + @Override + public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s) + { +#if($table.sub) + ${className}Mapper.delete${subClassName}By${subTableFkClassName}s(${pkColumn.javaField}s); +#end + return ${className}Mapper.delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaField}s); + } + + /** + * 删除${functionName}信息 + * + * @param ${pkColumn.javaField} ${functionName}主键 + * @return 结果 + */ +#if($table.sub) + @Transactional +#end + @Override + public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}) + { +#if($table.sub) + ${className}Mapper.delete${subClassName}By${subTableFkClassName}(${pkColumn.javaField}); +#end + return ${className}Mapper.delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField}); + } +#if($table.sub) + + /** + * 新增${subTable.functionName}信息 + * + * @param ${className} ${functionName}对象 + */ + public void insert${subClassName}(${ClassName} ${className}) + { + List<${subClassName}> ${subclassName}List = ${className}.get${subClassName}List(); + ${pkColumn.javaType} ${pkColumn.javaField} = ${className}.get${pkColumn.capJavaField}(); + if (StringUtils.isNotNull(${subclassName}List)) + { + List<${subClassName}> list = new ArrayList<${subClassName}>(); + for (${subClassName} ${subclassName} : ${subclassName}List) + { + ${subclassName}.set${subTableFkClassName}(${pkColumn.javaField}); + list.add(${subclassName}); + } + if (list.size() > 0) + { + ${className}Mapper.batch${subClassName}(list); + } + } + } +#end +} diff --git a/cmvr-iot-generator/src/main/resources/vm/java/sub-domain.java.vm b/cmvr-iot-generator/src/main/resources/vm/java/sub-domain.java.vm new file mode 100644 index 0000000..a3f53eb --- /dev/null +++ b/cmvr-iot-generator/src/main/resources/vm/java/sub-domain.java.vm @@ -0,0 +1,76 @@ +package ${packageName}.domain; + +#foreach ($import in $subImportList) +import ${import}; +#end +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * ${subTable.functionName}对象 ${subTableName} + * + * @author ${author} + * @date ${datetime} + */ +public class ${subClassName} extends BaseEntity +{ + private static final long serialVersionUID = 1L; + +#foreach ($column in $subTable.columns) +#if(!$table.isSuperColumn($column.javaField)) + /** $column.columnComment */ +#if($column.list) +#set($parentheseIndex=$column.columnComment.indexOf("(")) +#if($parentheseIndex != -1) +#set($comment=$column.columnComment.substring(0, $parentheseIndex)) +#else +#set($comment=$column.columnComment) +#end +#if($parentheseIndex != -1) + @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") +#elseif($column.javaType == 'Date') + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd") +#else + @Excel(name = "${comment}") +#end +#end + private $column.javaType $column.javaField; + +#end +#end +#foreach ($column in $subTable.columns) +#if(!$table.isSuperColumn($column.javaField)) +#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]")) +#set($AttrName=$column.javaField) +#else +#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) +#end + public void set${AttrName}($column.javaType $column.javaField) + { + this.$column.javaField = $column.javaField; + } + + public $column.javaType get${AttrName}() + { + return $column.javaField; + } +#end +#end + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) +#foreach ($column in $subTable.columns) +#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]")) +#set($AttrName=$column.javaField) +#else +#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) +#end + .append("${column.javaField}", get${AttrName}()) +#end + .toString(); + } +} diff --git a/cmvr-iot-generator/src/main/resources/vm/js/api.js.vm b/cmvr-iot-generator/src/main/resources/vm/js/api.js.vm new file mode 100644 index 0000000..9295524 --- /dev/null +++ b/cmvr-iot-generator/src/main/resources/vm/js/api.js.vm @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询${functionName}列表 +export function list${BusinessName}(query) { + return request({ + url: '/${moduleName}/${businessName}/list', + method: 'get', + params: query + }) +} + +// 查询${functionName}详细 +export function get${BusinessName}(${pkColumn.javaField}) { + return request({ + url: '/${moduleName}/${businessName}/' + ${pkColumn.javaField}, + method: 'get' + }) +} + +// 新增${functionName} +export function add${BusinessName}(data) { + return request({ + url: '/${moduleName}/${businessName}', + method: 'post', + data: data + }) +} + +// 修改${functionName} +export function update${BusinessName}(data) { + return request({ + url: '/${moduleName}/${businessName}', + method: 'put', + data: data + }) +} + +// 删除${functionName} +export function del${BusinessName}(${pkColumn.javaField}) { + return request({ + url: '/${moduleName}/${businessName}/' + ${pkColumn.javaField}, + method: 'delete' + }) +} diff --git a/cmvr-iot-generator/src/main/resources/vm/sql/sql.vm b/cmvr-iot-generator/src/main/resources/vm/sql/sql.vm new file mode 100644 index 0000000..0575583 --- /dev/null +++ b/cmvr-iot-generator/src/main/resources/vm/sql/sql.vm @@ -0,0 +1,22 @@ +-- 菜单 SQL +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('${functionName}', '${parentMenuId}', '1', '${businessName}', '${moduleName}/${businessName}/index', 1, 0, 'C', '0', '0', '${permissionPrefix}:list', '#', 'admin', sysdate(), '', null, '${functionName}菜单'); + +-- 按钮父菜单ID +SELECT @parentId := LAST_INSERT_ID(); + +-- 按钮 SQL +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('${functionName}查询', @parentId, '1', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:query', '#', 'admin', sysdate(), '', null, ''); + +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('${functionName}新增', @parentId, '2', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:add', '#', 'admin', sysdate(), '', null, ''); + +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('${functionName}修改', @parentId, '3', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:edit', '#', 'admin', sysdate(), '', null, ''); + +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('${functionName}删除', @parentId, '4', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:remove', '#', 'admin', sysdate(), '', null, ''); + +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('${functionName}导出', @parentId, '5', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:export', '#', 'admin', sysdate(), '', null, ''); \ No newline at end of file diff --git a/cmvr-iot-generator/src/main/resources/vm/vue/index-tree.vue.vm b/cmvr-iot-generator/src/main/resources/vm/vue/index-tree.vue.vm new file mode 100644 index 0000000..4e35fc9 --- /dev/null +++ b/cmvr-iot-generator/src/main/resources/vm/vue/index-tree.vue.vm @@ -0,0 +1,505 @@ + + + diff --git a/cmvr-iot-generator/src/main/resources/vm/vue/index.vue.vm b/cmvr-iot-generator/src/main/resources/vm/vue/index.vue.vm new file mode 100644 index 0000000..04ebe16 --- /dev/null +++ b/cmvr-iot-generator/src/main/resources/vm/vue/index.vue.vm @@ -0,0 +1,602 @@ + + + diff --git a/cmvr-iot-generator/src/main/resources/vm/vue/v3/index-tree.vue.vm b/cmvr-iot-generator/src/main/resources/vm/vue/v3/index-tree.vue.vm new file mode 100644 index 0000000..765a5e3 --- /dev/null +++ b/cmvr-iot-generator/src/main/resources/vm/vue/v3/index-tree.vue.vm @@ -0,0 +1,474 @@ + + + diff --git a/cmvr-iot-generator/src/main/resources/vm/vue/v3/index.vue.vm b/cmvr-iot-generator/src/main/resources/vm/vue/v3/index.vue.vm new file mode 100644 index 0000000..936b465 --- /dev/null +++ b/cmvr-iot-generator/src/main/resources/vm/vue/v3/index.vue.vm @@ -0,0 +1,590 @@ + + + diff --git a/cmvr-iot-generator/src/main/resources/vm/xml/mapper.xml.vm b/cmvr-iot-generator/src/main/resources/vm/xml/mapper.xml.vm new file mode 100644 index 0000000..456755b --- /dev/null +++ b/cmvr-iot-generator/src/main/resources/vm/xml/mapper.xml.vm @@ -0,0 +1,140 @@ + + + + + +#foreach ($column in $columns) + +#end + +#if($table.sub) + + + + + + +#foreach ($column in $subTable.columns) + +#end + +#end + + + select#foreach($column in $columns) $column.columnName#if($foreach.count != $columns.size()),#end#end from ${tableName} + + + + + +#if($table.sub) + + +#end + + + insert into ${tableName} + +#foreach($column in $columns) +#if($column.columnName != $pkColumn.columnName || !$pkColumn.increment) + $column.columnName, +#end +#end + + +#foreach($column in $columns) +#if($column.columnName != $pkColumn.columnName || !$pkColumn.increment) + #{$column.javaField}, +#end +#end + + + + + update ${tableName} + +#foreach($column in $columns) +#if($column.columnName != $pkColumn.columnName) + $column.columnName = #{$column.javaField}, +#end +#end + + where ${pkColumn.columnName} = #{${pkColumn.javaField}} + + + + delete from ${tableName} where ${pkColumn.columnName} = #{${pkColumn.javaField}} + + + + delete from ${tableName} where ${pkColumn.columnName} in + + #{${pkColumn.javaField}} + + +#if($table.sub) + + + delete from ${subTableName} where ${subTableFkName} in + + #{${subTableFkclassName}} + + + + + delete from ${subTableName} where ${subTableFkName} = #{${subTableFkclassName}} + + + + insert into ${subTableName}(#foreach($column in $subTable.columns) $column.columnName#if($foreach.count != $subTable.columns.size()),#end#end) values + + (#foreach($column in $subTable.columns) #{item.$column.javaField}#if($foreach.count != $subTable.columns.size()),#end#end) + + +#end + \ No newline at end of file diff --git a/cmvr-iot-quartz/pom.xml b/cmvr-iot-quartz/pom.xml new file mode 100644 index 0000000..0d1df05 --- /dev/null +++ b/cmvr-iot-quartz/pom.xml @@ -0,0 +1,40 @@ + + + + cmvr-iot + com.cmvr + 3.8.9 + + 4.0.0 + + cmvr-iot-quartz + + + quartz定时任务 + + + + + + + org.quartz-scheduler + quartz + + + com.mchange + c3p0 + + + + + + + com.cmvr + cmvr-iot-common + + + + + diff --git a/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/config/ScheduleConfig.java b/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/config/ScheduleConfig.java new file mode 100644 index 0000000..2afc781 --- /dev/null +++ b/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/config/ScheduleConfig.java @@ -0,0 +1,57 @@ +//package com.cmvr.quartz.config; +// +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +//import org.springframework.scheduling.quartz.SchedulerFactoryBean; +//import javax.sql.DataSource; +//import java.util.Properties; +// +///** +// * 定时任务配置(单机部署建议删除此类和qrtz数据库表,默认走内存会最高效) +// * +// * @author cmvrIot +// */ +//@Configuration +//public class ScheduleConfig +//{ +// @Bean +// public SchedulerFactoryBean schedulerFactoryBean(DataSource dataSource) +// { +// SchedulerFactoryBean factory = new SchedulerFactoryBean(); +// factory.setDataSource(dataSource); +// +// // quartz参数 +// Properties prop = new Properties(); +// prop.put("org.quartz.scheduler.instanceName", "CmvrIotScheduler"); +// prop.put("org.quartz.scheduler.instanceId", "AUTO"); +// // 线程池配置 +// prop.put("org.quartz.threadPool.class", "org.quartz.simpl.SimpleThreadPool"); +// prop.put("org.quartz.threadPool.threadCount", "20"); +// prop.put("org.quartz.threadPool.threadPriority", "5"); +// // JobStore配置 +// prop.put("org.quartz.jobStore.class", "org.springframework.scheduling.quartz.LocalDataSourceJobStore"); +// // 集群配置 +// prop.put("org.quartz.jobStore.isClustered", "true"); +// prop.put("org.quartz.jobStore.clusterCheckinInterval", "15000"); +// prop.put("org.quartz.jobStore.maxMisfiresToHandleAtATime", "10"); +// prop.put("org.quartz.jobStore.txIsolationLevelSerializable", "true"); +// +// // sqlserver 启用 +// // prop.put("org.quartz.jobStore.selectWithLockSQL", "SELECT * FROM {0}LOCKS UPDLOCK WHERE LOCK_NAME = ?"); +// prop.put("org.quartz.jobStore.misfireThreshold", "12000"); +// prop.put("org.quartz.jobStore.tablePrefix", "QRTZ_"); +// factory.setQuartzProperties(prop); +// +// factory.setSchedulerName("CmvrIotScheduler"); +// // 延时启动 +// factory.setStartupDelay(1); +// factory.setApplicationContextSchedulerContextKey("applicationContextKey"); +// // 可选,QuartzScheduler +// // 启动时更新己存在的Job,这样就不用每次修改targetObject后删除qrtz_job_details表对应记录了 +// factory.setOverwriteExistingJobs(true); +// // 设置自动启动,默认为true +// factory.setAutoStartup(true); +// +// return factory; +// } +//} diff --git a/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/controller/SysJobController.java b/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/controller/SysJobController.java new file mode 100644 index 0000000..a129b4d --- /dev/null +++ b/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/controller/SysJobController.java @@ -0,0 +1,185 @@ +package com.cmvr.quartz.controller; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import org.quartz.SchedulerException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.cmvr.common.annotation.Log; +import com.cmvr.common.constant.Constants; +import com.cmvr.common.core.controller.BaseController; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.core.page.TableDataInfo; +import com.cmvr.common.enums.BusinessType; +import com.cmvr.common.exception.job.TaskException; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.common.utils.poi.ExcelUtil; +import com.cmvr.quartz.domain.SysJob; +import com.cmvr.quartz.service.ISysJobService; +import com.cmvr.quartz.util.CronUtils; +import com.cmvr.quartz.util.ScheduleUtils; + +/** + * 调度任务信息操作处理 + * + * @author cmvrIot + */ +@RestController +@RequestMapping("/monitor/job") +public class SysJobController extends BaseController +{ + @Autowired + private ISysJobService jobService; + + /** + * 查询定时任务列表 + */ + @PreAuthorize("@ss.hasPermi('monitor:job:list')") + @GetMapping("/list") + public TableDataInfo list(SysJob sysJob) + { + startPage(); + List list = jobService.selectJobList(sysJob); + return getDataTable(list); + } + + /** + * 导出定时任务列表 + */ + @PreAuthorize("@ss.hasPermi('monitor:job:export')") + @Log(title = "定时任务", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, SysJob sysJob) + { + List list = jobService.selectJobList(sysJob); + ExcelUtil util = new ExcelUtil(SysJob.class); + util.exportExcel(response, list, "定时任务"); + } + + /** + * 获取定时任务详细信息 + */ + @PreAuthorize("@ss.hasPermi('monitor:job:query')") + @GetMapping(value = "/{jobId}") + public AjaxResult getInfo(@PathVariable("jobId") Long jobId) + { + return success(jobService.selectJobById(jobId)); + } + + /** + * 新增定时任务 + */ + @PreAuthorize("@ss.hasPermi('monitor:job:add')") + @Log(title = "定时任务", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody SysJob job) throws SchedulerException, TaskException + { + if (!CronUtils.isValid(job.getCronExpression())) + { + return error("新增任务'" + job.getJobName() + "'失败,Cron表达式不正确"); + } + else if (StringUtils.containsIgnoreCase(job.getInvokeTarget(), Constants.LOOKUP_RMI)) + { + return error("新增任务'" + job.getJobName() + "'失败,目标字符串不允许'rmi'调用"); + } + else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), new String[] { Constants.LOOKUP_LDAP, Constants.LOOKUP_LDAPS })) + { + return error("新增任务'" + job.getJobName() + "'失败,目标字符串不允许'ldap(s)'调用"); + } + else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), new String[] { Constants.HTTP, Constants.HTTPS })) + { + return error("新增任务'" + job.getJobName() + "'失败,目标字符串不允许'http(s)'调用"); + } + else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), Constants.JOB_ERROR_STR)) + { + return error("新增任务'" + job.getJobName() + "'失败,目标字符串存在违规"); + } + else if (!ScheduleUtils.whiteList(job.getInvokeTarget())) + { + return error("新增任务'" + job.getJobName() + "'失败,目标字符串不在白名单内"); + } + job.setCreateBy(getUsername()); + return toAjax(jobService.insertJob(job)); + } + + /** + * 修改定时任务 + */ + @PreAuthorize("@ss.hasPermi('monitor:job:edit')") + @Log(title = "定时任务", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody SysJob job) throws SchedulerException, TaskException + { + if (!CronUtils.isValid(job.getCronExpression())) + { + return error("修改任务'" + job.getJobName() + "'失败,Cron表达式不正确"); + } + else if (StringUtils.containsIgnoreCase(job.getInvokeTarget(), Constants.LOOKUP_RMI)) + { + return error("修改任务'" + job.getJobName() + "'失败,目标字符串不允许'rmi'调用"); + } + else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), new String[] { Constants.LOOKUP_LDAP, Constants.LOOKUP_LDAPS })) + { + return error("修改任务'" + job.getJobName() + "'失败,目标字符串不允许'ldap(s)'调用"); + } + else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), new String[] { Constants.HTTP, Constants.HTTPS })) + { + return error("修改任务'" + job.getJobName() + "'失败,目标字符串不允许'http(s)'调用"); + } + else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), Constants.JOB_ERROR_STR)) + { + return error("修改任务'" + job.getJobName() + "'失败,目标字符串存在违规"); + } + else if (!ScheduleUtils.whiteList(job.getInvokeTarget())) + { + return error("修改任务'" + job.getJobName() + "'失败,目标字符串不在白名单内"); + } + job.setUpdateBy(getUsername()); + return toAjax(jobService.updateJob(job)); + } + + /** + * 定时任务状态修改 + */ + @PreAuthorize("@ss.hasPermi('monitor:job:changeStatus')") + @Log(title = "定时任务", businessType = BusinessType.UPDATE) + @PutMapping("/changeStatus") + public AjaxResult changeStatus(@RequestBody SysJob job) throws SchedulerException + { + SysJob newJob = jobService.selectJobById(job.getJobId()); + newJob.setStatus(job.getStatus()); + return toAjax(jobService.changeStatus(newJob)); + } + + /** + * 定时任务立即执行一次 + */ + @PreAuthorize("@ss.hasPermi('monitor:job:changeStatus')") + @Log(title = "定时任务", businessType = BusinessType.UPDATE) + @PutMapping("/run") + public AjaxResult run(@RequestBody SysJob job) throws SchedulerException + { + boolean result = jobService.run(job); + return result ? success() : error("任务不存在或已过期!"); + } + + /** + * 删除定时任务 + */ + @PreAuthorize("@ss.hasPermi('monitor:job:remove')") + @Log(title = "定时任务", businessType = BusinessType.DELETE) + @DeleteMapping("/{jobIds}") + public AjaxResult remove(@PathVariable Long[] jobIds) throws SchedulerException, TaskException + { + jobService.deleteJobByIds(jobIds); + return success(); + } +} diff --git a/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/controller/SysJobLogController.java b/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/controller/SysJobLogController.java new file mode 100644 index 0000000..9eeae66 --- /dev/null +++ b/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/controller/SysJobLogController.java @@ -0,0 +1,92 @@ +package com.cmvr.quartz.controller; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.cmvr.common.annotation.Log; +import com.cmvr.common.core.controller.BaseController; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.core.page.TableDataInfo; +import com.cmvr.common.enums.BusinessType; +import com.cmvr.common.utils.poi.ExcelUtil; +import com.cmvr.quartz.domain.SysJobLog; +import com.cmvr.quartz.service.ISysJobLogService; + +/** + * 调度日志操作处理 + * + * @author cmvrIot + */ +@RestController +@RequestMapping("/monitor/jobLog") +public class SysJobLogController extends BaseController +{ + @Autowired + private ISysJobLogService jobLogService; + + /** + * 查询定时任务调度日志列表 + */ + @PreAuthorize("@ss.hasPermi('monitor:job:list')") + @GetMapping("/list") + public TableDataInfo list(SysJobLog sysJobLog) + { + startPage(); + List list = jobLogService.selectJobLogList(sysJobLog); + return getDataTable(list); + } + + /** + * 导出定时任务调度日志列表 + */ + @PreAuthorize("@ss.hasPermi('monitor:job:export')") + @Log(title = "任务调度日志", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, SysJobLog sysJobLog) + { + List list = jobLogService.selectJobLogList(sysJobLog); + ExcelUtil util = new ExcelUtil(SysJobLog.class); + util.exportExcel(response, list, "调度日志"); + } + + /** + * 根据调度编号获取详细信息 + */ + @PreAuthorize("@ss.hasPermi('monitor:job:query')") + @GetMapping(value = "/{jobLogId}") + public AjaxResult getInfo(@PathVariable Long jobLogId) + { + return success(jobLogService.selectJobLogById(jobLogId)); + } + + + /** + * 删除定时任务调度日志 + */ + @PreAuthorize("@ss.hasPermi('monitor:job:remove')") + @Log(title = "定时任务调度日志", businessType = BusinessType.DELETE) + @DeleteMapping("/{jobLogIds}") + public AjaxResult remove(@PathVariable Long[] jobLogIds) + { + return toAjax(jobLogService.deleteJobLogByIds(jobLogIds)); + } + + /** + * 清空定时任务调度日志 + */ + @PreAuthorize("@ss.hasPermi('monitor:job:remove')") + @Log(title = "调度日志", businessType = BusinessType.CLEAN) + @DeleteMapping("/clean") + public AjaxResult clean() + { + jobLogService.cleanJobLog(); + return success(); + } +} diff --git a/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/domain/SysJob.java b/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/domain/SysJob.java new file mode 100644 index 0000000..7dcb56f --- /dev/null +++ b/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/domain/SysJob.java @@ -0,0 +1,171 @@ +package com.cmvr.quartz.domain; + +import java.util.Date; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.cmvr.common.annotation.Excel; +import com.cmvr.common.annotation.Excel.ColumnType; +import com.cmvr.common.constant.ScheduleConstants; +import com.cmvr.common.core.domain.BaseEntity; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.quartz.util.CronUtils; + +/** + * 定时任务调度表 sys_job + * + * @author cmvrIot + */ +public class SysJob extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 任务ID */ + @Excel(name = "任务序号", cellType = ColumnType.NUMERIC) + private Long jobId; + + /** 任务名称 */ + @Excel(name = "任务名称") + private String jobName; + + /** 任务组名 */ + @Excel(name = "任务组名") + private String jobGroup; + + /** 调用目标字符串 */ + @Excel(name = "调用目标字符串") + private String invokeTarget; + + /** cron执行表达式 */ + @Excel(name = "执行表达式 ") + private String cronExpression; + + /** cron计划策略 */ + @Excel(name = "计划策略 ", readConverterExp = "0=默认,1=立即触发执行,2=触发一次执行,3=不触发立即执行") + private String misfirePolicy = ScheduleConstants.MISFIRE_DEFAULT; + + /** 是否并发执行(0允许 1禁止) */ + @Excel(name = "并发执行", readConverterExp = "0=允许,1=禁止") + private String concurrent; + + /** 任务状态(0正常 1暂停) */ + @Excel(name = "任务状态", readConverterExp = "0=正常,1=暂停") + private String status; + + public Long getJobId() + { + return jobId; + } + + public void setJobId(Long jobId) + { + this.jobId = jobId; + } + + @NotBlank(message = "任务名称不能为空") + @Size(min = 0, max = 64, message = "任务名称不能超过64个字符") + public String getJobName() + { + return jobName; + } + + public void setJobName(String jobName) + { + this.jobName = jobName; + } + + public String getJobGroup() + { + return jobGroup; + } + + public void setJobGroup(String jobGroup) + { + this.jobGroup = jobGroup; + } + + @NotBlank(message = "调用目标字符串不能为空") + @Size(min = 0, max = 500, message = "调用目标字符串长度不能超过500个字符") + public String getInvokeTarget() + { + return invokeTarget; + } + + public void setInvokeTarget(String invokeTarget) + { + this.invokeTarget = invokeTarget; + } + + @NotBlank(message = "Cron执行表达式不能为空") + @Size(min = 0, max = 255, message = "Cron执行表达式不能超过255个字符") + public String getCronExpression() + { + return cronExpression; + } + + public void setCronExpression(String cronExpression) + { + this.cronExpression = cronExpression; + } + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + public Date getNextValidTime() + { + if (StringUtils.isNotEmpty(cronExpression)) + { + return CronUtils.getNextExecution(cronExpression); + } + return null; + } + + public String getMisfirePolicy() + { + return misfirePolicy; + } + + public void setMisfirePolicy(String misfirePolicy) + { + this.misfirePolicy = misfirePolicy; + } + + public String getConcurrent() + { + return concurrent; + } + + public void setConcurrent(String concurrent) + { + this.concurrent = concurrent; + } + + public String getStatus() + { + return status; + } + + public void setStatus(String status) + { + this.status = status; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("jobId", getJobId()) + .append("jobName", getJobName()) + .append("jobGroup", getJobGroup()) + .append("cronExpression", getCronExpression()) + .append("nextValidTime", getNextValidTime()) + .append("misfirePolicy", getMisfirePolicy()) + .append("concurrent", getConcurrent()) + .append("status", getStatus()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("remark", getRemark()) + .toString(); + } +} diff --git a/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/domain/SysJobLog.java b/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/domain/SysJobLog.java new file mode 100644 index 0000000..4266b53 --- /dev/null +++ b/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/domain/SysJobLog.java @@ -0,0 +1,155 @@ +package com.cmvr.quartz.domain; + +import java.util.Date; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.cmvr.common.annotation.Excel; +import com.cmvr.common.core.domain.BaseEntity; + +/** + * 定时任务调度日志表 sys_job_log + * + * @author cmvrIot + */ +public class SysJobLog extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** ID */ + @Excel(name = "日志序号") + private Long jobLogId; + + /** 任务名称 */ + @Excel(name = "任务名称") + private String jobName; + + /** 任务组名 */ + @Excel(name = "任务组名") + private String jobGroup; + + /** 调用目标字符串 */ + @Excel(name = "调用目标字符串") + private String invokeTarget; + + /** 日志信息 */ + @Excel(name = "日志信息") + private String jobMessage; + + /** 执行状态(0正常 1失败) */ + @Excel(name = "执行状态", readConverterExp = "0=正常,1=失败") + private String status; + + /** 异常信息 */ + @Excel(name = "异常信息") + private String exceptionInfo; + + /** 开始时间 */ + private Date startTime; + + /** 停止时间 */ + private Date stopTime; + + public Long getJobLogId() + { + return jobLogId; + } + + public void setJobLogId(Long jobLogId) + { + this.jobLogId = jobLogId; + } + + public String getJobName() + { + return jobName; + } + + public void setJobName(String jobName) + { + this.jobName = jobName; + } + + public String getJobGroup() + { + return jobGroup; + } + + public void setJobGroup(String jobGroup) + { + this.jobGroup = jobGroup; + } + + public String getInvokeTarget() + { + return invokeTarget; + } + + public void setInvokeTarget(String invokeTarget) + { + this.invokeTarget = invokeTarget; + } + + public String getJobMessage() + { + return jobMessage; + } + + public void setJobMessage(String jobMessage) + { + this.jobMessage = jobMessage; + } + + public String getStatus() + { + return status; + } + + public void setStatus(String status) + { + this.status = status; + } + + public String getExceptionInfo() + { + return exceptionInfo; + } + + public void setExceptionInfo(String exceptionInfo) + { + this.exceptionInfo = exceptionInfo; + } + + public Date getStartTime() + { + return startTime; + } + + public void setStartTime(Date startTime) + { + this.startTime = startTime; + } + + public Date getStopTime() + { + return stopTime; + } + + public void setStopTime(Date stopTime) + { + this.stopTime = stopTime; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("jobLogId", getJobLogId()) + .append("jobName", getJobName()) + .append("jobGroup", getJobGroup()) + .append("jobMessage", getJobMessage()) + .append("status", getStatus()) + .append("exceptionInfo", getExceptionInfo()) + .append("startTime", getStartTime()) + .append("stopTime", getStopTime()) + .toString(); + } +} diff --git a/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/mapper/SysJobLogMapper.java b/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/mapper/SysJobLogMapper.java new file mode 100644 index 0000000..abb5d10 --- /dev/null +++ b/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/mapper/SysJobLogMapper.java @@ -0,0 +1,64 @@ +package com.cmvr.quartz.mapper; + +import java.util.List; +import com.cmvr.quartz.domain.SysJobLog; + +/** + * 调度任务日志信息 数据层 + * + * @author cmvrIot + */ +public interface SysJobLogMapper +{ + /** + * 获取quartz调度器日志的计划任务 + * + * @param jobLog 调度日志信息 + * @return 调度任务日志集合 + */ + public List selectJobLogList(SysJobLog jobLog); + + /** + * 查询所有调度任务日志 + * + * @return 调度任务日志列表 + */ + public List selectJobLogAll(); + + /** + * 通过调度任务日志ID查询调度信息 + * + * @param jobLogId 调度任务日志ID + * @return 调度任务日志对象信息 + */ + public SysJobLog selectJobLogById(Long jobLogId); + + /** + * 新增任务日志 + * + * @param jobLog 调度日志信息 + * @return 结果 + */ + public int insertJobLog(SysJobLog jobLog); + + /** + * 批量删除调度日志信息 + * + * @param logIds 需要删除的数据ID + * @return 结果 + */ + public int deleteJobLogByIds(Long[] logIds); + + /** + * 删除任务日志 + * + * @param jobId 调度日志ID + * @return 结果 + */ + public int deleteJobLogById(Long jobId); + + /** + * 清空任务日志 + */ + public void cleanJobLog(); +} diff --git a/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/mapper/SysJobMapper.java b/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/mapper/SysJobMapper.java new file mode 100644 index 0000000..b8769fd --- /dev/null +++ b/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/mapper/SysJobMapper.java @@ -0,0 +1,67 @@ +package com.cmvr.quartz.mapper; + +import java.util.List; +import com.cmvr.quartz.domain.SysJob; + +/** + * 调度任务信息 数据层 + * + * @author cmvrIot + */ +public interface SysJobMapper +{ + /** + * 查询调度任务日志集合 + * + * @param job 调度信息 + * @return 操作日志集合 + */ + public List selectJobList(SysJob job); + + /** + * 查询所有调度任务 + * + * @return 调度任务列表 + */ + public List selectJobAll(); + + /** + * 通过调度ID查询调度任务信息 + * + * @param jobId 调度ID + * @return 角色对象信息 + */ + public SysJob selectJobById(Long jobId); + + /** + * 通过调度ID删除调度任务信息 + * + * @param jobId 调度ID + * @return 结果 + */ + public int deleteJobById(Long jobId); + + /** + * 批量删除调度任务信息 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + public int deleteJobByIds(Long[] ids); + + /** + * 修改调度任务信息 + * + * @param job 调度任务信息 + * @return 结果 + */ + public int updateJob(SysJob job); + + /** + * 新增调度任务信息 + * + * @param job 调度任务信息 + * @return 结果 + */ + public int insertJob(SysJob job); +} diff --git a/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/service/ISysJobLogService.java b/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/service/ISysJobLogService.java new file mode 100644 index 0000000..2a032ef --- /dev/null +++ b/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/service/ISysJobLogService.java @@ -0,0 +1,56 @@ +package com.cmvr.quartz.service; + +import java.util.List; +import com.cmvr.quartz.domain.SysJobLog; + +/** + * 定时任务调度日志信息信息 服务层 + * + * @author cmvrIot + */ +public interface ISysJobLogService +{ + /** + * 获取quartz调度器日志的计划任务 + * + * @param jobLog 调度日志信息 + * @return 调度任务日志集合 + */ + public List selectJobLogList(SysJobLog jobLog); + + /** + * 通过调度任务日志ID查询调度信息 + * + * @param jobLogId 调度任务日志ID + * @return 调度任务日志对象信息 + */ + public SysJobLog selectJobLogById(Long jobLogId); + + /** + * 新增任务日志 + * + * @param jobLog 调度日志信息 + */ + public void addJobLog(SysJobLog jobLog); + + /** + * 批量删除调度日志信息 + * + * @param logIds 需要删除的日志ID + * @return 结果 + */ + public int deleteJobLogByIds(Long[] logIds); + + /** + * 删除任务日志 + * + * @param jobId 调度日志ID + * @return 结果 + */ + public int deleteJobLogById(Long jobId); + + /** + * 清空任务日志 + */ + public void cleanJobLog(); +} diff --git a/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/service/ISysJobService.java b/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/service/ISysJobService.java new file mode 100644 index 0000000..cc9bd9f --- /dev/null +++ b/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/service/ISysJobService.java @@ -0,0 +1,102 @@ +package com.cmvr.quartz.service; + +import java.util.List; +import org.quartz.SchedulerException; +import com.cmvr.common.exception.job.TaskException; +import com.cmvr.quartz.domain.SysJob; + +/** + * 定时任务调度信息信息 服务层 + * + * @author cmvrIot + */ +public interface ISysJobService +{ + /** + * 获取quartz调度器的计划任务 + * + * @param job 调度信息 + * @return 调度任务集合 + */ + public List selectJobList(SysJob job); + + /** + * 通过调度任务ID查询调度信息 + * + * @param jobId 调度任务ID + * @return 调度任务对象信息 + */ + public SysJob selectJobById(Long jobId); + + /** + * 暂停任务 + * + * @param job 调度信息 + * @return 结果 + */ + public int pauseJob(SysJob job) throws SchedulerException; + + /** + * 恢复任务 + * + * @param job 调度信息 + * @return 结果 + */ + public int resumeJob(SysJob job) throws SchedulerException; + + /** + * 删除任务后,所对应的trigger也将被删除 + * + * @param job 调度信息 + * @return 结果 + */ + public int deleteJob(SysJob job) throws SchedulerException; + + /** + * 批量删除调度信息 + * + * @param jobIds 需要删除的任务ID + * @return 结果 + */ + public void deleteJobByIds(Long[] jobIds) throws SchedulerException; + + /** + * 任务调度状态修改 + * + * @param job 调度信息 + * @return 结果 + */ + public int changeStatus(SysJob job) throws SchedulerException; + + /** + * 立即运行任务 + * + * @param job 调度信息 + * @return 结果 + */ + public boolean run(SysJob job) throws SchedulerException; + + /** + * 新增任务 + * + * @param job 调度信息 + * @return 结果 + */ + public int insertJob(SysJob job) throws SchedulerException, TaskException; + + /** + * 更新任务 + * + * @param job 调度信息 + * @return 结果 + */ + public int updateJob(SysJob job) throws SchedulerException, TaskException; + + /** + * 校验cron表达式是否有效 + * + * @param cronExpression 表达式 + * @return 结果 + */ + public boolean checkCronExpressionIsValid(String cronExpression); +} diff --git a/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/service/impl/SysJobLogServiceImpl.java b/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/service/impl/SysJobLogServiceImpl.java new file mode 100644 index 0000000..a870e04 --- /dev/null +++ b/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/service/impl/SysJobLogServiceImpl.java @@ -0,0 +1,87 @@ +package com.cmvr.quartz.service.impl; + +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.cmvr.quartz.domain.SysJobLog; +import com.cmvr.quartz.mapper.SysJobLogMapper; +import com.cmvr.quartz.service.ISysJobLogService; + +/** + * 定时任务调度日志信息 服务层 + * + * @author cmvrIot + */ +@Service +public class SysJobLogServiceImpl implements ISysJobLogService +{ + @Autowired + private SysJobLogMapper jobLogMapper; + + /** + * 获取quartz调度器日志的计划任务 + * + * @param jobLog 调度日志信息 + * @return 调度任务日志集合 + */ + @Override + public List selectJobLogList(SysJobLog jobLog) + { + return jobLogMapper.selectJobLogList(jobLog); + } + + /** + * 通过调度任务日志ID查询调度信息 + * + * @param jobLogId 调度任务日志ID + * @return 调度任务日志对象信息 + */ + @Override + public SysJobLog selectJobLogById(Long jobLogId) + { + return jobLogMapper.selectJobLogById(jobLogId); + } + + /** + * 新增任务日志 + * + * @param jobLog 调度日志信息 + */ + @Override + public void addJobLog(SysJobLog jobLog) + { + jobLogMapper.insertJobLog(jobLog); + } + + /** + * 批量删除调度日志信息 + * + * @param logIds 需要删除的数据ID + * @return 结果 + */ + @Override + public int deleteJobLogByIds(Long[] logIds) + { + return jobLogMapper.deleteJobLogByIds(logIds); + } + + /** + * 删除任务日志 + * + * @param jobId 调度日志ID + */ + @Override + public int deleteJobLogById(Long jobId) + { + return jobLogMapper.deleteJobLogById(jobId); + } + + /** + * 清空任务日志 + */ + @Override + public void cleanJobLog() + { + jobLogMapper.cleanJobLog(); + } +} diff --git a/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/service/impl/SysJobServiceImpl.java b/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/service/impl/SysJobServiceImpl.java new file mode 100644 index 0000000..8e72666 --- /dev/null +++ b/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/service/impl/SysJobServiceImpl.java @@ -0,0 +1,261 @@ +package com.cmvr.quartz.service.impl; + +import java.util.List; +import javax.annotation.PostConstruct; +import org.quartz.JobDataMap; +import org.quartz.JobKey; +import org.quartz.Scheduler; +import org.quartz.SchedulerException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import com.cmvr.common.constant.ScheduleConstants; +import com.cmvr.common.exception.job.TaskException; +import com.cmvr.quartz.domain.SysJob; +import com.cmvr.quartz.mapper.SysJobMapper; +import com.cmvr.quartz.service.ISysJobService; +import com.cmvr.quartz.util.CronUtils; +import com.cmvr.quartz.util.ScheduleUtils; + +/** + * 定时任务调度信息 服务层 + * + * @author cmvrIot + */ +@Service +public class SysJobServiceImpl implements ISysJobService +{ + @Autowired + private Scheduler scheduler; + + @Autowired + private SysJobMapper jobMapper; + + /** + * 项目启动时,初始化定时器 主要是防止手动修改数据库导致未同步到定时任务处理(注:不能手动修改数据库ID和任务组名,否则会导致脏数据) + */ + @PostConstruct + public void init() throws SchedulerException, TaskException + { + scheduler.clear(); + List jobList = jobMapper.selectJobAll(); + for (SysJob job : jobList) + { + ScheduleUtils.createScheduleJob(scheduler, job); + } + } + + /** + * 获取quartz调度器的计划任务列表 + * + * @param job 调度信息 + * @return + */ + @Override + public List selectJobList(SysJob job) + { + return jobMapper.selectJobList(job); + } + + /** + * 通过调度任务ID查询调度信息 + * + * @param jobId 调度任务ID + * @return 调度任务对象信息 + */ + @Override + public SysJob selectJobById(Long jobId) + { + return jobMapper.selectJobById(jobId); + } + + /** + * 暂停任务 + * + * @param job 调度信息 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int pauseJob(SysJob job) throws SchedulerException + { + Long jobId = job.getJobId(); + String jobGroup = job.getJobGroup(); + job.setStatus(ScheduleConstants.Status.PAUSE.getValue()); + int rows = jobMapper.updateJob(job); + if (rows > 0) + { + scheduler.pauseJob(ScheduleUtils.getJobKey(jobId, jobGroup)); + } + return rows; + } + + /** + * 恢复任务 + * + * @param job 调度信息 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int resumeJob(SysJob job) throws SchedulerException + { + Long jobId = job.getJobId(); + String jobGroup = job.getJobGroup(); + job.setStatus(ScheduleConstants.Status.NORMAL.getValue()); + int rows = jobMapper.updateJob(job); + if (rows > 0) + { + scheduler.resumeJob(ScheduleUtils.getJobKey(jobId, jobGroup)); + } + return rows; + } + + /** + * 删除任务后,所对应的trigger也将被删除 + * + * @param job 调度信息 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int deleteJob(SysJob job) throws SchedulerException + { + Long jobId = job.getJobId(); + String jobGroup = job.getJobGroup(); + int rows = jobMapper.deleteJobById(jobId); + if (rows > 0) + { + scheduler.deleteJob(ScheduleUtils.getJobKey(jobId, jobGroup)); + } + return rows; + } + + /** + * 批量删除调度信息 + * + * @param jobIds 需要删除的任务ID + * @return 结果 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteJobByIds(Long[] jobIds) throws SchedulerException + { + for (Long jobId : jobIds) + { + SysJob job = jobMapper.selectJobById(jobId); + deleteJob(job); + } + } + + /** + * 任务调度状态修改 + * + * @param job 调度信息 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int changeStatus(SysJob job) throws SchedulerException + { + int rows = 0; + String status = job.getStatus(); + if (ScheduleConstants.Status.NORMAL.getValue().equals(status)) + { + rows = resumeJob(job); + } + else if (ScheduleConstants.Status.PAUSE.getValue().equals(status)) + { + rows = pauseJob(job); + } + return rows; + } + + /** + * 立即运行任务 + * + * @param job 调度信息 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public boolean run(SysJob job) throws SchedulerException + { + boolean result = false; + Long jobId = job.getJobId(); + String jobGroup = job.getJobGroup(); + SysJob properties = selectJobById(job.getJobId()); + // 参数 + JobDataMap dataMap = new JobDataMap(); + dataMap.put(ScheduleConstants.TASK_PROPERTIES, properties); + JobKey jobKey = ScheduleUtils.getJobKey(jobId, jobGroup); + if (scheduler.checkExists(jobKey)) + { + result = true; + scheduler.triggerJob(jobKey, dataMap); + } + return result; + } + + /** + * 新增任务 + * + * @param job 调度信息 调度信息 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int insertJob(SysJob job) throws SchedulerException, TaskException + { + job.setStatus(ScheduleConstants.Status.PAUSE.getValue()); + int rows = jobMapper.insertJob(job); + if (rows > 0) + { + ScheduleUtils.createScheduleJob(scheduler, job); + } + return rows; + } + + /** + * 更新任务的时间表达式 + * + * @param job 调度信息 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int updateJob(SysJob job) throws SchedulerException, TaskException + { + SysJob properties = selectJobById(job.getJobId()); + int rows = jobMapper.updateJob(job); + if (rows > 0) + { + updateSchedulerJob(job, properties.getJobGroup()); + } + return rows; + } + + /** + * 更新任务 + * + * @param job 任务对象 + * @param jobGroup 任务组名 + */ + public void updateSchedulerJob(SysJob job, String jobGroup) throws SchedulerException, TaskException + { + Long jobId = job.getJobId(); + // 判断是否存在 + JobKey jobKey = ScheduleUtils.getJobKey(jobId, jobGroup); + if (scheduler.checkExists(jobKey)) + { + // 防止创建时存在数据问题 先移除,然后在执行创建操作 + scheduler.deleteJob(jobKey); + } + ScheduleUtils.createScheduleJob(scheduler, job); + } + + /** + * 校验cron表达式是否有效 + * + * @param cronExpression 表达式 + * @return 结果 + */ + @Override + public boolean checkCronExpressionIsValid(String cronExpression) + { + return CronUtils.isValid(cronExpression); + } +} diff --git a/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/task/RyTask.java b/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/task/RyTask.java new file mode 100644 index 0000000..924d672 --- /dev/null +++ b/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/task/RyTask.java @@ -0,0 +1,28 @@ +package com.cmvr.quartz.task; + +import org.springframework.stereotype.Component; +import com.cmvr.common.utils.StringUtils; + +/** + * 定时任务调度测试 + * + * @author cmvrIot + */ +@Component("ryTask") +public class RyTask +{ + public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i) + { + System.out.println(StringUtils.format("执行多参方法: 字符串类型{},布尔类型{},长整型{},浮点型{},整形{}", s, b, l, d, i)); + } + + public void ryParams(String params) + { + System.out.println("执行有参方法:" + params); + } + + public void ryNoParams() + { + System.out.println("执行无参方法"); + } +} diff --git a/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/util/AbstractQuartzJob.java b/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/util/AbstractQuartzJob.java new file mode 100644 index 0000000..4064389 --- /dev/null +++ b/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/util/AbstractQuartzJob.java @@ -0,0 +1,107 @@ +package com.cmvr.quartz.util; + +import java.util.Date; +import org.quartz.Job; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import com.cmvr.common.constant.Constants; +import com.cmvr.common.constant.ScheduleConstants; +import com.cmvr.common.utils.ExceptionUtil; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.common.utils.bean.BeanUtils; +import com.cmvr.common.utils.spring.SpringUtils; +import com.cmvr.quartz.domain.SysJob; +import com.cmvr.quartz.domain.SysJobLog; +import com.cmvr.quartz.service.ISysJobLogService; + +/** + * 抽象quartz调用 + * + * @author cmvrIot + */ +public abstract class AbstractQuartzJob implements Job +{ + private static final Logger log = LoggerFactory.getLogger(AbstractQuartzJob.class); + + /** + * 线程本地变量 + */ + private static ThreadLocal threadLocal = new ThreadLocal<>(); + + @Override + public void execute(JobExecutionContext context) throws JobExecutionException + { + SysJob sysJob = new SysJob(); + BeanUtils.copyBeanProp(sysJob, context.getMergedJobDataMap().get(ScheduleConstants.TASK_PROPERTIES)); + try + { + before(context, sysJob); + if (sysJob != null) + { + doExecute(context, sysJob); + } + after(context, sysJob, null); + } + catch (Exception e) + { + log.error("任务执行异常 - :", e); + after(context, sysJob, e); + } + } + + /** + * 执行前 + * + * @param context 工作执行上下文对象 + * @param sysJob 系统计划任务 + */ + protected void before(JobExecutionContext context, SysJob sysJob) + { + threadLocal.set(new Date()); + } + + /** + * 执行后 + * + * @param context 工作执行上下文对象 + * @param sysJob 系统计划任务 + */ + protected void after(JobExecutionContext context, SysJob sysJob, Exception e) + { + Date startTime = threadLocal.get(); + threadLocal.remove(); + + final SysJobLog sysJobLog = new SysJobLog(); + sysJobLog.setJobName(sysJob.getJobName()); + sysJobLog.setJobGroup(sysJob.getJobGroup()); + sysJobLog.setInvokeTarget(sysJob.getInvokeTarget()); + sysJobLog.setStartTime(startTime); + sysJobLog.setStopTime(new Date()); + long runMs = sysJobLog.getStopTime().getTime() - sysJobLog.getStartTime().getTime(); + sysJobLog.setJobMessage(sysJobLog.getJobName() + " 总共耗时:" + runMs + "毫秒"); + if (e != null) + { + sysJobLog.setStatus(Constants.FAIL); + String errorMsg = StringUtils.substring(ExceptionUtil.getExceptionMessage(e), 0, 2000); + sysJobLog.setExceptionInfo(errorMsg); + } + else + { + sysJobLog.setStatus(Constants.SUCCESS); + } + + // 写入数据库当中 + SpringUtils.getBean(ISysJobLogService.class).addJobLog(sysJobLog); + } + + /** + * 执行方法,由子类重载 + * + * @param context 工作执行上下文对象 + * @param sysJob 系统计划任务 + * @throws Exception 执行过程中的异常 + */ + protected abstract void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception; +} diff --git a/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/util/CronUtils.java b/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/util/CronUtils.java new file mode 100644 index 0000000..8d18bea --- /dev/null +++ b/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/util/CronUtils.java @@ -0,0 +1,63 @@ +package com.cmvr.quartz.util; + +import java.text.ParseException; +import java.util.Date; +import org.quartz.CronExpression; + +/** + * cron表达式工具类 + * + * @author cmvrIot + * + */ +public class CronUtils +{ + /** + * 返回一个布尔值代表一个给定的Cron表达式的有效性 + * + * @param cronExpression Cron表达式 + * @return boolean 表达式是否有效 + */ + public static boolean isValid(String cronExpression) + { + return CronExpression.isValidExpression(cronExpression); + } + + /** + * 返回一个字符串值,表示该消息无效Cron表达式给出有效性 + * + * @param cronExpression Cron表达式 + * @return String 无效时返回表达式错误描述,如果有效返回null + */ + public static String getInvalidMessage(String cronExpression) + { + try + { + new CronExpression(cronExpression); + return null; + } + catch (ParseException pe) + { + return pe.getMessage(); + } + } + + /** + * 返回下一个执行时间根据给定的Cron表达式 + * + * @param cronExpression Cron表达式 + * @return Date 下次Cron表达式执行时间 + */ + public static Date getNextExecution(String cronExpression) + { + try + { + CronExpression cron = new CronExpression(cronExpression); + return cron.getNextValidTimeAfter(new Date(System.currentTimeMillis())); + } + catch (ParseException e) + { + throw new IllegalArgumentException(e.getMessage()); + } + } +} diff --git a/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/util/JobInvokeUtil.java b/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/util/JobInvokeUtil.java new file mode 100644 index 0000000..0161959 --- /dev/null +++ b/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/util/JobInvokeUtil.java @@ -0,0 +1,182 @@ +package com.cmvr.quartz.util; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.LinkedList; +import java.util.List; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.common.utils.spring.SpringUtils; +import com.cmvr.quartz.domain.SysJob; + +/** + * 任务执行工具 + * + * @author cmvrIot + */ +public class JobInvokeUtil +{ + /** + * 执行方法 + * + * @param sysJob 系统任务 + */ + public static void invokeMethod(SysJob sysJob) throws Exception + { + String invokeTarget = sysJob.getInvokeTarget(); + String beanName = getBeanName(invokeTarget); + String methodName = getMethodName(invokeTarget); + List methodParams = getMethodParams(invokeTarget); + + if (!isValidClassName(beanName)) + { + Object bean = SpringUtils.getBean(beanName); + invokeMethod(bean, methodName, methodParams); + } + else + { + Object bean = Class.forName(beanName).getDeclaredConstructor().newInstance(); + invokeMethod(bean, methodName, methodParams); + } + } + + /** + * 调用任务方法 + * + * @param bean 目标对象 + * @param methodName 方法名称 + * @param methodParams 方法参数 + */ + private static void invokeMethod(Object bean, String methodName, List methodParams) + throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, + InvocationTargetException + { + if (StringUtils.isNotNull(methodParams) && methodParams.size() > 0) + { + Method method = bean.getClass().getMethod(methodName, getMethodParamsType(methodParams)); + method.invoke(bean, getMethodParamsValue(methodParams)); + } + else + { + Method method = bean.getClass().getMethod(methodName); + method.invoke(bean); + } + } + + /** + * 校验是否为为class包名 + * + * @param invokeTarget 名称 + * @return true是 false否 + */ + public static boolean isValidClassName(String invokeTarget) + { + return StringUtils.countMatches(invokeTarget, ".") > 1; + } + + /** + * 获取bean名称 + * + * @param invokeTarget 目标字符串 + * @return bean名称 + */ + public static String getBeanName(String invokeTarget) + { + String beanName = StringUtils.substringBefore(invokeTarget, "("); + return StringUtils.substringBeforeLast(beanName, "."); + } + + /** + * 获取bean方法 + * + * @param invokeTarget 目标字符串 + * @return method方法 + */ + public static String getMethodName(String invokeTarget) + { + String methodName = StringUtils.substringBefore(invokeTarget, "("); + return StringUtils.substringAfterLast(methodName, "."); + } + + /** + * 获取method方法参数相关列表 + * + * @param invokeTarget 目标字符串 + * @return method方法相关参数列表 + */ + public static List getMethodParams(String invokeTarget) + { + String methodStr = StringUtils.substringBetween(invokeTarget, "(", ")"); + if (StringUtils.isEmpty(methodStr)) + { + return null; + } + String[] methodParams = methodStr.split(",(?=([^\"']*[\"'][^\"']*[\"'])*[^\"']*$)"); + List classs = new LinkedList<>(); + for (int i = 0; i < methodParams.length; i++) + { + String str = StringUtils.trimToEmpty(methodParams[i]); + // String字符串类型,以'或"开头 + if (StringUtils.startsWithAny(str, "'", "\"")) + { + classs.add(new Object[] { StringUtils.substring(str, 1, str.length() - 1), String.class }); + } + // boolean布尔类型,等于true或者false + else if ("true".equalsIgnoreCase(str) || "false".equalsIgnoreCase(str)) + { + classs.add(new Object[] { Boolean.valueOf(str), Boolean.class }); + } + // long长整形,以L结尾 + else if (StringUtils.endsWith(str, "L")) + { + classs.add(new Object[] { Long.valueOf(StringUtils.substring(str, 0, str.length() - 1)), Long.class }); + } + // double浮点类型,以D结尾 + else if (StringUtils.endsWith(str, "D")) + { + classs.add(new Object[] { Double.valueOf(StringUtils.substring(str, 0, str.length() - 1)), Double.class }); + } + // 其他类型归类为整形 + else + { + classs.add(new Object[] { Integer.valueOf(str), Integer.class }); + } + } + return classs; + } + + /** + * 获取参数类型 + * + * @param methodParams 参数相关列表 + * @return 参数类型列表 + */ + public static Class[] getMethodParamsType(List methodParams) + { + Class[] classs = new Class[methodParams.size()]; + int index = 0; + for (Object[] os : methodParams) + { + classs[index] = (Class) os[1]; + index++; + } + return classs; + } + + /** + * 获取参数值 + * + * @param methodParams 参数相关列表 + * @return 参数值列表 + */ + public static Object[] getMethodParamsValue(List methodParams) + { + Object[] classs = new Object[methodParams.size()]; + int index = 0; + for (Object[] os : methodParams) + { + classs[index] = (Object) os[0]; + index++; + } + return classs; + } +} diff --git a/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/util/QuartzDisallowConcurrentExecution.java b/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/util/QuartzDisallowConcurrentExecution.java new file mode 100644 index 0000000..d3066bc --- /dev/null +++ b/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/util/QuartzDisallowConcurrentExecution.java @@ -0,0 +1,21 @@ +package com.cmvr.quartz.util; + +import org.quartz.DisallowConcurrentExecution; +import org.quartz.JobExecutionContext; +import com.cmvr.quartz.domain.SysJob; + +/** + * 定时任务处理(禁止并发执行) + * + * @author cmvrIot + * + */ +@DisallowConcurrentExecution +public class QuartzDisallowConcurrentExecution extends AbstractQuartzJob +{ + @Override + protected void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception + { + JobInvokeUtil.invokeMethod(sysJob); + } +} diff --git a/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/util/QuartzJobExecution.java b/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/util/QuartzJobExecution.java new file mode 100644 index 0000000..dca283b --- /dev/null +++ b/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/util/QuartzJobExecution.java @@ -0,0 +1,19 @@ +package com.cmvr.quartz.util; + +import org.quartz.JobExecutionContext; +import com.cmvr.quartz.domain.SysJob; + +/** + * 定时任务处理(允许并发执行) + * + * @author cmvrIot + * + */ +public class QuartzJobExecution extends AbstractQuartzJob +{ + @Override + protected void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception + { + JobInvokeUtil.invokeMethod(sysJob); + } +} diff --git a/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/util/ScheduleUtils.java b/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/util/ScheduleUtils.java new file mode 100644 index 0000000..23acff0 --- /dev/null +++ b/cmvr-iot-quartz/src/main/java/com/cmvr/quartz/util/ScheduleUtils.java @@ -0,0 +1,141 @@ +package com.cmvr.quartz.util; + +import org.quartz.CronScheduleBuilder; +import org.quartz.CronTrigger; +import org.quartz.Job; +import org.quartz.JobBuilder; +import org.quartz.JobDetail; +import org.quartz.JobKey; +import org.quartz.Scheduler; +import org.quartz.SchedulerException; +import org.quartz.TriggerBuilder; +import org.quartz.TriggerKey; +import com.cmvr.common.constant.Constants; +import com.cmvr.common.constant.ScheduleConstants; +import com.cmvr.common.exception.job.TaskException; +import com.cmvr.common.exception.job.TaskException.Code; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.common.utils.spring.SpringUtils; +import com.cmvr.quartz.domain.SysJob; + +/** + * 定时任务工具类 + * + * @author cmvrIot + * + */ +public class ScheduleUtils +{ + /** + * 得到quartz任务类 + * + * @param sysJob 执行计划 + * @return 具体执行任务类 + */ + private static Class getQuartzJobClass(SysJob sysJob) + { + boolean isConcurrent = "0".equals(sysJob.getConcurrent()); + return isConcurrent ? QuartzJobExecution.class : QuartzDisallowConcurrentExecution.class; + } + + /** + * 构建任务触发对象 + */ + public static TriggerKey getTriggerKey(Long jobId, String jobGroup) + { + return TriggerKey.triggerKey(ScheduleConstants.TASK_CLASS_NAME + jobId, jobGroup); + } + + /** + * 构建任务键对象 + */ + public static JobKey getJobKey(Long jobId, String jobGroup) + { + return JobKey.jobKey(ScheduleConstants.TASK_CLASS_NAME + jobId, jobGroup); + } + + /** + * 创建定时任务 + */ + public static void createScheduleJob(Scheduler scheduler, SysJob job) throws SchedulerException, TaskException + { + Class jobClass = getQuartzJobClass(job); + // 构建job信息 + Long jobId = job.getJobId(); + String jobGroup = job.getJobGroup(); + JobDetail jobDetail = JobBuilder.newJob(jobClass).withIdentity(getJobKey(jobId, jobGroup)).build(); + + // 表达式调度构建器 + CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(job.getCronExpression()); + cronScheduleBuilder = handleCronScheduleMisfirePolicy(job, cronScheduleBuilder); + + // 按新的cronExpression表达式构建一个新的trigger + CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity(getTriggerKey(jobId, jobGroup)) + .withSchedule(cronScheduleBuilder).build(); + + // 放入参数,运行时的方法可以获取 + jobDetail.getJobDataMap().put(ScheduleConstants.TASK_PROPERTIES, job); + + // 判断是否存在 + if (scheduler.checkExists(getJobKey(jobId, jobGroup))) + { + // 防止创建时存在数据问题 先移除,然后在执行创建操作 + scheduler.deleteJob(getJobKey(jobId, jobGroup)); + } + + // 判断任务是否过期 + if (StringUtils.isNotNull(CronUtils.getNextExecution(job.getCronExpression()))) + { + // 执行调度任务 + scheduler.scheduleJob(jobDetail, trigger); + } + + // 暂停任务 + if (job.getStatus().equals(ScheduleConstants.Status.PAUSE.getValue())) + { + scheduler.pauseJob(ScheduleUtils.getJobKey(jobId, jobGroup)); + } + } + + /** + * 设置定时任务策略 + */ + public static CronScheduleBuilder handleCronScheduleMisfirePolicy(SysJob job, CronScheduleBuilder cb) + throws TaskException + { + switch (job.getMisfirePolicy()) + { + case ScheduleConstants.MISFIRE_DEFAULT: + return cb; + case ScheduleConstants.MISFIRE_IGNORE_MISFIRES: + return cb.withMisfireHandlingInstructionIgnoreMisfires(); + case ScheduleConstants.MISFIRE_FIRE_AND_PROCEED: + return cb.withMisfireHandlingInstructionFireAndProceed(); + case ScheduleConstants.MISFIRE_DO_NOTHING: + return cb.withMisfireHandlingInstructionDoNothing(); + default: + throw new TaskException("The task misfire policy '" + job.getMisfirePolicy() + + "' cannot be used in cron schedule tasks", Code.CONFIG_ERROR); + } + } + + /** + * 检查包名是否为白名单配置 + * + * @param invokeTarget 目标字符串 + * @return 结果 + */ + public static boolean whiteList(String invokeTarget) + { + String packageName = StringUtils.substringBefore(invokeTarget, "("); + int count = StringUtils.countMatches(packageName, "."); + if (count > 1) + { + return StringUtils.containsAnyIgnoreCase(invokeTarget, Constants.JOB_WHITELIST_STR); + } + Object obj = SpringUtils.getBean(StringUtils.split(invokeTarget, ".")[0]); + String beanPackageName = obj.getClass().getPackage().getName(); + return StringUtils.containsAnyIgnoreCase(beanPackageName, Constants.JOB_WHITELIST_STR) + && !StringUtils.containsAnyIgnoreCase(beanPackageName, Constants.JOB_ERROR_STR); + } +} diff --git a/cmvr-iot-quartz/src/main/resources/mapper/quartz/SysJobLogMapper.xml b/cmvr-iot-quartz/src/main/resources/mapper/quartz/SysJobLogMapper.xml new file mode 100644 index 0000000..2d5e125 --- /dev/null +++ b/cmvr-iot-quartz/src/main/resources/mapper/quartz/SysJobLogMapper.xml @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + select job_log_id, job_name, job_group, invoke_target, job_message, status, exception_info, create_time + from sys_job_log + + + + + + + + + + delete from sys_job_log where job_log_id = #{jobLogId} + + + + delete from sys_job_log where job_log_id in + + #{jobLogId} + + + + + truncate table sys_job_log + + + + insert into sys_job_log( + job_log_id, + job_name, + job_group, + invoke_target, + job_message, + status, + exception_info, + create_time + )values( + #{jobLogId}, + #{jobName}, + #{jobGroup}, + #{invokeTarget}, + #{jobMessage}, + #{status}, + #{exceptionInfo}, + sysdate() + ) + + + diff --git a/cmvr-iot-quartz/src/main/resources/mapper/quartz/SysJobMapper.xml b/cmvr-iot-quartz/src/main/resources/mapper/quartz/SysJobMapper.xml new file mode 100644 index 0000000..8f9c666 --- /dev/null +++ b/cmvr-iot-quartz/src/main/resources/mapper/quartz/SysJobMapper.xml @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + select job_id, job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, create_time, remark + from sys_job + + + + + + + + + + delete from sys_job where job_id = #{jobId} + + + + delete from sys_job where job_id in + + #{jobId} + + + + + update sys_job + + job_name = #{jobName}, + job_group = #{jobGroup}, + invoke_target = #{invokeTarget}, + cron_expression = #{cronExpression}, + misfire_policy = #{misfirePolicy}, + concurrent = #{concurrent}, + status = #{status}, + remark = #{remark}, + update_by = #{updateBy}, + update_time = sysdate() + + where job_id = #{jobId} + + + + insert into sys_job( + job_id, + job_name, + job_group, + invoke_target, + cron_expression, + misfire_policy, + concurrent, + status, + remark, + create_by, + create_time + )values( + #{jobId}, + #{jobName}, + #{jobGroup}, + #{invokeTarget}, + #{cronExpression}, + #{misfirePolicy}, + #{concurrent}, + #{status}, + #{remark}, + #{createBy}, + sysdate() + ) + + + diff --git a/cmvr-iot-system/pom.xml b/cmvr-iot-system/pom.xml new file mode 100644 index 0000000..109c46a --- /dev/null +++ b/cmvr-iot-system/pom.xml @@ -0,0 +1,28 @@ + + + + cmvr-iot + com.cmvr + 3.8.9 + + 4.0.0 + + cmvr-iot-system + + + system系统模块 + + + + + + + com.cmvr + cmvr-iot-common + + + + + diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/domain/SysCache.java b/cmvr-iot-system/src/main/java/com/cmvr/system/domain/SysCache.java new file mode 100644 index 0000000..964240c --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/domain/SysCache.java @@ -0,0 +1,81 @@ +package com.cmvr.system.domain; + +import com.cmvr.common.utils.StringUtils; + +/** + * 缓存信息 + * + * @author cmvr-iot + */ +public class SysCache +{ + /** 缓存名称 */ + private String cacheName = ""; + + /** 缓存键名 */ + private String cacheKey = ""; + + /** 缓存内容 */ + private String cacheValue = ""; + + /** 备注 */ + private String remark = ""; + + public SysCache() + { + + } + + public SysCache(String cacheName, String remark) + { + this.cacheName = cacheName; + this.remark = remark; + } + + public SysCache(String cacheName, String cacheKey, String cacheValue) + { + this.cacheName = StringUtils.replace(cacheName, ":", ""); + this.cacheKey = StringUtils.replace(cacheKey, cacheName, ""); + this.cacheValue = cacheValue; + } + + public String getCacheName() + { + return cacheName; + } + + public void setCacheName(String cacheName) + { + this.cacheName = cacheName; + } + + public String getCacheKey() + { + return cacheKey; + } + + public void setCacheKey(String cacheKey) + { + this.cacheKey = cacheKey; + } + + public String getCacheValue() + { + return cacheValue; + } + + public void setCacheValue(String cacheValue) + { + this.cacheValue = cacheValue; + } + + public String getRemark() + { + return remark; + } + + public void setRemark(String remark) + { + this.remark = remark; + } +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/domain/SysConfig.java b/cmvr-iot-system/src/main/java/com/cmvr/system/domain/SysConfig.java new file mode 100644 index 0000000..fb39885 --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/domain/SysConfig.java @@ -0,0 +1,111 @@ +package com.cmvr.system.domain; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.cmvr.common.annotation.Excel; +import com.cmvr.common.annotation.Excel.ColumnType; +import com.cmvr.common.core.domain.BaseEntity; + +/** + * 参数配置表 sys_config + * + * @author cmvr-iot + */ +public class SysConfig extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 参数主键 */ + @Excel(name = "参数主键", cellType = ColumnType.NUMERIC) + private Long configId; + + /** 参数名称 */ + @Excel(name = "参数名称") + private String configName; + + /** 参数键名 */ + @Excel(name = "参数键名") + private String configKey; + + /** 参数键值 */ + @Excel(name = "参数键值") + private String configValue; + + /** 系统内置(Y是 N否) */ + @Excel(name = "系统内置", readConverterExp = "Y=是,N=否") + private String configType; + + public Long getConfigId() + { + return configId; + } + + public void setConfigId(Long configId) + { + this.configId = configId; + } + + @NotBlank(message = "参数名称不能为空") + @Size(min = 0, max = 100, message = "参数名称不能超过100个字符") + public String getConfigName() + { + return configName; + } + + public void setConfigName(String configName) + { + this.configName = configName; + } + + @NotBlank(message = "参数键名长度不能为空") + @Size(min = 0, max = 100, message = "参数键名长度不能超过100个字符") + public String getConfigKey() + { + return configKey; + } + + public void setConfigKey(String configKey) + { + this.configKey = configKey; + } + + @NotBlank(message = "参数键值不能为空") + @Size(min = 0, max = 500, message = "参数键值长度不能超过500个字符") + public String getConfigValue() + { + return configValue; + } + + public void setConfigValue(String configValue) + { + this.configValue = configValue; + } + + public String getConfigType() + { + return configType; + } + + public void setConfigType(String configType) + { + this.configType = configType; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("configId", getConfigId()) + .append("configName", getConfigName()) + .append("configKey", getConfigKey()) + .append("configValue", getConfigValue()) + .append("configType", getConfigType()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("remark", getRemark()) + .toString(); + } +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/domain/SysLogininfor.java b/cmvr-iot-system/src/main/java/com/cmvr/system/domain/SysLogininfor.java new file mode 100644 index 0000000..f48f186 --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/domain/SysLogininfor.java @@ -0,0 +1,144 @@ +package com.cmvr.system.domain; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.cmvr.common.annotation.Excel; +import com.cmvr.common.annotation.Excel.ColumnType; +import com.cmvr.common.core.domain.BaseEntity; + +/** + * 系统访问记录表 sys_logininfor + * + * @author cmvr-iot + */ +public class SysLogininfor extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** ID */ + @Excel(name = "序号", cellType = ColumnType.NUMERIC) + private Long infoId; + + /** 用户账号 */ + @Excel(name = "用户账号") + private String userName; + + /** 登录状态 0成功 1失败 */ + @Excel(name = "登录状态", readConverterExp = "0=成功,1=失败") + private String status; + + /** 登录IP地址 */ + @Excel(name = "登录地址") + private String ipaddr; + + /** 登录地点 */ + @Excel(name = "登录地点") + private String loginLocation; + + /** 浏览器类型 */ + @Excel(name = "浏览器") + private String browser; + + /** 操作系统 */ + @Excel(name = "操作系统") + private String os; + + /** 提示消息 */ + @Excel(name = "提示消息") + private String msg; + + /** 访问时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "访问时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date loginTime; + + public Long getInfoId() + { + return infoId; + } + + public void setInfoId(Long infoId) + { + this.infoId = infoId; + } + + public String getUserName() + { + return userName; + } + + public void setUserName(String userName) + { + this.userName = userName; + } + + public String getStatus() + { + return status; + } + + public void setStatus(String status) + { + this.status = status; + } + + public String getIpaddr() + { + return ipaddr; + } + + public void setIpaddr(String ipaddr) + { + this.ipaddr = ipaddr; + } + + public String getLoginLocation() + { + return loginLocation; + } + + public void setLoginLocation(String loginLocation) + { + this.loginLocation = loginLocation; + } + + public String getBrowser() + { + return browser; + } + + public void setBrowser(String browser) + { + this.browser = browser; + } + + public String getOs() + { + return os; + } + + public void setOs(String os) + { + this.os = os; + } + + public String getMsg() + { + return msg; + } + + public void setMsg(String msg) + { + this.msg = msg; + } + + public Date getLoginTime() + { + return loginTime; + } + + public void setLoginTime(Date loginTime) + { + this.loginTime = loginTime; + } +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/domain/SysNotice.java b/cmvr-iot-system/src/main/java/com/cmvr/system/domain/SysNotice.java new file mode 100644 index 0000000..fca8172 --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/domain/SysNotice.java @@ -0,0 +1,102 @@ +package com.cmvr.system.domain; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.cmvr.common.core.domain.BaseEntity; +import com.cmvr.common.xss.Xss; + +/** + * 通知公告表 sys_notice + * + * @author cmvr-iot + */ +public class SysNotice extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 公告ID */ + private Long noticeId; + + /** 公告标题 */ + private String noticeTitle; + + /** 公告类型(1通知 2公告) */ + private String noticeType; + + /** 公告内容 */ + private String noticeContent; + + /** 公告状态(0正常 1关闭) */ + private String status; + + public Long getNoticeId() + { + return noticeId; + } + + public void setNoticeId(Long noticeId) + { + this.noticeId = noticeId; + } + + public void setNoticeTitle(String noticeTitle) + { + this.noticeTitle = noticeTitle; + } + + @Xss(message = "公告标题不能包含脚本字符") + @NotBlank(message = "公告标题不能为空") + @Size(min = 0, max = 50, message = "公告标题不能超过50个字符") + public String getNoticeTitle() + { + return noticeTitle; + } + + public void setNoticeType(String noticeType) + { + this.noticeType = noticeType; + } + + public String getNoticeType() + { + return noticeType; + } + + public void setNoticeContent(String noticeContent) + { + this.noticeContent = noticeContent; + } + + public String getNoticeContent() + { + return noticeContent; + } + + public void setStatus(String status) + { + this.status = status; + } + + public String getStatus() + { + return status; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("noticeId", getNoticeId()) + .append("noticeTitle", getNoticeTitle()) + .append("noticeType", getNoticeType()) + .append("noticeContent", getNoticeContent()) + .append("status", getStatus()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("remark", getRemark()) + .toString(); + } +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/domain/SysOperLog.java b/cmvr-iot-system/src/main/java/com/cmvr/system/domain/SysOperLog.java new file mode 100644 index 0000000..84b2f78 --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/domain/SysOperLog.java @@ -0,0 +1,269 @@ +package com.cmvr.system.domain; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.cmvr.common.annotation.Excel; +import com.cmvr.common.annotation.Excel.ColumnType; +import com.cmvr.common.core.domain.BaseEntity; + +/** + * 操作日志记录表 oper_log + * + * @author cmvr-iot + */ +public class SysOperLog extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 日志主键 */ + @Excel(name = "操作序号", cellType = ColumnType.NUMERIC) + private Long operId; + + /** 操作模块 */ + @Excel(name = "操作模块") + private String title; + + /** 业务类型(0其它 1新增 2修改 3删除) */ + @Excel(name = "业务类型", readConverterExp = "0=其它,1=新增,2=修改,3=删除,4=授权,5=导出,6=导入,7=强退,8=生成代码,9=清空数据") + private Integer businessType; + + /** 业务类型数组 */ + private Integer[] businessTypes; + + /** 请求方法 */ + @Excel(name = "请求方法") + private String method; + + /** 请求方式 */ + @Excel(name = "请求方式") + private String requestMethod; + + /** 操作类别(0其它 1后台用户 2手机端用户) */ + @Excel(name = "操作类别", readConverterExp = "0=其它,1=后台用户,2=手机端用户") + private Integer operatorType; + + /** 操作人员 */ + @Excel(name = "操作人员") + private String operName; + + /** 部门名称 */ + @Excel(name = "部门名称") + private String deptName; + + /** 请求url */ + @Excel(name = "请求地址") + private String operUrl; + + /** 操作地址 */ + @Excel(name = "操作地址") + private String operIp; + + /** 操作地点 */ + @Excel(name = "操作地点") + private String operLocation; + + /** 请求参数 */ + @Excel(name = "请求参数") + private String operParam; + + /** 返回参数 */ + @Excel(name = "返回参数") + private String jsonResult; + + /** 操作状态(0正常 1异常) */ + @Excel(name = "状态", readConverterExp = "0=正常,1=异常") + private Integer status; + + /** 错误消息 */ + @Excel(name = "错误消息") + private String errorMsg; + + /** 操作时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "操作时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date operTime; + + /** 消耗时间 */ + @Excel(name = "消耗时间", suffix = "毫秒") + private Long costTime; + + public Long getOperId() + { + return operId; + } + + public void setOperId(Long operId) + { + this.operId = operId; + } + + public String getTitle() + { + return title; + } + + public void setTitle(String title) + { + this.title = title; + } + + public Integer getBusinessType() + { + return businessType; + } + + public void setBusinessType(Integer businessType) + { + this.businessType = businessType; + } + + public Integer[] getBusinessTypes() + { + return businessTypes; + } + + public void setBusinessTypes(Integer[] businessTypes) + { + this.businessTypes = businessTypes; + } + + public String getMethod() + { + return method; + } + + public void setMethod(String method) + { + this.method = method; + } + + public String getRequestMethod() + { + return requestMethod; + } + + public void setRequestMethod(String requestMethod) + { + this.requestMethod = requestMethod; + } + + public Integer getOperatorType() + { + return operatorType; + } + + public void setOperatorType(Integer operatorType) + { + this.operatorType = operatorType; + } + + public String getOperName() + { + return operName; + } + + public void setOperName(String operName) + { + this.operName = operName; + } + + public String getDeptName() + { + return deptName; + } + + public void setDeptName(String deptName) + { + this.deptName = deptName; + } + + public String getOperUrl() + { + return operUrl; + } + + public void setOperUrl(String operUrl) + { + this.operUrl = operUrl; + } + + public String getOperIp() + { + return operIp; + } + + public void setOperIp(String operIp) + { + this.operIp = operIp; + } + + public String getOperLocation() + { + return operLocation; + } + + public void setOperLocation(String operLocation) + { + this.operLocation = operLocation; + } + + public String getOperParam() + { + return operParam; + } + + public void setOperParam(String operParam) + { + this.operParam = operParam; + } + + public String getJsonResult() + { + return jsonResult; + } + + public void setJsonResult(String jsonResult) + { + this.jsonResult = jsonResult; + } + + public Integer getStatus() + { + return status; + } + + public void setStatus(Integer status) + { + this.status = status; + } + + public String getErrorMsg() + { + return errorMsg; + } + + public void setErrorMsg(String errorMsg) + { + this.errorMsg = errorMsg; + } + + public Date getOperTime() + { + return operTime; + } + + public void setOperTime(Date operTime) + { + this.operTime = operTime; + } + + public Long getCostTime() + { + return costTime; + } + + public void setCostTime(Long costTime) + { + this.costTime = costTime; + } +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/domain/SysPost.java b/cmvr-iot-system/src/main/java/com/cmvr/system/domain/SysPost.java new file mode 100644 index 0000000..6560428 --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/domain/SysPost.java @@ -0,0 +1,124 @@ +package com.cmvr.system.domain; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.cmvr.common.annotation.Excel; +import com.cmvr.common.annotation.Excel.ColumnType; +import com.cmvr.common.core.domain.BaseEntity; + +/** + * 岗位表 sys_post + * + * @author cmvr-iot + */ +public class SysPost extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 岗位序号 */ + @Excel(name = "岗位序号", cellType = ColumnType.NUMERIC) + private Long postId; + + /** 岗位编码 */ + @Excel(name = "岗位编码") + private String postCode; + + /** 岗位名称 */ + @Excel(name = "岗位名称") + private String postName; + + /** 岗位排序 */ + @Excel(name = "岗位排序") + private Integer postSort; + + /** 状态(0正常 1停用) */ + @Excel(name = "状态", readConverterExp = "0=正常,1=停用") + private String status; + + /** 用户是否存在此岗位标识 默认不存在 */ + private boolean flag = false; + + public Long getPostId() + { + return postId; + } + + public void setPostId(Long postId) + { + this.postId = postId; + } + + @NotBlank(message = "岗位编码不能为空") + @Size(min = 0, max = 64, message = "岗位编码长度不能超过64个字符") + public String getPostCode() + { + return postCode; + } + + public void setPostCode(String postCode) + { + this.postCode = postCode; + } + + @NotBlank(message = "岗位名称不能为空") + @Size(min = 0, max = 50, message = "岗位名称长度不能超过50个字符") + public String getPostName() + { + return postName; + } + + public void setPostName(String postName) + { + this.postName = postName; + } + + @NotNull(message = "显示顺序不能为空") + public Integer getPostSort() + { + return postSort; + } + + public void setPostSort(Integer postSort) + { + this.postSort = postSort; + } + + public String getStatus() + { + return status; + } + + public void setStatus(String status) + { + this.status = status; + } + + public boolean isFlag() + { + return flag; + } + + public void setFlag(boolean flag) + { + this.flag = flag; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("postId", getPostId()) + .append("postCode", getPostCode()) + .append("postName", getPostName()) + .append("postSort", getPostSort()) + .append("status", getStatus()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("remark", getRemark()) + .toString(); + } +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/domain/SysRoleDept.java b/cmvr-iot-system/src/main/java/com/cmvr/system/domain/SysRoleDept.java new file mode 100644 index 0000000..1de4989 --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/domain/SysRoleDept.java @@ -0,0 +1,46 @@ +package com.cmvr.system.domain; + +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +/** + * 角色和部门关联 sys_role_dept + * + * @author cmvr-iot + */ +public class SysRoleDept +{ + /** 角色ID */ + private Long roleId; + + /** 部门ID */ + private Long deptId; + + public Long getRoleId() + { + return roleId; + } + + public void setRoleId(Long roleId) + { + this.roleId = roleId; + } + + public Long getDeptId() + { + return deptId; + } + + public void setDeptId(Long deptId) + { + this.deptId = deptId; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("roleId", getRoleId()) + .append("deptId", getDeptId()) + .toString(); + } +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/domain/SysRoleMenu.java b/cmvr-iot-system/src/main/java/com/cmvr/system/domain/SysRoleMenu.java new file mode 100644 index 0000000..e7f6f73 --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/domain/SysRoleMenu.java @@ -0,0 +1,46 @@ +package com.cmvr.system.domain; + +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +/** + * 角色和菜单关联 sys_role_menu + * + * @author cmvr-iot + */ +public class SysRoleMenu +{ + /** 角色ID */ + private Long roleId; + + /** 菜单ID */ + private Long menuId; + + public Long getRoleId() + { + return roleId; + } + + public void setRoleId(Long roleId) + { + this.roleId = roleId; + } + + public Long getMenuId() + { + return menuId; + } + + public void setMenuId(Long menuId) + { + this.menuId = menuId; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("roleId", getRoleId()) + .append("menuId", getMenuId()) + .toString(); + } +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/domain/SysUserOnline.java b/cmvr-iot-system/src/main/java/com/cmvr/system/domain/SysUserOnline.java new file mode 100644 index 0000000..c19a79b --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/domain/SysUserOnline.java @@ -0,0 +1,113 @@ +package com.cmvr.system.domain; + +/** + * 当前在线会话 + * + * @author cmvr-iot + */ +public class SysUserOnline +{ + /** 会话编号 */ + private String tokenId; + + /** 部门名称 */ + private String deptName; + + /** 用户名称 */ + private String userName; + + /** 登录IP地址 */ + private String ipaddr; + + /** 登录地址 */ + private String loginLocation; + + /** 浏览器类型 */ + private String browser; + + /** 操作系统 */ + private String os; + + /** 登录时间 */ + private Long loginTime; + + public String getTokenId() + { + return tokenId; + } + + public void setTokenId(String tokenId) + { + this.tokenId = tokenId; + } + + public String getDeptName() + { + return deptName; + } + + public void setDeptName(String deptName) + { + this.deptName = deptName; + } + + public String getUserName() + { + return userName; + } + + public void setUserName(String userName) + { + this.userName = userName; + } + + public String getIpaddr() + { + return ipaddr; + } + + public void setIpaddr(String ipaddr) + { + this.ipaddr = ipaddr; + } + + public String getLoginLocation() + { + return loginLocation; + } + + public void setLoginLocation(String loginLocation) + { + this.loginLocation = loginLocation; + } + + public String getBrowser() + { + return browser; + } + + public void setBrowser(String browser) + { + this.browser = browser; + } + + public String getOs() + { + return os; + } + + public void setOs(String os) + { + this.os = os; + } + + public Long getLoginTime() + { + return loginTime; + } + + public void setLoginTime(Long loginTime) + { + this.loginTime = loginTime; + } +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/domain/SysUserPost.java b/cmvr-iot-system/src/main/java/com/cmvr/system/domain/SysUserPost.java new file mode 100644 index 0000000..4954ce9 --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/domain/SysUserPost.java @@ -0,0 +1,46 @@ +package com.cmvr.system.domain; + +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +/** + * 用户和岗位关联 sys_user_post + * + * @author cmvr-iot + */ +public class SysUserPost +{ + /** 用户ID */ + private Long userId; + + /** 岗位ID */ + private Long postId; + + public Long getUserId() + { + return userId; + } + + public void setUserId(Long userId) + { + this.userId = userId; + } + + public Long getPostId() + { + return postId; + } + + public void setPostId(Long postId) + { + this.postId = postId; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("userId", getUserId()) + .append("postId", getPostId()) + .toString(); + } +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/domain/SysUserRole.java b/cmvr-iot-system/src/main/java/com/cmvr/system/domain/SysUserRole.java new file mode 100644 index 0000000..b78f293 --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/domain/SysUserRole.java @@ -0,0 +1,46 @@ +package com.cmvr.system.domain; + +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +/** + * 用户和角色关联 sys_user_role + * + * @author cmvr-iot + */ +public class SysUserRole +{ + /** 用户ID */ + private Long userId; + + /** 角色ID */ + private Long roleId; + + public Long getUserId() + { + return userId; + } + + public void setUserId(Long userId) + { + this.userId = userId; + } + + public Long getRoleId() + { + return roleId; + } + + public void setRoleId(Long roleId) + { + this.roleId = roleId; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("userId", getUserId()) + .append("roleId", getRoleId()) + .toString(); + } +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/domain/SysVehOperConfig.java b/cmvr-iot-system/src/main/java/com/cmvr/system/domain/SysVehOperConfig.java new file mode 100644 index 0000000..d359218 --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/domain/SysVehOperConfig.java @@ -0,0 +1,33 @@ +package com.cmvr.system.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.cmvr.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; + +@Data +@ApiModel("车机操作配置") +public class SysVehOperConfig extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("配置ID") + @TableId(type = IdType.AUTO) + private Long configId; + + @NotEmpty(message = "厂商不能为空") + @ApiModelProperty("厂商") + private String manufacturer; + + @NotEmpty(message = "车型不能为空") + @ApiModelProperty("车型") + private String vehType; + + @NotEmpty(message = "json文件数据能为空") + @ApiModelProperty("json文件数据") + private String jsonData; +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/domain/vo/MetaVo.java b/cmvr-iot-system/src/main/java/com/cmvr/system/domain/vo/MetaVo.java new file mode 100644 index 0000000..fb675ef --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/domain/vo/MetaVo.java @@ -0,0 +1,106 @@ +package com.cmvr.system.domain.vo; + +import com.cmvr.common.utils.StringUtils; + +/** + * 路由显示信息 + * + * @author cmvr-iot + */ +public class MetaVo +{ + /** + * 设置该路由在侧边栏和面包屑中展示的名字 + */ + private String title; + + /** + * 设置该路由的图标,对应路径src/assets/icons/svg + */ + private String icon; + + /** + * 设置为true,则不会被 缓存 + */ + private boolean noCache; + + /** + * 内链地址(http(s)://开头) + */ + private String link; + + public MetaVo() + { + } + + public MetaVo(String title, String icon) + { + this.title = title; + this.icon = icon; + } + + public MetaVo(String title, String icon, boolean noCache) + { + this.title = title; + this.icon = icon; + this.noCache = noCache; + } + + public MetaVo(String title, String icon, String link) + { + this.title = title; + this.icon = icon; + this.link = link; + } + + public MetaVo(String title, String icon, boolean noCache, String link) + { + this.title = title; + this.icon = icon; + this.noCache = noCache; + if (StringUtils.ishttp(link)) + { + this.link = link; + } + } + + public boolean isNoCache() + { + return noCache; + } + + public void setNoCache(boolean noCache) + { + this.noCache = noCache; + } + + public String getTitle() + { + return title; + } + + public void setTitle(String title) + { + this.title = title; + } + + public String getIcon() + { + return icon; + } + + public void setIcon(String icon) + { + this.icon = icon; + } + + public String getLink() + { + return link; + } + + public void setLink(String link) + { + this.link = link; + } +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/domain/vo/RouterVo.java b/cmvr-iot-system/src/main/java/com/cmvr/system/domain/vo/RouterVo.java new file mode 100644 index 0000000..0350569 --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/domain/vo/RouterVo.java @@ -0,0 +1,148 @@ +package com.cmvr.system.domain.vo; + +import com.fasterxml.jackson.annotation.JsonInclude; +import java.util.List; + +/** + * 路由配置信息 + * + * @author cmvr-iot + */ +@JsonInclude(JsonInclude.Include.NON_EMPTY) +public class RouterVo +{ + /** + * 路由名字 + */ + private String name; + + /** + * 路由地址 + */ + private String path; + + /** + * 是否隐藏路由,当设置 true 的时候该路由不会再侧边栏出现 + */ + private boolean hidden; + + /** + * 重定向地址,当设置 noRedirect 的时候该路由在面包屑导航中不可被点击 + */ + private String redirect; + + /** + * 组件地址 + */ + private String component; + + /** + * 路由参数:如 {"id": 1, "name": "ry"} + */ + private String query; + + /** + * 当你一个路由下面的 children 声明的路由大于1个时,自动会变成嵌套的模式--如组件页面 + */ + private Boolean alwaysShow; + + /** + * 其他元素 + */ + private MetaVo meta; + + /** + * 子路由 + */ + private List children; + + public String getName() + { + return name; + } + + public void setName(String name) + { + this.name = name; + } + + public String getPath() + { + return path; + } + + public void setPath(String path) + { + this.path = path; + } + + public boolean getHidden() + { + return hidden; + } + + public void setHidden(boolean hidden) + { + this.hidden = hidden; + } + + public String getRedirect() + { + return redirect; + } + + public void setRedirect(String redirect) + { + this.redirect = redirect; + } + + public String getComponent() + { + return component; + } + + public void setComponent(String component) + { + this.component = component; + } + + public String getQuery() + { + return query; + } + + public void setQuery(String query) + { + this.query = query; + } + + public Boolean getAlwaysShow() + { + return alwaysShow; + } + + public void setAlwaysShow(Boolean alwaysShow) + { + this.alwaysShow = alwaysShow; + } + + public MetaVo getMeta() + { + return meta; + } + + public void setMeta(MetaVo meta) + { + this.meta = meta; + } + + public List getChildren() + { + return children; + } + + public void setChildren(List children) + { + this.children = children; + } +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysConfigMapper.java b/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysConfigMapper.java new file mode 100644 index 0000000..35cec2f --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysConfigMapper.java @@ -0,0 +1,77 @@ +package com.cmvr.system.mapper; + +import java.util.List; +import com.cmvr.system.domain.SysConfig; +import org.apache.ibatis.annotations.Mapper; + +/** + * 参数配置 数据层 + * + * @author cmvr-iot + */ +public interface SysConfigMapper +{ + /** + * 查询参数配置信息 + * + * @param config 参数配置信息 + * @return 参数配置信息 + */ + public SysConfig selectConfig(SysConfig config); + + /** + * 通过ID查询配置 + * + * @param configId 参数ID + * @return 参数配置信息 + */ + public SysConfig selectConfigById(Long configId); + + /** + * 查询参数配置列表 + * + * @param config 参数配置信息 + * @return 参数配置集合 + */ + public List selectConfigList(SysConfig config); + + /** + * 根据键名查询参数配置信息 + * + * @param configKey 参数键名 + * @return 参数配置信息 + */ + public SysConfig checkConfigKeyUnique(String configKey); + + /** + * 新增参数配置 + * + * @param config 参数配置信息 + * @return 结果 + */ + public int insertConfig(SysConfig config); + + /** + * 修改参数配置 + * + * @param config 参数配置信息 + * @return 结果 + */ + public int updateConfig(SysConfig config); + + /** + * 删除参数配置 + * + * @param configId 参数ID + * @return 结果 + */ + public int deleteConfigById(Long configId); + + /** + * 批量删除参数信息 + * + * @param configIds 需要删除的参数ID + * @return 结果 + */ + public int deleteConfigByIds(Long[] configIds); +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysDeptMapper.java b/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysDeptMapper.java new file mode 100644 index 0000000..90d68f2 --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysDeptMapper.java @@ -0,0 +1,118 @@ +package com.cmvr.system.mapper; + +import java.util.List; +import org.apache.ibatis.annotations.Param; +import com.cmvr.common.core.domain.entity.SysDept; + +/** + * 部门管理 数据层 + * + * @author cmvr-iot + */ +public interface SysDeptMapper +{ + /** + * 查询部门管理数据 + * + * @param dept 部门信息 + * @return 部门信息集合 + */ + public List selectDeptList(SysDept dept); + + /** + * 根据角色ID查询部门树信息 + * + * @param roleId 角色ID + * @param deptCheckStrictly 部门树选择项是否关联显示 + * @return 选中部门列表 + */ + public List selectDeptListByRoleId(@Param("roleId") Long roleId, @Param("deptCheckStrictly") boolean deptCheckStrictly); + + /** + * 根据部门ID查询信息 + * + * @param deptId 部门ID + * @return 部门信息 + */ + public SysDept selectDeptById(Long deptId); + + /** + * 根据ID查询所有子部门 + * + * @param deptId 部门ID + * @return 部门列表 + */ + public List selectChildrenDeptById(Long deptId); + + /** + * 根据ID查询所有子部门(正常状态) + * + * @param deptId 部门ID + * @return 子部门数 + */ + public int selectNormalChildrenDeptById(Long deptId); + + /** + * 是否存在子节点 + * + * @param deptId 部门ID + * @return 结果 + */ + public int hasChildByDeptId(Long deptId); + + /** + * 查询部门是否存在用户 + * + * @param deptId 部门ID + * @return 结果 + */ + public int checkDeptExistUser(Long deptId); + + /** + * 校验部门名称是否唯一 + * + * @param deptName 部门名称 + * @param parentId 父部门ID + * @return 结果 + */ + public SysDept checkDeptNameUnique(@Param("deptName") String deptName, @Param("parentId") Long parentId); + + /** + * 新增部门信息 + * + * @param dept 部门信息 + * @return 结果 + */ + public int insertDept(SysDept dept); + + /** + * 修改部门信息 + * + * @param dept 部门信息 + * @return 结果 + */ + public int updateDept(SysDept dept); + + /** + * 修改所在部门正常状态 + * + * @param deptIds 部门ID组 + */ + public void updateDeptStatusNormal(Long[] deptIds); + + /** + * 修改子元素关系 + * + * @param depts 子元素 + * @return 结果 + */ + public int updateDeptChildren(@Param("depts") List depts); + + /** + * 删除部门管理信息 + * + * @param deptId 部门ID + * @return 结果 + */ + public int deleteDeptById(Long deptId); +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysDictDataMapper.java b/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysDictDataMapper.java new file mode 100644 index 0000000..d7c0592 --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysDictDataMapper.java @@ -0,0 +1,95 @@ +package com.cmvr.system.mapper; + +import java.util.List; +import org.apache.ibatis.annotations.Param; +import com.cmvr.common.core.domain.entity.SysDictData; + +/** + * 字典表 数据层 + * + * @author cmvr-iot + */ +public interface SysDictDataMapper +{ + /** + * 根据条件分页查询字典数据 + * + * @param dictData 字典数据信息 + * @return 字典数据集合信息 + */ + public List selectDictDataList(SysDictData dictData); + + /** + * 根据字典类型查询字典数据 + * + * @param dictType 字典类型 + * @return 字典数据集合信息 + */ + public List selectDictDataByType(String dictType); + + /** + * 根据字典类型和字典键值查询字典数据信息 + * + * @param dictType 字典类型 + * @param dictValue 字典键值 + * @return 字典标签 + */ + public String selectDictLabel(@Param("dictType") String dictType, @Param("dictValue") String dictValue); + + /** + * 根据字典数据ID查询信息 + * + * @param dictCode 字典数据ID + * @return 字典数据 + */ + public SysDictData selectDictDataById(Long dictCode); + + /** + * 查询字典数据 + * + * @param dictType 字典类型 + * @return 字典数据 + */ + public int countDictDataByType(String dictType); + + /** + * 通过字典ID删除字典数据信息 + * + * @param dictCode 字典数据ID + * @return 结果 + */ + public int deleteDictDataById(Long dictCode); + + /** + * 批量删除字典数据信息 + * + * @param dictCodes 需要删除的字典数据ID + * @return 结果 + */ + public int deleteDictDataByIds(Long[] dictCodes); + + /** + * 新增字典数据信息 + * + * @param dictData 字典数据信息 + * @return 结果 + */ + public int insertDictData(SysDictData dictData); + + /** + * 修改字典数据信息 + * + * @param dictData 字典数据信息 + * @return 结果 + */ + public int updateDictData(SysDictData dictData); + + /** + * 同步修改字典类型 + * + * @param oldDictType 旧字典类型 + * @param newDictType 新旧字典类型 + * @return 结果 + */ + public int updateDictDataType(@Param("oldDictType") String oldDictType, @Param("newDictType") String newDictType); +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysDictTypeMapper.java b/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysDictTypeMapper.java new file mode 100644 index 0000000..1b7b400 --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysDictTypeMapper.java @@ -0,0 +1,83 @@ +package com.cmvr.system.mapper; + +import java.util.List; +import com.cmvr.common.core.domain.entity.SysDictType; + +/** + * 字典表 数据层 + * + * @author cmvr-iot + */ +public interface SysDictTypeMapper +{ + /** + * 根据条件分页查询字典类型 + * + * @param dictType 字典类型信息 + * @return 字典类型集合信息 + */ + public List selectDictTypeList(SysDictType dictType); + + /** + * 根据所有字典类型 + * + * @return 字典类型集合信息 + */ + public List selectDictTypeAll(); + + /** + * 根据字典类型ID查询信息 + * + * @param dictId 字典类型ID + * @return 字典类型 + */ + public SysDictType selectDictTypeById(Long dictId); + + /** + * 根据字典类型查询信息 + * + * @param dictType 字典类型 + * @return 字典类型 + */ + public SysDictType selectDictTypeByType(String dictType); + + /** + * 通过字典ID删除字典信息 + * + * @param dictId 字典ID + * @return 结果 + */ + public int deleteDictTypeById(Long dictId); + + /** + * 批量删除字典类型信息 + * + * @param dictIds 需要删除的字典ID + * @return 结果 + */ + public int deleteDictTypeByIds(Long[] dictIds); + + /** + * 新增字典类型信息 + * + * @param dictType 字典类型信息 + * @return 结果 + */ + public int insertDictType(SysDictType dictType); + + /** + * 修改字典类型信息 + * + * @param dictType 字典类型信息 + * @return 结果 + */ + public int updateDictType(SysDictType dictType); + + /** + * 校验字典类型称是否唯一 + * + * @param dictType 字典类型 + * @return 结果 + */ + public SysDictType checkDictTypeUnique(String dictType); +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysFileMapper.java b/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysFileMapper.java new file mode 100644 index 0000000..75a64aa --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysFileMapper.java @@ -0,0 +1,8 @@ +package com.cmvr.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.cmvr.common.core.domain.entity.SysFileInfo; + +public interface SysFileMapper extends BaseMapper { + +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysGroupMapper.java b/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysGroupMapper.java new file mode 100644 index 0000000..e6385e4 --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysGroupMapper.java @@ -0,0 +1,12 @@ +package com.cmvr.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.cmvr.common.core.domain.entity.SysGroup; + +/** + * 通用分组配置Mapper接口 + * + * @author cmvr-iot + */ +public interface SysGroupMapper extends BaseMapper { +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysLogininforMapper.java b/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysLogininforMapper.java new file mode 100644 index 0000000..83f9b5e --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysLogininforMapper.java @@ -0,0 +1,42 @@ +package com.cmvr.system.mapper; + +import java.util.List; +import com.cmvr.system.domain.SysLogininfor; + +/** + * 系统访问日志情况信息 数据层 + * + * @author cmvr-iot + */ +public interface SysLogininforMapper +{ + /** + * 新增系统登录日志 + * + * @param logininfor 访问日志对象 + */ + public void insertLogininfor(SysLogininfor logininfor); + + /** + * 查询系统登录日志集合 + * + * @param logininfor 访问日志对象 + * @return 登录记录集合 + */ + public List selectLogininforList(SysLogininfor logininfor); + + /** + * 批量删除系统登录日志 + * + * @param infoIds 需要删除的登录日志ID + * @return 结果 + */ + public int deleteLogininforByIds(Long[] infoIds); + + /** + * 清空系统登录日志 + * + * @return 结果 + */ + public int cleanLogininfor(); +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysMenuMapper.java b/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysMenuMapper.java new file mode 100644 index 0000000..cd3c3de --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysMenuMapper.java @@ -0,0 +1,125 @@ +package com.cmvr.system.mapper; + +import java.util.List; +import org.apache.ibatis.annotations.Param; +import com.cmvr.common.core.domain.entity.SysMenu; + +/** + * 菜单表 数据层 + * + * @author cmvr-iot + */ +public interface SysMenuMapper +{ + /** + * 查询系统菜单列表 + * + * @param menu 菜单信息 + * @return 菜单列表 + */ + public List selectMenuList(SysMenu menu); + + /** + * 根据用户所有权限 + * + * @return 权限列表 + */ + public List selectMenuPerms(); + + /** + * 根据用户查询系统菜单列表 + * + * @param menu 菜单信息 + * @return 菜单列表 + */ + public List selectMenuListByUserId(SysMenu menu); + + /** + * 根据角色ID查询权限 + * + * @param roleId 角色ID + * @return 权限列表 + */ + public List selectMenuPermsByRoleId(Long roleId); + + /** + * 根据用户ID查询权限 + * + * @param userId 用户ID + * @return 权限列表 + */ + public List selectMenuPermsByUserId(Long userId); + + /** + * 根据用户ID查询菜单 + * + * @return 菜单列表 + */ + public List selectMenuTreeAll(); + + /** + * 根据用户ID查询菜单 + * + * @param userId 用户ID + * @return 菜单列表 + */ + public List selectMenuTreeByUserId(Long userId); + + /** + * 根据角色ID查询菜单树信息 + * + * @param roleId 角色ID + * @param menuCheckStrictly 菜单树选择项是否关联显示 + * @return 选中菜单列表 + */ + public List selectMenuListByRoleId(@Param("roleId") Long roleId, @Param("menuCheckStrictly") boolean menuCheckStrictly); + + /** + * 根据菜单ID查询信息 + * + * @param menuId 菜单ID + * @return 菜单信息 + */ + public SysMenu selectMenuById(Long menuId); + + /** + * 是否存在菜单子节点 + * + * @param menuId 菜单ID + * @return 结果 + */ + public int hasChildByMenuId(Long menuId); + + /** + * 新增菜单信息 + * + * @param menu 菜单信息 + * @return 结果 + */ + public int insertMenu(SysMenu menu); + + /** + * 修改菜单信息 + * + * @param menu 菜单信息 + * @return 结果 + */ + public int updateMenu(SysMenu menu); + + /** + * 删除菜单管理信息 + * + * @param menuId 菜单ID + * @return 结果 + */ + public int deleteMenuById(Long menuId); + + /** + * 校验菜单名称是否唯一 + * + * @param menuName 菜单名称 + * @param parentId 父菜单ID + * @return 结果 + */ + public SysMenu checkMenuNameUnique(@Param("menuName") String menuName, @Param("parentId") Long parentId); +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysNoticeMapper.java b/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysNoticeMapper.java new file mode 100644 index 0000000..4686451 --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysNoticeMapper.java @@ -0,0 +1,60 @@ +package com.cmvr.system.mapper; + +import java.util.List; +import com.cmvr.system.domain.SysNotice; + +/** + * 通知公告表 数据层 + * + * @author cmvr-iot + */ +public interface SysNoticeMapper +{ + /** + * 查询公告信息 + * + * @param noticeId 公告ID + * @return 公告信息 + */ + public SysNotice selectNoticeById(Long noticeId); + + /** + * 查询公告列表 + * + * @param notice 公告信息 + * @return 公告集合 + */ + public List selectNoticeList(SysNotice notice); + + /** + * 新增公告 + * + * @param notice 公告信息 + * @return 结果 + */ + public int insertNotice(SysNotice notice); + + /** + * 修改公告 + * + * @param notice 公告信息 + * @return 结果 + */ + public int updateNotice(SysNotice notice); + + /** + * 批量删除公告 + * + * @param noticeId 公告ID + * @return 结果 + */ + public int deleteNoticeById(Long noticeId); + + /** + * 批量删除公告信息 + * + * @param noticeIds 需要删除的公告ID + * @return 结果 + */ + public int deleteNoticeByIds(Long[] noticeIds); +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysOperLogMapper.java b/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysOperLogMapper.java new file mode 100644 index 0000000..f90ab84 --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysOperLogMapper.java @@ -0,0 +1,48 @@ +package com.cmvr.system.mapper; + +import java.util.List; +import com.cmvr.system.domain.SysOperLog; + +/** + * 操作日志 数据层 + * + * @author cmvr-iot + */ +public interface SysOperLogMapper +{ + /** + * 新增操作日志 + * + * @param operLog 操作日志对象 + */ + public void insertOperlog(SysOperLog operLog); + + /** + * 查询系统操作日志集合 + * + * @param operLog 操作日志对象 + * @return 操作日志集合 + */ + public List selectOperLogList(SysOperLog operLog); + + /** + * 批量删除系统操作日志 + * + * @param operIds 需要删除的操作日志ID + * @return 结果 + */ + public int deleteOperLogByIds(Long[] operIds); + + /** + * 查询操作日志详细 + * + * @param operId 操作ID + * @return 操作日志对象 + */ + public SysOperLog selectOperLogById(Long operId); + + /** + * 清空操作日志 + */ + public void cleanOperLog(); +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysPostMapper.java b/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysPostMapper.java new file mode 100644 index 0000000..1eb6876 --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysPostMapper.java @@ -0,0 +1,99 @@ +package com.cmvr.system.mapper; + +import java.util.List; +import com.cmvr.system.domain.SysPost; + +/** + * 岗位信息 数据层 + * + * @author cmvr-iot + */ +public interface SysPostMapper +{ + /** + * 查询岗位数据集合 + * + * @param post 岗位信息 + * @return 岗位数据集合 + */ + public List selectPostList(SysPost post); + + /** + * 查询所有岗位 + * + * @return 岗位列表 + */ + public List selectPostAll(); + + /** + * 通过岗位ID查询岗位信息 + * + * @param postId 岗位ID + * @return 角色对象信息 + */ + public SysPost selectPostById(Long postId); + + /** + * 根据用户ID获取岗位选择框列表 + * + * @param userId 用户ID + * @return 选中岗位ID列表 + */ + public List selectPostListByUserId(Long userId); + + /** + * 查询用户所属岗位组 + * + * @param userName 用户名 + * @return 结果 + */ + public List selectPostsByUserName(String userName); + + /** + * 删除岗位信息 + * + * @param postId 岗位ID + * @return 结果 + */ + public int deletePostById(Long postId); + + /** + * 批量删除岗位信息 + * + * @param postIds 需要删除的岗位ID + * @return 结果 + */ + public int deletePostByIds(Long[] postIds); + + /** + * 修改岗位信息 + * + * @param post 岗位信息 + * @return 结果 + */ + public int updatePost(SysPost post); + + /** + * 新增岗位信息 + * + * @param post 岗位信息 + * @return 结果 + */ + public int insertPost(SysPost post); + + /** + * 校验岗位名称 + * + * @param postName 岗位名称 + * @return 结果 + */ + public SysPost checkPostNameUnique(String postName); + + /** + * 校验岗位编码 + * + * @param postCode 岗位编码 + * @return 结果 + */ + public SysPost checkPostCodeUnique(String postCode); +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysRoleDeptMapper.java b/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysRoleDeptMapper.java new file mode 100644 index 0000000..b1df3f1 --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysRoleDeptMapper.java @@ -0,0 +1,44 @@ +package com.cmvr.system.mapper; + +import java.util.List; +import com.cmvr.system.domain.SysRoleDept; + +/** + * 角色与部门关联表 数据层 + * + * @author cmvr-iot + */ +public interface SysRoleDeptMapper +{ + /** + * 通过角色ID删除角色和部门关联 + * + * @param roleId 角色ID + * @return 结果 + */ + public int deleteRoleDeptByRoleId(Long roleId); + + /** + * 批量删除角色部门关联信息 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + public int deleteRoleDept(Long[] ids); + + /** + * 查询部门使用数量 + * + * @param deptId 部门ID + * @return 结果 + */ + public int selectCountRoleDeptByDeptId(Long deptId); + + /** + * 批量新增角色部门信息 + * + * @param roleDeptList 角色部门列表 + * @return 结果 + */ + public int batchRoleDept(List roleDeptList); +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysRoleMapper.java b/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysRoleMapper.java new file mode 100644 index 0000000..4be7c9a --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysRoleMapper.java @@ -0,0 +1,107 @@ +package com.cmvr.system.mapper; + +import java.util.List; +import com.cmvr.common.core.domain.entity.SysRole; + +/** + * 角色表 数据层 + * + * @author cmvr-iot + */ +public interface SysRoleMapper +{ + /** + * 根据条件分页查询角色数据 + * + * @param role 角色信息 + * @return 角色数据集合信息 + */ + public List selectRoleList(SysRole role); + + /** + * 根据用户ID查询角色 + * + * @param userId 用户ID + * @return 角色列表 + */ + public List selectRolePermissionByUserId(Long userId); + + /** + * 查询所有角色 + * + * @return 角色列表 + */ + public List selectRoleAll(); + + /** + * 根据用户ID获取角色选择框列表 + * + * @param userId 用户ID + * @return 选中角色ID列表 + */ + public List selectRoleListByUserId(Long userId); + + /** + * 通过角色ID查询角色 + * + * @param roleId 角色ID + * @return 角色对象信息 + */ + public SysRole selectRoleById(Long roleId); + + /** + * 根据用户ID查询角色 + * + * @param userName 用户名 + * @return 角色列表 + */ + public List selectRolesByUserName(String userName); + + /** + * 校验角色名称是否唯一 + * + * @param roleName 角色名称 + * @return 角色信息 + */ + public SysRole checkRoleNameUnique(String roleName); + + /** + * 校验角色权限是否唯一 + * + * @param roleKey 角色权限 + * @return 角色信息 + */ + public SysRole checkRoleKeyUnique(String roleKey); + + /** + * 修改角色信息 + * + * @param role 角色信息 + * @return 结果 + */ + public int updateRole(SysRole role); + + /** + * 新增角色信息 + * + * @param role 角色信息 + * @return 结果 + */ + public int insertRole(SysRole role); + + /** + * 通过角色ID删除角色 + * + * @param roleId 角色ID + * @return 结果 + */ + public int deleteRoleById(Long roleId); + + /** + * 批量删除角色信息 + * + * @param roleIds 需要删除的角色ID + * @return 结果 + */ + public int deleteRoleByIds(Long[] roleIds); +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysRoleMenuMapper.java b/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysRoleMenuMapper.java new file mode 100644 index 0000000..7119945 --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysRoleMenuMapper.java @@ -0,0 +1,44 @@ +package com.cmvr.system.mapper; + +import java.util.List; +import com.cmvr.system.domain.SysRoleMenu; + +/** + * 角色与菜单关联表 数据层 + * + * @author cmvr-iot + */ +public interface SysRoleMenuMapper +{ + /** + * 查询菜单使用数量 + * + * @param menuId 菜单ID + * @return 结果 + */ + public int checkMenuExistRole(Long menuId); + + /** + * 通过角色ID删除角色和菜单关联 + * + * @param roleId 角色ID + * @return 结果 + */ + public int deleteRoleMenuByRoleId(Long roleId); + + /** + * 批量删除角色菜单关联信息 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + public int deleteRoleMenu(Long[] ids); + + /** + * 批量新增角色菜单信息 + * + * @param roleMenuList 角色菜单列表 + * @return 结果 + */ + public int batchRoleMenu(List roleMenuList); +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysUserMapper.java b/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysUserMapper.java new file mode 100644 index 0000000..5a0c74c --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysUserMapper.java @@ -0,0 +1,127 @@ +package com.cmvr.system.mapper; + +import java.util.List; +import org.apache.ibatis.annotations.Param; +import com.cmvr.common.core.domain.entity.SysUser; + +/** + * 用户表 数据层 + * + * @author cmvr-iot + */ +public interface SysUserMapper +{ + /** + * 根据条件分页查询用户列表 + * + * @param sysUser 用户信息 + * @return 用户信息集合信息 + */ + public List selectUserList(SysUser sysUser); + + /** + * 根据条件分页查询已配用户角色列表 + * + * @param user 用户信息 + * @return 用户信息集合信息 + */ + public List selectAllocatedList(SysUser user); + + /** + * 根据条件分页查询未分配用户角色列表 + * + * @param user 用户信息 + * @return 用户信息集合信息 + */ + public List selectUnallocatedList(SysUser user); + + /** + * 通过用户名查询用户 + * + * @param userName 用户名 + * @return 用户对象信息 + */ + public SysUser selectUserByUserName(String userName); + + /** + * 通过用户ID查询用户 + * + * @param userId 用户ID + * @return 用户对象信息 + */ + public SysUser selectUserById(Long userId); + + /** + * 新增用户信息 + * + * @param user 用户信息 + * @return 结果 + */ + public int insertUser(SysUser user); + + /** + * 修改用户信息 + * + * @param user 用户信息 + * @return 结果 + */ + public int updateUser(SysUser user); + + /** + * 修改用户头像 + * + * @param userName 用户名 + * @param avatar 头像地址 + * @return 结果 + */ + public int updateUserAvatar(@Param("userName") String userName, @Param("avatar") String avatar); + + /** + * 重置用户密码 + * + * @param userName 用户名 + * @param password 密码 + * @return 结果 + */ + public int resetUserPwd(@Param("userName") String userName, @Param("password") String password); + + /** + * 通过用户ID删除用户 + * + * @param userId 用户ID + * @return 结果 + */ + public int deleteUserById(Long userId); + + /** + * 批量删除用户信息 + * + * @param userIds 需要删除的用户ID + * @return 结果 + */ + public int deleteUserByIds(Long[] userIds); + + /** + * 校验用户名称是否唯一 + * + * @param userName 用户名称 + * @return 结果 + */ + public SysUser checkUserNameUnique(String userName); + + /** + * 校验手机号码是否唯一 + * + * @param phonenumber 手机号码 + * @return 结果 + */ + public SysUser checkPhoneUnique(String phonenumber); + + /** + * 校验email是否唯一 + * + * @param email 用户邮箱 + * @return 结果 + */ + public SysUser checkEmailUnique(String email); +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysUserPostMapper.java b/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysUserPostMapper.java new file mode 100644 index 0000000..d446975 --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysUserPostMapper.java @@ -0,0 +1,44 @@ +package com.cmvr.system.mapper; + +import java.util.List; +import com.cmvr.system.domain.SysUserPost; + +/** + * 用户与岗位关联表 数据层 + * + * @author cmvr-iot + */ +public interface SysUserPostMapper +{ + /** + * 通过用户ID删除用户和岗位关联 + * + * @param userId 用户ID + * @return 结果 + */ + public int deleteUserPostByUserId(Long userId); + + /** + * 通过岗位ID查询岗位使用数量 + * + * @param postId 岗位ID + * @return 结果 + */ + public int countUserPostById(Long postId); + + /** + * 批量删除用户和岗位关联 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + public int deleteUserPost(Long[] ids); + + /** + * 批量新增用户岗位信息 + * + * @param userPostList 用户岗位列表 + * @return 结果 + */ + public int batchUserPost(List userPostList); +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysUserRoleMapper.java b/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysUserRoleMapper.java new file mode 100644 index 0000000..32d436b --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysUserRoleMapper.java @@ -0,0 +1,62 @@ +package com.cmvr.system.mapper; + +import java.util.List; +import org.apache.ibatis.annotations.Param; +import com.cmvr.system.domain.SysUserRole; + +/** + * 用户与角色关联表 数据层 + * + * @author cmvr-iot + */ +public interface SysUserRoleMapper +{ + /** + * 通过用户ID删除用户和角色关联 + * + * @param userId 用户ID + * @return 结果 + */ + public int deleteUserRoleByUserId(Long userId); + + /** + * 批量删除用户和角色关联 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + public int deleteUserRole(Long[] ids); + + /** + * 通过角色ID查询角色使用数量 + * + * @param roleId 角色ID + * @return 结果 + */ + public int countUserRoleByRoleId(Long roleId); + + /** + * 批量新增用户角色信息 + * + * @param userRoleList 用户角色列表 + * @return 结果 + */ + public int batchUserRole(List userRoleList); + + /** + * 删除用户和角色关联信息 + * + * @param userRole 用户和角色关联信息 + * @return 结果 + */ + public int deleteUserRoleInfo(SysUserRole userRole); + + /** + * 批量取消授权用户角色 + * + * @param roleId 角色ID + * @param userIds 需要删除的用户数据ID + * @return 结果 + */ + public int deleteUserRoleInfos(@Param("roleId") Long roleId, @Param("userIds") Long[] userIds); +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysVehOperConfigMapper.java b/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysVehOperConfigMapper.java new file mode 100644 index 0000000..b9a1c4c --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/mapper/SysVehOperConfigMapper.java @@ -0,0 +1,12 @@ +package com.cmvr.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.cmvr.system.domain.SysVehOperConfig; + +/** + * 车机操作配置 数据层 + * + * @author cmvr-iot + */ +public interface SysVehOperConfigMapper extends BaseMapper { +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysConfigService.java b/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysConfigService.java new file mode 100644 index 0000000..e037412 --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysConfigService.java @@ -0,0 +1,89 @@ +package com.cmvr.system.service; + +import java.util.List; +import com.cmvr.system.domain.SysConfig; + +/** + * 参数配置 服务层 + * + * @author cmvr-iot + */ +public interface ISysConfigService +{ + /** + * 查询参数配置信息 + * + * @param configId 参数配置ID + * @return 参数配置信息 + */ + public SysConfig selectConfigById(Long configId); + + /** + * 根据键名查询参数配置信息 + * + * @param configKey 参数键名 + * @return 参数键值 + */ + public String selectConfigByKey(String configKey); + + /** + * 获取验证码开关 + * + * @return true开启,false关闭 + */ + public boolean selectCaptchaEnabled(); + + /** + * 查询参数配置列表 + * + * @param config 参数配置信息 + * @return 参数配置集合 + */ + public List selectConfigList(SysConfig config); + + /** + * 新增参数配置 + * + * @param config 参数配置信息 + * @return 结果 + */ + public int insertConfig(SysConfig config); + + /** + * 修改参数配置 + * + * @param config 参数配置信息 + * @return 结果 + */ + public int updateConfig(SysConfig config); + + /** + * 批量删除参数信息 + * + * @param configIds 需要删除的参数ID + */ + public void deleteConfigByIds(Long[] configIds); + + /** + * 加载参数缓存数据 + */ + public void loadingConfigCache(); + + /** + * 清空参数缓存数据 + */ + public void clearConfigCache(); + + /** + * 重置参数缓存数据 + */ + public void resetConfigCache(); + + /** + * 校验参数键名是否唯一 + * + * @param config 参数信息 + * @return 结果 + */ + public boolean checkConfigKeyUnique(SysConfig config); +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysDeptService.java b/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysDeptService.java new file mode 100644 index 0000000..76dcc09 --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysDeptService.java @@ -0,0 +1,124 @@ +package com.cmvr.system.service; + +import java.util.List; +import com.cmvr.common.core.domain.TreeSelect; +import com.cmvr.common.core.domain.entity.SysDept; + +/** + * 部门管理 服务层 + * + * @author cmvr-iot + */ +public interface ISysDeptService +{ + /** + * 查询部门管理数据 + * + * @param dept 部门信息 + * @return 部门信息集合 + */ + public List selectDeptList(SysDept dept); + + /** + * 查询部门树结构信息 + * + * @param dept 部门信息 + * @return 部门树信息集合 + */ + public List selectDeptTreeList(SysDept dept); + + /** + * 构建前端所需要树结构 + * + * @param depts 部门列表 + * @return 树结构列表 + */ + public List buildDeptTree(List depts); + + /** + * 构建前端所需要下拉树结构 + * + * @param depts 部门列表 + * @return 下拉树结构列表 + */ + public List buildDeptTreeSelect(List depts); + + /** + * 根据角色ID查询部门树信息 + * + * @param roleId 角色ID + * @return 选中部门列表 + */ + public List selectDeptListByRoleId(Long roleId); + + /** + * 根据部门ID查询信息 + * + * @param deptId 部门ID + * @return 部门信息 + */ + public SysDept selectDeptById(Long deptId); + + /** + * 根据ID查询所有子部门(正常状态) + * + * @param deptId 部门ID + * @return 子部门数 + */ + public int selectNormalChildrenDeptById(Long deptId); + + /** + * 是否存在部门子节点 + * + * @param deptId 部门ID + * @return 结果 + */ + public boolean hasChildByDeptId(Long deptId); + + /** + * 查询部门是否存在用户 + * + * @param deptId 部门ID + * @return 结果 true 存在 false 不存在 + */ + public boolean checkDeptExistUser(Long deptId); + + /** + * 校验部门名称是否唯一 + * + * @param dept 部门信息 + * @return 结果 + */ + public boolean checkDeptNameUnique(SysDept dept); + + /** + * 校验部门是否有数据权限 + * + * @param deptId 部门id + */ + public void checkDeptDataScope(Long deptId); + + /** + * 新增保存部门信息 + * + * @param dept 部门信息 + * @return 结果 + */ + public int insertDept(SysDept dept); + + /** + * 修改保存部门信息 + * + * @param dept 部门信息 + * @return 结果 + */ + public int updateDept(SysDept dept); + + /** + * 删除部门管理信息 + * + * @param deptId 部门ID + * @return 结果 + */ + public int deleteDeptById(Long deptId); +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysDictDataService.java b/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysDictDataService.java new file mode 100644 index 0000000..77e3f99 --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysDictDataService.java @@ -0,0 +1,60 @@ +package com.cmvr.system.service; + +import java.util.List; +import com.cmvr.common.core.domain.entity.SysDictData; + +/** + * 字典 业务层 + * + * @author cmvr-iot + */ +public interface ISysDictDataService +{ + /** + * 根据条件分页查询字典数据 + * + * @param dictData 字典数据信息 + * @return 字典数据集合信息 + */ + public List selectDictDataList(SysDictData dictData); + + /** + * 根据字典类型和字典键值查询字典数据信息 + * + * @param dictType 字典类型 + * @param dictValue 字典键值 + * @return 字典标签 + */ + public String selectDictLabel(String dictType, String dictValue); + + /** + * 根据字典数据ID查询信息 + * + * @param dictCode 字典数据ID + * @return 字典数据 + */ + public SysDictData selectDictDataById(Long dictCode); + + /** + * 批量删除字典数据信息 + * + * @param dictCodes 需要删除的字典数据ID + */ + public void deleteDictDataByIds(Long[] dictCodes); + + /** + * 新增保存字典数据信息 + * + * @param dictData 字典数据信息 + * @return 结果 + */ + public int insertDictData(SysDictData dictData); + + /** + * 修改保存字典数据信息 + * + * @param dictData 字典数据信息 + * @return 结果 + */ + public int updateDictData(SysDictData dictData); +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysDictTypeService.java b/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysDictTypeService.java new file mode 100644 index 0000000..2082504 --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysDictTypeService.java @@ -0,0 +1,98 @@ +package com.cmvr.system.service; + +import java.util.List; +import com.cmvr.common.core.domain.entity.SysDictData; +import com.cmvr.common.core.domain.entity.SysDictType; + +/** + * 字典 业务层 + * + * @author cmvr-iot + */ +public interface ISysDictTypeService +{ + /** + * 根据条件分页查询字典类型 + * + * @param dictType 字典类型信息 + * @return 字典类型集合信息 + */ + public List selectDictTypeList(SysDictType dictType); + + /** + * 根据所有字典类型 + * + * @return 字典类型集合信息 + */ + public List selectDictTypeAll(); + + /** + * 根据字典类型查询字典数据 + * + * @param dictType 字典类型 + * @return 字典数据集合信息 + */ + public List selectDictDataByType(String dictType); + + /** + * 根据字典类型ID查询信息 + * + * @param dictId 字典类型ID + * @return 字典类型 + */ + public SysDictType selectDictTypeById(Long dictId); + + /** + * 根据字典类型查询信息 + * + * @param dictType 字典类型 + * @return 字典类型 + */ + public SysDictType selectDictTypeByType(String dictType); + + /** + * 批量删除字典信息 + * + * @param dictIds 需要删除的字典ID + */ + public void deleteDictTypeByIds(Long[] dictIds); + + /** + * 加载字典缓存数据 + */ + public void loadingDictCache(); + + /** + * 清空字典缓存数据 + */ + public void clearDictCache(); + + /** + * 重置字典缓存数据 + */ + public void resetDictCache(); + + /** + * 新增保存字典类型信息 + * + * @param dictType 字典类型信息 + * @return 结果 + */ + public int insertDictType(SysDictType dictType); + + /** + * 修改保存字典类型信息 + * + * @param dictType 字典类型信息 + * @return 结果 + */ + public int updateDictType(SysDictType dictType); + + /** + * 校验字典类型称是否唯一 + * + * @param dictType 字典类型 + * @return 结果 + */ + public boolean checkDictTypeUnique(SysDictType dictType); +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysFileService.java b/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysFileService.java new file mode 100644 index 0000000..375662e --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysFileService.java @@ -0,0 +1,16 @@ +package com.cmvr.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.cmvr.common.core.domain.entity.SysFileInfo; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; + +public interface ISysFileService extends IService { + + public List selectFileList(SysFileInfo sysFileInfo); + + public String uploadFile(MultipartFile file, Integer fileType); + + public int deleteFileByIds(Long[] fileIds); +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysGroupService.java b/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysGroupService.java new file mode 100644 index 0000000..eacebe4 --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysGroupService.java @@ -0,0 +1,61 @@ +package com.cmvr.system.service; + +import java.util.List; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.cmvr.common.core.domain.entity.SysGroup; + +/** + * 通用分组配置接口 + * + * @author cmvr-iot + */ +public interface ISysGroupService extends IService { + /** + * 查询通用分组配置 + * + * @param groupId 通用分组配置主键 + * @return 通用分组配置 + */ + public SysGroup selectSysGroupByGroupId(Long groupId); + + /** + * 查询通用分组配置列表 + * + * @param sysGroup 通用分组配置 + * @return 通用分组配置集合 + */ + public List selectSysGroupList(SysGroup sysGroup); + + /** + * 新增通用分组配置 + * + * @param sysGroup 通用分组配置 + * @return 结果 + */ + public int insertSysGroup(SysGroup sysGroup); + + /** + * 修改通用分组配置 + * + * @param sysGroup 通用分组配置 + * @return 结果 + */ + public int updateSysGroup(SysGroup sysGroup); + + /** + * 批量删除通用分组配置 + * + * @param groupIds 需要删除的通用分组配置主键集合 + * @return 结果 + */ + public int deleteSysGroupByGroupIds(Long[] groupIds); + + /** + * 删除通用分组配置信息 + * + * @param groupId 通用分组配置主键 + * @return 结果 + */ + public int deleteSysGroupByGroupId(Long groupId); +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysLogininforService.java b/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysLogininforService.java new file mode 100644 index 0000000..ae9685f --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysLogininforService.java @@ -0,0 +1,40 @@ +package com.cmvr.system.service; + +import java.util.List; +import com.cmvr.system.domain.SysLogininfor; + +/** + * 系统访问日志情况信息 服务层 + * + * @author cmvr-iot + */ +public interface ISysLogininforService +{ + /** + * 新增系统登录日志 + * + * @param logininfor 访问日志对象 + */ + public void insertLogininfor(SysLogininfor logininfor); + + /** + * 查询系统登录日志集合 + * + * @param logininfor 访问日志对象 + * @return 登录记录集合 + */ + public List selectLogininforList(SysLogininfor logininfor); + + /** + * 批量删除系统登录日志 + * + * @param infoIds 需要删除的登录日志ID + * @return 结果 + */ + public int deleteLogininforByIds(Long[] infoIds); + + /** + * 清空系统登录日志 + */ + public void cleanLogininfor(); +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysMenuService.java b/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysMenuService.java new file mode 100644 index 0000000..c6239bb --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysMenuService.java @@ -0,0 +1,144 @@ +package com.cmvr.system.service; + +import java.util.List; +import java.util.Set; +import com.cmvr.common.core.domain.TreeSelect; +import com.cmvr.common.core.domain.entity.SysMenu; +import com.cmvr.system.domain.vo.RouterVo; + +/** + * 菜单 业务层 + * + * @author cmvr-iot + */ +public interface ISysMenuService +{ + /** + * 根据用户查询系统菜单列表 + * + * @param userId 用户ID + * @return 菜单列表 + */ + public List selectMenuList(Long userId); + + /** + * 根据用户查询系统菜单列表 + * + * @param menu 菜单信息 + * @param userId 用户ID + * @return 菜单列表 + */ + public List selectMenuList(SysMenu menu, Long userId); + + /** + * 根据用户ID查询权限 + * + * @param userId 用户ID + * @return 权限列表 + */ + public Set selectMenuPermsByUserId(Long userId); + + /** + * 根据角色ID查询权限 + * + * @param roleId 角色ID + * @return 权限列表 + */ + public Set selectMenuPermsByRoleId(Long roleId); + + /** + * 根据用户ID查询菜单树信息 + * + * @param userId 用户ID + * @return 菜单列表 + */ + public List selectMenuTreeByUserId(Long userId); + + /** + * 根据角色ID查询菜单树信息 + * + * @param roleId 角色ID + * @return 选中菜单列表 + */ + public List selectMenuListByRoleId(Long roleId); + + /** + * 构建前端路由所需要的菜单 + * + * @param menus 菜单列表 + * @return 路由列表 + */ + public List buildMenus(List menus); + + /** + * 构建前端所需要树结构 + * + * @param menus 菜单列表 + * @return 树结构列表 + */ + public List buildMenuTree(List menus); + + /** + * 构建前端所需要下拉树结构 + * + * @param menus 菜单列表 + * @return 下拉树结构列表 + */ + public List buildMenuTreeSelect(List menus); + + /** + * 根据菜单ID查询信息 + * + * @param menuId 菜单ID + * @return 菜单信息 + */ + public SysMenu selectMenuById(Long menuId); + + /** + * 是否存在菜单子节点 + * + * @param menuId 菜单ID + * @return 结果 true 存在 false 不存在 + */ + public boolean hasChildByMenuId(Long menuId); + + /** + * 查询菜单是否存在角色 + * + * @param menuId 菜单ID + * @return 结果 true 存在 false 不存在 + */ + public boolean checkMenuExistRole(Long menuId); + + /** + * 新增保存菜单信息 + * + * @param menu 菜单信息 + * @return 结果 + */ + public int insertMenu(SysMenu menu); + + /** + * 修改保存菜单信息 + * + * @param menu 菜单信息 + * @return 结果 + */ + public int updateMenu(SysMenu menu); + + /** + * 删除菜单管理信息 + * + * @param menuId 菜单ID + * @return 结果 + */ + public int deleteMenuById(Long menuId); + + /** + * 校验菜单名称是否唯一 + * + * @param menu 菜单信息 + * @return 结果 + */ + public boolean checkMenuNameUnique(SysMenu menu); +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysNoticeService.java b/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysNoticeService.java new file mode 100644 index 0000000..c12ec8e --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysNoticeService.java @@ -0,0 +1,60 @@ +package com.cmvr.system.service; + +import java.util.List; +import com.cmvr.system.domain.SysNotice; + +/** + * 公告 服务层 + * + * @author cmvr-iot + */ +public interface ISysNoticeService +{ + /** + * 查询公告信息 + * + * @param noticeId 公告ID + * @return 公告信息 + */ + public SysNotice selectNoticeById(Long noticeId); + + /** + * 查询公告列表 + * + * @param notice 公告信息 + * @return 公告集合 + */ + public List selectNoticeList(SysNotice notice); + + /** + * 新增公告 + * + * @param notice 公告信息 + * @return 结果 + */ + public int insertNotice(SysNotice notice); + + /** + * 修改公告 + * + * @param notice 公告信息 + * @return 结果 + */ + public int updateNotice(SysNotice notice); + + /** + * 删除公告信息 + * + * @param noticeId 公告ID + * @return 结果 + */ + public int deleteNoticeById(Long noticeId); + + /** + * 批量删除公告信息 + * + * @param noticeIds 需要删除的公告ID + * @return 结果 + */ + public int deleteNoticeByIds(Long[] noticeIds); +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysOperLogService.java b/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysOperLogService.java new file mode 100644 index 0000000..666fb42 --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysOperLogService.java @@ -0,0 +1,48 @@ +package com.cmvr.system.service; + +import java.util.List; +import com.cmvr.system.domain.SysOperLog; + +/** + * 操作日志 服务层 + * + * @author cmvr-iot + */ +public interface ISysOperLogService +{ + /** + * 新增操作日志 + * + * @param operLog 操作日志对象 + */ + public void insertOperlog(SysOperLog operLog); + + /** + * 查询系统操作日志集合 + * + * @param operLog 操作日志对象 + * @return 操作日志集合 + */ + public List selectOperLogList(SysOperLog operLog); + + /** + * 批量删除系统操作日志 + * + * @param operIds 需要删除的操作日志ID + * @return 结果 + */ + public int deleteOperLogByIds(Long[] operIds); + + /** + * 查询操作日志详细 + * + * @param operId 操作ID + * @return 操作日志对象 + */ + public SysOperLog selectOperLogById(Long operId); + + /** + * 清空操作日志 + */ + public void cleanOperLog(); +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysPostService.java b/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysPostService.java new file mode 100644 index 0000000..8aa6a03 --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysPostService.java @@ -0,0 +1,99 @@ +package com.cmvr.system.service; + +import java.util.List; +import com.cmvr.system.domain.SysPost; + +/** + * 岗位信息 服务层 + * + * @author cmvr-iot + */ +public interface ISysPostService +{ + /** + * 查询岗位信息集合 + * + * @param post 岗位信息 + * @return 岗位列表 + */ + public List selectPostList(SysPost post); + + /** + * 查询所有岗位 + * + * @return 岗位列表 + */ + public List selectPostAll(); + + /** + * 通过岗位ID查询岗位信息 + * + * @param postId 岗位ID + * @return 角色对象信息 + */ + public SysPost selectPostById(Long postId); + + /** + * 根据用户ID获取岗位选择框列表 + * + * @param userId 用户ID + * @return 选中岗位ID列表 + */ + public List selectPostListByUserId(Long userId); + + /** + * 校验岗位名称 + * + * @param post 岗位信息 + * @return 结果 + */ + public boolean checkPostNameUnique(SysPost post); + + /** + * 校验岗位编码 + * + * @param post 岗位信息 + * @return 结果 + */ + public boolean checkPostCodeUnique(SysPost post); + + /** + * 通过岗位ID查询岗位使用数量 + * + * @param postId 岗位ID + * @return 结果 + */ + public int countUserPostById(Long postId); + + /** + * 删除岗位信息 + * + * @param postId 岗位ID + * @return 结果 + */ + public int deletePostById(Long postId); + + /** + * 批量删除岗位信息 + * + * @param postIds 需要删除的岗位ID + * @return 结果 + */ + public int deletePostByIds(Long[] postIds); + + /** + * 新增保存岗位信息 + * + * @param post 岗位信息 + * @return 结果 + */ + public int insertPost(SysPost post); + + /** + * 修改保存岗位信息 + * + * @param post 岗位信息 + * @return 结果 + */ + public int updatePost(SysPost post); +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysRoleService.java b/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysRoleService.java new file mode 100644 index 0000000..96bf886 --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysRoleService.java @@ -0,0 +1,173 @@ +package com.cmvr.system.service; + +import java.util.List; +import java.util.Set; +import com.cmvr.common.core.domain.entity.SysRole; +import com.cmvr.system.domain.SysUserRole; + +/** + * 角色业务层 + * + * @author cmvr-iot + */ +public interface ISysRoleService +{ + /** + * 根据条件分页查询角色数据 + * + * @param role 角色信息 + * @return 角色数据集合信息 + */ + public List selectRoleList(SysRole role); + + /** + * 根据用户ID查询角色列表 + * + * @param userId 用户ID + * @return 角色列表 + */ + public List selectRolesByUserId(Long userId); + + /** + * 根据用户ID查询角色权限 + * + * @param userId 用户ID + * @return 权限列表 + */ + public Set selectRolePermissionByUserId(Long userId); + + /** + * 查询所有角色 + * + * @return 角色列表 + */ + public List selectRoleAll(); + + /** + * 根据用户ID获取角色选择框列表 + * + * @param userId 用户ID + * @return 选中角色ID列表 + */ + public List selectRoleListByUserId(Long userId); + + /** + * 通过角色ID查询角色 + * + * @param roleId 角色ID + * @return 角色对象信息 + */ + public SysRole selectRoleById(Long roleId); + + /** + * 校验角色名称是否唯一 + * + * @param role 角色信息 + * @return 结果 + */ + public boolean checkRoleNameUnique(SysRole role); + + /** + * 校验角色权限是否唯一 + * + * @param role 角色信息 + * @return 结果 + */ + public boolean checkRoleKeyUnique(SysRole role); + + /** + * 校验角色是否允许操作 + * + * @param role 角色信息 + */ + public void checkRoleAllowed(SysRole role); + + /** + * 校验角色是否有数据权限 + * + * @param roleIds 角色id + */ + public void checkRoleDataScope(Long... roleIds); + + /** + * 通过角色ID查询角色使用数量 + * + * @param roleId 角色ID + * @return 结果 + */ + public int countUserRoleByRoleId(Long roleId); + + /** + * 新增保存角色信息 + * + * @param role 角色信息 + * @return 结果 + */ + public int insertRole(SysRole role); + + /** + * 修改保存角色信息 + * + * @param role 角色信息 + * @return 结果 + */ + public int updateRole(SysRole role); + + /** + * 修改角色状态 + * + * @param role 角色信息 + * @return 结果 + */ + public int updateRoleStatus(SysRole role); + + /** + * 修改数据权限信息 + * + * @param role 角色信息 + * @return 结果 + */ + public int authDataScope(SysRole role); + + /** + * 通过角色ID删除角色 + * + * @param roleId 角色ID + * @return 结果 + */ + public int deleteRoleById(Long roleId); + + /** + * 批量删除角色信息 + * + * @param roleIds 需要删除的角色ID + * @return 结果 + */ + public int deleteRoleByIds(Long[] roleIds); + + /** + * 取消授权用户角色 + * + * @param userRole 用户和角色关联信息 + * @return 结果 + */ + public int deleteAuthUser(SysUserRole userRole); + + /** + * 批量取消授权用户角色 + * + * @param roleId 角色ID + * @param userIds 需要取消授权的用户数据ID + * @return 结果 + */ + public int deleteAuthUsers(Long roleId, Long[] userIds); + + /** + * 批量选择授权用户角色 + * + * @param roleId 角色ID + * @param userIds 需要删除的用户数据ID + * @return 结果 + */ + public int insertAuthUsers(Long roleId, Long[] userIds); +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysUserOnlineService.java b/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysUserOnlineService.java new file mode 100644 index 0000000..d23106d --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysUserOnlineService.java @@ -0,0 +1,48 @@ +package com.cmvr.system.service; + +import com.cmvr.common.core.domain.model.LoginUser; +import com.cmvr.system.domain.SysUserOnline; + +/** + * 在线用户 服务层 + * + * @author cmvr-iot + */ +public interface ISysUserOnlineService +{ + /** + * 通过登录地址查询信息 + * + * @param ipaddr 登录地址 + * @param user 用户信息 + * @return 在线用户信息 + */ + public SysUserOnline selectOnlineByIpaddr(String ipaddr, LoginUser user); + + /** + * 通过用户名称查询信息 + * + * @param userName 用户名称 + * @param user 用户信息 + * @return 在线用户信息 + */ + public SysUserOnline selectOnlineByUserName(String userName, LoginUser user); + + /** + * 通过登录地址/用户名称查询信息 + * + * @param ipaddr 登录地址 + * @param userName 用户名称 + * @param user 用户信息 + * @return 在线用户信息 + */ + public SysUserOnline selectOnlineByInfo(String ipaddr, String userName, LoginUser user); + + /** + * 设置在线用户信息 + * + * @param user 用户信息 + * @return 在线用户 + */ + public SysUserOnline loginUserToUserOnline(LoginUser user); +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysUserService.java b/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysUserService.java new file mode 100644 index 0000000..d85202c --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysUserService.java @@ -0,0 +1,206 @@ +package com.cmvr.system.service; + +import java.util.List; +import com.cmvr.common.core.domain.entity.SysUser; + +/** + * 用户 业务层 + * + * @author cmvr-iot + */ +public interface ISysUserService +{ + /** + * 根据条件分页查询用户列表 + * + * @param user 用户信息 + * @return 用户信息集合信息 + */ + public List selectUserList(SysUser user); + + /** + * 根据条件分页查询已分配用户角色列表 + * + * @param user 用户信息 + * @return 用户信息集合信息 + */ + public List selectAllocatedList(SysUser user); + + /** + * 根据条件分页查询未分配用户角色列表 + * + * @param user 用户信息 + * @return 用户信息集合信息 + */ + public List selectUnallocatedList(SysUser user); + + /** + * 通过用户名查询用户 + * + * @param userName 用户名 + * @return 用户对象信息 + */ + public SysUser selectUserByUserName(String userName); + + /** + * 通过用户ID查询用户 + * + * @param userId 用户ID + * @return 用户对象信息 + */ + public SysUser selectUserById(Long userId); + + /** + * 根据用户ID查询用户所属角色组 + * + * @param userName 用户名 + * @return 结果 + */ + public String selectUserRoleGroup(String userName); + + /** + * 根据用户ID查询用户所属岗位组 + * + * @param userName 用户名 + * @return 结果 + */ + public String selectUserPostGroup(String userName); + + /** + * 校验用户名称是否唯一 + * + * @param user 用户信息 + * @return 结果 + */ + public boolean checkUserNameUnique(SysUser user); + + /** + * 校验手机号码是否唯一 + * + * @param user 用户信息 + * @return 结果 + */ + public boolean checkPhoneUnique(SysUser user); + + /** + * 校验email是否唯一 + * + * @param user 用户信息 + * @return 结果 + */ + public boolean checkEmailUnique(SysUser user); + + /** + * 校验用户是否允许操作 + * + * @param user 用户信息 + */ + public void checkUserAllowed(SysUser user); + + /** + * 校验用户是否有数据权限 + * + * @param userId 用户id + */ + public void checkUserDataScope(Long userId); + + /** + * 新增用户信息 + * + * @param user 用户信息 + * @return 结果 + */ + public int insertUser(SysUser user); + + /** + * 注册用户信息 + * + * @param user 用户信息 + * @return 结果 + */ + public boolean registerUser(SysUser user); + + /** + * 修改用户信息 + * + * @param user 用户信息 + * @return 结果 + */ + public int updateUser(SysUser user); + + /** + * 用户授权角色 + * + * @param userId 用户ID + * @param roleIds 角色组 + */ + public void insertUserAuth(Long userId, Long[] roleIds); + + /** + * 修改用户状态 + * + * @param user 用户信息 + * @return 结果 + */ + public int updateUserStatus(SysUser user); + + /** + * 修改用户基本信息 + * + * @param user 用户信息 + * @return 结果 + */ + public int updateUserProfile(SysUser user); + + /** + * 修改用户头像 + * + * @param userName 用户名 + * @param avatar 头像地址 + * @return 结果 + */ + public boolean updateUserAvatar(String userName, String avatar); + + /** + * 重置用户密码 + * + * @param user 用户信息 + * @return 结果 + */ + public int resetPwd(SysUser user); + + /** + * 重置用户密码 + * + * @param userName 用户名 + * @param password 密码 + * @return 结果 + */ + public int resetUserPwd(String userName, String password); + + /** + * 通过用户ID删除用户 + * + * @param userId 用户ID + * @return 结果 + */ + public int deleteUserById(Long userId); + + /** + * 批量删除用户信息 + * + * @param userIds 需要删除的用户ID + * @return 结果 + */ + public int deleteUserByIds(Long[] userIds); + + /** + * 导入用户数据 + * + * @param userList 用户数据列表 + * @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据 + * @param operName 操作用户 + * @return 结果 + */ + public String importUser(List userList, Boolean isUpdateSupport, String operName); +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysVehOperConfigService.java b/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysVehOperConfigService.java new file mode 100644 index 0000000..20b3cac --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/service/ISysVehOperConfigService.java @@ -0,0 +1,60 @@ +package com.cmvr.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.cmvr.system.domain.SysVehOperConfig; + +import java.util.List; + +/** + * 车机操作配置Service接口 + * + * @author cmvr-iot + */ +public interface ISysVehOperConfigService extends IService { + /** + * 查询车机操作配置 + * + * @param ID 车机操作配置主键 + * @return 车机操作配置 + */ + public SysVehOperConfig selectSysVehOperConfigById(Long ID); + + /** + * 查询车机操作配置 + * + * @return 车机操作配置 + */ + public SysVehOperConfig selectSysVehOperConfig(String manufacturer, String vehType); + + /** + * 查询车机操作配置列表 + * + * @param vehOperConfig 车机操作配置 + * @return 车机操作配置集合 + */ + public List selectSysVehOperConfigList(SysVehOperConfig vehOperConfig); + + /** + * 新增车机操作配置 + * + * @param vehOperConfig 车机操作配置 + * @return 结果 + */ + public int insertVehOperConfig(SysVehOperConfig vehOperConfig); + + /** + * 修改车机操作配置 + * + * @param vehOperConfig 车机操作配置 + * @return 结果 + */ + public int updateVehOperConfig(SysVehOperConfig vehOperConfig); + + /** + * 批量删除车机操作配置 + * + * @param ids 需要删除的车机操作配置主键集合 + * @return 结果 + */ + public int deleteVehOperConfigByIds(Long[] ids); +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/ISysFileServiceImpl.java b/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/ISysFileServiceImpl.java new file mode 100644 index 0000000..869b77b --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/ISysFileServiceImpl.java @@ -0,0 +1,113 @@ +package com.cmvr.system.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cmvr.common.config.properties.MinioProperties; +import com.cmvr.common.core.domain.entity.SysFileInfo; +import com.cmvr.common.core.minio.MinioService; +import com.cmvr.common.enums.FileType; +import com.cmvr.system.mapper.SysFileMapper; +import com.cmvr.system.service.ISysFileService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.util.DigestUtils; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.PostConstruct; +import java.io.IOException; +import java.util.Arrays; +import java.util.Date; +import java.util.List; +import java.util.Objects; + + +/** + * 文件上传服务 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class ISysFileServiceImpl extends ServiceImpl implements ISysFileService { + + private final MinioService minioService; + + private final MinioProperties minioProps; + + @PostConstruct + public void init() { + if (!minioService.bucketExists(minioProps.getBucketName())) { + // 创建bucket + minioService.makeBucket(minioProps.getBucketName()); + // 公开bucket + minioService.setBucketPublic(minioProps.getBucketName()); + } + } + + @Override + public List selectFileList(SysFileInfo sysFileInfo) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper + .eq(sysFileInfo.getFileType() != null, SysFileInfo::getFileType, sysFileInfo.getFileType()) + .like(StringUtils.isNotBlank(sysFileInfo.getFileName()), SysFileInfo::getFileName, sysFileInfo.getFileName()); + return this.list(wrapper); + } + + @Override + public String uploadFile(MultipartFile file, Integer fileType) { + try { + // 如果文件已存在,直接复用 + String md5 = DigestUtils.md5DigestAsHex(file.getInputStream()); + SysFileInfo fileInfo = findByMd5(md5); + if (!Objects.isNull(fileInfo)) { + this.updateById(fileInfo); + // 返回 + return fileInfo.getFilePath(); + } + // 上传 + FileType type = FileType.getByCode(fileType); + String fileName = minioService.upload(minioProps.getBucketName(), type.toString(), file); + if (StringUtils.isEmpty(fileName)) { + throw new RuntimeException("文件上传失败"); + } + String url = generUrl(type, fileName); + // 保存文件 + saveFileInfo(file, md5, url, fileType); + log.info("文件上传成功,url:{}", url); + return url; + } catch (IOException e) { + log.error("上传文件失败,{}", e.getMessage(), e); + throw new RuntimeException("上传文件失败"); + } + } + + @Override + public int deleteFileByIds(Long[] fileIds) { + return this.baseMapper.deleteBatchIds(Arrays.asList(fileIds)); + } + + private String generUrl(FileType fileType, String fileName) { + return StrUtil.join("/", minioProps.getUrl(), minioProps.getBucketName(), fileType, fileName); + } + + private SysFileInfo findByMd5(String md5) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.eq(SysFileInfo::getMd5, md5); + return getOne(wrapper); + } + + private void saveFileInfo(MultipartFile file, String md5, String filePath, Integer fileType) throws IOException { + SysFileInfo fileInfo = new SysFileInfo(); + fileInfo.setFileName(file.getOriginalFilename()); + fileInfo.setFileSize(file.getSize()); + fileInfo.setFileType(fileType); + fileInfo.setFilePath(filePath); + fileInfo.setMd5(md5); + fileInfo.setCreateTime(new Date()); + this.save(fileInfo); + } + +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/ISysVehOperConfigServiceImpl.java b/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/ISysVehOperConfigServiceImpl.java new file mode 100644 index 0000000..910b407 --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/ISysVehOperConfigServiceImpl.java @@ -0,0 +1,119 @@ +package com.cmvr.system.service.impl; + +import cn.hutool.core.util.ObjUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson2.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cmvr.common.core.redis.RedisCache; +import com.cmvr.system.domain.SysVehOperConfig; +import com.cmvr.system.mapper.SysVehOperConfigMapper; +import com.cmvr.system.service.ISysVehOperConfigService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +@RequiredArgsConstructor +public class ISysVehOperConfigServiceImpl extends ServiceImpl implements ISysVehOperConfigService { + + private final RedisCache redisCache; + private static final String VEH_OPER_CONFIG_KEY = "veh_oper_config"; + + @Override + public SysVehOperConfig selectSysVehOperConfigById(Long id) { + SysVehOperConfig config = getById(id); + String redisKey = getCacheKey(config.getManufacturer(), config.getVehType()); + String configStr = redisCache.getCacheObject(redisKey); + SysVehOperConfig vehOperConfig = JSON.parseObject(configStr, SysVehOperConfig.class); + + if (ObjUtil.isNotEmpty(vehOperConfig)) { + return vehOperConfig; + } + vehOperConfig = baseMapper.selectById(id); + + if (ObjUtil.isNotEmpty(vehOperConfig)) { + redisCache.setCacheObject(redisKey, JSON.toJSONString(vehOperConfig)); + } + + return vehOperConfig; + } + + @Override + public SysVehOperConfig selectSysVehOperConfig(String manufacturer, String vehType) { + String redisKey = getCacheKey(manufacturer, vehType); + String configStr = redisCache.getCacheObject(redisKey); + SysVehOperConfig vehOperConfig = JSON.parseObject(configStr, SysVehOperConfig.class); + + if (ObjUtil.isNotEmpty(vehOperConfig)) { + return vehOperConfig; + } + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.eq(SysVehOperConfig::getManufacturer, manufacturer) + .eq(SysVehOperConfig::getVehType, vehType); + vehOperConfig = getOne(wrapper); + + if (ObjUtil.isNotEmpty(vehOperConfig)) { + redisCache.setCacheObject(redisKey, JSON.toJSONString(vehOperConfig)); + } + + return vehOperConfig; + } + + @Override + public List selectSysVehOperConfigList(SysVehOperConfig vehOperConfig) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper + .like(StrUtil.isNotEmpty(vehOperConfig.getManufacturer()), SysVehOperConfig::getManufacturer, vehOperConfig.getManufacturer()) + .like(StrUtil.isNotEmpty(vehOperConfig.getVehType()), SysVehOperConfig::getVehType, vehOperConfig.getVehType()); + return this.list(wrapper); + } + + @Override + public int insertVehOperConfig(SysVehOperConfig vehOperConfig) { + int result = baseMapper.insert(vehOperConfig); + + if (result > 0) { + String redisKey = getCacheKey(vehOperConfig.getManufacturer(), vehOperConfig.getVehType()); + redisCache.setCacheObject(redisKey, JSON.toJSONString(vehOperConfig)); + } + + return result; + } + + @Override + public int updateVehOperConfig(SysVehOperConfig vehOperConfig) { + redisCache.deleteObject(getCacheKey(vehOperConfig.getConfigId())); + int result = baseMapper.updateById(vehOperConfig); + + if (result > 0) { + String redisKey = getCacheKey(vehOperConfig.getManufacturer(), vehOperConfig.getVehType()); + redisCache.setCacheObject(redisKey, JSON.toJSONString(vehOperConfig)); + } + + return result; + } + + @Override + public int deleteVehOperConfigByIds(Long[] ids) { + for (Long id : ids) { + redisCache.deleteObject(getCacheKey(id)); + baseMapper.deleteById(id); + } + return ids.length; + } + + private String getCacheKey(String manufacturer, String vehType) { + return StrUtil.format("{}:{}:{}", VEH_OPER_CONFIG_KEY, manufacturer, vehType); + } + + private String getCacheKey(Long id) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.select(SysVehOperConfig::getManufacturer,SysVehOperConfig::getVehType) + .eq(SysVehOperConfig::getConfigId,id); + SysVehOperConfig config = this.getOne(wrapper); + return StrUtil.format("{}:{}:{}", VEH_OPER_CONFIG_KEY, config.getManufacturer(), config.getVehType()); + } +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/SysConfigServiceImpl.java b/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/SysConfigServiceImpl.java new file mode 100644 index 0000000..c696a26 --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/SysConfigServiceImpl.java @@ -0,0 +1,235 @@ +package com.cmvr.system.service.impl; + +import java.util.Collection; +import java.util.List; +import javax.annotation.PostConstruct; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.context.annotation.Primary; +import org.springframework.stereotype.Service; +import com.cmvr.common.annotation.DataSource; +import com.cmvr.common.constant.CacheConstants; +import com.cmvr.common.constant.UserConstants; +import com.cmvr.common.core.redis.RedisCache; +import com.cmvr.common.core.text.Convert; +import com.cmvr.common.enums.DataSourceType; +import com.cmvr.common.exception.ServiceException; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.system.domain.SysConfig; +import com.cmvr.system.mapper.SysConfigMapper; +import com.cmvr.system.service.ISysConfigService; + +/** + * 参数配置 服务层实现 + * + * @author cmvr-iot + */ +@Service +@Primary +public class SysConfigServiceImpl implements ISysConfigService +{ + @Autowired + private SysConfigMapper configMapper; + + @Autowired + private RedisCache redisCache; + + /** + * 项目启动时,初始化参数到缓存 + */ + @PostConstruct + public void init() + { + loadingConfigCache(); + } + + /** + * 查询参数配置信息 + * + * @param configId 参数配置ID + * @return 参数配置信息 + */ + @Override + @DataSource(DataSourceType.MASTER) + public SysConfig selectConfigById(Long configId) + { + SysConfig config = new SysConfig(); + config.setConfigId(configId); + return configMapper.selectConfig(config); + } + + /** + * 根据键名查询参数配置信息 + * + * @param configKey 参数key + * @return 参数键值 + */ + @Override + public String selectConfigByKey(String configKey) + { + String configValue = Convert.toStr(redisCache.getCacheObject(getCacheKey(configKey))); + if (StringUtils.isNotEmpty(configValue)) + { + return configValue; + } + SysConfig config = new SysConfig(); + config.setConfigKey(configKey); + SysConfig retConfig = configMapper.selectConfig(config); + if (StringUtils.isNotNull(retConfig)) + { + redisCache.setCacheObject(getCacheKey(configKey), retConfig.getConfigValue()); + return retConfig.getConfigValue(); + } + return StringUtils.EMPTY; + } + + /** + * 获取验证码开关 + * + * @return true开启,false关闭 + */ + @Override + public boolean selectCaptchaEnabled() + { + String captchaEnabled = selectConfigByKey("sys.account.captchaEnabled"); + if (StringUtils.isEmpty(captchaEnabled)) + { + return true; + } + return Convert.toBool(captchaEnabled); + } + + /** + * 查询参数配置列表 + * + * @param config 参数配置信息 + * @return 参数配置集合 + */ + @Override + public List selectConfigList(SysConfig config) + { + return configMapper.selectConfigList(config); + } + + /** + * 新增参数配置 + * + * @param config 参数配置信息 + * @return 结果 + */ + @Override + public int insertConfig(SysConfig config) + { + int row = configMapper.insertConfig(config); + if (row > 0) + { + redisCache.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue()); + } + return row; + } + + /** + * 修改参数配置 + * + * @param config 参数配置信息 + * @return 结果 + */ + @Override + public int updateConfig(SysConfig config) + { + SysConfig temp = configMapper.selectConfigById(config.getConfigId()); + if (!StringUtils.equals(temp.getConfigKey(), config.getConfigKey())) + { + redisCache.deleteObject(getCacheKey(temp.getConfigKey())); + } + + int row = configMapper.updateConfig(config); + if (row > 0) + { + redisCache.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue()); + } + return row; + } + + /** + * 批量删除参数信息 + * + * @param configIds 需要删除的参数ID + */ + @Override + public void deleteConfigByIds(Long[] configIds) + { + for (Long configId : configIds) + { + SysConfig config = selectConfigById(configId); + if (StringUtils.equals(UserConstants.YES, config.getConfigType())) + { + throw new ServiceException(String.format("内置参数【%1$s】不能删除 ", config.getConfigKey())); + } + configMapper.deleteConfigById(configId); + redisCache.deleteObject(getCacheKey(config.getConfigKey())); + } + } + + /** + * 加载参数缓存数据 + */ + @Override + public void loadingConfigCache() + { + List configsList = configMapper.selectConfigList(new SysConfig()); + for (SysConfig config : configsList) + { + redisCache.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue()); + } + } + + /** + * 清空参数缓存数据 + */ + @Override + public void clearConfigCache() + { + Collection keys = redisCache.keys(CacheConstants.SYS_CONFIG_KEY + "*"); + redisCache.deleteObject(keys); + } + + /** + * 重置参数缓存数据 + */ + @Override + public void resetConfigCache() + { + clearConfigCache(); + loadingConfigCache(); + } + + /** + * 校验参数键名是否唯一 + * + * @param config 参数配置信息 + * @return 结果 + */ + @Override + public boolean checkConfigKeyUnique(SysConfig config) + { + Long configId = StringUtils.isNull(config.getConfigId()) ? -1L : config.getConfigId(); + SysConfig info = configMapper.checkConfigKeyUnique(config.getConfigKey()); + if (StringUtils.isNotNull(info) && info.getConfigId().longValue() != configId.longValue()) + { + return UserConstants.NOT_UNIQUE; + } + return UserConstants.UNIQUE; + } + + /** + * 设置cache key + * + * @param configKey 参数键 + * @return 缓存键key + */ + private String getCacheKey(String configKey) + { + return CacheConstants.SYS_CONFIG_KEY + configKey; + } +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/SysDeptServiceImpl.java b/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/SysDeptServiceImpl.java new file mode 100644 index 0000000..cba9770 --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/SysDeptServiceImpl.java @@ -0,0 +1,338 @@ +package com.cmvr.system.service.impl; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.stream.Collectors; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.cmvr.common.annotation.DataScope; +import com.cmvr.common.constant.UserConstants; +import com.cmvr.common.core.domain.TreeSelect; +import com.cmvr.common.core.domain.entity.SysDept; +import com.cmvr.common.core.domain.entity.SysRole; +import com.cmvr.common.core.domain.entity.SysUser; +import com.cmvr.common.core.text.Convert; +import com.cmvr.common.exception.ServiceException; +import com.cmvr.common.utils.SecurityUtils; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.common.utils.spring.SpringUtils; +import com.cmvr.system.mapper.SysDeptMapper; +import com.cmvr.system.mapper.SysRoleMapper; +import com.cmvr.system.service.ISysDeptService; + +/** + * 部门管理 服务实现 + * + * @author cmvr-iot + */ +@Service +public class SysDeptServiceImpl implements ISysDeptService +{ + @Autowired + private SysDeptMapper deptMapper; + + @Autowired + private SysRoleMapper roleMapper; + + /** + * 查询部门管理数据 + * + * @param dept 部门信息 + * @return 部门信息集合 + */ + @Override + @DataScope(deptAlias = "d") + public List selectDeptList(SysDept dept) + { + return deptMapper.selectDeptList(dept); + } + + /** + * 查询部门树结构信息 + * + * @param dept 部门信息 + * @return 部门树信息集合 + */ + @Override + public List selectDeptTreeList(SysDept dept) + { + List depts = SpringUtils.getAopProxy(this).selectDeptList(dept); + return buildDeptTreeSelect(depts); + } + + /** + * 构建前端所需要树结构 + * + * @param depts 部门列表 + * @return 树结构列表 + */ + @Override + public List buildDeptTree(List depts) + { + List returnList = new ArrayList(); + List tempList = depts.stream().map(SysDept::getDeptId).collect(Collectors.toList()); + for (SysDept dept : depts) + { + // 如果是顶级节点, 遍历该父节点的所有子节点 + if (!tempList.contains(dept.getParentId())) + { + recursionFn(depts, dept); + returnList.add(dept); + } + } + if (returnList.isEmpty()) + { + returnList = depts; + } + return returnList; + } + + /** + * 构建前端所需要下拉树结构 + * + * @param depts 部门列表 + * @return 下拉树结构列表 + */ + @Override + public List buildDeptTreeSelect(List depts) + { + List deptTrees = buildDeptTree(depts); + return deptTrees.stream().map(TreeSelect::new).collect(Collectors.toList()); + } + + /** + * 根据角色ID查询部门树信息 + * + * @param roleId 角色ID + * @return 选中部门列表 + */ + @Override + public List selectDeptListByRoleId(Long roleId) + { + SysRole role = roleMapper.selectRoleById(roleId); + return deptMapper.selectDeptListByRoleId(roleId, role.isDeptCheckStrictly()); + } + + /** + * 根据部门ID查询信息 + * + * @param deptId 部门ID + * @return 部门信息 + */ + @Override + public SysDept selectDeptById(Long deptId) + { + return deptMapper.selectDeptById(deptId); + } + + /** + * 根据ID查询所有子部门(正常状态) + * + * @param deptId 部门ID + * @return 子部门数 + */ + @Override + public int selectNormalChildrenDeptById(Long deptId) + { + return deptMapper.selectNormalChildrenDeptById(deptId); + } + + /** + * 是否存在子节点 + * + * @param deptId 部门ID + * @return 结果 + */ + @Override + public boolean hasChildByDeptId(Long deptId) + { + int result = deptMapper.hasChildByDeptId(deptId); + return result > 0; + } + + /** + * 查询部门是否存在用户 + * + * @param deptId 部门ID + * @return 结果 true 存在 false 不存在 + */ + @Override + public boolean checkDeptExistUser(Long deptId) + { + int result = deptMapper.checkDeptExistUser(deptId); + return result > 0; + } + + /** + * 校验部门名称是否唯一 + * + * @param dept 部门信息 + * @return 结果 + */ + @Override + public boolean checkDeptNameUnique(SysDept dept) + { + Long deptId = StringUtils.isNull(dept.getDeptId()) ? -1L : dept.getDeptId(); + SysDept info = deptMapper.checkDeptNameUnique(dept.getDeptName(), dept.getParentId()); + if (StringUtils.isNotNull(info) && info.getDeptId().longValue() != deptId.longValue()) + { + return UserConstants.NOT_UNIQUE; + } + return UserConstants.UNIQUE; + } + + /** + * 校验部门是否有数据权限 + * + * @param deptId 部门id + */ + @Override + public void checkDeptDataScope(Long deptId) + { + if (!SysUser.isAdmin(SecurityUtils.getUserId()) && StringUtils.isNotNull(deptId)) + { + SysDept dept = new SysDept(); + dept.setDeptId(deptId); + List depts = SpringUtils.getAopProxy(this).selectDeptList(dept); + if (StringUtils.isEmpty(depts)) + { + throw new ServiceException("没有权限访问部门数据!"); + } + } + } + + /** + * 新增保存部门信息 + * + * @param dept 部门信息 + * @return 结果 + */ + @Override + public int insertDept(SysDept dept) + { + SysDept info = deptMapper.selectDeptById(dept.getParentId()); + // 如果父节点不为正常状态,则不允许新增子节点 + if (!UserConstants.DEPT_NORMAL.equals(info.getStatus())) + { + throw new ServiceException("部门停用,不允许新增"); + } + dept.setAncestors(info.getAncestors() + "," + dept.getParentId()); + return deptMapper.insertDept(dept); + } + + /** + * 修改保存部门信息 + * + * @param dept 部门信息 + * @return 结果 + */ + @Override + public int updateDept(SysDept dept) + { + SysDept newParentDept = deptMapper.selectDeptById(dept.getParentId()); + SysDept oldDept = deptMapper.selectDeptById(dept.getDeptId()); + if (StringUtils.isNotNull(newParentDept) && StringUtils.isNotNull(oldDept)) + { + String newAncestors = newParentDept.getAncestors() + "," + newParentDept.getDeptId(); + String oldAncestors = oldDept.getAncestors(); + dept.setAncestors(newAncestors); + updateDeptChildren(dept.getDeptId(), newAncestors, oldAncestors); + } + int result = deptMapper.updateDept(dept); + if (UserConstants.DEPT_NORMAL.equals(dept.getStatus()) && StringUtils.isNotEmpty(dept.getAncestors()) + && !StringUtils.equals("0", dept.getAncestors())) + { + // 如果该部门是启用状态,则启用该部门的所有上级部门 + updateParentDeptStatusNormal(dept); + } + return result; + } + + /** + * 修改该部门的父级部门状态 + * + * @param dept 当前部门 + */ + private void updateParentDeptStatusNormal(SysDept dept) + { + String ancestors = dept.getAncestors(); + Long[] deptIds = Convert.toLongArray(ancestors); + deptMapper.updateDeptStatusNormal(deptIds); + } + + /** + * 修改子元素关系 + * + * @param deptId 被修改的部门ID + * @param newAncestors 新的父ID集合 + * @param oldAncestors 旧的父ID集合 + */ + public void updateDeptChildren(Long deptId, String newAncestors, String oldAncestors) + { + List children = deptMapper.selectChildrenDeptById(deptId); + for (SysDept child : children) + { + child.setAncestors(child.getAncestors().replaceFirst(oldAncestors, newAncestors)); + } + if (children.size() > 0) + { + deptMapper.updateDeptChildren(children); + } + } + + /** + * 删除部门管理信息 + * + * @param deptId 部门ID + * @return 结果 + */ + @Override + public int deleteDeptById(Long deptId) + { + return deptMapper.deleteDeptById(deptId); + } + + /** + * 递归列表 + */ + private void recursionFn(List list, SysDept t) + { + // 得到子节点列表 + List childList = getChildList(list, t); + t.setChildren(childList); + for (SysDept tChild : childList) + { + if (hasChild(list, tChild)) + { + recursionFn(list, tChild); + } + } + } + + /** + * 得到子节点列表 + */ + private List getChildList(List list, SysDept t) + { + List tlist = new ArrayList(); + Iterator it = list.iterator(); + while (it.hasNext()) + { + SysDept n = (SysDept) it.next(); + if (StringUtils.isNotNull(n.getParentId()) && n.getParentId().longValue() == t.getDeptId().longValue()) + { + tlist.add(n); + } + } + return tlist; + } + + /** + * 判断是否有子节点 + */ + private boolean hasChild(List list, SysDept t) + { + return getChildList(list, t).size() > 0; + } +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/SysDictDataServiceImpl.java b/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/SysDictDataServiceImpl.java new file mode 100644 index 0000000..205d54b --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/SysDictDataServiceImpl.java @@ -0,0 +1,111 @@ +package com.cmvr.system.service.impl; + +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.cmvr.common.core.domain.entity.SysDictData; +import com.cmvr.common.utils.DictUtils; +import com.cmvr.system.mapper.SysDictDataMapper; +import com.cmvr.system.service.ISysDictDataService; + +/** + * 字典 业务层处理 + * + * @author cmvr-iot + */ +@Service +public class SysDictDataServiceImpl implements ISysDictDataService +{ + @Autowired + private SysDictDataMapper dictDataMapper; + + /** + * 根据条件分页查询字典数据 + * + * @param dictData 字典数据信息 + * @return 字典数据集合信息 + */ + @Override + public List selectDictDataList(SysDictData dictData) + { + return dictDataMapper.selectDictDataList(dictData); + } + + /** + * 根据字典类型和字典键值查询字典数据信息 + * + * @param dictType 字典类型 + * @param dictValue 字典键值 + * @return 字典标签 + */ + @Override + public String selectDictLabel(String dictType, String dictValue) + { + return dictDataMapper.selectDictLabel(dictType, dictValue); + } + + /** + * 根据字典数据ID查询信息 + * + * @param dictCode 字典数据ID + * @return 字典数据 + */ + @Override + public SysDictData selectDictDataById(Long dictCode) + { + return dictDataMapper.selectDictDataById(dictCode); + } + + /** + * 批量删除字典数据信息 + * + * @param dictCodes 需要删除的字典数据ID + */ + @Override + public void deleteDictDataByIds(Long[] dictCodes) + { + for (Long dictCode : dictCodes) + { + SysDictData data = selectDictDataById(dictCode); + dictDataMapper.deleteDictDataById(dictCode); + List dictDatas = dictDataMapper.selectDictDataByType(data.getDictType()); + DictUtils.setDictCache(data.getDictType(), dictDatas); + } + } + + /** + * 新增保存字典数据信息 + * + * @param data 字典数据信息 + * @return 结果 + */ + @Override + public int insertDictData(SysDictData data) + { + int row = dictDataMapper.insertDictData(data); + if (row > 0) + { + List dictDatas = dictDataMapper.selectDictDataByType(data.getDictType()); + DictUtils.setDictCache(data.getDictType(), dictDatas); + } + return row; + } + + /** + * 修改保存字典数据信息 + * + * @param data 字典数据信息 + * @return 结果 + */ + @Override + public int updateDictData(SysDictData data) + { + int row = dictDataMapper.updateDictData(data); + if (row > 0) + { + List dictDatas = dictDataMapper.selectDictDataByType(data.getDictType()); + DictUtils.setDictCache(data.getDictType(), dictDatas); + } + return row; + } +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/SysDictTypeServiceImpl.java b/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/SysDictTypeServiceImpl.java new file mode 100644 index 0000000..30bf586 --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/SysDictTypeServiceImpl.java @@ -0,0 +1,223 @@ +package com.cmvr.system.service.impl; + +import java.util.Comparator; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import javax.annotation.PostConstruct; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import com.cmvr.common.constant.UserConstants; +import com.cmvr.common.core.domain.entity.SysDictData; +import com.cmvr.common.core.domain.entity.SysDictType; +import com.cmvr.common.exception.ServiceException; +import com.cmvr.common.utils.DictUtils; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.system.mapper.SysDictDataMapper; +import com.cmvr.system.mapper.SysDictTypeMapper; +import com.cmvr.system.service.ISysDictTypeService; + +/** + * 字典 业务层处理 + * + * @author cmvr-iot + */ +@Service +public class SysDictTypeServiceImpl implements ISysDictTypeService +{ + @Autowired + private SysDictTypeMapper dictTypeMapper; + + @Autowired + private SysDictDataMapper dictDataMapper; + + /** + * 项目启动时,初始化字典到缓存 + */ + @PostConstruct + public void init() + { + loadingDictCache(); + } + + /** + * 根据条件分页查询字典类型 + * + * @param dictType 字典类型信息 + * @return 字典类型集合信息 + */ + @Override + public List selectDictTypeList(SysDictType dictType) + { + return dictTypeMapper.selectDictTypeList(dictType); + } + + /** + * 根据所有字典类型 + * + * @return 字典类型集合信息 + */ + @Override + public List selectDictTypeAll() + { + return dictTypeMapper.selectDictTypeAll(); + } + + /** + * 根据字典类型查询字典数据 + * + * @param dictType 字典类型 + * @return 字典数据集合信息 + */ + @Override + public List selectDictDataByType(String dictType) + { + List dictDatas = DictUtils.getDictCache(dictType); + if (StringUtils.isNotEmpty(dictDatas)) + { + return dictDatas; + } + dictDatas = dictDataMapper.selectDictDataByType(dictType); + if (StringUtils.isNotEmpty(dictDatas)) + { + DictUtils.setDictCache(dictType, dictDatas); + return dictDatas; + } + return null; + } + + /** + * 根据字典类型ID查询信息 + * + * @param dictId 字典类型ID + * @return 字典类型 + */ + @Override + public SysDictType selectDictTypeById(Long dictId) + { + return dictTypeMapper.selectDictTypeById(dictId); + } + + /** + * 根据字典类型查询信息 + * + * @param dictType 字典类型 + * @return 字典类型 + */ + @Override + public SysDictType selectDictTypeByType(String dictType) + { + return dictTypeMapper.selectDictTypeByType(dictType); + } + + /** + * 批量删除字典类型信息 + * + * @param dictIds 需要删除的字典ID + */ + @Override + public void deleteDictTypeByIds(Long[] dictIds) + { + for (Long dictId : dictIds) + { + SysDictType dictType = selectDictTypeById(dictId); + if (dictDataMapper.countDictDataByType(dictType.getDictType()) > 0) + { + throw new ServiceException(String.format("%1$s已分配,不能删除", dictType.getDictName())); + } + dictTypeMapper.deleteDictTypeById(dictId); + DictUtils.removeDictCache(dictType.getDictType()); + } + } + + /** + * 加载字典缓存数据 + */ + @Override + public void loadingDictCache() + { + SysDictData dictData = new SysDictData(); + dictData.setStatus("0"); + Map> dictDataMap = dictDataMapper.selectDictDataList(dictData).stream().collect(Collectors.groupingBy(SysDictData::getDictType)); + for (Map.Entry> entry : dictDataMap.entrySet()) + { + DictUtils.setDictCache(entry.getKey(), entry.getValue().stream().sorted(Comparator.comparing(SysDictData::getDictSort)).collect(Collectors.toList())); + } + } + + /** + * 清空字典缓存数据 + */ + @Override + public void clearDictCache() + { + DictUtils.clearDictCache(); + } + + /** + * 重置字典缓存数据 + */ + @Override + public void resetDictCache() + { + clearDictCache(); + loadingDictCache(); + } + + /** + * 新增保存字典类型信息 + * + * @param dict 字典类型信息 + * @return 结果 + */ + @Override + public int insertDictType(SysDictType dict) + { + int row = dictTypeMapper.insertDictType(dict); + if (row > 0) + { + DictUtils.setDictCache(dict.getDictType(), null); + } + return row; + } + + /** + * 修改保存字典类型信息 + * + * @param dict 字典类型信息 + * @return 结果 + */ + @Override + @Transactional + public int updateDictType(SysDictType dict) + { + SysDictType oldDict = dictTypeMapper.selectDictTypeById(dict.getDictId()); + dictDataMapper.updateDictDataType(oldDict.getDictType(), dict.getDictType()); + int row = dictTypeMapper.updateDictType(dict); + if (row > 0) + { + List dictDatas = dictDataMapper.selectDictDataByType(dict.getDictType()); + DictUtils.setDictCache(dict.getDictType(), dictDatas); + } + return row; + } + + /** + * 校验字典类型称是否唯一 + * + * @param dict 字典类型 + * @return 结果 + */ + @Override + public boolean checkDictTypeUnique(SysDictType dict) + { + Long dictId = StringUtils.isNull(dict.getDictId()) ? -1L : dict.getDictId(); + SysDictType dictType = dictTypeMapper.checkDictTypeUnique(dict.getDictType()); + if (StringUtils.isNotNull(dictType) && dictType.getDictId().longValue() != dictId.longValue()) + { + return UserConstants.NOT_UNIQUE; + } + return UserConstants.UNIQUE; + } +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/SysGroupServiceImpl.java b/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/SysGroupServiceImpl.java new file mode 100644 index 0000000..39745c2 --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/SysGroupServiceImpl.java @@ -0,0 +1,94 @@ +package com.cmvr.system.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cmvr.common.core.domain.entity.SysGroup; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.system.mapper.SysGroupMapper; +import com.cmvr.system.service.ISysGroupService; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.List; + +/** + * 通用分组配置Service业务层处理 + * + * @author cmvr-iot + */ +@Service +public class SysGroupServiceImpl extends ServiceImpl implements ISysGroupService { + + /** + * 查询通用分组配置 + * + * @param groupId 通用分组配置主键 + * @return 通用分组配置 + */ + @Override + public SysGroup selectSysGroupByGroupId(Long groupId) { + return this.baseMapper.selectById(groupId); + } + + /** + * 查询通用分组配置列表 + * + * @param sysGroup 通用分组配置 + * @return 通用分组配置 + */ + @Override + public List selectSysGroupList(SysGroup sysGroup) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + + queryWrapper + .eq(sysGroup.getType() != null, SysGroup::getType, sysGroup.getType()) + .eq(StringUtils.isNotBlank(sysGroup.getGroupName()), SysGroup::getGroupName, sysGroup.getGroupName()) + .eq(StringUtils.isNotBlank(sysGroup.getDescription()), SysGroup::getDescription, sysGroup.getDescription()); + + return this.list(queryWrapper); + } + + /** + * 新增通用分组配置 + * + * @param sysGroup 通用分组配置 + * @return 结果 + */ + @Override + public int insertSysGroup(SysGroup sysGroup) { + return this.baseMapper.insert(sysGroup); + } + + /** + * 修改通用分组配置 + * + * @param sysGroup 通用分组配置 + * @return 结果 + */ + @Override + public int updateSysGroup(SysGroup sysGroup) { + return this.baseMapper.updateById(sysGroup); + } + + /** + * 批量删除通用分组配置 + * + * @param groupIds 需要删除的通用分组配置主键 + * @return 结果 + */ + @Override + public int deleteSysGroupByGroupIds(Long[] groupIds) { + return this.baseMapper.deleteBatchIds(Arrays.asList(groupIds)); + } + + /** + * 删除通用分组配置信息 + * + * @param groupId 通用分组配置主键 + * @return 结果 + */ + @Override + public int deleteSysGroupByGroupId(Long groupId) { + return this.baseMapper.deleteById(groupId); + } +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/SysLogininforServiceImpl.java b/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/SysLogininforServiceImpl.java new file mode 100644 index 0000000..12d0b70 --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/SysLogininforServiceImpl.java @@ -0,0 +1,66 @@ +package com.cmvr.system.service.impl; + +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Primary; +import org.springframework.stereotype.Service; +import com.cmvr.system.domain.SysLogininfor; +import com.cmvr.system.mapper.SysLogininforMapper; +import com.cmvr.system.service.ISysLogininforService; + +/** + * 系统访问日志情况信息 服务层处理 + * + * @author cmvr-iot + */ +@Service +public class SysLogininforServiceImpl implements ISysLogininforService +{ + + @Autowired + private SysLogininforMapper logininforMapper; + + /** + * 新增系统登录日志 + * + * @param logininfor 访问日志对象 + */ + @Override + public void insertLogininfor(SysLogininfor logininfor) + { + logininforMapper.insertLogininfor(logininfor); + } + + /** + * 查询系统登录日志集合 + * + * @param logininfor 访问日志对象 + * @return 登录记录集合 + */ + @Override + public List selectLogininforList(SysLogininfor logininfor) + { + return logininforMapper.selectLogininforList(logininfor); + } + + /** + * 批量删除系统登录日志 + * + * @param infoIds 需要删除的登录日志ID + * @return 结果 + */ + @Override + public int deleteLogininforByIds(Long[] infoIds) + { + return logininforMapper.deleteLogininforByIds(infoIds); + } + + /** + * 清空系统登录日志 + */ + @Override + public void cleanLogininfor() + { + logininforMapper.cleanLogininfor(); + } +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/SysMenuServiceImpl.java b/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/SysMenuServiceImpl.java new file mode 100644 index 0000000..c9320bd --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/SysMenuServiceImpl.java @@ -0,0 +1,543 @@ +package com.cmvr.system.service.impl; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.cmvr.common.constant.Constants; +import com.cmvr.common.constant.UserConstants; +import com.cmvr.common.core.domain.TreeSelect; +import com.cmvr.common.core.domain.entity.SysMenu; +import com.cmvr.common.core.domain.entity.SysRole; +import com.cmvr.common.core.domain.entity.SysUser; +import com.cmvr.common.utils.SecurityUtils; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.system.domain.vo.MetaVo; +import com.cmvr.system.domain.vo.RouterVo; +import com.cmvr.system.mapper.SysMenuMapper; +import com.cmvr.system.mapper.SysRoleMapper; +import com.cmvr.system.mapper.SysRoleMenuMapper; +import com.cmvr.system.service.ISysMenuService; + +/** + * 菜单 业务层处理 + * + * @author cmvr-iot + */ +@Service +public class SysMenuServiceImpl implements ISysMenuService +{ + public static final String PREMISSION_STRING = "perms[\"{0}\"]"; + + @Autowired + private SysMenuMapper menuMapper; + + @Autowired + private SysRoleMapper roleMapper; + + @Autowired + private SysRoleMenuMapper roleMenuMapper; + + /** + * 根据用户查询系统菜单列表 + * + * @param userId 用户ID + * @return 菜单列表 + */ + @Override + public List selectMenuList(Long userId) + { + return selectMenuList(new SysMenu(), userId); + } + + /** + * 查询系统菜单列表 + * + * @param menu 菜单信息 + * @return 菜单列表 + */ + @Override + public List selectMenuList(SysMenu menu, Long userId) + { + List menuList = null; + // 管理员显示所有菜单信息 + if (SysUser.isAdmin(userId)) + { + menuList = menuMapper.selectMenuList(menu); + } + else + { + menu.getParams().put("userId", userId); + menuList = menuMapper.selectMenuListByUserId(menu); + } + return menuList; + } + + /** + * 根据用户ID查询权限 + * + * @param userId 用户ID + * @return 权限列表 + */ + @Override + public Set selectMenuPermsByUserId(Long userId) + { + List perms = menuMapper.selectMenuPermsByUserId(userId); + Set permsSet = new HashSet<>(); + for (String perm : perms) + { + if (StringUtils.isNotEmpty(perm)) + { + permsSet.addAll(Arrays.asList(perm.trim().split(","))); + } + } + return permsSet; + } + + /** + * 根据角色ID查询权限 + * + * @param roleId 角色ID + * @return 权限列表 + */ + @Override + public Set selectMenuPermsByRoleId(Long roleId) + { + List perms = menuMapper.selectMenuPermsByRoleId(roleId); + Set permsSet = new HashSet<>(); + for (String perm : perms) + { + if (StringUtils.isNotEmpty(perm)) + { + permsSet.addAll(Arrays.asList(perm.trim().split(","))); + } + } + return permsSet; + } + + /** + * 根据用户ID查询菜单 + * + * @param userId 用户名称 + * @return 菜单列表 + */ + @Override + public List selectMenuTreeByUserId(Long userId) + { + List menus = null; + if (SecurityUtils.isAdmin(userId)) + { + menus = menuMapper.selectMenuTreeAll(); + } + else + { + menus = menuMapper.selectMenuTreeByUserId(userId); + } + return getChildPerms(menus, 0); + } + + /** + * 根据角色ID查询菜单树信息 + * + * @param roleId 角色ID + * @return 选中菜单列表 + */ + @Override + public List selectMenuListByRoleId(Long roleId) + { + SysRole role = roleMapper.selectRoleById(roleId); + return menuMapper.selectMenuListByRoleId(roleId, role.isMenuCheckStrictly()); + } + + /** + * 构建前端路由所需要的菜单 + * + * @param menus 菜单列表 + * @return 路由列表 + */ + @Override + public List buildMenus(List menus) + { + List routers = new LinkedList(); + for (SysMenu menu : menus) + { + RouterVo router = new RouterVo(); + router.setHidden("1".equals(menu.getVisible())); + router.setName(getRouteName(menu)); + router.setPath(getRouterPath(menu)); + router.setComponent(getComponent(menu)); + router.setQuery(menu.getQuery()); + router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), StringUtils.equals("1", menu.getIsCache()), menu.getPath())); + List cMenus = menu.getChildren(); + if (StringUtils.isNotEmpty(cMenus) && UserConstants.TYPE_DIR.equals(menu.getMenuType())) + { + router.setAlwaysShow(true); + router.setRedirect("noRedirect"); + router.setChildren(buildMenus(cMenus)); + } + else if (isMenuFrame(menu)) + { + router.setMeta(null); + List childrenList = new ArrayList(); + RouterVo children = new RouterVo(); + children.setPath(menu.getPath()); + children.setComponent(menu.getComponent()); + children.setName(getRouteName(menu.getRouteName(), menu.getPath())); + children.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), StringUtils.equals("1", menu.getIsCache()), menu.getPath())); + children.setQuery(menu.getQuery()); + childrenList.add(children); + router.setChildren(childrenList); + } + else if (menu.getParentId().intValue() == 0 && isInnerLink(menu)) + { + router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon())); + router.setPath("/"); + List childrenList = new ArrayList(); + RouterVo children = new RouterVo(); + String routerPath = innerLinkReplaceEach(menu.getPath()); + children.setPath(routerPath); + children.setComponent(UserConstants.INNER_LINK); + children.setName(getRouteName(menu.getRouteName(), routerPath)); + children.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), menu.getPath())); + childrenList.add(children); + router.setChildren(childrenList); + } + routers.add(router); + } + return routers; + } + + /** + * 构建前端所需要树结构 + * + * @param menus 菜单列表 + * @return 树结构列表 + */ + @Override + public List buildMenuTree(List menus) + { + List returnList = new ArrayList(); + List tempList = menus.stream().map(SysMenu::getMenuId).collect(Collectors.toList()); + for (Iterator iterator = menus.iterator(); iterator.hasNext();) + { + SysMenu menu = (SysMenu) iterator.next(); + // 如果是顶级节点, 遍历该父节点的所有子节点 + if (!tempList.contains(menu.getParentId())) + { + recursionFn(menus, menu); + returnList.add(menu); + } + } + if (returnList.isEmpty()) + { + returnList = menus; + } + return returnList; + } + + /** + * 构建前端所需要下拉树结构 + * + * @param menus 菜单列表 + * @return 下拉树结构列表 + */ + @Override + public List buildMenuTreeSelect(List menus) + { + List menuTrees = buildMenuTree(menus); + return menuTrees.stream().map(TreeSelect::new).collect(Collectors.toList()); + } + + /** + * 根据菜单ID查询信息 + * + * @param menuId 菜单ID + * @return 菜单信息 + */ + @Override + public SysMenu selectMenuById(Long menuId) + { + return menuMapper.selectMenuById(menuId); + } + + /** + * 是否存在菜单子节点 + * + * @param menuId 菜单ID + * @return 结果 + */ + @Override + public boolean hasChildByMenuId(Long menuId) + { + int result = menuMapper.hasChildByMenuId(menuId); + return result > 0; + } + + /** + * 查询菜单使用数量 + * + * @param menuId 菜单ID + * @return 结果 + */ + @Override + public boolean checkMenuExistRole(Long menuId) + { + int result = roleMenuMapper.checkMenuExistRole(menuId); + return result > 0; + } + + /** + * 新增保存菜单信息 + * + * @param menu 菜单信息 + * @return 结果 + */ + @Override + public int insertMenu(SysMenu menu) + { + return menuMapper.insertMenu(menu); + } + + /** + * 修改保存菜单信息 + * + * @param menu 菜单信息 + * @return 结果 + */ + @Override + public int updateMenu(SysMenu menu) + { + return menuMapper.updateMenu(menu); + } + + /** + * 删除菜单管理信息 + * + * @param menuId 菜单ID + * @return 结果 + */ + @Override + public int deleteMenuById(Long menuId) + { + return menuMapper.deleteMenuById(menuId); + } + + /** + * 校验菜单名称是否唯一 + * + * @param menu 菜单信息 + * @return 结果 + */ + @Override + public boolean checkMenuNameUnique(SysMenu menu) + { + Long menuId = StringUtils.isNull(menu.getMenuId()) ? -1L : menu.getMenuId(); + SysMenu info = menuMapper.checkMenuNameUnique(menu.getMenuName(), menu.getParentId()); + if (StringUtils.isNotNull(info) && info.getMenuId().longValue() != menuId.longValue()) + { + return UserConstants.NOT_UNIQUE; + } + return UserConstants.UNIQUE; + } + + /** + * 获取路由名称 + * + * @param menu 菜单信息 + * @return 路由名称 + */ + public String getRouteName(SysMenu menu) + { + // 非外链并且是一级目录(类型为目录) + if (isMenuFrame(menu)) + { + return StringUtils.EMPTY; + } + return getRouteName(menu.getRouteName(), menu.getPath()); + } + + /** + * 获取路由名称,如没有配置路由名称则取路由地址 + * + * @param routerName 路由名称 + * @param path 路由地址 + * @return 路由名称(驼峰格式) + */ + public String getRouteName(String name, String path) + { + String routerName = StringUtils.isNotEmpty(name) ? name : path; + return StringUtils.capitalize(routerName); + } + + /** + * 获取路由地址 + * + * @param menu 菜单信息 + * @return 路由地址 + */ + public String getRouterPath(SysMenu menu) + { + String routerPath = menu.getPath(); + // 内链打开外网方式 + if (menu.getParentId().intValue() != 0 && isInnerLink(menu)) + { + routerPath = innerLinkReplaceEach(routerPath); + } + // 非外链并且是一级目录(类型为目录) + if (0 == menu.getParentId().intValue() && UserConstants.TYPE_DIR.equals(menu.getMenuType()) + && UserConstants.NO_FRAME.equals(menu.getIsFrame())) + { + routerPath = "/" + menu.getPath(); + } + // 非外链并且是一级目录(类型为菜单) + else if (isMenuFrame(menu)) + { + routerPath = "/"; + } + return routerPath; + } + + /** + * 获取组件信息 + * + * @param menu 菜单信息 + * @return 组件信息 + */ + public String getComponent(SysMenu menu) + { + String component = UserConstants.LAYOUT; + if (StringUtils.isNotEmpty(menu.getComponent()) && !isMenuFrame(menu)) + { + component = menu.getComponent(); + } + else if (StringUtils.isEmpty(menu.getComponent()) && menu.getParentId().intValue() != 0 && isInnerLink(menu)) + { + component = UserConstants.INNER_LINK; + } + else if (StringUtils.isEmpty(menu.getComponent()) && isParentView(menu)) + { + component = UserConstants.PARENT_VIEW; + } + return component; + } + + /** + * 是否为菜单内部跳转 + * + * @param menu 菜单信息 + * @return 结果 + */ + public boolean isMenuFrame(SysMenu menu) + { + return menu.getParentId().intValue() == 0 && UserConstants.TYPE_MENU.equals(menu.getMenuType()) + && menu.getIsFrame().equals(UserConstants.NO_FRAME); + } + + /** + * 是否为内链组件 + * + * @param menu 菜单信息 + * @return 结果 + */ + public boolean isInnerLink(SysMenu menu) + { + return menu.getIsFrame().equals(UserConstants.NO_FRAME) && StringUtils.ishttp(menu.getPath()); + } + + /** + * 是否为parent_view组件 + * + * @param menu 菜单信息 + * @return 结果 + */ + public boolean isParentView(SysMenu menu) + { + return menu.getParentId().intValue() != 0 && UserConstants.TYPE_DIR.equals(menu.getMenuType()); + } + + /** + * 根据父节点的ID获取所有子节点 + * + * @param list 分类表 + * @param parentId 传入的父节点ID + * @return String + */ + public List getChildPerms(List list, int parentId) + { + List returnList = new ArrayList(); + for (Iterator iterator = list.iterator(); iterator.hasNext();) + { + SysMenu t = (SysMenu) iterator.next(); + // 一、根据传入的某个父节点ID,遍历该父节点的所有子节点 + if (t.getParentId() == parentId) + { + recursionFn(list, t); + returnList.add(t); + } + } + return returnList; + } + + /** + * 递归列表 + * + * @param list 分类表 + * @param t 子节点 + */ + private void recursionFn(List list, SysMenu t) + { + // 得到子节点列表 + List childList = getChildList(list, t); + t.setChildren(childList); + for (SysMenu tChild : childList) + { + if (hasChild(list, tChild)) + { + recursionFn(list, tChild); + } + } + } + + /** + * 得到子节点列表 + */ + private List getChildList(List list, SysMenu t) + { + List tlist = new ArrayList(); + Iterator it = list.iterator(); + while (it.hasNext()) + { + SysMenu n = (SysMenu) it.next(); + if (n.getParentId().longValue() == t.getMenuId().longValue()) + { + tlist.add(n); + } + } + return tlist; + } + + /** + * 判断是否有子节点 + */ + private boolean hasChild(List list, SysMenu t) + { + return getChildList(list, t).size() > 0; + } + + /** + * 内链域名特殊字符替换 + * + * @return 替换后的内链域名 + */ + public String innerLinkReplaceEach(String path) + { + return StringUtils.replaceEach(path, new String[] { Constants.HTTP, Constants.HTTPS, Constants.WWW, ".", ":" }, + new String[] { "", "", "", "/", "/" }); + } +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/SysNoticeServiceImpl.java b/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/SysNoticeServiceImpl.java new file mode 100644 index 0000000..daf3a45 --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/SysNoticeServiceImpl.java @@ -0,0 +1,92 @@ +package com.cmvr.system.service.impl; + +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.cmvr.system.domain.SysNotice; +import com.cmvr.system.mapper.SysNoticeMapper; +import com.cmvr.system.service.ISysNoticeService; + +/** + * 公告 服务层实现 + * + * @author cmvr-iot + */ +@Service +public class SysNoticeServiceImpl implements ISysNoticeService +{ + @Autowired + private SysNoticeMapper noticeMapper; + + /** + * 查询公告信息 + * + * @param noticeId 公告ID + * @return 公告信息 + */ + @Override + public SysNotice selectNoticeById(Long noticeId) + { + return noticeMapper.selectNoticeById(noticeId); + } + + /** + * 查询公告列表 + * + * @param notice 公告信息 + * @return 公告集合 + */ + @Override + public List selectNoticeList(SysNotice notice) + { + return noticeMapper.selectNoticeList(notice); + } + + /** + * 新增公告 + * + * @param notice 公告信息 + * @return 结果 + */ + @Override + public int insertNotice(SysNotice notice) + { + return noticeMapper.insertNotice(notice); + } + + /** + * 修改公告 + * + * @param notice 公告信息 + * @return 结果 + */ + @Override + public int updateNotice(SysNotice notice) + { + return noticeMapper.updateNotice(notice); + } + + /** + * 删除公告对象 + * + * @param noticeId 公告ID + * @return 结果 + */ + @Override + public int deleteNoticeById(Long noticeId) + { + return noticeMapper.deleteNoticeById(noticeId); + } + + /** + * 批量删除公告信息 + * + * @param noticeIds 需要删除的公告ID + * @return 结果 + */ + @Override + public int deleteNoticeByIds(Long[] noticeIds) + { + return noticeMapper.deleteNoticeByIds(noticeIds); + } +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/SysOperLogServiceImpl.java b/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/SysOperLogServiceImpl.java new file mode 100644 index 0000000..05bd5f4 --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/SysOperLogServiceImpl.java @@ -0,0 +1,77 @@ +package com.cmvr.system.service.impl; + +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Primary; +import org.springframework.stereotype.Service; +import com.cmvr.system.domain.SysOperLog; +import com.cmvr.system.mapper.SysOperLogMapper; +import com.cmvr.system.service.ISysOperLogService; + +/** + * 操作日志 服务层处理 + * + * @author cmvr-iot + */ +@Service +public class SysOperLogServiceImpl implements ISysOperLogService +{ + @Autowired + private SysOperLogMapper operLogMapper; + + /** + * 新增操作日志 + * + * @param operLog 操作日志对象 + */ + @Override + public void insertOperlog(SysOperLog operLog) + { + operLogMapper.insertOperlog(operLog); + } + + /** + * 查询系统操作日志集合 + * + * @param operLog 操作日志对象 + * @return 操作日志集合 + */ + @Override + public List selectOperLogList(SysOperLog operLog) + { + return operLogMapper.selectOperLogList(operLog); + } + + /** + * 批量删除系统操作日志 + * + * @param operIds 需要删除的操作日志ID + * @return 结果 + */ + @Override + public int deleteOperLogByIds(Long[] operIds) + { + return operLogMapper.deleteOperLogByIds(operIds); + } + + /** + * 查询操作日志详细 + * + * @param operId 操作ID + * @return 操作日志对象 + */ + @Override + public SysOperLog selectOperLogById(Long operId) + { + return operLogMapper.selectOperLogById(operId); + } + + /** + * 清空操作日志 + */ + @Override + public void cleanOperLog() + { + operLogMapper.cleanOperLog(); + } +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/SysPostServiceImpl.java b/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/SysPostServiceImpl.java new file mode 100644 index 0000000..db49083 --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/SysPostServiceImpl.java @@ -0,0 +1,178 @@ +package com.cmvr.system.service.impl; + +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.cmvr.common.constant.UserConstants; +import com.cmvr.common.exception.ServiceException; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.system.domain.SysPost; +import com.cmvr.system.mapper.SysPostMapper; +import com.cmvr.system.mapper.SysUserPostMapper; +import com.cmvr.system.service.ISysPostService; + +/** + * 岗位信息 服务层处理 + * + * @author cmvr-iot + */ +@Service +public class SysPostServiceImpl implements ISysPostService +{ + @Autowired + private SysPostMapper postMapper; + + @Autowired + private SysUserPostMapper userPostMapper; + + /** + * 查询岗位信息集合 + * + * @param post 岗位信息 + * @return 岗位信息集合 + */ + @Override + public List selectPostList(SysPost post) + { + return postMapper.selectPostList(post); + } + + /** + * 查询所有岗位 + * + * @return 岗位列表 + */ + @Override + public List selectPostAll() + { + return postMapper.selectPostAll(); + } + + /** + * 通过岗位ID查询岗位信息 + * + * @param postId 岗位ID + * @return 角色对象信息 + */ + @Override + public SysPost selectPostById(Long postId) + { + return postMapper.selectPostById(postId); + } + + /** + * 根据用户ID获取岗位选择框列表 + * + * @param userId 用户ID + * @return 选中岗位ID列表 + */ + @Override + public List selectPostListByUserId(Long userId) + { + return postMapper.selectPostListByUserId(userId); + } + + /** + * 校验岗位名称是否唯一 + * + * @param post 岗位信息 + * @return 结果 + */ + @Override + public boolean checkPostNameUnique(SysPost post) + { + Long postId = StringUtils.isNull(post.getPostId()) ? -1L : post.getPostId(); + SysPost info = postMapper.checkPostNameUnique(post.getPostName()); + if (StringUtils.isNotNull(info) && info.getPostId().longValue() != postId.longValue()) + { + return UserConstants.NOT_UNIQUE; + } + return UserConstants.UNIQUE; + } + + /** + * 校验岗位编码是否唯一 + * + * @param post 岗位信息 + * @return 结果 + */ + @Override + public boolean checkPostCodeUnique(SysPost post) + { + Long postId = StringUtils.isNull(post.getPostId()) ? -1L : post.getPostId(); + SysPost info = postMapper.checkPostCodeUnique(post.getPostCode()); + if (StringUtils.isNotNull(info) && info.getPostId().longValue() != postId.longValue()) + { + return UserConstants.NOT_UNIQUE; + } + return UserConstants.UNIQUE; + } + + /** + * 通过岗位ID查询岗位使用数量 + * + * @param postId 岗位ID + * @return 结果 + */ + @Override + public int countUserPostById(Long postId) + { + return userPostMapper.countUserPostById(postId); + } + + /** + * 删除岗位信息 + * + * @param postId 岗位ID + * @return 结果 + */ + @Override + public int deletePostById(Long postId) + { + return postMapper.deletePostById(postId); + } + + /** + * 批量删除岗位信息 + * + * @param postIds 需要删除的岗位ID + * @return 结果 + */ + @Override + public int deletePostByIds(Long[] postIds) + { + for (Long postId : postIds) + { + SysPost post = selectPostById(postId); + if (countUserPostById(postId) > 0) + { + throw new ServiceException(String.format("%1$s已分配,不能删除", post.getPostName())); + } + } + return postMapper.deletePostByIds(postIds); + } + + /** + * 新增保存岗位信息 + * + * @param post 岗位信息 + * @return 结果 + */ + @Override + public int insertPost(SysPost post) + { + return postMapper.insertPost(post); + } + + /** + * 修改保存岗位信息 + * + * @param post 岗位信息 + * @return 结果 + */ + @Override + public int updatePost(SysPost post) + { + return postMapper.updatePost(post); + } +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/SysRoleServiceImpl.java b/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/SysRoleServiceImpl.java new file mode 100644 index 0000000..2faf537 --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/SysRoleServiceImpl.java @@ -0,0 +1,427 @@ +package com.cmvr.system.service.impl; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import com.cmvr.common.annotation.DataScope; +import com.cmvr.common.constant.UserConstants; +import com.cmvr.common.core.domain.entity.SysRole; +import com.cmvr.common.core.domain.entity.SysUser; +import com.cmvr.common.exception.ServiceException; +import com.cmvr.common.utils.SecurityUtils; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.common.utils.spring.SpringUtils; +import com.cmvr.system.domain.SysRoleDept; +import com.cmvr.system.domain.SysRoleMenu; +import com.cmvr.system.domain.SysUserRole; +import com.cmvr.system.mapper.SysRoleDeptMapper; +import com.cmvr.system.mapper.SysRoleMapper; +import com.cmvr.system.mapper.SysRoleMenuMapper; +import com.cmvr.system.mapper.SysUserRoleMapper; +import com.cmvr.system.service.ISysRoleService; + +/** + * 角色 业务层处理 + * + * @author cmvr-iot + */ +@Service +public class SysRoleServiceImpl implements ISysRoleService +{ + @Autowired + private SysRoleMapper roleMapper; + + @Autowired + private SysRoleMenuMapper roleMenuMapper; + + @Autowired + private SysUserRoleMapper userRoleMapper; + + @Autowired + private SysRoleDeptMapper roleDeptMapper; + + /** + * 根据条件分页查询角色数据 + * + * @param role 角色信息 + * @return 角色数据集合信息 + */ + @Override + @DataScope(deptAlias = "d") + public List selectRoleList(SysRole role) + { + return roleMapper.selectRoleList(role); + } + + /** + * 根据用户ID查询角色 + * + * @param userId 用户ID + * @return 角色列表 + */ + @Override + public List selectRolesByUserId(Long userId) + { + List userRoles = roleMapper.selectRolePermissionByUserId(userId); + List roles = selectRoleAll(); + for (SysRole role : roles) + { + for (SysRole userRole : userRoles) + { + if (role.getRoleId().longValue() == userRole.getRoleId().longValue()) + { + role.setFlag(true); + break; + } + } + } + return roles; + } + + /** + * 根据用户ID查询权限 + * + * @param userId 用户ID + * @return 权限列表 + */ + @Override + public Set selectRolePermissionByUserId(Long userId) + { + List perms = roleMapper.selectRolePermissionByUserId(userId); + Set permsSet = new HashSet<>(); + for (SysRole perm : perms) + { + if (StringUtils.isNotNull(perm)) + { + permsSet.addAll(Arrays.asList(perm.getRoleKey().trim().split(","))); + } + } + return permsSet; + } + + /** + * 查询所有角色 + * + * @return 角色列表 + */ + @Override + public List selectRoleAll() + { + return SpringUtils.getAopProxy(this).selectRoleList(new SysRole()); + } + + /** + * 根据用户ID获取角色选择框列表 + * + * @param userId 用户ID + * @return 选中角色ID列表 + */ + @Override + public List selectRoleListByUserId(Long userId) + { + return roleMapper.selectRoleListByUserId(userId); + } + + /** + * 通过角色ID查询角色 + * + * @param roleId 角色ID + * @return 角色对象信息 + */ + @Override + public SysRole selectRoleById(Long roleId) + { + return roleMapper.selectRoleById(roleId); + } + + /** + * 校验角色名称是否唯一 + * + * @param role 角色信息 + * @return 结果 + */ + @Override + public boolean checkRoleNameUnique(SysRole role) + { + Long roleId = StringUtils.isNull(role.getRoleId()) ? -1L : role.getRoleId(); + SysRole info = roleMapper.checkRoleNameUnique(role.getRoleName()); + if (StringUtils.isNotNull(info) && info.getRoleId().longValue() != roleId.longValue()) + { + return UserConstants.NOT_UNIQUE; + } + return UserConstants.UNIQUE; + } + + /** + * 校验角色权限是否唯一 + * + * @param role 角色信息 + * @return 结果 + */ + @Override + public boolean checkRoleKeyUnique(SysRole role) + { + Long roleId = StringUtils.isNull(role.getRoleId()) ? -1L : role.getRoleId(); + SysRole info = roleMapper.checkRoleKeyUnique(role.getRoleKey()); + if (StringUtils.isNotNull(info) && info.getRoleId().longValue() != roleId.longValue()) + { + return UserConstants.NOT_UNIQUE; + } + return UserConstants.UNIQUE; + } + + /** + * 校验角色是否允许操作 + * + * @param role 角色信息 + */ + @Override + public void checkRoleAllowed(SysRole role) + { + if (StringUtils.isNotNull(role.getRoleId()) && role.isAdmin()) + { + throw new ServiceException("不允许操作超级管理员角色"); + } + } + + /** + * 校验角色是否有数据权限 + * + * @param roleIds 角色id + */ + @Override + public void checkRoleDataScope(Long... roleIds) + { + if (!SysUser.isAdmin(SecurityUtils.getUserId())) + { + for (Long roleId : roleIds) + { + SysRole role = new SysRole(); + role.setRoleId(roleId); + List roles = SpringUtils.getAopProxy(this).selectRoleList(role); + if (StringUtils.isEmpty(roles)) + { + throw new ServiceException("没有权限访问角色数据!"); + } + } + } + } + + /** + * 通过角色ID查询角色使用数量 + * + * @param roleId 角色ID + * @return 结果 + */ + @Override + public int countUserRoleByRoleId(Long roleId) + { + return userRoleMapper.countUserRoleByRoleId(roleId); + } + + /** + * 新增保存角色信息 + * + * @param role 角色信息 + * @return 结果 + */ + @Override + @Transactional + public int insertRole(SysRole role) + { + // 新增角色信息 + roleMapper.insertRole(role); + return insertRoleMenu(role); + } + + /** + * 修改保存角色信息 + * + * @param role 角色信息 + * @return 结果 + */ + @Override + @Transactional + public int updateRole(SysRole role) + { + // 修改角色信息 + roleMapper.updateRole(role); + // 删除角色与菜单关联 + roleMenuMapper.deleteRoleMenuByRoleId(role.getRoleId()); + return insertRoleMenu(role); + } + + /** + * 修改角色状态 + * + * @param role 角色信息 + * @return 结果 + */ + @Override + public int updateRoleStatus(SysRole role) + { + return roleMapper.updateRole(role); + } + + /** + * 修改数据权限信息 + * + * @param role 角色信息 + * @return 结果 + */ + @Override + @Transactional + public int authDataScope(SysRole role) + { + // 修改角色信息 + roleMapper.updateRole(role); + // 删除角色与部门关联 + roleDeptMapper.deleteRoleDeptByRoleId(role.getRoleId()); + // 新增角色和部门信息(数据权限) + return insertRoleDept(role); + } + + /** + * 新增角色菜单信息 + * + * @param role 角色对象 + */ + public int insertRoleMenu(SysRole role) + { + int rows = 1; + // 新增用户与角色管理 + List list = new ArrayList(); + for (Long menuId : role.getMenuIds()) + { + SysRoleMenu rm = new SysRoleMenu(); + rm.setRoleId(role.getRoleId()); + rm.setMenuId(menuId); + list.add(rm); + } + if (list.size() > 0) + { + rows = roleMenuMapper.batchRoleMenu(list); + } + return rows; + } + + /** + * 新增角色部门信息(数据权限) + * + * @param role 角色对象 + */ + public int insertRoleDept(SysRole role) + { + int rows = 1; + // 新增角色与部门(数据权限)管理 + List list = new ArrayList(); + for (Long deptId : role.getDeptIds()) + { + SysRoleDept rd = new SysRoleDept(); + rd.setRoleId(role.getRoleId()); + rd.setDeptId(deptId); + list.add(rd); + } + if (list.size() > 0) + { + rows = roleDeptMapper.batchRoleDept(list); + } + return rows; + } + + /** + * 通过角色ID删除角色 + * + * @param roleId 角色ID + * @return 结果 + */ + @Override + @Transactional + public int deleteRoleById(Long roleId) + { + // 删除角色与菜单关联 + roleMenuMapper.deleteRoleMenuByRoleId(roleId); + // 删除角色与部门关联 + roleDeptMapper.deleteRoleDeptByRoleId(roleId); + return roleMapper.deleteRoleById(roleId); + } + + /** + * 批量删除角色信息 + * + * @param roleIds 需要删除的角色ID + * @return 结果 + */ + @Override + @Transactional + public int deleteRoleByIds(Long[] roleIds) + { + for (Long roleId : roleIds) + { + checkRoleAllowed(new SysRole(roleId)); + checkRoleDataScope(roleId); + SysRole role = selectRoleById(roleId); + if (countUserRoleByRoleId(roleId) > 0) + { + throw new ServiceException(String.format("%1$s已分配,不能删除", role.getRoleName())); + } + } + // 删除角色与菜单关联 + roleMenuMapper.deleteRoleMenu(roleIds); + // 删除角色与部门关联 + roleDeptMapper.deleteRoleDept(roleIds); + return roleMapper.deleteRoleByIds(roleIds); + } + + /** + * 取消授权用户角色 + * + * @param userRole 用户和角色关联信息 + * @return 结果 + */ + @Override + public int deleteAuthUser(SysUserRole userRole) + { + return userRoleMapper.deleteUserRoleInfo(userRole); + } + + /** + * 批量取消授权用户角色 + * + * @param roleId 角色ID + * @param userIds 需要取消授权的用户数据ID + * @return 结果 + */ + @Override + public int deleteAuthUsers(Long roleId, Long[] userIds) + { + return userRoleMapper.deleteUserRoleInfos(roleId, userIds); + } + + /** + * 批量选择授权用户角色 + * + * @param roleId 角色ID + * @param userIds 需要授权的用户数据ID + * @return 结果 + */ + @Override + public int insertAuthUsers(Long roleId, Long[] userIds) + { + // 新增用户与角色管理 + List list = new ArrayList(); + for (Long userId : userIds) + { + SysUserRole ur = new SysUserRole(); + ur.setUserId(userId); + ur.setRoleId(roleId); + list.add(ur); + } + return userRoleMapper.batchUserRole(list); + } +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/SysUserOnlineServiceImpl.java b/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/SysUserOnlineServiceImpl.java new file mode 100644 index 0000000..c25f280 --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/SysUserOnlineServiceImpl.java @@ -0,0 +1,96 @@ +package com.cmvr.system.service.impl; + +import org.springframework.stereotype.Service; +import com.cmvr.common.core.domain.model.LoginUser; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.system.domain.SysUserOnline; +import com.cmvr.system.service.ISysUserOnlineService; + +/** + * 在线用户 服务层处理 + * + * @author cmvr-iot + */ +@Service +public class SysUserOnlineServiceImpl implements ISysUserOnlineService +{ + /** + * 通过登录地址查询信息 + * + * @param ipaddr 登录地址 + * @param user 用户信息 + * @return 在线用户信息 + */ + @Override + public SysUserOnline selectOnlineByIpaddr(String ipaddr, LoginUser user) + { + if (StringUtils.equals(ipaddr, user.getIpaddr())) + { + return loginUserToUserOnline(user); + } + return null; + } + + /** + * 通过用户名称查询信息 + * + * @param userName 用户名称 + * @param user 用户信息 + * @return 在线用户信息 + */ + @Override + public SysUserOnline selectOnlineByUserName(String userName, LoginUser user) + { + if (StringUtils.equals(userName, user.getUsername())) + { + return loginUserToUserOnline(user); + } + return null; + } + + /** + * 通过登录地址/用户名称查询信息 + * + * @param ipaddr 登录地址 + * @param userName 用户名称 + * @param user 用户信息 + * @return 在线用户信息 + */ + @Override + public SysUserOnline selectOnlineByInfo(String ipaddr, String userName, LoginUser user) + { + if (StringUtils.equals(ipaddr, user.getIpaddr()) && StringUtils.equals(userName, user.getUsername())) + { + return loginUserToUserOnline(user); + } + return null; + } + + /** + * 设置在线用户信息 + * + * @param user 用户信息 + * @return 在线用户 + */ + @Override + public SysUserOnline loginUserToUserOnline(LoginUser user) + { + if (StringUtils.isNull(user) || StringUtils.isNull(user.getUser())) + { + return null; + } + SysUserOnline sysUserOnline = new SysUserOnline(); + sysUserOnline.setTokenId(user.getToken()); + sysUserOnline.setUserName(user.getUsername()); + sysUserOnline.setIpaddr(user.getIpaddr()); + sysUserOnline.setLoginLocation(user.getLoginLocation()); + sysUserOnline.setBrowser(user.getBrowser()); + sysUserOnline.setOs(user.getOs()); + sysUserOnline.setLoginTime(user.getLoginTime()); + if (StringUtils.isNotNull(user.getUser().getDept())) + { + sysUserOnline.setDeptName(user.getUser().getDept().getDeptName()); + } + return sysUserOnline; + } +} diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/SysUserServiceImpl.java b/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/SysUserServiceImpl.java new file mode 100644 index 0000000..c7bf6ec --- /dev/null +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/service/impl/SysUserServiceImpl.java @@ -0,0 +1,550 @@ +package com.cmvr.system.service.impl; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; +import javax.validation.Validator; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; +import com.cmvr.common.annotation.DataScope; +import com.cmvr.common.constant.UserConstants; +import com.cmvr.common.core.domain.entity.SysRole; +import com.cmvr.common.core.domain.entity.SysUser; +import com.cmvr.common.exception.ServiceException; +import com.cmvr.common.utils.SecurityUtils; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.common.utils.bean.BeanValidators; +import com.cmvr.common.utils.spring.SpringUtils; +import com.cmvr.system.domain.SysPost; +import com.cmvr.system.domain.SysUserPost; +import com.cmvr.system.domain.SysUserRole; +import com.cmvr.system.mapper.SysPostMapper; +import com.cmvr.system.mapper.SysRoleMapper; +import com.cmvr.system.mapper.SysUserMapper; +import com.cmvr.system.mapper.SysUserPostMapper; +import com.cmvr.system.mapper.SysUserRoleMapper; +import com.cmvr.system.service.ISysConfigService; +import com.cmvr.system.service.ISysDeptService; +import com.cmvr.system.service.ISysUserService; + +/** + * 用户 业务层处理 + * + * @author cmvr-iot + */ +@Service +public class SysUserServiceImpl implements ISysUserService +{ + private static final Logger log = LoggerFactory.getLogger(SysUserServiceImpl.class); + + @Autowired + private SysUserMapper userMapper; + + @Autowired + private SysRoleMapper roleMapper; + + @Autowired + private SysPostMapper postMapper; + + @Autowired + private SysUserRoleMapper userRoleMapper; + + @Autowired + private SysUserPostMapper userPostMapper; + + @Autowired + private ISysConfigService configService; + + @Autowired + private ISysDeptService deptService; + + @Autowired + protected Validator validator; + + /** + * 根据条件分页查询用户列表 + * + * @param user 用户信息 + * @return 用户信息集合信息 + */ + @Override + @DataScope(deptAlias = "d", userAlias = "u") + public List selectUserList(SysUser user) + { + return userMapper.selectUserList(user); + } + + /** + * 根据条件分页查询已分配用户角色列表 + * + * @param user 用户信息 + * @return 用户信息集合信息 + */ + @Override + @DataScope(deptAlias = "d", userAlias = "u") + public List selectAllocatedList(SysUser user) + { + return userMapper.selectAllocatedList(user); + } + + /** + * 根据条件分页查询未分配用户角色列表 + * + * @param user 用户信息 + * @return 用户信息集合信息 + */ + @Override + @DataScope(deptAlias = "d", userAlias = "u") + public List selectUnallocatedList(SysUser user) + { + return userMapper.selectUnallocatedList(user); + } + + /** + * 通过用户名查询用户 + * + * @param userName 用户名 + * @return 用户对象信息 + */ + @Override + public SysUser selectUserByUserName(String userName) + { + return userMapper.selectUserByUserName(userName); + } + + /** + * 通过用户ID查询用户 + * + * @param userId 用户ID + * @return 用户对象信息 + */ + @Override + public SysUser selectUserById(Long userId) + { + return userMapper.selectUserById(userId); + } + + /** + * 查询用户所属角色组 + * + * @param userName 用户名 + * @return 结果 + */ + @Override + public String selectUserRoleGroup(String userName) + { + List list = roleMapper.selectRolesByUserName(userName); + if (CollectionUtils.isEmpty(list)) + { + return StringUtils.EMPTY; + } + return list.stream().map(SysRole::getRoleName).collect(Collectors.joining(",")); + } + + /** + * 查询用户所属岗位组 + * + * @param userName 用户名 + * @return 结果 + */ + @Override + public String selectUserPostGroup(String userName) + { + List list = postMapper.selectPostsByUserName(userName); + if (CollectionUtils.isEmpty(list)) + { + return StringUtils.EMPTY; + } + return list.stream().map(SysPost::getPostName).collect(Collectors.joining(",")); + } + + /** + * 校验用户名称是否唯一 + * + * @param user 用户信息 + * @return 结果 + */ + @Override + public boolean checkUserNameUnique(SysUser user) + { + Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId(); + SysUser info = userMapper.checkUserNameUnique(user.getUserName()); + if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) + { + return UserConstants.NOT_UNIQUE; + } + return UserConstants.UNIQUE; + } + + /** + * 校验手机号码是否唯一 + * + * @param user 用户信息 + * @return + */ + @Override + public boolean checkPhoneUnique(SysUser user) + { + Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId(); + SysUser info = userMapper.checkPhoneUnique(user.getPhonenumber()); + if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) + { + return UserConstants.NOT_UNIQUE; + } + return UserConstants.UNIQUE; + } + + /** + * 校验email是否唯一 + * + * @param user 用户信息 + * @return + */ + @Override + public boolean checkEmailUnique(SysUser user) + { + Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId(); + SysUser info = userMapper.checkEmailUnique(user.getEmail()); + if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) + { + return UserConstants.NOT_UNIQUE; + } + return UserConstants.UNIQUE; + } + + /** + * 校验用户是否允许操作 + * + * @param user 用户信息 + */ + @Override + public void checkUserAllowed(SysUser user) + { + if (StringUtils.isNotNull(user.getUserId()) && user.isAdmin()) + { + throw new ServiceException("不允许操作超级管理员用户"); + } + } + + /** + * 校验用户是否有数据权限 + * + * @param userId 用户id + */ + @Override + public void checkUserDataScope(Long userId) + { + if (!SysUser.isAdmin(SecurityUtils.getUserId())) + { + SysUser user = new SysUser(); + user.setUserId(userId); + List users = SpringUtils.getAopProxy(this).selectUserList(user); + if (StringUtils.isEmpty(users)) + { + throw new ServiceException("没有权限访问用户数据!"); + } + } + } + + /** + * 新增保存用户信息 + * + * @param user 用户信息 + * @return 结果 + */ + @Override + @Transactional + public int insertUser(SysUser user) + { + // 新增用户信息 + int rows = userMapper.insertUser(user); + // 新增用户岗位关联 + insertUserPost(user); + // 新增用户与角色管理 + insertUserRole(user); + return rows; + } + + /** + * 注册用户信息 + * + * @param user 用户信息 + * @return 结果 + */ + @Override + public boolean registerUser(SysUser user) + { + return userMapper.insertUser(user) > 0; + } + + /** + * 修改保存用户信息 + * + * @param user 用户信息 + * @return 结果 + */ + @Override + @Transactional + public int updateUser(SysUser user) + { + Long userId = user.getUserId(); + // 删除用户与角色关联 + userRoleMapper.deleteUserRoleByUserId(userId); + // 新增用户与角色管理 + insertUserRole(user); + // 删除用户与岗位关联 + userPostMapper.deleteUserPostByUserId(userId); + // 新增用户与岗位管理 + insertUserPost(user); + return userMapper.updateUser(user); + } + + /** + * 用户授权角色 + * + * @param userId 用户ID + * @param roleIds 角色组 + */ + @Override + @Transactional + public void insertUserAuth(Long userId, Long[] roleIds) + { + userRoleMapper.deleteUserRoleByUserId(userId); + insertUserRole(userId, roleIds); + } + + /** + * 修改用户状态 + * + * @param user 用户信息 + * @return 结果 + */ + @Override + public int updateUserStatus(SysUser user) + { + return userMapper.updateUser(user); + } + + /** + * 修改用户基本信息 + * + * @param user 用户信息 + * @return 结果 + */ + @Override + public int updateUserProfile(SysUser user) + { + return userMapper.updateUser(user); + } + + /** + * 修改用户头像 + * + * @param userName 用户名 + * @param avatar 头像地址 + * @return 结果 + */ + @Override + public boolean updateUserAvatar(String userName, String avatar) + { + return userMapper.updateUserAvatar(userName, avatar) > 0; + } + + /** + * 重置用户密码 + * + * @param user 用户信息 + * @return 结果 + */ + @Override + public int resetPwd(SysUser user) + { + return userMapper.updateUser(user); + } + + /** + * 重置用户密码 + * + * @param userName 用户名 + * @param password 密码 + * @return 结果 + */ + @Override + public int resetUserPwd(String userName, String password) + { + return userMapper.resetUserPwd(userName, password); + } + + /** + * 新增用户角色信息 + * + * @param user 用户对象 + */ + public void insertUserRole(SysUser user) + { + this.insertUserRole(user.getUserId(), user.getRoleIds()); + } + + /** + * 新增用户岗位信息 + * + * @param user 用户对象 + */ + public void insertUserPost(SysUser user) + { + Long[] posts = user.getPostIds(); + if (StringUtils.isNotEmpty(posts)) + { + // 新增用户与岗位管理 + List list = new ArrayList(posts.length); + for (Long postId : posts) + { + SysUserPost up = new SysUserPost(); + up.setUserId(user.getUserId()); + up.setPostId(postId); + list.add(up); + } + userPostMapper.batchUserPost(list); + } + } + + /** + * 新增用户角色信息 + * + * @param userId 用户ID + * @param roleIds 角色组 + */ + public void insertUserRole(Long userId, Long[] roleIds) + { + if (StringUtils.isNotEmpty(roleIds)) + { + // 新增用户与角色管理 + List list = new ArrayList(roleIds.length); + for (Long roleId : roleIds) + { + SysUserRole ur = new SysUserRole(); + ur.setUserId(userId); + ur.setRoleId(roleId); + list.add(ur); + } + userRoleMapper.batchUserRole(list); + } + } + + /** + * 通过用户ID删除用户 + * + * @param userId 用户ID + * @return 结果 + */ + @Override + @Transactional + public int deleteUserById(Long userId) + { + // 删除用户与角色关联 + userRoleMapper.deleteUserRoleByUserId(userId); + // 删除用户与岗位表 + userPostMapper.deleteUserPostByUserId(userId); + return userMapper.deleteUserById(userId); + } + + /** + * 批量删除用户信息 + * + * @param userIds 需要删除的用户ID + * @return 结果 + */ + @Override + @Transactional + public int deleteUserByIds(Long[] userIds) + { + for (Long userId : userIds) + { + checkUserAllowed(new SysUser(userId)); + checkUserDataScope(userId); + } + // 删除用户与角色关联 + userRoleMapper.deleteUserRole(userIds); + // 删除用户与岗位关联 + userPostMapper.deleteUserPost(userIds); + return userMapper.deleteUserByIds(userIds); + } + + /** + * 导入用户数据 + * + * @param userList 用户数据列表 + * @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据 + * @param operName 操作用户 + * @return 结果 + */ + @Override + public String importUser(List userList, Boolean isUpdateSupport, String operName) + { + if (StringUtils.isNull(userList) || userList.size() == 0) + { + throw new ServiceException("导入用户数据不能为空!"); + } + int successNum = 0; + int failureNum = 0; + StringBuilder successMsg = new StringBuilder(); + StringBuilder failureMsg = new StringBuilder(); + for (SysUser user : userList) + { + try + { + // 验证是否存在这个用户 + SysUser u = userMapper.selectUserByUserName(user.getUserName()); + if (StringUtils.isNull(u)) + { + BeanValidators.validateWithException(validator, user); + deptService.checkDeptDataScope(user.getDeptId()); + String password = configService.selectConfigByKey("sys.user.initPassword"); + user.setPassword(SecurityUtils.encryptPassword(password)); + user.setCreateBy(operName); + userMapper.insertUser(user); + successNum++; + successMsg.append("
" + successNum + "、账号 " + user.getUserName() + " 导入成功"); + } + else if (isUpdateSupport) + { + BeanValidators.validateWithException(validator, user); + checkUserAllowed(u); + checkUserDataScope(u.getUserId()); + deptService.checkDeptDataScope(user.getDeptId()); + user.setUserId(u.getUserId()); + user.setUpdateBy(operName); + userMapper.updateUser(user); + successNum++; + successMsg.append("
" + successNum + "、账号 " + user.getUserName() + " 更新成功"); + } + else + { + failureNum++; + failureMsg.append("
" + failureNum + "、账号 " + user.getUserName() + " 已存在"); + } + } + catch (Exception e) + { + failureNum++; + String msg = "
" + failureNum + "、账号 " + user.getUserName() + " 导入失败:"; + failureMsg.append(msg + e.getMessage()); + log.error(msg, e); + } + } + if (failureNum > 0) + { + failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:"); + throw new ServiceException(failureMsg.toString()); + } + else + { + successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:"); + } + return successMsg.toString(); + } +} diff --git a/cmvr-iot-system/src/main/resources/mapper/system/SysConfigMapper.xml b/cmvr-iot-system/src/main/resources/mapper/system/SysConfigMapper.xml new file mode 100644 index 0000000..0af9c0d --- /dev/null +++ b/cmvr-iot-system/src/main/resources/mapper/system/SysConfigMapper.xml @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + select config_id, config_name, config_key, config_value, config_type, create_by, create_time, update_by, update_time, remark + from sys_config + + + + + + + and config_id = #{configId} + + + and config_key = #{configKey} + + + + + + + + + + + + + + insert into sys_config ( + config_name, + config_key, + config_value, + config_type, + create_by, + remark, + create_time + )values( + #{configName}, + #{configKey}, + #{configValue}, + #{configType}, + #{createBy}, + #{remark}, + sysdate() + ) + + + + update sys_config + + config_name = #{configName}, + config_key = #{configKey}, + config_value = #{configValue}, + config_type = #{configType}, + update_by = #{updateBy}, + remark = #{remark}, + update_time = sysdate() + + where config_id = #{configId} + + + + delete from sys_config where config_id = #{configId} + + + + delete from sys_config where config_id in + + #{configId} + + + + diff --git a/cmvr-iot-system/src/main/resources/mapper/system/SysDeptMapper.xml b/cmvr-iot-system/src/main/resources/mapper/system/SysDeptMapper.xml new file mode 100644 index 0000000..1386cd0 --- /dev/null +++ b/cmvr-iot-system/src/main/resources/mapper/system/SysDeptMapper.xml @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status, d.del_flag, d.create_by, d.create_time + from sys_dept d + + + + + + + + + + + + + + + + + + + + insert into sys_dept( + dept_id, + parent_id, + dept_name, + ancestors, + order_num, + leader, + phone, + email, + status, + create_by, + create_time + )values( + #{deptId}, + #{parentId}, + #{deptName}, + #{ancestors}, + #{orderNum}, + #{leader}, + #{phone}, + #{email}, + #{status}, + #{createBy}, + sysdate() + ) + + + + update sys_dept + + parent_id = #{parentId}, + dept_name = #{deptName}, + ancestors = #{ancestors}, + order_num = #{orderNum}, + leader = #{leader}, + phone = #{phone}, + email = #{email}, + status = #{status}, + update_by = #{updateBy}, + update_time = sysdate() + + where dept_id = #{deptId} + + + + update sys_dept set ancestors = + + when #{item.deptId} then #{item.ancestors} + + where dept_id in + + #{item.deptId} + + + + + update sys_dept set status = '0' where dept_id in + + #{deptId} + + + + + update sys_dept set del_flag = '2' where dept_id = #{deptId} + + + diff --git a/cmvr-iot-system/src/main/resources/mapper/system/SysDictDataMapper.xml b/cmvr-iot-system/src/main/resources/mapper/system/SysDictDataMapper.xml new file mode 100644 index 0000000..af33782 --- /dev/null +++ b/cmvr-iot-system/src/main/resources/mapper/system/SysDictDataMapper.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + select dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark + from sys_dict_data + + + + + + + + + + + + + + delete from sys_dict_data where dict_code = #{dictCode} + + + + delete from sys_dict_data where dict_code in + + #{dictCode} + + + + + update sys_dict_data + + dict_sort = #{dictSort}, + dict_label = #{dictLabel}, + dict_value = #{dictValue}, + dict_type = #{dictType}, + css_class = #{cssClass}, + list_class = #{listClass}, + is_default = #{isDefault}, + status = #{status}, + remark = #{remark}, + update_by = #{updateBy}, + update_time = sysdate() + + where dict_code = #{dictCode} + + + + update sys_dict_data set dict_type = #{newDictType} where dict_type = #{oldDictType} + + + + insert into sys_dict_data( + dict_sort, + dict_label, + dict_value, + dict_type, + css_class, + list_class, + is_default, + status, + remark, + create_by, + create_time + )values( + #{dictSort}, + #{dictLabel}, + #{dictValue}, + #{dictType}, + #{cssClass}, + #{listClass}, + #{isDefault}, + #{status}, + #{remark}, + #{createBy}, + sysdate() + ) + + + diff --git a/cmvr-iot-system/src/main/resources/mapper/system/SysDictTypeMapper.xml b/cmvr-iot-system/src/main/resources/mapper/system/SysDictTypeMapper.xml new file mode 100644 index 0000000..8f65a2d --- /dev/null +++ b/cmvr-iot-system/src/main/resources/mapper/system/SysDictTypeMapper.xml @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + select dict_id, dict_name, dict_type, status, create_by, create_time, remark + from sys_dict_type + + + + + + + + + + + + + + delete from sys_dict_type where dict_id = #{dictId} + + + + delete from sys_dict_type where dict_id in + + #{dictId} + + + + + update sys_dict_type + + dict_name = #{dictName}, + dict_type = #{dictType}, + status = #{status}, + remark = #{remark}, + update_by = #{updateBy}, + update_time = sysdate() + + where dict_id = #{dictId} + + + + insert into sys_dict_type( + dict_name, + dict_type, + status, + remark, + create_by, + create_time + )values( + #{dictName}, + #{dictType}, + #{status}, + #{remark}, + #{createBy}, + sysdate() + ) + + + diff --git a/cmvr-iot-system/src/main/resources/mapper/system/SysLogininforMapper.xml b/cmvr-iot-system/src/main/resources/mapper/system/SysLogininforMapper.xml new file mode 100644 index 0000000..c8bb0f6 --- /dev/null +++ b/cmvr-iot-system/src/main/resources/mapper/system/SysLogininforMapper.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + insert into sys_logininfor (user_name, status, ipaddr, login_location, browser, os, msg, login_time) + values (#{userName}, #{status}, #{ipaddr}, #{loginLocation}, #{browser}, #{os}, #{msg}, sysdate()) + + + + + + delete from sys_logininfor where info_id in + + #{infoId} + + + + + truncate table sys_logininfor + + + diff --git a/cmvr-iot-system/src/main/resources/mapper/system/SysMenuMapper.xml b/cmvr-iot-system/src/main/resources/mapper/system/SysMenuMapper.xml new file mode 100644 index 0000000..be3c066 --- /dev/null +++ b/cmvr-iot-system/src/main/resources/mapper/system/SysMenuMapper.xml @@ -0,0 +1,206 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select menu_id, menu_name, parent_id, order_num, path, component, `query`, route_name, is_frame, is_cache, menu_type, visible, status, ifnull(perms,'') as perms, icon, create_time + from sys_menu + + + + + + + + + + + + + + + + + + + + + + + + + + update sys_menu + + menu_name = #{menuName}, + parent_id = #{parentId}, + order_num = #{orderNum}, + path = #{path}, + component = #{component}, + `query` = #{query}, + route_name = #{routeName}, + is_frame = #{isFrame}, + is_cache = #{isCache}, + menu_type = #{menuType}, + visible = #{visible}, + status = #{status}, + perms = #{perms}, + icon = #{icon}, + remark = #{remark}, + update_by = #{updateBy}, + update_time = sysdate() + + where menu_id = #{menuId} + + + + insert into sys_menu( + menu_id, + parent_id, + menu_name, + order_num, + path, + component, + `query`, + route_name, + is_frame, + is_cache, + menu_type, + visible, + status, + perms, + icon, + remark, + create_by, + create_time + )values( + #{menuId}, + #{parentId}, + #{menuName}, + #{orderNum}, + #{path}, + #{component}, + #{query}, + #{routeName}, + #{isFrame}, + #{isCache}, + #{menuType}, + #{visible}, + #{status}, + #{perms}, + #{icon}, + #{remark}, + #{createBy}, + sysdate() + ) + + + + delete from sys_menu where menu_id = #{menuId} + + + diff --git a/cmvr-iot-system/src/main/resources/mapper/system/SysNoticeMapper.xml b/cmvr-iot-system/src/main/resources/mapper/system/SysNoticeMapper.xml new file mode 100644 index 0000000..a3fc77f --- /dev/null +++ b/cmvr-iot-system/src/main/resources/mapper/system/SysNoticeMapper.xml @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + select notice_id, notice_title, notice_type, cast(notice_content as char) as notice_content, status, create_by, create_time, update_by, update_time, remark + from sys_notice + + + + + + + + insert into sys_notice ( + notice_title, + notice_type, + notice_content, + status, + remark, + create_by, + create_time + )values( + #{noticeTitle}, + #{noticeType}, + #{noticeContent}, + #{status}, + #{remark}, + #{createBy}, + sysdate() + ) + + + + update sys_notice + + notice_title = #{noticeTitle}, + notice_type = #{noticeType}, + notice_content = #{noticeContent}, + status = #{status}, + update_by = #{updateBy}, + update_time = sysdate() + + where notice_id = #{noticeId} + + + + delete from sys_notice where notice_id = #{noticeId} + + + + delete from sys_notice where notice_id in + + #{noticeId} + + + + diff --git a/cmvr-iot-system/src/main/resources/mapper/system/SysOperLogMapper.xml b/cmvr-iot-system/src/main/resources/mapper/system/SysOperLogMapper.xml new file mode 100644 index 0000000..493357b --- /dev/null +++ b/cmvr-iot-system/src/main/resources/mapper/system/SysOperLogMapper.xml @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + select oper_id, title, business_type, method, request_method, operator_type, oper_name, dept_name, oper_url, oper_ip, oper_location, oper_param, json_result, status, error_msg, oper_time, cost_time + from sys_oper_log + + + + insert into sys_oper_log(title, business_type, method, request_method, operator_type, oper_name, dept_name, oper_url, oper_ip, oper_location, oper_param, json_result, status, error_msg, cost_time, oper_time) + values (#{title}, #{businessType}, #{method}, #{requestMethod}, #{operatorType}, #{operName}, #{deptName}, #{operUrl}, #{operIp}, #{operLocation}, #{operParam}, #{jsonResult}, #{status}, #{errorMsg}, #{costTime}, sysdate()) + + + + + + delete from sys_oper_log where oper_id in + + #{operId} + + + + + + + truncate table sys_oper_log + + + diff --git a/cmvr-iot-system/src/main/resources/mapper/system/SysPostMapper.xml b/cmvr-iot-system/src/main/resources/mapper/system/SysPostMapper.xml new file mode 100644 index 0000000..b6b2f80 --- /dev/null +++ b/cmvr-iot-system/src/main/resources/mapper/system/SysPostMapper.xml @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + select post_id, post_code, post_name, post_sort, status, create_by, create_time, remark + from sys_post + + + + + + + + + + + + + + + + + + update sys_post + + post_code = #{postCode}, + post_name = #{postName}, + post_sort = #{postSort}, + status = #{status}, + remark = #{remark}, + update_by = #{updateBy}, + update_time = sysdate() + + where post_id = #{postId} + + + + insert into sys_post( + post_id, + post_code, + post_name, + post_sort, + status, + remark, + create_by, + create_time + )values( + #{postId}, + #{postCode}, + #{postName}, + #{postSort}, + #{status}, + #{remark}, + #{createBy}, + sysdate() + ) + + + + delete from sys_post where post_id = #{postId} + + + + delete from sys_post where post_id in + + #{postId} + + + + diff --git a/cmvr-iot-system/src/main/resources/mapper/system/SysRoleDeptMapper.xml b/cmvr-iot-system/src/main/resources/mapper/system/SysRoleDeptMapper.xml new file mode 100644 index 0000000..25c7bb2 --- /dev/null +++ b/cmvr-iot-system/src/main/resources/mapper/system/SysRoleDeptMapper.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + delete from sys_role_dept where role_id=#{roleId} + + + + + + delete from sys_role_dept where role_id in + + #{roleId} + + + + + insert into sys_role_dept(role_id, dept_id) values + + (#{item.roleId},#{item.deptId}) + + + + diff --git a/cmvr-iot-system/src/main/resources/mapper/system/SysRoleMapper.xml b/cmvr-iot-system/src/main/resources/mapper/system/SysRoleMapper.xml new file mode 100644 index 0000000..08f74c5 --- /dev/null +++ b/cmvr-iot-system/src/main/resources/mapper/system/SysRoleMapper.xml @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + + + + + + select distinct r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.menu_check_strictly, r.dept_check_strictly, + r.status, r.del_flag, r.create_time, r.remark + from sys_role r + left join sys_user_role ur on ur.role_id = r.role_id + left join sys_user u on u.user_id = ur.user_id + left join sys_dept d on u.dept_id = d.dept_id + + + + + + + + + + + + + + + + + + + + insert into sys_role( + role_id, + role_name, + role_key, + role_sort, + data_scope, + menu_check_strictly, + dept_check_strictly, + status, + remark, + create_by, + create_time + )values( + #{roleId}, + #{roleName}, + #{roleKey}, + #{roleSort}, + #{dataScope}, + #{menuCheckStrictly}, + #{deptCheckStrictly}, + #{status}, + #{remark}, + #{createBy}, + sysdate() + ) + + + + update sys_role + + role_name = #{roleName}, + role_key = #{roleKey}, + role_sort = #{roleSort}, + data_scope = #{dataScope}, + menu_check_strictly = #{menuCheckStrictly}, + dept_check_strictly = #{deptCheckStrictly}, + status = #{status}, + remark = #{remark}, + update_by = #{updateBy}, + update_time = sysdate() + + where role_id = #{roleId} + + + + update sys_role set del_flag = '2' where role_id = #{roleId} + + + + update sys_role set del_flag = '2' where role_id in + + #{roleId} + + + + diff --git a/cmvr-iot-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml b/cmvr-iot-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml new file mode 100644 index 0000000..4fc10c0 --- /dev/null +++ b/cmvr-iot-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + delete from sys_role_menu where role_id=#{roleId} + + + + delete from sys_role_menu where role_id in + + #{roleId} + + + + + insert into sys_role_menu(role_id, menu_id) values + + (#{item.roleId},#{item.menuId}) + + + + diff --git a/cmvr-iot-system/src/main/resources/mapper/system/SysUserMapper.xml b/cmvr-iot-system/src/main/resources/mapper/system/SysUserMapper.xml new file mode 100644 index 0000000..ff6f214 --- /dev/null +++ b/cmvr-iot-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -0,0 +1,221 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, + d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status, + r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status + from sys_user u + left join sys_dept d on u.dept_id = d.dept_id + left join sys_user_role ur on u.user_id = ur.user_id + left join sys_role r on r.role_id = ur.role_id + + + + + + + + + + + + + + + + + + + + insert into sys_user( + user_id, + dept_id, + user_name, + nick_name, + email, + avatar, + phonenumber, + sex, + password, + status, + create_by, + remark, + create_time + )values( + #{userId}, + #{deptId}, + #{userName}, + #{nickName}, + #{email}, + #{avatar}, + #{phonenumber}, + #{sex}, + #{password}, + #{status}, + #{createBy}, + #{remark}, + sysdate() + ) + + + + update sys_user + + dept_id = #{deptId}, + user_name = #{userName}, + nick_name = #{nickName}, + email = #{email}, + phonenumber = #{phonenumber}, + sex = #{sex}, + avatar = #{avatar}, + password = #{password}, + status = #{status}, + login_ip = #{loginIp}, + login_date = #{loginDate}, + update_by = #{updateBy}, + remark = #{remark}, + update_time = sysdate() + + where user_id = #{userId} + + + + update sys_user set status = #{status} where user_id = #{userId} + + + + update sys_user set avatar = #{avatar} where user_name = #{userName} + + + + update sys_user set password = #{password} where user_name = #{userName} + + + + update sys_user set del_flag = '2' where user_id = #{userId} + + + + update sys_user set del_flag = '2' where user_id in + + #{userId} + + + + diff --git a/cmvr-iot-system/src/main/resources/mapper/system/SysUserPostMapper.xml b/cmvr-iot-system/src/main/resources/mapper/system/SysUserPostMapper.xml new file mode 100644 index 0000000..8494466 --- /dev/null +++ b/cmvr-iot-system/src/main/resources/mapper/system/SysUserPostMapper.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + delete from sys_user_post where user_id=#{userId} + + + + + + delete from sys_user_post where user_id in + + #{userId} + + + + + insert into sys_user_post(user_id, post_id) values + + (#{item.userId},#{item.postId}) + + + + diff --git a/cmvr-iot-system/src/main/resources/mapper/system/SysUserRoleMapper.xml b/cmvr-iot-system/src/main/resources/mapper/system/SysUserRoleMapper.xml new file mode 100644 index 0000000..f82cef5 --- /dev/null +++ b/cmvr-iot-system/src/main/resources/mapper/system/SysUserRoleMapper.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + delete from sys_user_role where user_id=#{userId} + + + + + + delete from sys_user_role where user_id in + + #{userId} + + + + + insert into sys_user_role(user_id, role_id) values + + (#{item.userId},#{item.roleId}) + + + + + delete from sys_user_role where user_id=#{userId} and role_id=#{roleId} + + + + delete from sys_user_role where role_id=#{roleId} and user_id in + + #{userId} + + + diff --git a/cmvr-iot-test/pom.xml b/cmvr-iot-test/pom.xml new file mode 100644 index 0000000..0a0896c --- /dev/null +++ b/cmvr-iot-test/pom.xml @@ -0,0 +1,39 @@ + + + 4.0.0 + + com.cmvr + cmvr-iot + 3.8.9 + + + cmvr-iot-test + + + 测试管理模块 + + + + + + + com.cmvr + cmvr-iot-framework + + + + + com.cmvr + cmvr-iot-llm + + + + + com.cmvr + cmvr-iot-grpc-client + + + + \ No newline at end of file diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/enums/ActionEnum.java b/cmvr-iot-test/src/main/java/com/cmvr/test/enums/ActionEnum.java new file mode 100644 index 0000000..ec15b5f --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/enums/ActionEnum.java @@ -0,0 +1,75 @@ +package com.cmvr.test.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Getter +@AllArgsConstructor +public enum ActionEnum { + // 平台控制类 + STOPPED("NONE", "STOP", "强制终止"), + PAUSED("NONE", "PAUSED", "暂停"), + RESUME("NONE", "RESUME", "继续"), + START("NONE", "START", "开始"), + SUB_START("NONE", "SUB_START", "循环开始(子流程开始)"), + END("NONE", "END", "结束"), + START_LOOP("NONE", "START_LOOP", "开始循环"), + STOP_LOOP("NONE", "START_LOOP", "结束循环"), + BRANCH("NONE", "BRANCH", "分支"), + SUB_END("NONE", "SUB_STOP", "子流程结束"), + SLEEP("NONE", "SLEEP", "延迟节点"), + + // 系统行为 + NONE("NONE", "NONE", "无操作"), + + // 设备行为 + // ---------------相机--------------- + CAMERA_START("EDGE", "CAMERA_START", "启动相机"), + CAMERA_STOP("EDGE", "CAMERA_STOP", "停止相机"), + CAMERA_GETRGBIMAGE("EDGE", "CAMERA_GETRGBIMAGE", "获取RGB图像"), + CAMERA_RECORDING_START("EDGE", "CAMERA_RECORDING_START", "开始录像"), + CAMERA_RECORDING_STOP("EDGE", "CAMERA_RECORDING_STOP", "结束录像"), + + // ---------------麦克风--------------- + MICROPHONE_START("EDGE", "MICROPHONE_START", "启动麦克风"), + MICROPHONE_STOP("EDGE", "MICROPHONE_STOP", "停止麦克风"), + + // ---------------扬声器(人工嘴)--------------- + SPEAKER_PLAYAUDIO("EDGE", "SPEAKER_PLAYAUDIO", "播放音频"), + + // 大模型行为 + // ---------------获取触控坐标--------------- + TOUCH_COORDINATES("LLM", "TOUCH_COORDINATES", "获取触控坐标"), + ; + + + private final String operate; + private final String action; + private final String description; + + // 根据action值获取对应的枚举 + public static ActionEnum fromAction(String action) { + for (ActionEnum actionEnum : values()) { + if (actionEnum.getAction().equalsIgnoreCase(action)) { + return actionEnum; + } + } + return null; + } + + public static List> toList() { + List> list = new ArrayList<>(); + for (ActionEnum e : values()) { + Map map = new HashMap<>(); + map.put("action", e.getAction()); + map.put("description", e.getDescription()); + list.add(map); + } + return list; + } +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/enums/BranchConditionOpEnum.java b/cmvr-iot-test/src/main/java/com/cmvr/test/enums/BranchConditionOpEnum.java new file mode 100644 index 0000000..712f50a --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/enums/BranchConditionOpEnum.java @@ -0,0 +1,32 @@ +package com.cmvr.test.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public enum BranchConditionOpEnum { + EQUAL("equal"), + NOT_EQUAL("notEqualTo"), + NULL("null"), + NOT_NULL("notNull"), + INCLUDE("include"), + NOT_INCLUDE("notInclude"), + GREATER_THAN("greaterThan"), + GREATER_THAN_OR_EQUAL("greaterThanOrEqual"), + LESS_THAN("lessThan"), + LESS_THAN_OR_EQUAL("lessThanOrEqual"); + + private final String value; + + + public static BranchConditionOpEnum fromValue(String val) { + for (BranchConditionOpEnum op : values()) { + if (op.value.equalsIgnoreCase(val)) { + return op; + } + } + throw new IllegalArgumentException("未知条件操作符: " + val); + } + +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/enums/NodeTypeEnum.java b/cmvr-iot-test/src/main/java/com/cmvr/test/enums/NodeTypeEnum.java new file mode 100644 index 0000000..d6a71ff --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/enums/NodeTypeEnum.java @@ -0,0 +1,39 @@ +package com.cmvr.test.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 节点类型 + */ +@Getter +@AllArgsConstructor +public enum NodeTypeEnum { + + START("start"), + SUB_START("subStart"), + FUNCTION("function"), + BRANCH("branch"), + LOOP("loop"), + END("end"), + SLEEP("sleep"), +// SUB_END("sub_end"), + ; + + private final String code; + + public static NodeTypeEnum fromRawType(String rawType) { + switch (rawType.toLowerCase()) { + case "start": + return START; + case "end": + return END; + case "branch": + return BRANCH; + case "loop": + return LOOP; + default: + return FUNCTION; + } + } +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/enums/ParamScope.java b/cmvr-iot-test/src/main/java/com/cmvr/test/enums/ParamScope.java new file mode 100644 index 0000000..644b351 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/enums/ParamScope.java @@ -0,0 +1,6 @@ +package com.cmvr.test.enums; + +public enum ParamScope { + INPUT, // 用于 start 节点 inputParams + NODE // 用于普通节点 nodeParams +} \ No newline at end of file diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/enums/RunModeEnum.java b/cmvr-iot-test/src/main/java/com/cmvr/test/enums/RunModeEnum.java new file mode 100644 index 0000000..b132523 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/enums/RunModeEnum.java @@ -0,0 +1,6 @@ +package com.cmvr.test.enums; + +public enum RunModeEnum { + NORMAL, //正常 + TRIAL //试运行 +} \ No newline at end of file diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/enums/TaskStatusEnum.java b/cmvr-iot-test/src/main/java/com/cmvr/test/enums/TaskStatusEnum.java new file mode 100644 index 0000000..4aef8d6 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/enums/TaskStatusEnum.java @@ -0,0 +1,27 @@ +package com.cmvr.test.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public enum TaskStatusEnum { + + SUCCESS(0, "已完成"), + RUNNING(1, "执行中"), + FAILED(2, "失败"), + PAUSED(3, "已暂停"), + STOPPED(4, "已终止"); + + private final int code; + private final String desc; + + public static TaskStatusEnum fromCode(int code) { + for (TaskStatusEnum status : values()) { + if (status.code == code) { + return status; + } + } + return null; + } +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/enums/TerminalStatusEnum.java b/cmvr-iot-test/src/main/java/com/cmvr/test/enums/TerminalStatusEnum.java new file mode 100644 index 0000000..bd9143d --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/enums/TerminalStatusEnum.java @@ -0,0 +1,27 @@ +package com.cmvr.test.enums; + +/** + * 终端状态 + */ +public enum TerminalStatusEnum { + + /** + * 空闲 + */ + READY, + + /** + * 执行中 + */ + RUNNING, + + /** + * 暂停 + */ + PAUSED, + + /** + * 异常 + */ + ERROR +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/builder/FlowBranchConditionGroup.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/builder/FlowBranchConditionGroup.java new file mode 100644 index 0000000..d53c21c --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/builder/FlowBranchConditionGroup.java @@ -0,0 +1,57 @@ +package com.cmvr.test.flow.builder; + +import com.cmvr.test.enums.BranchConditionOpEnum; +import lombok.Data; + +import java.util.List; + +/** + * 分支条件组 + */ +import lombok.Data; +import java.util.List; + +/** + * 分支条件组:代表一个锚点(anchorId)对应的一组条件表达式 + */ +@Data +public class FlowBranchConditionGroup { + + /** 分支条件块ID,对应锚点ID */ + private String id; + + /** 表达式之间的逻辑关系,支持 "and" 或 "or" */ + private String withOr; + + /** 条件表达式列表 */ + private List expressions; + + /** + * 条件表达式结构:描述一个判断条件 + */ + @Data + public static class ConditionExpression { + + /** 参数名来源类型,"input" 表示 name 是固定值,"quote" 表示从 nameQuotePath 中引用 */ + private String nameType; + + /** 参数名,如果 nameType 为 "input",此字段为实际参数名 */ + private String name; + + /** 参数名引用路径(当 nameType 为 "quote" 时),取最后一个元素作为参数名 */ + private List nameQuotePath; + + /** 值来源类型,"input" 表示 input 为固定值,"quote" 表示引用其他节点输出 */ + private String valueType; + + /** 静态比较值(当 valueType 为 "input" 时使用) */ + private String input; + + /** 引用路径(当 valueType 为 "quote" 时使用),支持多层结构,如 ["nodeA", "result", "value"] */ + private List quotePath; + + /** 比较运算符,如等于、不等于、大于等(见 BranchConditionOpEnum) */ + private BranchConditionOpEnum condition; + } +} + diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/builder/FlowEdge.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/builder/FlowEdge.java new file mode 100644 index 0000000..3c1b0f1 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/builder/FlowEdge.java @@ -0,0 +1,28 @@ +package com.cmvr.test.flow.builder; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 节点之间的连边(流程线) + * 待扩展:条件、异步 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class FlowEdge { + + /** 来源节点 ID */ + private String from; + + /** 目标节点 ID */ + private String to; + + /** 来源锚点 ID */ + private String fromAnchorId; + + /** 跳转条件(如 output.result == 'ok') */ + private String condition; + +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/builder/FlowGraph.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/builder/FlowGraph.java new file mode 100644 index 0000000..d2276c6 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/builder/FlowGraph.java @@ -0,0 +1,271 @@ +package com.cmvr.test.flow.builder; + +import com.cmvr.test.enums.NodeTypeEnum; +import lombok.Data; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.locks.ReadWriteLock; +import java.util.concurrent.locks.ReentrantReadWriteLock; +import java.util.stream.Collectors; + +/** + * 检测项流程执行图(DAG)(支持条件、并发、跳转等) + */ +@Data +public class FlowGraph { + + /** + * 节点 ID → NodeWrapper + */ + private Map nodeMap = new LinkedHashMap<>(); + + /** + * 节点 ID → 出边集合 + */ + private Map> successors = new ConcurrentHashMap<>(); + + /** + * 节点 ID → 入边集合 + */ + private Map> predecessors = new ConcurrentHashMap<>(); + + /** + * 除start节点外的参数集合 + */ + private Map> nodeParamsDefs = new ConcurrentHashMap<>(); + + /** + * start节点参数集合 + */ + private List startInputParamsDefs = new ArrayList<>(); + + + /** + * 是否为子图 + */ + private boolean isSub = false; + + /** + * 内部读写锁,保障读写时不互打 + */ + private final ReadWriteLock lock = new ReentrantReadWriteLock(); + + /** + * 添加边(默认同步、无条件) + */ + public void addEdge(String from, String to, String fromAnchorId) { + addEdge(new FlowEdge(from, to, fromAnchorId, null)); + } + + /** + * 添加边对象 + */ + public void addEdge(FlowEdge edge) { + lock.writeLock().lock(); + try { + successors.computeIfAbsent(edge.getFrom(), k -> Collections.synchronizedList(new ArrayList<>())).add(edge); + predecessors.computeIfAbsent(edge.getTo(), k -> Collections.synchronizedList(new ArrayList<>())).add(edge); + } finally { + lock.writeLock().unlock(); + } + } + + /** + * 查找起始节点(START 类型) + */ + public String findStartNodeId() { + lock.readLock().lock(); + try { + return nodeMap.values().stream() + .filter(n -> n.getNodeType() == NodeTypeEnum.START) + .map(FlowNodeWrapper::getNodeId) + .findFirst() + .orElseThrow(() -> new RuntimeException("未找到开始节点")); + } finally { + lock.readLock().unlock(); + } + } + + /** + * 获取子图中起始节点(入度为0) + */ + public FlowNodeWrapper getInDegreeZeroNode() { + lock.readLock().lock(); + try { + for (FlowNodeWrapper node : nodeMap.values()) { + List flowEdges = predecessors.get(node.getNodeId()); + if (flowEdges == null || flowEdges.isEmpty()) { + return node; + } + } + return null; + } finally { + lock.readLock().unlock(); + } + } + + /** + * 判断是否为子图中的结束节点(出度为0) + */ + public boolean isSubGraphEndNode(String nodeId) { + lock.readLock().lock(); + try { + if (!this.isSub()) { + return false; + } + List nextNodes = this.getNextNodes(nodeId); + return nextNodes == null || nextNodes.isEmpty(); + } finally { + lock.readLock().unlock(); + } + } + + /** + * 获取当前节点的所有出边 + */ + public List getOutgoingEdges(String nodeId) { + lock.readLock().lock(); + try { + return successors.getOrDefault(nodeId, Collections.emptyList()); + } finally { + lock.readLock().unlock(); + } + } + + /** + * 获取当前节点的所有后继节点 ID(无条件过滤) + */ + public List getNextNodes(String nodeId) { + List edges = getOutgoingEdges(nodeId); + List list = new ArrayList<>(); + for (FlowEdge edge : edges) { + if (edge.getCondition() == null) { + list.add(edge.getTo()); + } + } + return list; + } + + /** + * 获取开始节点对象 + */ + public FlowNodeWrapper getStartNode() { + System.out.println("这是什么线程:" + Thread.currentThread().getName()); + String id = findStartNodeId(); + return getNode(id); + } + + /** + * 获取节点对象 + */ + public FlowNodeWrapper getNode(String nodeId) { + lock.readLock().lock(); + try { + return nodeMap.get(nodeId); + } finally { + lock.readLock().unlock(); + } + } + + /** + * 根据 from → to 查找边对象 + */ + public FlowEdge getEdge(String from, String to) { + List edges = getOutgoingEdges(from); + for (FlowEdge edge : edges) { + if (edge.getTo().equals(to)) { + return edge; + } + } + return null; + } + + /** + * 根据 fromAnchorId 查找边对象 + */ + public FlowEdge getEdgeByFromAnchorId(String fromAnchorId) { + lock.readLock().lock(); + try { + Set edges = successors.values().stream() + .flatMap(List::stream) + .collect(Collectors.toSet()); + for (FlowEdge edge : edges) { + if (edge.getFromAnchorId().equals(fromAnchorId)) { + return edge; + } + } + return null; + } finally { + lock.readLock().unlock(); + } + } + + public void removePathFrom(String nodeId) { + lock.writeLock().lock(); + try { + List outEdges = successors.getOrDefault(nodeId, Collections.emptyList()); + for (FlowEdge edge : new ArrayList<>(outEdges)) { + String targetNodeId = edge.getTo(); + removeEdge(edge); + removePathFrom(targetNodeId); + } + removeNodeIfIsolated(nodeId); + } finally { + lock.writeLock().unlock(); + } + } + + public void removeEdge(FlowEdge edge) { + lock.writeLock().lock(); + try { + List outList = successors.get(edge.getFrom()); + if (outList != null) { + outList.removeIf(e -> e.equals(edge)); + if (outList.isEmpty()) { + successors.remove(edge.getFrom()); + } + } + + List inList = predecessors.get(edge.getTo()); + if (inList != null) { + inList.removeIf(e -> e.equals(edge)); + if (inList.isEmpty()) { + predecessors.remove(edge.getTo()); + } + } + } finally { + lock.writeLock().unlock(); + } + } + + public void removeNodeIfIsolated(String nodeId) { + lock.writeLock().lock(); + try { + boolean hasIn = predecessors.containsKey(nodeId) && !predecessors.get(nodeId).isEmpty(); + boolean hasOut = successors.containsKey(nodeId) && !successors.get(nodeId).isEmpty(); + if (!hasIn && !hasOut) { + nodeMap.remove(nodeId); + } + } finally { + lock.writeLock().unlock(); + } + } + + /** + * 所有节点 ID + */ + public List allNodeIds() { + lock.readLock().lock(); + try { + return new ArrayList<>(nodeMap.keySet()); + } finally { + lock.readLock().unlock(); + } + } +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/builder/FlowModelBuilder.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/builder/FlowModelBuilder.java new file mode 100644 index 0000000..688cd65 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/builder/FlowModelBuilder.java @@ -0,0 +1,320 @@ +package com.cmvr.test.flow.builder; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjUtil; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; +import com.cmvr.common.exception.GlobalException; +import com.cmvr.test.enums.ActionEnum; +import com.cmvr.test.enums.BranchConditionOpEnum; +import com.cmvr.test.enums.NodeTypeEnum; +import com.cmvr.test.enums.ParamScope; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +/** + * 构建任务执行图(支持主流程 + 子图 + 循环) + */ +public class FlowModelBuilder { + + /** + * 构建任务执行图(DAG) + */ + public static FlowGraph buildExecutableGraph(String flowJson) { + JSONObject flow = JSON.parseObject(flowJson); + JSONArray nodeArray = flow.getJSONArray("nodes"); + JSONArray edgeArray = flow.getJSONArray("edges"); + + FlowGraph graph = new FlowGraph(); + + // 解析节点列表 + Map nodeMap = parseNodes(nodeArray); + + // 解析边并写入图 + parseEdges(graph, edgeArray); + + // 处理循环节点的子节点和循环参数 + List nodesToRemove = bindLoopChildrenAndParams(nodeMap); + + // 构建子图结构 + processSubGraphs(nodeMap, graph); + + // 设置全量参数 + setParams(nodeMap, graph); + + // 将子图中的节点从主图移除 + removeChildNodesFromMainGraph(graph, nodeMap, nodesToRemove); + + // 设置主图节点映射 + graph.setNodeMap(nodeMap); + + return graph; + } + + private static void setParams(Map nodeMap, FlowGraph graph) { + Map> nodeParams = new LinkedHashMap<>(); + for (Map.Entry entry : nodeMap.entrySet()) { + FlowNodeWrapper node = entry.getValue(); + String nodeId = entry.getKey(); + if (node.getNodeType().equals(NodeTypeEnum.START)) { + graph.setStartInputParamsDefs(node.getInputParams()); + } + nodeParams.put(nodeId, node.getNodeParams()); + } + graph.setNodeParamsDefs(nodeParams); + } + + /** + * 解析节点数组为节点映射 + */ + private static Map parseNodes(JSONArray nodeArray) { + Map nodeMap = new HashMap<>(); + for (int i = 0; i < nodeArray.size(); i++) { + JSONObject nodeJson = nodeArray.getJSONObject(i); + String actionStr = nodeJson.getJSONObject("properties").getString("action"); + if (actionStr.equalsIgnoreCase(ActionEnum.NONE.getAction())) { + // 跳过框选节点 + continue; + } + FlowNodeWrapper wrapper = parseNode(nodeJson); // 解析单个节点 + nodeMap.put(wrapper.getNodeId(), wrapper); + } + return nodeMap; + } + + /** + * 解析边数组为图中边结构 + */ + private static void parseEdges(FlowGraph graph, JSONArray edgeArray) { + for (int i = 0; i < edgeArray.size(); i++) { + JSONObject edgeJson = edgeArray.getJSONObject(i); + + String from = edgeJson.getString("sourceNodeId"); + String to = edgeJson.getString("targetNodeId"); + String fromAnchorId = edgeJson.getString("sourceAnchorId"); + String condition = edgeJson.getString("condition"); + + FlowEdge edge = new FlowEdge(from, to,fromAnchorId, condition); + graph.addEdge(edge); + } + } + + /** + * 绑定循环节点中的子节点和循环参数 + */ + private static List bindLoopChildrenAndParams(Map nodeMap) { + List toRemove = new ArrayList<>(); + for (FlowNodeWrapper wrapper : nodeMap.values()) { + if (wrapper.getNodeType() == NodeTypeEnum.LOOP) { + // 获取循环子节点 + JSONArray children = wrapper.getRawProperties().getJSONArray("children"); + List childList = new ArrayList<>(); + for (int i = 0; i < children.size(); i++) { + String childNodeId = children.getString(i); + FlowNodeWrapper child = nodeMap.get(childNodeId); + if (child != null) { + childList.add(child); + toRemove.add(childNodeId); // 标记后续移除 + } + } + wrapper.setChildNodes(childList); + + // 提取 loopNum 参数 + Optional optional = wrapper.getNodeParams().stream() + .filter(x -> "loopNum".equalsIgnoreCase(x.getName()) && x.getScope() == ParamScope.NODE) + .findFirst(); + if (!optional.isPresent()) { + throw new IllegalArgumentException("loopNum 不存在"); + } + wrapper.setLoopCount(Integer.parseInt(optional.get().getInput())); + } + } + return toRemove; + } + + /** + * 处理所有子流程图(循环子图) + */ + private static void processSubGraphs(Map nodeMap, FlowGraph graph) { + for (FlowNodeWrapper wrapper : nodeMap.values()) { + if (wrapper.getNodeType() == NodeTypeEnum.LOOP) { + FlowGraph subGraph = new FlowGraph(); + wrapper.setSubGraph(subGraph); + + List children = wrapper.getChildNodes(); + for (FlowNodeWrapper child : children) { + subGraph.getNodeMap().put(child.getNodeId(), child); // 添加子节点 + } + + // 添加子图内部的边(来源于主图) + for (FlowNodeWrapper child : children) { + List outEdges = graph.getSuccessors().getOrDefault(child.getNodeId(), Collections.emptyList()); + for (FlowEdge edge : outEdges) { + if (subGraph.getNodeMap().containsKey(edge.getTo())) { + subGraph.addEdge(edge); + } + } + } + } + } + } + + /** + * 从主图中移除子流程节点(最后执行) + */ + private static void removeChildNodesFromMainGraph(FlowGraph graph, Map nodeMap, List toRemove) { + for (String nodeId : toRemove) { + nodeMap.remove(nodeId); + graph.getSuccessors().remove(nodeId); + graph.getPredecessors().remove(nodeId); + } + } + /** + * 解析单个节点对象为包装类 + */ + private static FlowNodeWrapper parseNode(JSONObject nodeJson) { + FlowNodeWrapper wrapper = new FlowNodeWrapper(); + wrapper.setNodeId(nodeJson.getString("id")); + + JSONObject props = nodeJson.getJSONObject("properties"); + wrapper.setNodeName(props.getString("name")); + + // 设置动作类型 + String actionStr = props.getString("action"); + ActionEnum action = ActionEnum.fromAction(actionStr); + if (ObjUtil.isEmpty(action)) { + throw new IllegalArgumentException("无法识别的action:" + actionStr); + } + wrapper.setAction(action); + + // 设置节点类型 + NodeTypeEnum nodeType = resolveNodeType(nodeJson.getString("type")); + wrapper.setNodeType(nodeType); + + // 补充循环节点的子节点信息 + if (nodeType == NodeTypeEnum.LOOP) { + props.put("children", nodeJson.getJSONArray("children")); + } + + wrapper.setRawProperties(props); + + // 设置参数 + wrapper.setInputParams(parseParamsWithScope(props.getJSONArray("inputParams"), ParamScope.INPUT)); + wrapper.setNodeParams(parseParamsWithScope(props.getJSONArray("nodeParams"), ParamScope.NODE)); + + // 解析分支条件逻辑 + parseBranch(nodeType, props, wrapper); + + return wrapper; + } + + /** + * 解析分支条件逻辑 + */ + private static void parseBranch(NodeTypeEnum nodeType, JSONObject props, FlowNodeWrapper wrapper) { + if (nodeType == NodeTypeEnum.BRANCH && props.containsKey("nodeParams")) { + JSONArray branchArray = props.getJSONArray("nodeParams"); + List branchList = new ArrayList<>(); + + for (int i = 0; i < branchArray.size(); i++) { + JSONObject branchObj = branchArray.getJSONObject(i); + + FlowBranchConditionGroup group = new FlowBranchConditionGroup(); + group.setId(branchObj.getString("id")); + group.setWithOr(branchObj.getString("withOr")); + + JSONArray exprArray = branchObj.getJSONArray("list"); + List expressions = new ArrayList<>(); + + for (int j = 0; j < exprArray.size(); j++) { + JSONObject exprObj = exprArray.getJSONObject(j); + FlowBranchConditionGroup.ConditionExpression expr = new FlowBranchConditionGroup.ConditionExpression(); + + // 解析左值:参数名 + String nameType = exprObj.getString("nameType"); + expr.setNameType(nameType); + if ("quote".equalsIgnoreCase(nameType)) { + List nameQuotePath = exprObj.getJSONArray("nameQuote").toJavaList(String.class); + expr.setNameQuotePath(nameQuotePath); + // 提前设置 name 字段为路径最后一个 + if (!nameQuotePath.isEmpty()) { + expr.setName(nameQuotePath.get(nameQuotePath.size() - 1)); + } + } else if ("input".equalsIgnoreCase(nameType)) { + expr.setName(exprObj.getString("name")); + } else { + throw new GlobalException("分支节点参数解析出错,id:" + group.getId()); + } + + // 解析右值:值或引用 + String valueType = exprObj.getString("type"); + expr.setValueType(valueType); + if ("quote".equalsIgnoreCase(valueType)) { + expr.setQuotePath(exprObj.getJSONArray("quote").toJavaList(String.class)); + } else { + expr.setInput(exprObj.getString("input")); + } + + // 运算符 + expr.setCondition(BranchConditionOpEnum.fromValue(exprObj.getString("condition"))); + expressions.add(expr); + } + + group.setExpressions(expressions); + branchList.add(group); + } + + wrapper.setBranchConditions(branchList); + } + } + + /** + * 解析前端 type 转换为 NodeTypeEnum + */ + private static NodeTypeEnum resolveNodeType(String type) { + switch (type.toLowerCase()) { + case "start": + return NodeTypeEnum.START; + case "substart": + return NodeTypeEnum.SUB_START; + case "end": + return NodeTypeEnum.END; + case "branch": + return NodeTypeEnum.BRANCH; + case "loop": + return NodeTypeEnum.LOOP; + case "sleep": + return NodeTypeEnum.SLEEP; + default: + return NodeTypeEnum.FUNCTION; + } + } + + /** + * 解析带有 Scope 的参数列表 + */ + private static List parseParamsWithScope(JSONArray array, ParamScope scope) { + if (array == null) return new ArrayList<>(); + List result = new ArrayList<>(); + for (int i = 0; i < array.size(); i++) { + FlowParamDef def = array.getObject(i, FlowParamDef.class); + def.setScope(scope); + + // 递归处理 children + if (CollUtil.isNotEmpty(def.getChildren())) { + List children = parseParamsWithScope(new JSONArray(def.getChildren()), scope); + def.setChildren(children); + } + + result.add(def); + } + return result; + } +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/builder/FlowNodeWrapper.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/builder/FlowNodeWrapper.java new file mode 100644 index 0000000..c0ff02b --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/builder/FlowNodeWrapper.java @@ -0,0 +1,82 @@ +package com.cmvr.test.flow.builder; + +import com.alibaba.fastjson2.JSONObject; +import com.cmvr.test.enums.ActionEnum; +import com.cmvr.test.enums.NodeTypeEnum; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * 运行期用的节点模型 + */ +@Data +public class FlowNodeWrapper { + /** + * 节点ID + */ + private String nodeId; + + /** + * 节点名称 + */ + private String nodeName; + + /** + * 节点类型(start/function/branch/loop/end) + */ + private NodeTypeEnum nodeType; + + /** + * 节点执行的行为标识(对应 action) + */ + private ActionEnum action; + + /** + * 输入参数定义(inputParams) + */ + private List inputParams; + + /** + * 节点参数定义(nodeParams) + */ + private List nodeParams; + + /** + * 输出参数定义(outParams) + */ + private List outParams; + + /** + * 原始属性(如保留 props) + */ + private JSONObject rawProperties; + + /** + * 子节点(当节点为循环节点时,此字段存储该节点包含的子节点) + */ + private List childNodes; + + /** + * 子节点的连线关系 + */ + private List childNodeEdges = new ArrayList<>(); + + /** + * 循环次数(如果是循环节点,此字段用于控制循环次数) + */ + private Integer loopCount; + + /** + * 子流程(当节点为循环节点或包含子流程时,此字段存储子流程) + */ + private FlowGraph subGraph; + + /** + * 分支逻辑 + */ + private List branchConditions; +} + + diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/builder/FlowParamDef.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/builder/FlowParamDef.java new file mode 100644 index 0000000..0dd632e --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/builder/FlowParamDef.java @@ -0,0 +1,68 @@ +package com.cmvr.test.flow.builder; + +import com.cmvr.test.enums.ParamScope; +import lombok.Data; + +import java.util.List; + +/** + * 参数结构 + */ +@Data +public class FlowParamDef { + + /** + * 参数作用域: + * - INPUT:用于 start 节点的 inputParams + * - NODE:用于普通节点的 nodeParams(包括 input / quote) + */ + private ParamScope scope; + + /** + * 参数名称(如 deviceId / imageUrl 等) + */ + private String name; + + /** + * 参数类型: + * NodeParams时: + * - input:静态输入 + * - quote:引用上游节点输出 + * ------------------------------- + * InputParams时: + * - String 字符类型 + * - Boolean 布尔类型 + * - Object 对象(嵌套的children) + * - Array 数组类型 + * - Number 数值类型 + */ + private String type; + + /** + * type=input 时填写的静态值 + */ + private String input; + + /** + * type=quote 时填写的引用路径 + * - 第一个元素是节点 ID + * - 后面是参数字段路径(支持多层,最多三层) + * 例:["node-1", "result", "image", "url"] + */ + private List quote; + + /** + * 参数描述(用于 UI 显示或生成 Schema) + */ + private String desc; + + /** + * 是否为必填参数 + */ + private Boolean required; + + /** + * 子参数定义(用于 array / object 类型的嵌套) + */ + private List children; +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/builder/FlowParamHelper.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/builder/FlowParamHelper.java new file mode 100644 index 0000000..116faa8 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/builder/FlowParamHelper.java @@ -0,0 +1,95 @@ +package com.cmvr.test.flow.builder; + +import cn.hutool.core.collection.CollUtil; +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; +import com.cmvr.test.enums.ParamScope; + +import java.util.List; + +public class FlowParamHelper { + + /** + * 将参数定义列表中的 input 值构建为 JSONObject + */ + public static JSONObject toJson(List defs) { + JSONObject result = new JSONObject(); + if (CollUtil.isEmpty(defs)) return result; + + for (FlowParamDef param : defs) { + if (param.getType().equalsIgnoreCase(ParamScope.INPUT.name())) { + result.put(param.getName(), param.getInput()); + continue; + } + + String name = param.getName(); + String type = param.getType(); + Object input = param.getInput(); + + if ("Object".equals(type) && CollUtil.isNotEmpty(param.getChildren())) { + result.put(name, toJson(param.getChildren())); + } else if ("Array".equals(type) && CollUtil.isNotEmpty(param.getChildren())) { + JSONArray arr = new JSONArray(); + // 默认数组内只有一个结构体模型 + arr.add(toJson(param.getChildren())); + result.put(name, arr); + } else { + result.put(name, input); + } + } + + return result; + } + + /** + * 从引用中解析 quote 值(会合并 input 和 quote 参数) + */ + public static JSONObject buildInputParams(List nodeParams, + String startNodeId, + List startInputDefs, + ParamProvider paramProvider) { + JSONObject input = new JSONObject(); + + for (FlowParamDef param : nodeParams) { + if (param.getScope() != ParamScope.NODE) continue; + + if ("input".equals(param.getType())) { + input.put(param.getName(), param.getInput()); + } else if ("quote".equals(param.getType()) && CollUtil.isNotEmpty(param.getQuote())) { + String refNodeId = param.getQuote().get(0); + List path = param.getQuote().subList(1, param.getQuote().size()); + + List nodeParams1 = paramProvider.getNodeParams(refNodeId); + JSONObject source = refNodeId.equals(startNodeId) + ? toJson(startInputDefs) + : toJson(nodeParams1); + + Object val = findNestedValue(source, path); + input.put(param.getName(), val); + } + } + + return input; + } + + + /** + * JSON 多层路径提取 + */ + public static Object findNestedValue(JSONObject source, List path) { + if (source == null || CollUtil.isEmpty(path)) return null; + Object curr = source; + for (String key : path) { + if (!(curr instanceof JSONObject)) return null; + curr = ((JSONObject) curr).get(key); + } + return curr; + } + + /** + * 参数提供者接口:用于从上下文获取 ref 节点的 paramDef 列表 + */ + public interface ParamProvider { + List getNodeParams(String nodeId); + } +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/builder/TaskKeyBuilder.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/builder/TaskKeyBuilder.java new file mode 100644 index 0000000..0fd9929 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/builder/TaskKeyBuilder.java @@ -0,0 +1,31 @@ +package com.cmvr.test.flow.builder; + +import java.util.Arrays; +import java.util.Objects; +import java.util.stream.Collectors; + +public class TaskKeyBuilder { + + /** + * 构建 itemKey + */ + public static String itemKey(String instId, String itemId) { + return buildKey(instId, itemId); + } + + /** + * 构建 nodeKey + */ + public static String nodeKey(String instId, String itemId, String nodeId) { + return buildKey(instId, itemId, nodeId); + } + + /** + * 构建通用 key,自动跳过 null 或空字符串 + */ + public static String buildKey(String... parts) { + return Arrays.stream(parts) + .filter(part -> Objects.nonNull(part) && !part.isEmpty()) + .collect(Collectors.joining("_")); + } +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/context/TaskContext.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/context/TaskContext.java new file mode 100644 index 0000000..26b8f38 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/context/TaskContext.java @@ -0,0 +1,115 @@ +package com.cmvr.test.flow.context; + +import com.alibaba.fastjson2.JSONObject; +import com.cmvr.test.enums.RunModeEnum; +import com.cmvr.test.enums.TaskStatusEnum; +import com.cmvr.test.enums.TerminalStatusEnum; +import lombok.Data; + +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +/** + * 任务执行上下文,用于保存任务运行状态、控制标志等信息。 + */ +@Data +public class TaskContext { + + /** + * 任务实例 ID + */ + private String instId; + + /** + * 任务 ID + */ + private String taskId; + + /** + * 当前检测项 ID + */ + private String itemId; + + /** + * 所属终端 ID + */ + private String terminalId; + + /** + * 当前运行状态(运行中/已完成/失败/暂停/终止) + */ + private TaskStatusEnum status; + + /** + * 运行模式:NORMAL(正常) / TRIAL(试运行) + */ + private RunModeEnum runMode; + + /** + * 当前终端状态 + */ + private TerminalStatusEnum terminalStatus; + + /** + * 是否处于暂停中 + */ + private volatile boolean paused = false; + + /** + * 是否已被强行终止 + */ + private volatile boolean stopped = false; + + /** + * 是否锁定终端(标识该终端是否被占用) + */ + private volatile boolean terminalLocked = false; + + /** + * 存储节点输出参数 + * key为nodeI,value为节点的输出参数 + */ + private Map nodeOutParams = new HashMap<>(); + + /** + * 运行任务时的初始参数 + */ + private JSONObject runParams = new JSONObject(); + + /** + * 上次更新时间 + */ + private Date updatedAt; + + /** + * 上下文创建时间 + */ + private Date createdAt; + + public TaskContext() { + this.createdAt = new Date(); + this.updatedAt = this.createdAt; + } + + /** + * 更新上下文的更新时间戳 + */ + public void updateTimestamp() { + this.updatedAt = new Date(); + } + + /** + * 存储指定节点的输出参数 + */ + public void setNodeOutParams(String nodeId, JSONObject params) { + nodeOutParams.put(nodeId, params); + } + + /** + * 获取指定节点的输出参数 + */ + public JSONObject getNodeOutParams(String nodeId) { + return nodeOutParams.get(nodeId); + } +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/context/TaskContextManager.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/context/TaskContextManager.java new file mode 100644 index 0000000..664b685 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/context/TaskContextManager.java @@ -0,0 +1,117 @@ +package com.cmvr.test.flow.context; + +import com.alibaba.fastjson2.JSONObject; +import com.cmvr.test.enums.TaskStatusEnum; +import com.cmvr.test.enums.TerminalStatusEnum; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 任务上下文管理器 + */ +@Slf4j +@Component +public class TaskContextManager { + + /** + * 实例 ID → 任务上下文 + */ + private final Map instContextMap = new ConcurrentHashMap<>(); + + /** + * 终端 ID → 实例 ID(标识该终端被哪个任务占用) + */ + private final Map terminalInstMap = new ConcurrentHashMap<>(); + + /** + * 注册任务上下文(任务启动时调用) + */ + public void register(TaskContext context) { + instContextMap.put(context.getInstId(), context); + terminalInstMap.put(context.getTerminalId(), context.getInstId()); + context.setTerminalStatus(TerminalStatusEnum.RUNNING); + log.info("注册任务上下文:instId={}, terminalId={}", context.getInstId(), context.getTerminalId()); + } + + /** + * 注销任务上下文(任务结束 / 终止后调用) + */ + public void unregister(String instId) { + TaskContext ctx = instContextMap.remove(instId); + if (ctx != null) { + ctx.setTerminalStatus(TerminalStatusEnum.READY); + ctx.setTerminalLocked(false); + terminalInstMap.remove(ctx.getTerminalId()); + log.info("注销任务上下文:instId={}, terminalId={}", instId, ctx.getTerminalId()); + } + } + + /** + * 获取任务上下文 + */ + public TaskContext get(String instId) { + return instContextMap.get(instId); + } + + /** + * 获取任务状态 + */ + public TaskStatusEnum getStatus(String instId) { + return instContextMap.get(instId).getStatus(); + } + + /** + * 判断某个终端是否已被占用(用于任务启动前判断) + */ + public boolean isTerminalLocked(String terminalId) { + return terminalInstMap.containsKey(terminalId); + } + + /** + * 判断终端是否被其他任务占用(用于任务恢复时判断) + */ + public boolean isTerminalOccupied(String terminalId, String excludingInstId) { + return terminalInstMap.containsKey(terminalId) + && !terminalInstMap.get(terminalId).equals(excludingInstId); + } + + /** + * 根据终端ID获取正在执行的实例ID + */ + public String getInstIdByTerminal(String terminalId) { + return terminalInstMap.get(terminalId); + } + + /** + * 清除所有上下文 + */ + public void clearAll() { + instContextMap.clear(); + terminalInstMap.clear(); + log.info("任务上下文已清空"); + } + + /** + * 存储某个节点的输出参数 + */ + public void setNodeOutParams(String instId, String nodeId, JSONObject params) { + TaskContext context = instContextMap.get(instId); + if (context != null) { + context.setNodeOutParams(nodeId, params); + } + } + + /** + * 根据 nodeId 和 action 获取节点的输出参数 + */ + public JSONObject getNodeOutParams(String instId, String nodeId) { + TaskContext context = instContextMap.get(instId); + if (context != null) { + return context.getNodeOutParams(nodeId); + } + return null; + } +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/context/TaskInstHolder.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/context/TaskInstHolder.java new file mode 100644 index 0000000..0056c36 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/context/TaskInstHolder.java @@ -0,0 +1,99 @@ +package com.cmvr.test.flow.context; + +import com.alibaba.fastjson2.JSONObject; +import com.cmvr.test.enums.NodeTypeEnum; +import com.cmvr.test.enums.TaskStatusEnum; +import com.cmvr.test.enums.TerminalStatusEnum; +import com.cmvr.test.service.ITeNodeInstService; +import com.cmvr.test.service.ITeTaskInstService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * 任务实例状态协调器:负责同步日志记录、上下文状态、数据库状态 + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class TaskInstHolder { + + private final ITeNodeInstService nodeInstService; + private final TaskContextManager taskContextManager; + private final ITeTaskInstService taskInstService; + + public void register(TaskContext context) { + taskContextManager.register(context); + } + + public void unRegister(String instId) { + taskContextManager.unregister(instId); + } + + public TaskContext getContext(String instId) { + return taskContextManager.get(instId); + } + + public boolean isTerminalLocked(String terminalId) { + return taskContextManager.isTerminalLocked(terminalId); + } + + public void markRunning(String instId, String taskId, String itemId, + String nodeId, String nodeType, String operate, + String action, String paramsIn) { + nodeInstService.logRunning(instId, taskId, itemId, nodeId, nodeType, operate, action, paramsIn); + } + + public void markSuccess(String instId, String itemId, String nodeId, int pendingItemCount, String nodeType, + String paramsOut, String message) { + nodeInstService.logSuccess(instId, itemId, nodeId, paramsOut, message); + syncStatus(instId, TaskStatusEnum.SUCCESS); + // 如果没有下一个检测项要执行 且是end节点 注销任务上下文 + if (pendingItemCount == 0 && nodeType.equalsIgnoreCase(NodeTypeEnum.END.getCode())) { + taskContextManager.unregister(instId); + } + } + + public void markFailed(String instId, String taskId, String itemId, + String nodeId, String nodeType, String operate, + String action, String params, String message) { + nodeInstService.logFailed(instId, taskId, itemId, nodeId, nodeType, operate, action, params, message); + + syncStatus(instId, TaskStatusEnum.FAILED); + taskContextManager.unregister(instId); + } + + public void syncStatus(String instId, TaskStatusEnum status) { + TaskContext ctx = taskContextManager.get(instId); + switch (status) { + case PAUSED: + ctx.setPaused(true); + ctx.setStatus(TaskStatusEnum.PAUSED); + ctx.setTerminalStatus(TerminalStatusEnum.PAUSED); + break; + case STOPPED: + ctx.setStopped(true); + ctx.setPaused(false); + ctx.setTerminalLocked(false); + break; + } + ctx.setStatus(status); + ctx.updateTimestamp(); + + taskInstService.updateStatus(instId, status); + } + + /** + * 存储当前节点的输出参数 + */ + public void setNodeOutParams(String instId, String nodeId, JSONObject params) { + taskContextManager.setNodeOutParams(instId, nodeId, params); + } + + /** + * 根据 nodeId 和 action 获取节点的输出参数 + */ + public JSONObject getNodeOutParams(String instId, String nodeId) { + return taskContextManager.getNodeOutParams(instId, nodeId); + } +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/context/TaskThreadRegistry.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/context/TaskThreadRegistry.java new file mode 100644 index 0000000..126c53a --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/context/TaskThreadRegistry.java @@ -0,0 +1,169 @@ +package com.cmvr.test.flow.context; + +import com.cmvr.test.enums.NodeTypeEnum; +import com.cmvr.test.flow.builder.FlowNodeWrapper; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteContext; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.CountDownLatch; +import java.util.stream.Collectors; + +/** + * 线程注册中心 —— 仅保存“仍在执行”的 TaskExecutionContext + * 支持:注册、注销、精确中断、批量中断、恢复查询 + */ +@Slf4j +@Component +public class TaskThreadRegistry { + + // 结构为 instId_itemId_nodeId -> TaskNodeExecuteContext + private final Map nodeContextMap = new ConcurrentHashMap<>(); + + // 结构为 instId_loopNodeId -> CountDownLatch + private final Map loopLatchMap = new ConcurrentHashMap<>(); + + + private String buildKey(String instId, String itemId, String nodeId) { + return instId + "_" + itemId + "_" + nodeId; + } + + private String buildLoopKey(String instId, String nodeId) { + return instId + "_" + nodeId; + } + + /** + * 注册节点执行上下文 + */ + public void registerNodeContext(String instId, String itemId, String nodeId, TaskNodeExecuteContext context) { + String key = buildKey(instId, itemId, nodeId); + nodeContextMap.put(key, context); + log.info("注册节点上下文: key={}, thread={}", key, context.getThread().getName()); + } + + /** + * 获取上下文 + */ + public TaskNodeExecuteContext getNodeContext(String instId, String itemId, String nodeId) { + return nodeContextMap.get(buildKey(instId, itemId, nodeId)); + } + + /** + * 获取线程 + */ + public List getPendingNodes(String instId) { + List pending = new ArrayList<>(); + for (Map.Entry entry : nodeContextMap.entrySet()) { + if (entry.getKey().startsWith(instId)) { + pending.add(entry.getValue()); + } + } + return pending; + } + + /** + * 中断指定节点线程 + */ + public void interruptNode(String instId, String itemId, String nodeId) { + TaskNodeExecuteContext ctx = getNodeContext(instId, itemId, nodeId); + if (ctx != null && ctx.getThread() != null) { + log.info("中断节点线程: instId={}, itemId={}, nodeId={}, thread={}", instId, itemId, nodeId, ctx.getThread().getName()); + ctx.getThread().interrupt(); + } + } + + /** + * 中断所有节点线程 + */ + public void interruptAll(String instId) { + for (Map.Entry entry : nodeContextMap.entrySet()) { + if (entry.getKey().startsWith(instId)) { + FlowNodeWrapper node = entry.getValue().getNode(); + if (node.getNodeType().equals(NodeTypeEnum.LOOP)) { + log.info("LOOP节点不直接中断"); + continue; + } + Thread thread = entry.getValue().getThread(); + log.info("中断线程:{}", thread.getName()); + thread.interrupt(); + } + } +// releaseAllLatches(instId); + log.info("-------------------------------------"); + log.info("pending:\n{}", getPendingNodes(instId).stream().map(x -> x.getNode().getNodeId()).collect(Collectors.toList())); + log.info("-------------------------------------"); + } + + /** + * 移除节点上下文(节点执行成功时调用) + */ + public void unregisterNodeContext(String instId, String itemId, String nodeId) { + String key = buildKey(instId, itemId, nodeId); + nodeContextMap.remove(key); + log.info("移除节点上下文: key={}", key); + } + + /** + * 获取所有未完成节点上下文(可用于恢复) + */ + public Map getAllContexts() { + return nodeContextMap; + } + + /** + * 注册 loop 节点 latch(每次只允许一个 latch) + */ + public void registerLatch(String instId, String loopNodeId, CountDownLatch latch) { + String key = buildLoopKey(instId, loopNodeId); + loopLatchMap.put(key, latch); + } + + /** + * 获取 latch(可用于测试或回调判断) + */ + public CountDownLatch getLatch(String instId, String loopNodeId) { + String key = buildLoopKey(instId, loopNodeId); + boolean flag = loopLatchMap.containsKey(key); + System.out.println("这个latch是存在的吗:"+flag); + return loopLatchMap.get(key); + } + + /** + * 主动释放 latch(用于暂停任务时中断 loop await) + */ + public void releaseLatch(String instId, String loopNodeId) { + String key = buildLoopKey(instId, loopNodeId); + CountDownLatch latch = loopLatchMap.remove(key); + if (latch != null) { + try { + latch.countDown(); + log.info("释放 latch: {} -> {}", key, latch); + } catch (Exception ignored) { + } + } + } + + /** + * 暂停任务时释放该实例下所有 loop latch + */ + public void releaseAllLatches(String instId) { + List keysToRelease = loopLatchMap.keySet().stream() + .filter(key -> key.startsWith(instId + "_")) + .collect(Collectors.toList()); + + for (String key : keysToRelease) { + CountDownLatch latch = loopLatchMap.remove(key); + if (latch != null) { + try { + latch.countDown(); + log.info("释放 latch: {}", key); + } catch (Exception ignored) { + } + } + } + } +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/control/FlowControlService.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/control/FlowControlService.java new file mode 100644 index 0000000..b597d2d --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/control/FlowControlService.java @@ -0,0 +1,171 @@ +package com.cmvr.test.flow.control; + +import com.cmvr.common.exception.GlobalException; +import com.cmvr.test.enums.NodeTypeEnum; +import com.cmvr.test.enums.TaskStatusEnum; +import com.cmvr.test.enums.TerminalStatusEnum; +import com.cmvr.test.flow.builder.FlowGraph; +import com.cmvr.test.flow.context.TaskContext; +import com.cmvr.test.flow.context.TaskInstHolder; +import com.cmvr.test.flow.context.TaskThreadRegistry; +import com.cmvr.test.flow.runtime.engine.FlowItemExecutor; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteContext; +import com.cmvr.test.service.ITeNodeInstService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.List; +import java.util.concurrent.CountDownLatch; +import java.util.stream.Collectors; + +/** + * 流程控制服务 + * 终止/暂停/继续 + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class FlowControlService { + + @Resource(name = "threadPoolTaskExecutor") + private final ThreadPoolTaskExecutor executor; + private final TaskInstHolder taskInstHolder; + private final ITeNodeInstService nodeInstService; + private final TaskThreadRegistry taskThreadRegistry; + private final FlowItemExecutor flowItemExecutor; + + /** + * 终止流程 + */ + public void stop(String instId) { + // todo 调用 edge 暂停接口 + + TaskContext ctx = taskInstHolder.getContext(instId); + if (ctx == null) { + throw new GlobalException("任务不存在"); + } + if (ctx.isStopped()) { + throw new GlobalException("任务已终止,无需重复操作"); + } + + // 统一记录日志 + 设置上下文状态 + 数据库状态 + taskInstHolder.syncStatus(instId, TaskStatusEnum.STOPPED); + taskInstHolder.unRegister(instId); + taskThreadRegistry.interruptAll(instId); + // 被中断的节点 状态修改成 PAUSED + for (TaskNodeExecuteContext pendingNode : taskThreadRegistry.getPendingNodes(instId)) { + String nodeId = pendingNode.getNode().getNodeId(); + nodeInstService.update(instId, nodeId, TaskStatusEnum.STOPPED); + } + } + + /** + * 暂停任务 + */ + public void pause(String instId) { + // todo 调用 edge 暂停接口 + + TaskContext ctx = taskInstHolder.getContext(instId); + if (ctx == null || ctx.isStopped()) { + throw new GlobalException("任务不存在或已终止,无法暂停"); + } + if (ctx.isPaused()) { + throw new GlobalException("任务已处于暂停状态"); + } + ctx.setPaused(false); + ctx.setTerminalStatus(TerminalStatusEnum.RUNNING); + ctx.setStatus(TaskStatusEnum.PAUSED); + ctx.updateTimestamp(); + // 统一记录日志 + 设置上下文状态 + 数据库状态 + taskInstHolder.syncStatus(instId, TaskStatusEnum.PAUSED); + taskThreadRegistry.interruptAll(instId); + // 被中断的节点 状态修改成 PAUSED + for (TaskNodeExecuteContext pendingNode : taskThreadRegistry.getPendingNodes(instId)) { + String nodeId = pendingNode.getNode().getNodeId(); + nodeInstService.update(instId, nodeId, TaskStatusEnum.PAUSED); + } + } + + /** + * 继续任务 + */ + public void resume(String instId) { + TaskContext ctx = taskInstHolder.getContext(instId); + if (ctx == null) { + throw new GlobalException("任务不存在"); + } + if (!ctx.isPaused()) { + throw new GlobalException("当前任务未处于暂停状态,无法继续运行"); + } + + ctx.setPaused(false); + + List pendingNodes = taskThreadRegistry.getPendingNodes(instId); + List pendingLoops = pendingNodes.stream() + .filter(node -> node.getNode().getNodeType().equals(NodeTypeEnum.LOOP)) + .collect(Collectors.toList()); + + // 恢复节点运行 + for (TaskNodeExecuteContext pendingNode : pendingNodes) { + FlowGraph graph = pendingNode.getGraph(); + + String nodeId = pendingNode.getNode().getNodeId(); + if (pendingNode.getNode().getNodeType().equals(NodeTypeEnum.LOOP)) { + // LOOP 节点更新日志,并且等子图中断节点执行完再唤醒 loop + nodeInstService.update(instId, nodeId, TaskStatusEnum.RUNNING); + continue; + } else { + nodeInstService.delete(instId, nodeId); + } + if (graph.isSub()) { + // 找到子图对应的loop节点 + TaskNodeExecuteContext loopCtx = pendingLoops.stream() + .filter(loopNode -> { + FlowGraph loopSubGraph = loopNode.getGraph().getNodeMap().get(loopNode.getNode().getNodeId()).getSubGraph(); + return loopSubGraph.getNodeMap().containsKey(nodeId); + }) + .findFirst() + .orElse(null); + if (loopCtx == null) { + throw new GlobalException("找不到子图对应的loop节点"); + } + // 子图中断点,先执行中断的子图节点 + executor.execute(() -> { + CountDownLatch latch = taskThreadRegistry.getLatch(instId, loopCtx.getNode().getNodeId()); + flowItemExecutor.executeNode( + pendingNode.getGraph(), pendingNode.getNode(), + pendingNode.getStartNodeId(), pendingNode.getStartInputDefs(), + pendingNode.getRootMessage(), latch::countDown, + pendingNode.getLoopIteration() + ); + + try { + latch.await(); // 等待子图恢复执行完成 + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + }); + + } else { + // 普通节点直接恢复 + executor.execute(() -> { + flowItemExecutor.executeNode( + pendingNode.getGraph(), pendingNode.getNode(), + pendingNode.getStartNodeId(), pendingNode.getStartInputDefs(), + pendingNode.getRootMessage(), pendingNode.getOnFinished(), + pendingNode.getLoopIteration() + ); + }); + } + } + + // 最终设置上下文和数据库状态为 RUNNING + ctx.setTerminalStatus(TerminalStatusEnum.RUNNING); + ctx.setStatus(TaskStatusEnum.RUNNING); + ctx.updateTimestamp(); + taskInstHolder.syncStatus(instId, TaskStatusEnum.RUNNING); + } +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/dispatcher/FlowBranchNodeHandler.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/dispatcher/FlowBranchNodeHandler.java new file mode 100644 index 0000000..44bab94 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/dispatcher/FlowBranchNodeHandler.java @@ -0,0 +1,18 @@ +package com.cmvr.test.flow.runtime.dispatcher; + +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteMessage; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteResult; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +@Slf4j +@Component("BRANCH") +@RequiredArgsConstructor +public class FlowBranchNodeHandler implements FlowNodeTypeHandler { + + @Override + public TaskNodeExecuteResult handle(TaskNodeExecuteMessage message) { + return TaskNodeExecuteResult.success(message.getInputParams()); + } +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/dispatcher/FlowEndNodeHandler.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/dispatcher/FlowEndNodeHandler.java new file mode 100644 index 0000000..fb20b52 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/dispatcher/FlowEndNodeHandler.java @@ -0,0 +1,18 @@ +package com.cmvr.test.flow.runtime.dispatcher; + +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteMessage; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteResult; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +@Slf4j +@Component("END") +@RequiredArgsConstructor +public class FlowEndNodeHandler implements FlowNodeTypeHandler { + + @Override + public TaskNodeExecuteResult handle(TaskNodeExecuteMessage message) { + return TaskNodeExecuteResult.success(message.getInputParams()); + } +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/dispatcher/FlowFunctionNodeHandler.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/dispatcher/FlowFunctionNodeHandler.java new file mode 100644 index 0000000..d16509f --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/dispatcher/FlowFunctionNodeHandler.java @@ -0,0 +1,29 @@ +package com.cmvr.test.flow.runtime.dispatcher; + +import com.cmvr.test.enums.ActionEnum; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteMessage; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteResult; +import com.cmvr.test.flow.runtime.operator.NodeOperateHandler; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.Map; + +@Slf4j +@Component("FUNCTION") +@RequiredArgsConstructor +public class FlowFunctionNodeHandler implements FlowNodeTypeHandler { + + private final Map operateHandlerMap; + + @Override + public TaskNodeExecuteResult handle(TaskNodeExecuteMessage message) { + ActionEnum action = message.getAction(); + + NodeOperateHandler handler = operateHandlerMap.get(action.getOperate()); + + TaskNodeExecuteResult execute = handler.execute(message); + return TaskNodeExecuteResult.success(execute.getOutputParams()); + } +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/dispatcher/FlowLoopNodeHandler.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/dispatcher/FlowLoopNodeHandler.java new file mode 100644 index 0000000..21c5ccd --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/dispatcher/FlowLoopNodeHandler.java @@ -0,0 +1,63 @@ +package com.cmvr.test.flow.runtime.dispatcher; + +import com.cmvr.common.utils.spring.SpringUtils; +import com.cmvr.test.flow.builder.FlowGraph; +import com.cmvr.test.flow.builder.FlowNodeWrapper; +import com.cmvr.test.flow.context.TaskThreadRegistry; +import com.cmvr.test.flow.runtime.engine.FlowItemExecutor; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteMessage; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteResult; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.concurrent.CountDownLatch; + +@Slf4j +@Component("LOOP") +@RequiredArgsConstructor +public class FlowLoopNodeHandler implements FlowNodeTypeHandler { + + private final TaskThreadRegistry taskThreadRegistry; + + @Override + public TaskNodeExecuteResult handle(TaskNodeExecuteMessage message) { + FlowGraph graph = message.getGraph(); + // 当前从第几次循环开始 + int loopNum = message.getLoopNum() < 0 ? 1 : message.getLoopNum(); + + String nodeId = message.getNodeId(); + FlowNodeWrapper nodeWrapper = graph.getNode(nodeId); + Integer loopCount = nodeWrapper.getLoopCount(); + + // 如果没有设置循环次数或者循环次数为 0,则跳过处理 + if (loopCount == null || loopCount <= 0) { + log.warn("循环节点 {} 没有有效的 loopCount 参数,跳过处理", nodeId); + return TaskNodeExecuteResult.success(message.getInputParams()); + } + FlowGraph subGraph = nodeWrapper.getSubGraph(); + subGraph.setSub(true); + + // 循环执行子图 + for (int i = loopNum; i <= loopCount; i++) { + CountDownLatch latch = new CountDownLatch(1); + String instId = message.getInstId(); + taskThreadRegistry.registerLatch(instId, nodeId, latch); + FlowItemExecutor flowItemExecutor = SpringUtils.getBean(FlowItemExecutor.class); + flowItemExecutor.executeSubGraph(subGraph, message, latch::countDown, i); + + try { + latch.await(); // 等待子图执行完毕后再进行下一轮 + } catch (InterruptedException e) { + log.error("循环第 {} 次等待中断", i, e); + Thread.currentThread().interrupt(); // 保留中断标志 + break; + } finally { + taskThreadRegistry.releaseLatch(instId, nodeId); + } + } + + // 返回执行结果 + return TaskNodeExecuteResult.success(message.getInputParams()); + } +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/dispatcher/FlowNodeTypeDispatch.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/dispatcher/FlowNodeTypeDispatch.java new file mode 100644 index 0000000..381fc41 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/dispatcher/FlowNodeTypeDispatch.java @@ -0,0 +1,29 @@ +package com.cmvr.test.flow.runtime.dispatcher; + + +import com.cmvr.common.exception.GlobalException; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteMessage; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteResult; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.Map; + +@Slf4j +@Component +@RequiredArgsConstructor +public class FlowNodeTypeDispatch { + + private final Map nodeTypeHandlerMap; + + public TaskNodeExecuteResult dispatch(TaskNodeExecuteMessage message) { + String type = message.getNodeType(); + FlowNodeTypeHandler handler = nodeTypeHandlerMap.get(type); + if (handler == null) { + throw new GlobalException("不支持的节点类型: " + type); + } + + return handler.handle(message); + } +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/dispatcher/FlowNodeTypeHandler.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/dispatcher/FlowNodeTypeHandler.java new file mode 100644 index 0000000..b6284a5 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/dispatcher/FlowNodeTypeHandler.java @@ -0,0 +1,8 @@ +package com.cmvr.test.flow.runtime.dispatcher; + +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteMessage; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteResult; + +public interface FlowNodeTypeHandler { + TaskNodeExecuteResult handle(TaskNodeExecuteMessage message); +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/dispatcher/FlowSleepNodeHandler.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/dispatcher/FlowSleepNodeHandler.java new file mode 100644 index 0000000..979e378 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/dispatcher/FlowSleepNodeHandler.java @@ -0,0 +1,49 @@ +package com.cmvr.test.flow.runtime.dispatcher; + +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteMessage; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteResult; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +@Slf4j +@Component("SLEEP") +@RequiredArgsConstructor +public class FlowSleepNodeHandler implements FlowNodeTypeHandler { + + @Override + public TaskNodeExecuteResult handle(TaskNodeExecuteMessage message) { + String nodeId = message.getNodeId(); + long delayMs = getDelayFromNodeParams(message); + + if (delayMs <= 0) { + log.warn("SLEEP 节点 {} 未配置有效延迟,直接跳过", nodeId); + return TaskNodeExecuteResult.success(message.getInputParams()); + } + + log.info("SLEEP 节点 {} 开始等待 {} ms", nodeId, delayMs); + + try { + Thread.sleep(delayMs); + } catch (InterruptedException e) { + // 暂停或终止时会 interrupt() + log.info("SLEEP 节点 {} 在睡眠中被中断", nodeId); + Thread.currentThread().interrupt(); // 还原中断标志 + return null; // 或抛异常交给 FlowExceptionInterceptor 走中断流程 + } + + log.info("SLEEP 节点 {} 完成等待", nodeId); + return TaskNodeExecuteResult.success(message.getInputParams()); + } + + private long getDelayFromNodeParams(TaskNodeExecuteMessage message) { + String val = message.getInputParams().getString("delayMs"); + if (val != null) { + try { + return Long.parseLong(val); + } catch (NumberFormatException ignored) { + } + } + return 0; + } +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/dispatcher/FlowStartNodeHandler.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/dispatcher/FlowStartNodeHandler.java new file mode 100644 index 0000000..ceb4fec --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/dispatcher/FlowStartNodeHandler.java @@ -0,0 +1,20 @@ +package com.cmvr.test.flow.runtime.dispatcher; + +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteMessage; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteResult; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +@Slf4j +@Component("START") +@RequiredArgsConstructor +public class FlowStartNodeHandler implements FlowNodeTypeHandler { + + @Override + public TaskNodeExecuteResult handle(TaskNodeExecuteMessage message) { + // todo 暂时start节点没有处理 + + return TaskNodeExecuteResult.success(message.getInputParams()); + } +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/dispatcher/FlowSubStartNodeHandler.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/dispatcher/FlowSubStartNodeHandler.java new file mode 100644 index 0000000..aa219b1 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/dispatcher/FlowSubStartNodeHandler.java @@ -0,0 +1,20 @@ +package com.cmvr.test.flow.runtime.dispatcher; + +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteMessage; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteResult; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +@Slf4j +@Component("SUB_START") +@RequiredArgsConstructor +public class FlowSubStartNodeHandler implements FlowNodeTypeHandler { + + @Override + public TaskNodeExecuteResult handle(TaskNodeExecuteMessage message) { + // todo 暂时start节点没有处理 + + return TaskNodeExecuteResult.success(message.getInputParams()); + } +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/FlowItemExecutor.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/FlowItemExecutor.java new file mode 100644 index 0000000..9c4427d --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/FlowItemExecutor.java @@ -0,0 +1,218 @@ +package com.cmvr.test.flow.runtime.engine; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjUtil; +import com.alibaba.fastjson2.JSONObject; +import com.cmvr.test.enums.NodeTypeEnum; +import com.cmvr.test.flow.builder.FlowEdge; +import com.cmvr.test.flow.builder.FlowGraph; +import com.cmvr.test.flow.builder.FlowModelBuilder; +import com.cmvr.test.flow.builder.FlowNodeWrapper; +import com.cmvr.test.flow.builder.FlowParamDef; +import com.cmvr.test.flow.context.TaskContext; +import com.cmvr.test.flow.context.TaskInstHolder; +import com.cmvr.test.flow.context.TaskThreadRegistry; +import com.cmvr.test.flow.runtime.dispatcher.FlowNodeTypeDispatch; +import com.cmvr.test.flow.runtime.engine.support.FlowBranchEvaluator; +import com.cmvr.test.flow.runtime.engine.support.FlowExecutionChainBuilder; +import com.cmvr.test.flow.runtime.engine.support.FlowNodeParamPreparer; +import com.cmvr.test.flow.runtime.interceptor.FlowMsgPreInterceptor; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteContext; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteMessage; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteResult; +import com.cmvr.test.model.dto.TeQueryTaskDetailDTO; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.jetbrains.annotations.NotNull; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +@Slf4j +@Component +@RequiredArgsConstructor +public class FlowItemExecutor { + + private final FlowTaskScheduler flowTaskScheduler; + private final List interceptors; + private final FlowNodeTypeDispatch dispatchNodeHandler; + private final TaskInstHolder taskInstHolder; + private final FlowNodeParamPreparer paramPreparer; + private final FlowExecutionChainBuilder chainBuilder; + private final TaskThreadRegistry taskThreadRegistry; + + /** + * 执行主流程(每个检测项调用一次) + */ + public void executeGraph(TaskNodeExecuteMessage rootMessage, + TeQueryTaskDetailDTO item, Runnable onFinished) { + + FlowGraph graph = FlowModelBuilder.buildExecutableGraph(item.getFlowData()); + String startNodeId = graph.findStartNodeId(); + List startInputDefs = graph.getStartInputParamsDefs(); + + + NodeExecutor executor = node -> + executeNode(graph, node, startNodeId, startInputDefs, rootMessage, onFinished, -1); + + // 执行 start 节点(同步执行) + executeNode(graph, graph.getStartNode(), startNodeId, startInputDefs, rootMessage, onFinished, -1); + + // 调度后续节点(并发) + flowTaskScheduler.start(graph, taskInstHolder.getContext(rootMessage.getInstId()), executor, onFinished); + } + + /** + * 执行子图(子图循环) + */ + public void executeSubGraph(FlowGraph subGraph, + TaskNodeExecuteMessage rootMessage, + Runnable onFinished, + int loopIteration) { + + // 主图中开始节点的 inputParams + List startInputDefs = subGraph.getStartInputParamsDefs(); + + // 子图的 start 节点 + FlowNodeWrapper subStartNode = subGraph.getInDegreeZeroNode(); + String subStartNodeId = subStartNode.getNodeId(); + + NodeExecutor executor = node -> executeNode( + subGraph, node, subStartNodeId, startInputDefs, + rootMessage, onFinished, loopIteration + ); + + // 执行子图起始节点 + executeNode(subGraph, subStartNode, subStartNodeId, startInputDefs, + rootMessage, onFinished, loopIteration); + + // 启动子图调度 + flowTaskScheduler.subStart(subGraph, taskInstHolder.getContext(rootMessage.getInstId()), executor, onFinished, loopIteration); + } + + /** + * 执行单个节点(核心调度逻辑) + */ + public void executeNode(FlowGraph graph, + FlowNodeWrapper node, + String startNodeId, + List startInputDefs, + TaskNodeExecuteMessage rootMessage, + Runnable onFinished, + int loopIteration) { + + String instId = rootMessage.getInstId(); + String itemId = rootMessage.getItemId(); + String nodeId = node.getNodeId(); + + //注册当前线程 + registerThread(graph, node, startNodeId, startInputDefs, rootMessage, onFinished, loopIteration, instId, itemId, nodeId); + try { + // 准备输入参数 + JSONObject inputParams = paramPreparer.prepare(graph, node, startNodeId, startInputDefs, rootMessage); + + // 创建带上下文的执行消息(关键:注入 graph) + TaskNodeExecuteMessage message = buildTaskNodeExecuteMsg(graph, node, rootMessage, nodeId, inputParams, loopIteration); + + // 执行责任链 + TaskNodeExecuteResult result = chainBuilder.build(interceptors, dispatchNodeHandler).apply(message); + + if (ObjUtil.isEmpty(result) || !result.isSuccess()) { +// log.warn("节点执行失败,中断调度:nodeId={}, status={}", nodeId, result != null ? result.isSuccess() : "null"); + return; + } + + // 分支节点处理 + if (node.getNodeType() == NodeTypeEnum.BRANCH) { + postHandleBranchNode(graph, node, startNodeId, startInputDefs, rootMessage, onFinished, loopIteration, nodeId, inputParams, message); + return; + } + + // END 节点 or 子图结束 + if (node.getNodeType() == NodeTypeEnum.END || graph.isSubGraphEndNode(nodeId)) { + try { + onFinished.run(); + } catch (Exception e) { + log.error("onFinished 回调异常", e); + } + } + + // 通知调度器继续调度后继节点 + flowTaskScheduler.markCompleted(message.getInstId(), nodeId, graph, n -> + executeNode(graph, n, startNodeId, startInputDefs, rootMessage, onFinished, loopIteration), loopIteration); + } finally { + // 如果不是暂停全中断 + TaskContext ctx = taskInstHolder.getContext(instId); + if (ctx == null || !ctx.isPaused()) { + taskThreadRegistry.unregisterNodeContext(instId, itemId, nodeId); + if (node.getNodeType().equals(NodeTypeEnum.SUB_START)) { + log.info("subStart注銷了"); + } + } + } + } + + @NotNull + private static TaskNodeExecuteMessage buildTaskNodeExecuteMsg(FlowGraph graph, FlowNodeWrapper node, TaskNodeExecuteMessage rootMessage, String nodeId, JSONObject inputParams, int loopIteration) { + TaskNodeExecuteMessage message = new TaskNodeExecuteMessage(); + BeanUtil.copyProperties(rootMessage, message); + message.setNodeId(nodeId); + message.setNodeType(node.getNodeType().name()); + message.setAction(node.getAction()); + message.setInputParams(inputParams); + message.setGraph(graph); + message.setLoopNum(loopIteration); + return message; + } + + private void postHandleBranchNode(FlowGraph graph, FlowNodeWrapper node, String startNodeId, List startInputDefs, TaskNodeExecuteMessage rootMessage, Runnable onFinished, int loopIteration, String nodeId, JSONObject inputParams, TaskNodeExecuteMessage message) { + String matchedAnchorId = FlowBranchEvaluator.evaluate(nodeId, node.getBranchConditions(), inputParams); + FlowEdge matchedEdge = graph.getEdgeByFromAnchorId(matchedAnchorId); + + if (matchedEdge == null) { + log.warn("未找到匹配的分支出边,anchorId={}, nodeId={}", matchedAnchorId, nodeId); + return; + } + + // 移除未命中的路径 + List allOutEdges = new ArrayList<>(graph.getSuccessors().getOrDefault(nodeId, Collections.emptyList())); + for (FlowEdge edge : allOutEdges) { + if (!edge.equals(matchedEdge)) { + graph.removePathFrom(edge.getTo()); + graph.removeEdge(edge); + } + } + + // 直接调度命中节点 + flowTaskScheduler.scheduleDirectly( + message.getInstId(), + matchedEdge.getTo(), + graph, + n -> executeNode(graph, n, startNodeId, startInputDefs, rootMessage, onFinished, loopIteration), + loopIteration + ); + } + + private void registerThread(FlowGraph graph, FlowNodeWrapper node, String startNodeId, List startInputDefs, TaskNodeExecuteMessage rootMessage, Runnable onFinished, int loopIteration, String instId, String itemId, String nodeId) { + TaskNodeExecuteContext nodeExecuteContext = new TaskNodeExecuteContext(); + nodeExecuteContext.setThread(Thread.currentThread()); + nodeExecuteContext.setGraph(graph); + nodeExecuteContext.setStartNodeId(startNodeId); + nodeExecuteContext.setStartInputDefs(startInputDefs); + nodeExecuteContext.setNode(node); + nodeExecuteContext.setOnFinished(onFinished); + nodeExecuteContext.setRootMessage(rootMessage); + nodeExecuteContext.setLoopIteration(loopIteration); + taskThreadRegistry.registerNodeContext(instId, itemId, nodeId, nodeExecuteContext); + } + + /** + * 节点执行接口(用于调度器回调) + */ + @FunctionalInterface + public interface NodeExecutor { + void execute(FlowNodeWrapper node); + } +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/FlowTaskAsyncDispatcher.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/FlowTaskAsyncDispatcher.java new file mode 100644 index 0000000..c22ad40 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/FlowTaskAsyncDispatcher.java @@ -0,0 +1,49 @@ +package com.cmvr.test.flow.runtime.engine; + +import com.cmvr.test.enums.RunModeEnum; +import com.cmvr.test.model.dto.TeQueryTaskDetailDTO; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 异步流程任务调度器(包装线程池执行器) + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class FlowTaskAsyncDispatcher { + + @Resource(name = "threadPoolTaskExecutor") + private final ThreadPoolTaskExecutor executor; + + private final FlowTaskEngine taskEngine; + + /** + * 异步提交流程任务 + * + * @param instId 任务实例 ID + * @param taskId 任务定义 ID + * @param terminalId 终端 ID + * @param runMode 运行模式(NORMAL / TRIAL) + * @param items 所有检测项详情 + */ + public void submit(String instId, String taskId, String terminalId, + RunModeEnum runMode, List items) { + executor.submit(() -> { + Thread.currentThread().setName("task-thread-" + Thread.currentThread().getId()); + try { + log.info("异步任务开始执行:threadName={}, instId={}, taskId={}", Thread.currentThread().getName(), instId, taskId); + taskEngine.run(instId, taskId, terminalId, runMode, items); + log.info("异步任务执行结束:threadName={}, instId={}, taskId={}", Thread.currentThread().getName(), instId, taskId); + } catch (Exception e) { + log.error("任务执行异常:threadName={}, instId={}, taskId={}, 错误={}", Thread.currentThread().getName(), instId, taskId, e.getMessage(), e); + Thread.currentThread().interrupt(); // 保持中断状态 + } + }); + } +} \ No newline at end of file diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/FlowTaskEngine.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/FlowTaskEngine.java new file mode 100644 index 0000000..540bedd --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/FlowTaskEngine.java @@ -0,0 +1,72 @@ +package com.cmvr.test.flow.runtime.engine; + +import com.alibaba.fastjson2.JSONObject; +import com.cmvr.test.enums.RunModeEnum; +import com.cmvr.test.flow.context.TaskContext; +import com.cmvr.test.flow.context.TaskInstHolder; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteMessage; +import com.cmvr.test.model.dto.TeQueryTaskDetailDTO; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.concurrent.CountDownLatch; + +@Slf4j +@Component +@RequiredArgsConstructor +public class FlowTaskEngine { + + private final TaskInstHolder taskInstHolder; + + private final FlowItemExecutor flowTaskExecutor; + + public void run(String instId, String taskId, String terminalId, + RunModeEnum runMode, List items) { + TaskContext context = taskInstHolder.getContext(instId); + context.setRunMode(runMode); + JSONObject runParams = context.getRunParams(); + + int totalItemCount = items.size(); + + for (int i = 0; i < totalItemCount; i++) { + TeQueryTaskDetailDTO item = items.get(i); + // 等待当前 item 完成后再执行下一个 + CountDownLatch latch = new CountDownLatch(1); + String itemId = item.getDetectItemId(); + context.setItemId(itemId); + + TaskNodeExecuteMessage message = new TaskNodeExecuteMessage(); + message.setInstId(instId); + message.setTaskId(taskId); + message.setTerminalId(terminalId); + message.setItemId(itemId); + + int pendingItemCount = totalItemCount - i - 1; + message.setPendingItemCount(pendingItemCount); + + JSONObject jsonObject = runParams.getJSONObject(itemId); + if (runMode.equals(RunModeEnum.NORMAL)) { + context.setRunParams(jsonObject); + } + flowTaskExecutor.executeGraph(message, item, latch::countDown); +// flowTaskExecutor.executeGraph(message, item, () -> { +// try { +// // 可以放一些 per-item 回调逻辑 +// } finally { +// latch.countDown(); +// } +// }); + + try { + latch.await(); // 等待该检测项的子流程全部完成 + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + log.error("检测项执行被中断:itemId={}", itemId, e); + break; + } +// flowTaskExecutor.executeGraph(message, item, onFinished); + } + } +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/FlowTaskRuntimeEntry.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/FlowTaskRuntimeEntry.java new file mode 100644 index 0000000..48ab150 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/FlowTaskRuntimeEntry.java @@ -0,0 +1,171 @@ +package com.cmvr.test.flow.runtime.engine; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.exceptions.ExceptionUtil; +import cn.hutool.core.util.ObjUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.cmvr.common.exception.GlobalException; +import com.cmvr.test.enums.ActionEnum; +import com.cmvr.test.enums.RunModeEnum; +import com.cmvr.test.enums.TaskStatusEnum; +import com.cmvr.test.flow.context.TaskContext; +import com.cmvr.test.flow.context.TaskInstHolder; +import com.cmvr.test.model.domain.TeTaskInst; +import com.cmvr.test.model.dto.TeQueryTaskDetailDTO; +import com.cmvr.test.model.vo.TeDetectItemDeployFlowVO; +import com.cmvr.test.model.vo.TeTaskExecuteNormalVO; +import com.cmvr.test.model.vo.TeTaskExecuteTrailVO; +import com.cmvr.test.service.ITeDetectionItemService; +import com.cmvr.test.service.ITeTaskInstService; +import com.cmvr.test.service.ITeTaskOrchestrationService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 任务执行入口 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class FlowTaskRuntimeEntry implements FlowTaskRuntimeService { + + private final ITeTaskOrchestrationService taskOrchestrationService; + private final ITeTaskInstService taskInstService; + private final ITeDetectionItemService detectionItemService; + private final TaskInstHolder taskInstHolder; + private final FlowTaskAsyncDispatcher flowTaskAsyncDispatcher; + + @Transactional(rollbackFor = Exception.class) + public String executeTask(TeTaskExecuteNormalVO taskExecuteNormalVO) { + String terminalId = taskExecuteNormalVO.getTerminalId(); + String taskId = taskExecuteNormalVO.getTaskId(); + + // 查询任务详情(检测项信息) + List details = taskOrchestrationService.queryTaskDetail(taskId); + int count = (int) details.stream().filter(dto -> ObjUtil.equals(dto.getIsDeploy(), "1")).count(); + if (count > 0) { + throw new GlobalException("当前任务存在未发布的检测项!"); + } + + // 检查终端状态 + if (taskInstHolder.isTerminalLocked(terminalId)) { + throw new GlobalException("当前终端正在执行其他任务,请稍后再试"); + } + + // 创建任务实例 + TeTaskInst instance = createAndSaveTaskInstance(taskId, terminalId, RunModeEnum.NORMAL); + String instId = instance.getId(); + + try { + // 注册上下文 + registerTaskContext(instId, taskId, terminalId, null, RunModeEnum.NORMAL, details, taskExecuteNormalVO.getRunParams()); + + // 异步提交执行 + flowTaskAsyncDispatcher.submit(instId, taskId, terminalId, RunModeEnum.NORMAL, details); + return instId; + } catch (Exception e) { + taskInstHolder.markFailed( + instId, taskId, null, null, null, + ActionEnum.NONE.getOperate(), ActionEnum.NONE.getAction(), + JSON.toJSONString(taskExecuteNormalVO), + "任务执行异常:" + StrUtil.sub(ExceptionUtil.getMessage(e), 0, 480) + ); + throw new GlobalException("任务执行异常:" + e.getMessage()); + } + } + + @Transactional(rollbackFor = Exception.class) + public String executeTrialTask(TeTaskExecuteTrailVO taskExecuteTrailVO) { + JSONObject runParams = taskExecuteTrailVO.getRunParams(); + String terminalId = runParams.getString("terminalId"); + if (StrUtil.isEmpty(terminalId)) { + throw new GlobalException("终端ID不能为空"); + } + if (taskInstHolder.isTerminalLocked(terminalId)) { + throw new GlobalException("当前终端正在执行其他任务,请稍后再试"); + } + + // 构建试运行任务定义(临时任务) + String itemId = taskExecuteTrailVO.getItemId(); + + TeDetectItemDeployFlowVO deployFlowVO = new TeDetectItemDeployFlowVO(); + deployFlowVO.setId(itemId); + deployFlowVO.setFlowData(taskExecuteTrailVO.getFlowData()); + detectionItemService.deployFlow(deployFlowVO); + + String taskId = taskOrchestrationService.buildTrialTask(itemId); + + // 创建并保存任务实例 + TeTaskInst instance = createAndSaveTaskInstance(taskId, terminalId, RunModeEnum.TRIAL); + String instId = instance.getId(); + + try { + // 构建任务详情(唯一检测项) + TeQueryTaskDetailDTO teQueryTaskDetailDTO = new TeQueryTaskDetailDTO(); + teQueryTaskDetailDTO.setDetectItemId(itemId); + teQueryTaskDetailDTO.setFlowData(taskExecuteTrailVO.getFlowData()); + teQueryTaskDetailDTO.setOrderNum(1); + + List details = CollUtil.newArrayList(teQueryTaskDetailDTO); + + // 注册上下文 + registerTaskContext(instId, taskId, terminalId, itemId, RunModeEnum.TRIAL, details, runParams); + + // 异步调度执行(与正式任务一致,只是模式为 TRIAL) + flowTaskAsyncDispatcher.submit(instId, taskId, terminalId, RunModeEnum.TRIAL, details); + + return instId; + } catch (Exception e) { + taskInstHolder.markFailed( + instId, taskId, itemId, + null, null, + ActionEnum.NONE.getOperate(), ActionEnum.NONE.getAction(), + JSON.toJSONString(taskExecuteTrailVO), + "试运行异常:" + StrUtil.sub(ExceptionUtil.getMessage(e), 0, 480) + ); + throw new GlobalException("试运行异常:" + e.getMessage()); + } + } + + /** + * 创建并保存任务实例 + */ + private TeTaskInst createAndSaveTaskInstance(String taskId, String terminalId, RunModeEnum runMode) { + TeTaskInst instance = new TeTaskInst(); + instance.setTaskId(taskId); +// instance.setConfig(JSON.toJSONString(taskExecuteVO.getConfig())); + instance.setTerminalId(terminalId); + instance.setRunMode(runMode.name()); + instance.setStatus(String.valueOf(TaskStatusEnum.RUNNING.getCode())); + boolean save = taskInstService.save(instance); + if (!save) { + throw new GlobalException(StrUtil.format("创建 {} 任务实例失败,任务ID {}", runMode, taskId)); + } + return instance; + } + + /** + * 注册上下文 + */ + private void registerTaskContext(String instId, String taskId, String terminalId, + String itemId, RunModeEnum mode, List details, + JSONObject runParams) { + TaskContext ctx = new TaskContext(); + ctx.setInstId(instId); + ctx.setTaskId(taskId); + ctx.setRunMode(mode); + ctx.setTerminalId(terminalId); + ctx.setItemId(itemId); + ctx.setStatus(TaskStatusEnum.RUNNING); + ctx.setTerminalLocked(true); + ctx.setRunParams(runParams); + + taskInstHolder.register(ctx); + } +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/FlowTaskRuntimeService.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/FlowTaskRuntimeService.java new file mode 100644 index 0000000..fc39884 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/FlowTaskRuntimeService.java @@ -0,0 +1,28 @@ +package com.cmvr.test.flow.runtime.engine; + +import com.cmvr.test.enums.TaskStatusEnum; +import com.cmvr.test.model.vo.TeTaskExecuteNormalVO; +import com.cmvr.test.model.vo.TeTaskExecuteTrailVO; + +/** + * 任务运行服务接口,定义任务调度运行相关的操作。 + * 可用于统一调度、试运行、终止、暂停、状态查询等行为。 + */ +public interface FlowTaskRuntimeService { + + /** + * 执行正式任务(NORMAL 模式) + * + * @param taskExecuteNormalVO 任务执行请求对象(包含终端ID、任务ID等) + * @return 返回任务实例ID(instId) + */ + String executeTask(TeTaskExecuteNormalVO taskExecuteNormalVO); + + /** + * 执行试运行任务(TRIAL 模式) + * + * @param taskExecuteTrailVO 试运行任务请求对象(包含检测项ID、流程图等) + * @return 返回任务实例ID(instId) + */ + String executeTrialTask(TeTaskExecuteTrailVO taskExecuteTrailVO); +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/FlowTaskScheduler.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/FlowTaskScheduler.java new file mode 100644 index 0000000..60daadf --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/FlowTaskScheduler.java @@ -0,0 +1,158 @@ +package com.cmvr.test.flow.runtime.engine; + +import cn.hutool.core.exceptions.ExceptionUtil; +import com.cmvr.test.flow.builder.FlowGraph; +import com.cmvr.test.flow.builder.FlowNodeWrapper; +import com.cmvr.test.flow.context.TaskContext; +import com.cmvr.test.flow.runtime.engine.support.FlowSchedulerCache; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.Collections; +import java.util.List; +import java.util.Set; + +@Slf4j +@Component +@RequiredArgsConstructor +public class FlowTaskScheduler { + + @Resource(name = "threadPoolTaskExecutor") + private final ThreadPoolTaskExecutor executor; + + private final FlowSchedulerCache schedulerCache; + + /** + * 启动主流程调度(从 start 的所有出边节点开始) + */ + public void start(FlowGraph graph, + TaskContext context, + FlowItemExecutor.NodeExecutor executorFunc, + Runnable onFinished) { + + String instId = context.getInstId(); + String startNodeId = graph.findStartNodeId(); + List nextNodes = graph.getNextNodes(startNodeId); + + if (nextNodes.isEmpty()) { + log.warn("start 节点无出边,流程直接结束:instId={}", instId); + onFinished.run(); + return; + } + + for (String nextId : nextNodes) { + scheduleNode(instId, nextId, graph, executorFunc, -1); + } + } + + /** + * 启动子图调度(从入度为0的节点开始) + */ + public void subStart(FlowGraph graph, + TaskContext context, + FlowItemExecutor.NodeExecutor executorFunc, + Runnable onFinished, + int loopIteration) { + + String instId = context.getInstId(); + FlowNodeWrapper startNode = graph.getInDegreeZeroNode(); + List nextNodes = graph.getNextNodes(startNode.getNodeId()); + + if (nextNodes.isEmpty()) { + log.warn("子图 start 节点无出边,流程直接结束:instId={}", instId); + onFinished.run(); + return; + } + + // 并发调度后继节点 + for (String nextId : nextNodes) { + scheduleNode(instId, nextId, graph, executorFunc, loopIteration); + } + } + + /** + * 某节点执行完成后,判断并调度其所有后继节点 + */ + public void markCompleted(String instId, + String nodeId, + FlowGraph graph, + FlowItemExecutor.NodeExecutor executorFunc, + int loopIteration) { + + List nextNodes = graph.getNextNodes(nodeId); + + for (String nextId : nextNodes) { + String key = FlowSchedulerCache.buildKey(instId, nextId, loopIteration); + + // 使用 Set 来记录已完成的前驱节点 + Set completedPreNodes = schedulerCache.getOrInitCompletedPre(key); + // 添加当前节点作为已完成的前驱节点 + completedPreNodes.add(nodeId); + + int preCount = graph.getPredecessors().getOrDefault(nextId, Collections.emptyList()).size(); + + // 如果当前节点的所有前驱节点都已完成,则调度后继节点 + if (completedPreNodes.size() == preCount) { + scheduleNode(instId, nextId, graph, executorFunc, loopIteration); + } + } + } + + /** + * 提交节点执行任务(只调度一次) + */ + private void scheduleNode(String instId, + String nodeId, + FlowGraph graph, + FlowItemExecutor.NodeExecutor executorFunc, + int loopIteration) { + + String key = FlowSchedulerCache.buildKey(instId, nodeId, loopIteration); + + // 如果已经调度过,则不再重复调度 + if (schedulerCache.trySchedule(key)) { + executor.submit(() -> { + Thread.currentThread().setName("node-thread-" + nodeId); + try { + executorFunc.execute(graph.getNode(nodeId)); + } catch (Exception e) { + if (ExceptionUtil.getRootCause(e) instanceof InterruptedException) { + return; + } + log.error("节点执行异常:instId={}, nodeId={}, err={}", instId, nodeId, e.getMessage(), e); + } + }); + } + } + + public void scheduleDirectly(String instId, + String nodeId, + FlowGraph graph, + FlowItemExecutor.NodeExecutor executorFunc, + int loopIteration) { + + String key = FlowSchedulerCache.buildKey(instId, nodeId, loopIteration); + if (schedulerCache.trySchedule(key)) { + executor.submit(() -> { + try { + executorFunc.execute(graph.getNode(nodeId)); + } catch (Exception e) { + if (ExceptionUtil.getRootCause(e) instanceof InterruptedException) { + return; + } + log.error("节点执行异常:instId={}, nodeId={}, err={}", instId, nodeId, e.getMessage(), e); + } + }); + } + } + + /** + * 清理缓存(主图或子图执行结束后调用) + */ + public void clear(String instId) { + schedulerCache.clearContextCache(instId); + } +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/support/FlowBranchEvaluator.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/support/FlowBranchEvaluator.java new file mode 100644 index 0000000..29683c2 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/support/FlowBranchEvaluator.java @@ -0,0 +1,137 @@ +package com.cmvr.test.flow.runtime.engine.support; + +import com.alibaba.fastjson2.JSONObject; +import com.cmvr.test.enums.BranchConditionOpEnum; +import com.cmvr.test.flow.builder.FlowBranchConditionGroup; + +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** + * 分支节点条件匹配器 + * 用于在流程执行时,根据输入参数判断分支条件是否命中 + */ +public class FlowBranchEvaluator { + + /** + * 选择满足条件的锚点ID + * 遍历所有条件组,返回第一个满足条件的分支ID + * 如果都不满足,返回默认的 else 出口 + */ + public static String evaluate(String nodeId, List groups, JSONObject inputParams) { + for (FlowBranchConditionGroup group : groups) { + if (matchGroup(group, inputParams)) { + return group.getId(); + } + } + return nodeId + "_else"; + } + + /** + * 匹配某个条件组是否成立 + */ + private static boolean matchGroup(FlowBranchConditionGroup group, JSONObject context) { + boolean isAnd = "and".equalsIgnoreCase(group.getWithOr()); + + for (FlowBranchConditionGroup.ConditionExpression expr : group.getExpressions()) { + boolean result = matchExpr(expr, context); + + if (!isAnd && result) { + return true; + } + if (isAnd && !result) { + return false; + } + } + + return isAnd; + } + + /** + * 匹配单个表达式是否成立 + */ + private static boolean matchExpr(FlowBranchConditionGroup.ConditionExpression expr, JSONObject context) { + // 取左值: + Object left; + if ("quote".equalsIgnoreCase(expr.getNameType()) && expr.getNameQuotePath() != null) { + // 如果时引用类型,取其引用字段的值 + left = resolveQuotePath(context, expr.getNameQuotePath()); + } else { + // 如果是输入类型,取其输入的值 + left = expr.getName(); + } + + // 取右值:可以是常量值,也可以是引用路径值 + String right; + if ("quote".equalsIgnoreCase(expr.getValueType()) && expr.getQuotePath() != null) { + right = resolveQuotePath(context, expr.getQuotePath()); + } else { + right = expr.getInput(); + } + + // 获取比较运算符 + BranchConditionOpEnum op = expr.getCondition(); + + // 执行比较逻辑 + switch (op) { + case EQUAL: + return Objects.equals(String.valueOf(left), right); + case NOT_EQUAL: + return !Objects.equals(String.valueOf(left), right); + case NULL: + return left == null; + case NOT_NULL: + return left != null; + case INCLUDE: + return left != null && String.valueOf(left).contains(right); + case NOT_INCLUDE: + return left != null && !String.valueOf(left).contains(right); + case GREATER_THAN: + return compare(left, right) > 0; + case GREATER_THAN_OR_EQUAL: + return compare(left, right) >= 0; + case LESS_THAN: + return compare(left, right) < 0; + case LESS_THAN_OR_EQUAL: + return compare(left, right) <= 0; + default: + return false; + } + } + + /** + * 按引用路径从上下文中递归获取目标值 + */ + private static String resolveQuotePath(JSONObject context, List path) { + if (path == null || path.size() < 2) { + return null; + } + + Object current = context; + for (int i = 1; i < path.size(); i++) { + if (current instanceof JSONObject) { + current = ((JSONObject) current).get(path.get(i)); + } else if (current instanceof Map) { + current = ((Map) current).get(path.get(i)); + } else { + return null; + } + } + + return current != null ? String.valueOf(current) : null; + } + + /** + * 数值比较 + */ + private static int compare(Object left, String right) { + try { + double leftValue = Double.parseDouble(String.valueOf(left)); + double rightValue = Double.parseDouble(right); + return Double.compare(leftValue, rightValue); + } catch (Exception e) { + return 0; + } + } +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/support/FlowExecutionChainBuilder.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/support/FlowExecutionChainBuilder.java new file mode 100644 index 0000000..f297fde --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/support/FlowExecutionChainBuilder.java @@ -0,0 +1,34 @@ +package com.cmvr.test.flow.runtime.engine.support; + +import cn.hutool.core.collection.CollUtil; +import com.cmvr.test.flow.runtime.dispatcher.FlowNodeTypeDispatch; +import com.cmvr.test.flow.runtime.interceptor.FlowMsgPreInterceptor; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteMessage; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteResult; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.function.Function; + +@Component +@RequiredArgsConstructor +public class FlowExecutionChainBuilder { + + /** + * 构建拦截责任链 + */ + public Function build( + List interceptors, + FlowNodeTypeDispatch dispatchHandler) { + + List reversed = CollUtil.reverseNew(interceptors); + Function next = dispatchHandler::dispatch; + + for (FlowMsgPreInterceptor interceptor : reversed) { + Function finalNext = next; + next = msg -> interceptor.intercept(msg, finalNext); + } + return next; + } +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/support/FlowNodeParamPreparer.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/support/FlowNodeParamPreparer.java new file mode 100644 index 0000000..f43cab0 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/support/FlowNodeParamPreparer.java @@ -0,0 +1,54 @@ +package com.cmvr.test.flow.runtime.engine.support; + +import com.alibaba.fastjson2.JSONObject; +import com.cmvr.test.enums.NodeTypeEnum; +import com.cmvr.test.flow.builder.FlowGraph; +import com.cmvr.test.flow.builder.FlowNodeWrapper; +import com.cmvr.test.flow.builder.FlowParamDef; +import com.cmvr.test.flow.builder.FlowParamHelper; +import com.cmvr.test.flow.context.TaskContext; +import com.cmvr.test.flow.context.TaskInstHolder; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteMessage; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component +@RequiredArgsConstructor +public class FlowNodeParamPreparer { + + private final TaskInstHolder taskInstHolder; + + /** + * 准备节点输入参数(自动处理 START 类型) + */ + public JSONObject prepare(FlowGraph graph, FlowNodeWrapper node, String startNodeId, + List startInputDefs, TaskNodeExecuteMessage rootMessage) { + + JSONObject inputParams = FlowParamHelper.buildInputParams( + node.getNodeParams(), + startNodeId, + startInputDefs, + refNodeId -> { + if (refNodeId.equals(startNodeId)) { + return startInputDefs; + } + return graph.getNodeParamsDefs().get(refNodeId); + } + ); + + if (node.getNodeType() == NodeTypeEnum.START || node.getNodeType() == NodeTypeEnum.BRANCH) { + TaskContext ctx = taskInstHolder.getContext(rootMessage.getInstId()); + JSONObject runParams = ctx.getRunParams(); + JSONObject merged = new JSONObject(); + for (String key : FlowParamHelper.toJson(startInputDefs).keySet()) { + if (key.equals("terminalId")) continue; + Object override = runParams.get(key); + merged.put(key, override != null ? override : inputParams.get(key)); + } + return merged; + } + return inputParams; + } +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/support/FlowSchedulerCache.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/support/FlowSchedulerCache.java new file mode 100644 index 0000000..340f0fb --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/support/FlowSchedulerCache.java @@ -0,0 +1,37 @@ +package com.cmvr.test.flow.runtime.engine.support; + +import cn.hutool.core.util.StrUtil; +import org.springframework.stereotype.Component; + +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; +import java.util.concurrent.atomic.AtomicBoolean; + +@Component +public class FlowSchedulerCache { + + // instId_nodeId 或 instId_nodeId_loopIteration + private final ConcurrentMap scheduled = new ConcurrentHashMap<>(); + private final ConcurrentMap> completedPreMap = new ConcurrentHashMap<>(); + + public boolean trySchedule(String key) { + AtomicBoolean isScheduled = scheduled.computeIfAbsent(key, k -> new AtomicBoolean(false)); + return isScheduled.compareAndSet(false, true); + } + + public Set getOrInitCompletedPre(String key) { + return completedPreMap.computeIfAbsent(key, k -> ConcurrentHashMap.newKeySet()); + } + + public void clearContextCache(String instId) { + scheduled.keySet().removeIf(k -> k.startsWith(instId + "_")); + completedPreMap.keySet().removeIf(k -> k.startsWith(instId + "_")); + } + + public static String buildKey(String instId, String nodeId, int loopIteration) { + return loopIteration >= 0 + ? StrUtil.format("{}_{}_{}", instId, nodeId, loopIteration) + : StrUtil.format("{}_{}", instId, nodeId); + } +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/interceptor/FlowExceptionInterceptor.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/interceptor/FlowExceptionInterceptor.java new file mode 100644 index 0000000..6e205d5 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/interceptor/FlowExceptionInterceptor.java @@ -0,0 +1,48 @@ +package com.cmvr.test.flow.runtime.interceptor; + +import cn.hutool.core.exceptions.ExceptionUtil; +import cn.hutool.core.util.ObjUtil; +import cn.hutool.core.util.StrUtil; +import com.cmvr.common.exception.GlobalException; +import com.cmvr.test.flow.context.TaskInstHolder; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteMessage; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteResult; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; + +import java.util.function.Function; + +@Slf4j +@Component +@Order(1) +@RequiredArgsConstructor +public class FlowExceptionInterceptor implements FlowMsgPreInterceptor { + + private final TaskInstHolder taskInstHolder; + + @Override + public TaskNodeExecuteResult intercept(TaskNodeExecuteMessage message, + Function next) { + try { + return next.apply(message); + } catch (Exception e) { + if (ExceptionUtil.getRootCause(e) instanceof InterruptedException) { + log.info("节点被中断退出: {}", message.getNodeId()); + return null; + } + taskInstHolder.markFailed( + message.getInstId(), + message.getTaskId(), + message.getItemId(), + message.getNodeId(), + message.getNodeType(), + message.getAction().getOperate(), message.getAction().getOperate(), + ObjUtil.isEmpty(message.getInputParams()) ? null : message.getInputParams().toJSONString(), + "执行异常:" + StrUtil.sub(ExceptionUtil.getMessage(e), 0, 480) + ); + throw new GlobalException("任务执行失败:" + e.getMessage()); + } + } +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/interceptor/FlowLoggingInterceptor.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/interceptor/FlowLoggingInterceptor.java new file mode 100644 index 0000000..f71eb9a --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/interceptor/FlowLoggingInterceptor.java @@ -0,0 +1,53 @@ +package com.cmvr.test.flow.runtime.interceptor; + +import cn.hutool.core.util.StrUtil; +import com.cmvr.test.enums.NodeTypeEnum; +import com.cmvr.test.flow.context.TaskContext; +import com.cmvr.test.flow.context.TaskInstHolder; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteMessage; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteResult; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; + +import java.util.function.Function; + +@Slf4j +@Component +@Order(2) +@RequiredArgsConstructor +public class FlowLoggingInterceptor implements FlowMsgPreInterceptor { + + private final TaskInstHolder taskInstHolder; + + @Override + public TaskNodeExecuteResult intercept(TaskNodeExecuteMessage message, + Function next) { + long start = System.currentTimeMillis(); + log.info("[ {} ]节点开始执行, 参数[ {} ], 循环次数[ {} ]", message.getAction(), message.getInputParams(), message.getLoopNum()); + + // todo 判断一下是否为LOOP重入 + if (!(message.getNodeType().equalsIgnoreCase(NodeTypeEnum.LOOP.getCode()) && message.getLoopNum() > 0)) { + taskInstHolder.markRunning(message.getInstId(), message.getTaskId(), message.getItemId(), message.getNodeId(), + message.getNodeType(), message.getAction().getOperate(), message.getAction().getAction(), message.getInputParams().toJSONString()); + } + + TaskNodeExecuteResult result = next.apply(message); + + // 节点执行返回拦截 判断此时是否被终止或暂停 + TaskContext context = taskInstHolder.getContext(message.getInstId()); + if (context == null || context.isPaused()) { + // 确认是否已终止或已暂停 + log.info("当前流程已经暂停/终止"); + return null; + } + + taskInstHolder.markSuccess(message.getInstId(), message.getItemId(), message.getNodeId(), message.getPendingItemCount(),message.getNodeType(), + result.getOutputParams().toJSONString(), StrUtil.format("[{}] 执行成功", message.getAction())); + + long end = System.currentTimeMillis(); + log.info("[ {} ]节点执行结束, 参数[ {} ], 循环次数[ {} ], 耗时[ {} ]", message.getAction(), message.getInputParams(), message.getLoopNum(), end - start); + return result; + } +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/interceptor/FlowMsgPreInterceptor.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/interceptor/FlowMsgPreInterceptor.java new file mode 100644 index 0000000..a3418b2 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/interceptor/FlowMsgPreInterceptor.java @@ -0,0 +1,21 @@ +package com.cmvr.test.flow.runtime.interceptor; + +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteMessage; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteResult; + +import java.util.function.Function; + +/** + * 流程消息前置处理 + */ +public interface FlowMsgPreInterceptor { + + /** + * 拦截任务节点执行消息 + * @param message 原始执行消息 + * @param next 下一个处理函数 + * @return 返回最终执行结果 + */ + TaskNodeExecuteResult intercept(TaskNodeExecuteMessage message, + Function next); +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/message/TaskNodeExecuteContext.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/message/TaskNodeExecuteContext.java new file mode 100644 index 0000000..0e56a6c --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/message/TaskNodeExecuteContext.java @@ -0,0 +1,24 @@ +package com.cmvr.test.flow.runtime.message; + +import com.cmvr.test.flow.builder.FlowGraph; +import com.cmvr.test.flow.builder.FlowNodeWrapper; +import com.cmvr.test.flow.builder.FlowParamDef; +import lombok.Data; + +import java.util.List; + +/** + * 节点执行上下文,用于保存线程与流程信息 + */ +@Data +public class TaskNodeExecuteContext { + private Thread thread; + + private FlowGraph graph; + private FlowNodeWrapper node; + private String startNodeId; + private List startInputDefs; + private TaskNodeExecuteMessage rootMessage; + private Runnable onFinished; + private int loopIteration; +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/message/TaskNodeExecuteMessage.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/message/TaskNodeExecuteMessage.java new file mode 100644 index 0000000..5d61754 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/message/TaskNodeExecuteMessage.java @@ -0,0 +1,61 @@ +package com.cmvr.test.flow.runtime.message; + +import com.alibaba.fastjson2.JSONObject; +import com.cmvr.test.enums.ActionEnum; +import com.cmvr.test.flow.builder.FlowGraph; +import lombok.Data; + +/** + * 单个节点的执行输入消息 + */ +@Data +public class TaskNodeExecuteMessage { + + /** 实例ID */ + private String instId; + + /** 任务ID */ + private String taskId; + + /** 检测项ID(用于定位流程) */ + private String itemId; + + /** 节点ID */ + private String nodeId; + + /** 待执行检测项数 */ + private int pendingItemCount; + + /** + * 流程执行图 + */ + private transient FlowGraph graph; + + /** + * 循环节点执行到第几次 + * 默认 0 次 + */ + private transient int loopNum = 0; + + /** 节点名称 */ + private String nodeName; + + /** 节点类型(START、FUNCTION、END 等) */ + private String nodeType; + + /** 节点行为(动作标识符) */ + private ActionEnum action; + + /** 是否试运行 */ + private boolean trial; + + /** 所属终端ID */ + private String terminalId; + + /** 节点入参 */ + private JSONObject inputParams; + + /** 上游输出参数(来自上一个节点的输出) */ + private JSONObject upStreamOutput; + +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/message/TaskNodeExecuteResult.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/message/TaskNodeExecuteResult.java new file mode 100644 index 0000000..1c1fd92 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/message/TaskNodeExecuteResult.java @@ -0,0 +1,41 @@ +package com.cmvr.test.flow.runtime.message; + +import com.alibaba.fastjson2.JSONObject; +import lombok.Data; + +/** + * 单个节点的执行结果 + */ +@Data +public class TaskNodeExecuteResult { + + /** 是否成功执行 */ + private boolean success; + + /** 输出参数(传递给下一个节点) */ + private JSONObject outputParams; + + /** 错误信息(如果执行失败) */ + private String errorMsg; + + public static TaskNodeExecuteResult success(JSONObject output) { + TaskNodeExecuteResult result = new TaskNodeExecuteResult(); + result.setSuccess(true); + result.setOutputParams(output); + return result; + } + + public static TaskNodeExecuteResult success() { + TaskNodeExecuteResult result = new TaskNodeExecuteResult(); + result.setOutputParams(new JSONObject()); + result.setSuccess(true); + return result; + } + + public static TaskNodeExecuteResult failure(String msg) { + TaskNodeExecuteResult result = new TaskNodeExecuteResult(); + result.setSuccess(false); + result.setErrorMsg(msg); + return result; + } +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/operator/AbstractNodeOperateHandler.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/operator/AbstractNodeOperateHandler.java new file mode 100644 index 0000000..07a9c90 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/operator/AbstractNodeOperateHandler.java @@ -0,0 +1,68 @@ +package com.cmvr.test.flow.runtime.operator; + +import com.cmvr.test.enums.ActionEnum; +import com.cmvr.test.flow.context.TaskContext; +import com.cmvr.test.flow.context.TaskInstHolder; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteMessage; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteResult; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * todo 执行前后都可以做一次控制状态的验证 + */ +@Slf4j +public abstract class AbstractNodeOperateHandler implements NodeOperateHandler { + + @Autowired + protected TaskInstHolder taskInstHolder; + + @Override + public TaskNodeExecuteResult execute(TaskNodeExecuteMessage message) { + ActionEnum actionEnum = message.getAction(); + + // 正常执行 + TaskNodeExecuteResult result = doExecute(message); + // 检查上下文状态,处理终止/暂停 + if (!checkContext(message, actionEnum)) { + // todo + return null; // 若已暂停或终止,中断后续流程 + } + // 记录节点执行成功 + after(result, actionEnum); + + return result; + } + + /** + * 检查上下文状态,处理暂停/终止逻辑 + */ + protected boolean checkContext(TaskNodeExecuteMessage message, ActionEnum action) { + TaskContext ctx = taskInstHolder.getContext(message.getInstId()); + if (ctx == null) return false; // 为null说明已经注销 + + if (ctx.isStopped()) { + // TODO 调用 Edge 中止 + + // 标记终止 +// taskInstHolder.markStopped(message.getInstId(), message.getTaskId(), message.getItemId()); + return false; + } + + if (ctx.isPaused()) { + // TODO 调用 Edge 暂停 + + // 标记暂停 +// taskInstHolder.markPaused(message.getInstId(), message.getTaskId(), message.getItemId()); + return false; + } + + return true; + } + + protected void after(TaskNodeExecuteResult message, ActionEnum action) { + + } + + protected abstract TaskNodeExecuteResult doExecute(TaskNodeExecuteMessage message); +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/operator/NodeOperateHandler.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/operator/NodeOperateHandler.java new file mode 100644 index 0000000..a5634cf --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/operator/NodeOperateHandler.java @@ -0,0 +1,8 @@ +package com.cmvr.test.flow.runtime.operator; + +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteMessage; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteResult; + +public interface NodeOperateHandler { + TaskNodeExecuteResult execute(TaskNodeExecuteMessage message); +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/operator/edge/EdgeCameraOperateService.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/operator/edge/EdgeCameraOperateService.java new file mode 100644 index 0000000..2c67670 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/operator/edge/EdgeCameraOperateService.java @@ -0,0 +1,124 @@ +package com.cmvr.test.flow.runtime.operator.edge; + +import cn.hutool.core.util.ObjUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; +import com.cmvr.common.enums.FileType; +import com.cmvr.common.exception.GlobalException; +import com.cmvr.edge.client.service.EdgeCameraService; +import com.cmvr.test.enums.ActionEnum; +import com.cmvr.test.flow.builder.FlowNodeWrapper; +import com.cmvr.test.flow.context.TaskInstHolder; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteMessage; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteResult; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor +public class EdgeCameraOperateService implements EdgeOperateService { + + private final EdgeCameraService edgeCameraService; + private final TaskInstHolder taskInstHolder; + + @Override + public boolean supports(ActionEnum action) { + return action.name().startsWith("CAMERA_"); + } + + @Override + public TaskNodeExecuteResult execute(TaskNodeExecuteMessage message) { + String instId = message.getInstId(); + String nodeId = message.getNodeId(); + ActionEnum action = message.getAction(); + JSONObject inputParams = message.getInputParams(); + String deviceId = inputParams.getString("deviceId"); + String terminalId = message.getTerminalId(); + JSONObject upstreamOutput = message.getUpStreamOutput(); + + JSONObject output = new JSONObject(); + + switch (action) { + case CAMERA_START: { +// String result = edgeCameraService.start(terminalId, deviceId); + String result = StrUtil.format("id为 [{}] 的相机开启了", deviceId); + output.put("result", result); + break; + } + + case CAMERA_STOP: { + String result = StrUtil.format("id为 [{}] 的相机关闭了", deviceId); +// String result = edgeCameraService.stop(terminalId, deviceId); + output.put("result", result); + break; + } + + case CAMERA_GETRGBIMAGE: { +// String imageUrl = StrUtil.format("id为 [{}] 的相机拍照了", deviceId); + String imageUrl = "http://10.148.20.35:9000/cmvr-iot/FILE/20250820/1755670270208.jpg"; +// String imageUrl = edgeCameraService.getRGBImage(terminalId, deviceId); + + JSONArray imageUrls = new JSONArray(); + if (ObjUtil.isNotEmpty(upstreamOutput)) { + JSONArray upstream = upstreamOutput.getJSONArray("imageUrl"); + if (ObjUtil.isNotEmpty(upstream)) { + imageUrls.addAll(upstream); + } + } + + imageUrls.add(imageUrl); + output.put("imageUrl", imageUrls); + output.put("type", FileType.IMAGE.code()); + break; + } + + + case CAMERA_RECORDING_START: { + String videoUrl = edgeCameraService.startRecording(terminalId, deviceId); + videoUrl = StrUtil.format("{}/{}", "http://10.148.108.162/system/video", StrUtil.subAfter(videoUrl, "/", true)); +// String videoUrl = "http://10.148.108.162/system/video/cam4_1752225205349.mp4"; + JSONArray videoUrls = new JSONArray(); + if (ObjUtil.isNotEmpty(upstreamOutput)) { + JSONArray upstream = upstreamOutput.getJSONArray("videoUrl"); + if (ObjUtil.isNotEmpty(upstream)) { + videoUrls.addAll(upstream); + } + } + + videoUrls.add(videoUrl); + output.put("videoUrl", videoUrls); + output.put("isPlay", false); + output.put("type", FileType.VIDEO.code()); + + break; + } + + case CAMERA_RECORDING_STOP: { + edgeCameraService.stopRecording(terminalId, deviceId); + + // 获取视频录制开始节点的id + FlowNodeWrapper startRecordNode = message.getGraph() + .getNodeMap() + .values() + .stream() + .filter(node -> ActionEnum.CAMERA_RECORDING_START.equals(node.getAction())) + .findFirst() + .orElseThrow(() -> new IllegalStateException("未找到视频录制开始节点")); + + // 从上下文获取上游节点存储的参数 获取视频地址 + JSONObject pre = taskInstHolder.getNodeOutParams(instId, startRecordNode.getNodeId()); + JSONArray videoUrl = pre.getJSONArray("videoUrl"); + output.put("videoUrl", videoUrl); + output.put("isPlay", true); + output.put("type", FileType.VIDEO.code()); + break; + } + default: + throw new GlobalException("不支持的相机操作类型: " + action); + } + + taskInstHolder.setNodeOutParams(instId, nodeId, output); + return TaskNodeExecuteResult.success(output); + } +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/operator/edge/EdgeMicrophoneOperateService.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/operator/edge/EdgeMicrophoneOperateService.java new file mode 100644 index 0000000..fbe7800 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/operator/edge/EdgeMicrophoneOperateService.java @@ -0,0 +1,59 @@ +package com.cmvr.test.flow.runtime.operator.edge; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson2.JSONObject; +import com.cmvr.common.exception.GlobalException; +import com.cmvr.edge.client.service.EdgeMicrophoneService; +import com.cmvr.test.enums.ActionEnum; +import com.cmvr.test.flow.context.TaskInstHolder; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteMessage; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteResult; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor +public class EdgeMicrophoneOperateService implements EdgeOperateService { + + private final EdgeMicrophoneService edgeMicrophoneService; + private final TaskInstHolder taskInstHolder; + + @Override + public boolean supports(ActionEnum action) { + return action.name().startsWith("MICROPHONE_"); + } + + @Override + public TaskNodeExecuteResult execute(TaskNodeExecuteMessage message) { + String instId = message.getInstId(); + String nodeId = message.getNodeId(); + ActionEnum action = message.getAction(); + JSONObject inputParams = message.getInputParams(); + String deviceId = inputParams.getString("deviceId"); + String terminalId = message.getTerminalId(); +// JSONObject upstreamOutput = message.getUpStreamOutput(); + + JSONObject output = new JSONObject(); + + switch (action) { + case MICROPHONE_START: { + String audioPath = + StrUtil.format("{}/{}_{}", "/home/share/assets/audio", deviceId, System.currentTimeMillis()); + edgeMicrophoneService.startRecord(terminalId, deviceId, audioPath); + output.put("audioUrl", audioPath); + break; + } + + case MICROPHONE_STOP: { + edgeMicrophoneService.stopRecord(terminalId, deviceId); + break; + } + + default: + throw new GlobalException("不支持的麦克风操作类型: " + action); + } + + taskInstHolder.setNodeOutParams(instId, nodeId, output); + return TaskNodeExecuteResult.success(output); + } +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/operator/edge/EdgeNodeOperateHandler.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/operator/edge/EdgeNodeOperateHandler.java new file mode 100644 index 0000000..0a360ea --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/operator/edge/EdgeNodeOperateHandler.java @@ -0,0 +1,28 @@ +package com.cmvr.test.flow.runtime.operator.edge; + +import com.cmvr.common.exception.GlobalException; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteMessage; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteResult; +import com.cmvr.test.flow.runtime.operator.AbstractNodeOperateHandler; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Slf4j +@Component("EDGE") +@RequiredArgsConstructor +public class EdgeNodeOperateHandler extends AbstractNodeOperateHandler { + + private final List edgeOperateServices; + + @Override + protected TaskNodeExecuteResult doExecute(TaskNodeExecuteMessage message) { + return edgeOperateServices.stream() + .filter(s -> s.supports(message.getAction())) + .findFirst() + .map(s -> s.execute(message)) + .orElseThrow(() -> new GlobalException("不支持的设备操作: " + message.getAction())); + } +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/operator/edge/EdgeOperateService.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/operator/edge/EdgeOperateService.java new file mode 100644 index 0000000..46b210f --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/operator/edge/EdgeOperateService.java @@ -0,0 +1,12 @@ +package com.cmvr.test.flow.runtime.operator.edge; + +import com.cmvr.test.enums.ActionEnum; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteMessage; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteResult; + +public interface EdgeOperateService { + + boolean supports(ActionEnum action); + + TaskNodeExecuteResult execute(TaskNodeExecuteMessage message); +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/operator/edge/EdgeSpeakerOperateService.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/operator/edge/EdgeSpeakerOperateService.java new file mode 100644 index 0000000..6c2fc0e --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/operator/edge/EdgeSpeakerOperateService.java @@ -0,0 +1,71 @@ +package com.cmvr.test.flow.runtime.operator.edge; + +import cmvr.api.SpeakerCommand; +import com.alibaba.fastjson2.JSONObject; +import com.cmvr.common.exception.GlobalException; +import com.cmvr.edge.client.service.EdgeSpeakerService; +import com.cmvr.test.enums.ActionEnum; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteMessage; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteResult; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Random; + +@Slf4j +@Service +@RequiredArgsConstructor +public class EdgeSpeakerOperateService implements EdgeOperateService { + + private final EdgeSpeakerService edgeSpeakerService; + + @Override + public boolean supports(ActionEnum action) { + return action.name().startsWith("SPEAKER_"); + } + + @Override + public TaskNodeExecuteResult execute(TaskNodeExecuteMessage message) { + ActionEnum action = message.getAction(); + JSONObject inputParams = message.getInputParams(); + String deviceId = inputParams.getString("deviceId"); + String terminalId = message.getTerminalId(); + switch (action) { + case SPEAKER_PLAYAUDIO: { + // todo 音频暂时随机播放 + List all = edgeSpeakerService.getAll(); + + for (int i = 0; i < 3; i++) { + int index = new Random().nextInt(all.size()); + String audioUrl = "/home/share/assets/upload/" + all.get(index); + edgeSpeakerService.playAudio(terminalId, deviceId, audioUrl); + // 等待播放完成 + while (true) { + try { + Thread.sleep(200); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + SpeakerCommand.GetSpeakerStateCommand.Feedback status = edgeSpeakerService.getStatus(terminalId, deviceId); + boolean isRunning = status.getState().getIsRunning(); + if (!isRunning) { + break; + } + } + try { + Thread.sleep(500); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + break; + } + + default: + throw new GlobalException("不支持的扬声器操作类型: " + action); + } + return TaskNodeExecuteResult.success(); + } +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/operator/llm/LLMNodeOperateHandler.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/operator/llm/LLMNodeOperateHandler.java new file mode 100644 index 0000000..d9814f5 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/operator/llm/LLMNodeOperateHandler.java @@ -0,0 +1,28 @@ +package com.cmvr.test.flow.runtime.operator.llm; + +import com.cmvr.common.exception.GlobalException; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteMessage; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteResult; +import com.cmvr.test.flow.runtime.operator.AbstractNodeOperateHandler; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Slf4j +@Component("LLM") +@RequiredArgsConstructor +public class LLMNodeOperateHandler extends AbstractNodeOperateHandler { + + private final List llmOperateServices; + + @Override + protected TaskNodeExecuteResult doExecute(TaskNodeExecuteMessage message) { + return llmOperateServices.stream() + .filter(s -> s.supports(message.getAction())) + .findFirst() + .map(s -> s.execute(message)) + .orElseThrow(() -> new GlobalException("不支持的大模型操作: " + message.getAction())); + } +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/operator/llm/LLMOperateService.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/operator/llm/LLMOperateService.java new file mode 100644 index 0000000..8eba69a --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/operator/llm/LLMOperateService.java @@ -0,0 +1,12 @@ +package com.cmvr.test.flow.runtime.operator.llm; + +import com.cmvr.test.enums.ActionEnum; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteMessage; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteResult; + +public interface LLMOperateService { + + boolean supports(ActionEnum action); + + TaskNodeExecuteResult execute(TaskNodeExecuteMessage message); +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/operator/llm/LLMTouchOperateService.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/operator/llm/LLMTouchOperateService.java new file mode 100644 index 0000000..ffcb4c4 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/operator/llm/LLMTouchOperateService.java @@ -0,0 +1,89 @@ +package com.cmvr.test.flow.runtime.operator.llm; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; +import com.cmvr.common.config.properties.MinioProperties; +import com.cmvr.common.core.minio.MinioService; +import com.cmvr.common.exception.GlobalException; +import com.cmvr.llm.model.CarIcon; +import com.cmvr.llm.service.CarPathFinderService; +import com.cmvr.llm.service.LLMTouchService; +import com.cmvr.test.enums.ActionEnum; +import com.cmvr.test.flow.builder.FlowNodeWrapper; +import com.cmvr.test.flow.context.TaskInstHolder; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteMessage; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteResult; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.io.File; +import java.util.List; + +@Slf4j +@Service +@RequiredArgsConstructor +public class LLMTouchOperateService implements LLMOperateService { + + private final TaskInstHolder taskInstHolder; + private final MinioService minioService; + private final MinioProperties minioProps; + private final CarPathFinderService carPathFinderService; + private final LLMTouchService llmTouchService; + + @Override + public boolean supports(ActionEnum action) { + return action.name().startsWith("TOUCH_"); + } + + @Override + public TaskNodeExecuteResult execute(TaskNodeExecuteMessage message) { + ActionEnum action = message.getAction(); + String instId = message.getInstId(); + JSONObject inputParams = message.getInputParams(); + + JSONObject output = new JSONObject(); + switch (action) { + case TOUCH_COORDINATES: { + // 必须获取前面的图片 和当前节点的指令 + String words = inputParams.getString("words"); + String targetFeature = inputParams.getString("targetFeature"); + // 图片节点的id + FlowNodeWrapper imageNode = message.getGraph() + .getNodeMap() + .values() + .stream() + .filter(node -> ActionEnum.CAMERA_GETRGBIMAGE.equals(node.getAction())) + .findFirst() + .orElseThrow(() -> new IllegalStateException("未找到获取图片节点")); + JSONObject pre = taskInstHolder.getNodeOutParams(instId, imageNode.getNodeId()); + JSONArray imageUrl = pre.getJSONArray("imageUrl"); + String url = imageUrl.getString(imageUrl.size() - 1); + String bucketName = minioProps.getBucketName(); + String prefix = "/" + bucketName + "/"; + String objectName = StrUtil.removePrefix(url, StrUtil.subBefore(url, prefix, true) + prefix); + try { + File image = minioService.getFile(bucketName, objectName); +// llmTouchService.touchCoordinates(); + output.put("coordinates", ""); + } catch (Exception e) { + throw new RuntimeException(e); + } + break; + } + + default: + throw new GlobalException("不支持的触控操作类型: " + action); + } + return TaskNodeExecuteResult.success(output); + } +} + +/** + * String uiName = llmTouchService.bgeVl(image); + * List path = carPathFinderService.findPath("厂商", "车型", uiName, targetFeature); + * + * String coordinates = llmTouchService.getCoordinates("", "", ""); + * + */ \ No newline at end of file diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/mapper/TeDetectionItemMapper.java b/cmvr-iot-test/src/main/java/com/cmvr/test/mapper/TeDetectionItemMapper.java new file mode 100644 index 0000000..e6460c7 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/mapper/TeDetectionItemMapper.java @@ -0,0 +1,12 @@ +package com.cmvr.test.mapper; + +import com.cmvr.test.model.domain.TeDetectionItem; +import com.github.yulichang.base.MPJBaseMapper; + +/** + * 检测项配置Mapper接口 + * + * @author cmvr-iot + */ +public interface TeDetectionItemMapper extends MPJBaseMapper { +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/mapper/TeNodeInstMapper.java b/cmvr-iot-test/src/main/java/com/cmvr/test/mapper/TeNodeInstMapper.java new file mode 100644 index 0000000..73f3c3e --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/mapper/TeNodeInstMapper.java @@ -0,0 +1,12 @@ +package com.cmvr.test.mapper; + +import com.cmvr.test.model.domain.TeNodeInst; +import com.github.yulichang.base.MPJBaseMapper; + +/** + * 流程节点实例Mapper接口 + * + * @author cmvr-iot + */ +public interface TeNodeInstMapper extends MPJBaseMapper { +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/mapper/TeTaskConfigInfoMapper.java b/cmvr-iot-test/src/main/java/com/cmvr/test/mapper/TeTaskConfigInfoMapper.java new file mode 100644 index 0000000..1b7951b --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/mapper/TeTaskConfigInfoMapper.java @@ -0,0 +1,12 @@ +package com.cmvr.test.mapper; + +import com.cmvr.test.model.domain.TeTaskConfigInfo; +import com.github.yulichang.base.MPJBaseMapper; + +/** + * 任务流程编排Mapper接口 + * + * @author cmvr-iot + */ +public interface TeTaskConfigInfoMapper extends MPJBaseMapper { +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/mapper/TeTaskInstMapper.java b/cmvr-iot-test/src/main/java/com/cmvr/test/mapper/TeTaskInstMapper.java new file mode 100644 index 0000000..4905478 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/mapper/TeTaskInstMapper.java @@ -0,0 +1,12 @@ +package com.cmvr.test.mapper; + +import com.cmvr.test.model.domain.TeTaskInst; +import com.github.yulichang.base.MPJBaseMapper; + +/** + * 任务实例Mapper接口 + * + * @author cmvr-iot + */ +public interface TeTaskInstMapper extends MPJBaseMapper { +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/mapper/TeTaskOrchestrationMapper.java b/cmvr-iot-test/src/main/java/com/cmvr/test/mapper/TeTaskOrchestrationMapper.java new file mode 100644 index 0000000..04b3b7e --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/mapper/TeTaskOrchestrationMapper.java @@ -0,0 +1,12 @@ +package com.cmvr.test.mapper; + +import com.cmvr.test.model.domain.TeTaskOrchestration; +import com.github.yulichang.base.MPJBaseMapper; + +/** + * 任务编排Mapper接口 + * + * @author cmvr-iot + */ +public interface TeTaskOrchestrationMapper extends MPJBaseMapper { +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/model/domain/TeDetectionItem.java b/cmvr-iot-test/src/main/java/com/cmvr/test/model/domain/TeDetectionItem.java new file mode 100644 index 0000000..37193cd --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/model/domain/TeDetectionItem.java @@ -0,0 +1,52 @@ +package com.cmvr.test.model.domain; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.cmvr.common.annotation.Excel; +import com.cmvr.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel("检测项配置") +public class TeDetectionItem extends BaseEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("id") + @TableId(value = "id", type = IdType.ASSIGN_UUID) + private String id; + + @Excel(name = "检测项名称") + @ApiModelProperty("检测项名称") + private String detectName; + + @Excel(name = "检测项描述") + @ApiModelProperty("检测项描述") + private String detectDesc; + + @Excel(name = "检测项流程数据") + @ApiModelProperty("检测项流程数据") + private String flowData; + + @Excel(name = "状态") + @ApiModelProperty(value = "状态 (0正常 1停用)") + @TableField(fill = FieldFill.INSERT) + private String status; + + @Excel(name = "是否部署") + @ApiModelProperty(value = "是否部署 (0已部署 1未部署)") + private String isDeploy; + + @Excel(name = "版本") + @ApiModelProperty("版本") + private String detectVersion; + + @ApiModelProperty("分组ID") + private Long groupId; + + @ApiModelProperty("检测项参数配置(JSON)") + private String config; +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/model/domain/TeNodeInst.java b/cmvr-iot-test/src/main/java/com/cmvr/test/model/domain/TeNodeInst.java new file mode 100644 index 0000000..1be4ad1 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/model/domain/TeNodeInst.java @@ -0,0 +1,55 @@ +package com.cmvr.test.model.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel("节点执行实例对象") +public class TeNodeInst { + + @ApiModelProperty("主键ID") + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("任务实例ID") + private String instId; + + @ApiModelProperty("任务ID") + private String taskId; + + @ApiModelProperty("检测项ID") + private String itemId; + + @ApiModelProperty("节点ID") + private String nodeId; + + @ApiModelProperty("节点类型") + private String nodeType; + + @ApiModelProperty("执行来源(EDGE / LLM / SYSTEM)") + private String operate; + + @ApiModelProperty("执行操作(CAMERA_START / OCR / 等)") + private String action; + + @ApiModelProperty("状态(RUNNING / SUCCESS / FAILED / PAUSED / STOPPED)") + private String status; + + @ApiModelProperty("输入参数(已解析)") + private String paramsIn; + + @ApiModelProperty("输出参数") + private String paramsOut; + + @ApiModelProperty("执行日志/备注") + private String message; + + @ApiModelProperty("开始时间戳(ms)") + private Long startTime; + + @ApiModelProperty("结束时间戳(ms)") + private Long endTime; +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/model/domain/TeTaskConfigInfo.java b/cmvr-iot-test/src/main/java/com/cmvr/test/model/domain/TeTaskConfigInfo.java new file mode 100644 index 0000000..8adfcb8 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/model/domain/TeTaskConfigInfo.java @@ -0,0 +1,39 @@ +package com.cmvr.test.model.domain; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.cmvr.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel("任务配置信息") +public class TeTaskConfigInfo extends BaseEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("id") + @TableId(value = "id", type = IdType.ASSIGN_UUID) + private String id; + + @ApiModelProperty("任务名称") + private String taskName; + + @ApiModelProperty("任务描述") + private String taskDesc; + + @ApiModelProperty("状态 (0正常 1停用)") + @TableField(fill = FieldFill.INSERT) + private String status; + + @ApiModelProperty("版本") + private String versionNo; + + @ApiModelProperty("分组id") + private String groupId; + + @ApiModelProperty("运行模式(NORMAL:正常 / TRIAL:试运行)") + private String runMode; +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/model/domain/TeTaskInst.java b/cmvr-iot-test/src/main/java/com/cmvr/test/model/domain/TeTaskInst.java new file mode 100644 index 0000000..fa00223 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/model/domain/TeTaskInst.java @@ -0,0 +1,33 @@ +package com.cmvr.test.model.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.cmvr.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel("任务实例对象") +public class TeTaskInst extends BaseEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("id") + @TableId(value = "id", type = IdType.ASSIGN_UUID) + private String id; + + @ApiModelProperty("任务id") + private String taskId; + + @ApiModelProperty("终端id") + private String terminalId; + + @ApiModelProperty("任务配置信息(对应检测项参数)") + private String config; + + @ApiModelProperty("状态(0完成, 1执行中, 2失败, 3暂停, 4终止)") + private String status; + + @ApiModelProperty("运行模式(NORMAL:正常 / TRIAL:试运行)") + private String runMode; +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/model/domain/TeTaskOrchestration.java b/cmvr-iot-test/src/main/java/com/cmvr/test/model/domain/TeTaskOrchestration.java new file mode 100644 index 0000000..a8af903 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/model/domain/TeTaskOrchestration.java @@ -0,0 +1,33 @@ +package com.cmvr.test.model.domain; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.cmvr.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel("任务编排对象") +public class TeTaskOrchestration extends BaseEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("id") + @TableId(value = "id", type = IdType.ASSIGN_UUID) + private String id; + + @ApiModelProperty("任务配置信息id") + private String taskId; + + @ApiModelProperty("检测项配置id") + private String itemId; + + @ApiModelProperty("执行顺序号") + private Integer orderNum; + + @ApiModelProperty("状态 (0正常 1停用)") + @TableField(fill = FieldFill.INSERT) + private String status; +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/model/dto/TeQueryTaskDetailDTO.java b/cmvr-iot-test/src/main/java/com/cmvr/test/model/dto/TeQueryTaskDetailDTO.java new file mode 100644 index 0000000..17673bb --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/model/dto/TeQueryTaskDetailDTO.java @@ -0,0 +1,12 @@ +package com.cmvr.test.model.dto; + +import lombok.Data; + +@Data +public class TeQueryTaskDetailDTO { + private String detectItemId; + private String flowData; + private String config; + private Integer orderNum; + private String isDeploy; +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeDetectItemDeployFlowVO.java b/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeDetectItemDeployFlowVO.java new file mode 100644 index 0000000..2c0e53f --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeDetectItemDeployFlowVO.java @@ -0,0 +1,24 @@ +package com.cmvr.test.model.vo; + +import com.alibaba.fastjson2.JSONObject; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; + +@Data +@ApiModel("检测项流程部署VO") +public class TeDetectItemDeployFlowVO { + + @ApiModelProperty(value = "检测项ID", required = true) + @NotEmpty(message = "检测项ID不可为空") + private String id; + + @ApiModelProperty(value = "流程JSON数据", required = true) + @NotEmpty(message = "流程JSON数据不可为空") + private String flowData; + + @ApiModelProperty(value = "流程运行参数") + private JSONObject config; +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeDetectionItemVO.java b/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeDetectionItemVO.java new file mode 100644 index 0000000..eaafdca --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeDetectionItemVO.java @@ -0,0 +1,39 @@ +package com.cmvr.test.model.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel("检测项VO") +public class TeDetectionItemVO { + @ApiModelProperty("检测项ID") + private String id; + + @ApiModelProperty("检测项名称") + private String detectName; + + @ApiModelProperty("检测项描述") + private String detectDesc; + + @ApiModelProperty("检测项流程数据") + private String flowData; + + @ApiModelProperty(value = "是否部署", example = "0:已部署、1:未部署") + private String isDeploy; + + @ApiModelProperty(value = "状态", example = "0:正常、1:停用") + private String status; + + @ApiModelProperty("版本") + private String detectVersion; + + @ApiModelProperty("分组ID") + private Long groupId; + + @ApiModelProperty("分组ID") + private String groupName; + + @ApiModelProperty("备注") + private String remark; +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeFlowViewVO.java b/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeFlowViewVO.java new file mode 100644 index 0000000..90bbe66 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeFlowViewVO.java @@ -0,0 +1,22 @@ +package com.cmvr.test.model.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; + +@Data +@ApiModel("流程执行可视化VO") +public class TeFlowViewVO { + @ApiModelProperty("实例ID") + @NotEmpty(message = "实例ID不能为空") + private String instId; + + @ApiModelProperty("任务ID") + private String taskId; + + @ApiModelProperty("检测项ID") + @NotEmpty(message = "检测项ID不能为空") + private String itemId; +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeQueryTaskInstVO.java b/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeQueryTaskInstVO.java new file mode 100644 index 0000000..47a6472 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeQueryTaskInstVO.java @@ -0,0 +1,25 @@ +package com.cmvr.test.model.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel("任务实例VO") +public class TeQueryTaskInstVO { + + @ApiModelProperty("任务id") + private String taskId; + + @ApiModelProperty("任务名称") + private String taskName; + + @ApiModelProperty("状态 (0已完成 1执行中)") + private String status; + + @ApiModelProperty("开始时间") + private String startTime; + + @ApiModelProperty("结束时间") + private String endTime; +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeQueryTaskOrchestraItemVO.java b/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeQueryTaskOrchestraItemVO.java new file mode 100644 index 0000000..0bf3446 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeQueryTaskOrchestraItemVO.java @@ -0,0 +1,21 @@ +package com.cmvr.test.model.vo; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +@Data +public class TeQueryTaskOrchestraItemVO { + @ApiModelProperty("检测项ID") + private String itemId; + + @ApiModelProperty("检测项名称") + private String itemName; + + @ApiModelProperty("检测项参数信息") + private String config; + + @ApiModelProperty("执行顺序号") + private Integer orderNum; +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeTaskConfigInfoVO.java b/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeTaskConfigInfoVO.java new file mode 100644 index 0000000..1fdd60c --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeTaskConfigInfoVO.java @@ -0,0 +1,36 @@ +package com.cmvr.test.model.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel("任务配置VO") +public class TeTaskConfigInfoVO { + @ApiModelProperty("id") + private String id; + + @ApiModelProperty("任务名称") + private String taskName; + + @ApiModelProperty("任务描述") + private String taskDesc; + + @ApiModelProperty(value = "状态", example = "0:正常、1:停用") + private String status; + + @ApiModelProperty("版本") + private String versionNo; + + @ApiModelProperty("分组id") + private String groupId; + + @ApiModelProperty("分组ID") + private String groupName; + + @ApiModelProperty("备注") + private String remark; + + @ApiModelProperty("检测项参数") + private String itemParams; +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeTaskExecuteNormalVO.java b/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeTaskExecuteNormalVO.java new file mode 100644 index 0000000..d487200 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeTaskExecuteNormalVO.java @@ -0,0 +1,23 @@ +package com.cmvr.test.model.vo; + +import com.alibaba.fastjson2.JSONObject; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; + +@Data +@ApiModel("正常任务执行VO") +public class TeTaskExecuteNormalVO { + @ApiModelProperty("任务ID") + @NotEmpty(message = "任务ID不能为空") + private String taskId; + + @ApiModelProperty("终端ID") + @NotEmpty(message = "终端ID不能为空") + private String terminalId; + + @ApiModelProperty(value = "运行时参数") + private JSONObject runParams = new JSONObject(); +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeTaskExecuteTrailVO.java b/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeTaskExecuteTrailVO.java new file mode 100644 index 0000000..6d2d101 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeTaskExecuteTrailVO.java @@ -0,0 +1,24 @@ +package com.cmvr.test.model.vo; + +import com.alibaba.fastjson2.JSONObject; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; + +@Data +@ApiModel("试运行任务执行VO") +public class TeTaskExecuteTrailVO { + + @ApiModelProperty("检测项ID") + @NotEmpty(message = "检测项ID不能为空") + private String itemId; + + @ApiModelProperty(value = "流程JSON数据") + @NotEmpty(message = "流程JSON数据不可为空") + private String flowData; + + @ApiModelProperty(value = "运行时参数") + private JSONObject runParams = new JSONObject(); +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeTaskInstLogVO.java b/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeTaskInstLogVO.java new file mode 100644 index 0000000..579cc5c --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeTaskInstLogVO.java @@ -0,0 +1,52 @@ +package com.cmvr.test.model.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +@ApiModel("任务执行日志记录VO") +public class TeTaskInstLogVO { + @ApiModelProperty("任务名称") + private String taskName; + + @ApiModelProperty("检测项ID(Node-RED 流程ID)") + private String itemId; + + @ApiModelProperty("检测项名称") + private String itemName; + + @ApiModelProperty("节点ID") + private String nodeId; + + @ApiModelProperty("节点名称") + private String nodeName; + + @ApiModelProperty(value = "节点类型", example = "inject/function/end") + private String nodeType; + + @ApiModelProperty(value = "操作类型", notes = "EDGE边缘系统 LLM大模型") + private String operate; + + @ApiModelProperty(value = "具体操作", notes = "开启相机、关闭相机等等") + private String action; + + @ApiModelProperty(value = "实例状态", example = "SUCCESS/RUNNING/FAILED/PAUSED/STOPPED") + private String instStatus; + + @ApiModelProperty("日志内容") + private String message; + + @ApiModelProperty("执行参数类型(入口、出口)") + private String paramsType; + + @ApiModelProperty("执行参数(JSON格式)") + private String params; + + @ApiModelProperty("创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeTaskInstVO.java b/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeTaskInstVO.java new file mode 100644 index 0000000..8eff711 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeTaskInstVO.java @@ -0,0 +1,33 @@ +package com.cmvr.test.model.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +@ApiModel("任务实例VO") +public class TeTaskInstVO { + + @ApiModelProperty("实例id") + private String id; + + @ApiModelProperty("任务ID") + private String taskId; + + @ApiModelProperty("任务名称") + private String taskName; + + @ApiModelProperty("任务配置信息(对应检测项参数)") + private String config; + + @ApiModelProperty("状态 (0已完成 1执行中)") + private String status; + + @ApiModelProperty("备注") + private String remark; + + @ApiModelProperty("创建时间") + private Date createTime; +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeTaskOrchestraVO.java b/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeTaskOrchestraVO.java new file mode 100644 index 0000000..f6807ad --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeTaskOrchestraVO.java @@ -0,0 +1,20 @@ +package com.cmvr.test.model.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import java.util.List; + +@Data +@ApiModel("任务编排VO") +public class TeTaskOrchestraVO { + @ApiModelProperty("id") + @NotEmpty(message = "任务ID不能为空") + private String taskId; + + @ApiModelProperty("检测项ID数组") + @NotEmpty(message = "检测项ID数组不能为空") + private List itemIds; +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/service/ITeDetectionItemService.java b/cmvr-iot-test/src/main/java/com/cmvr/test/service/ITeDetectionItemService.java new file mode 100644 index 0000000..fd03c85 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/service/ITeDetectionItemService.java @@ -0,0 +1,73 @@ +package com.cmvr.test.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.cmvr.test.model.domain.TeDetectionItem; +import com.cmvr.test.model.vo.TeDetectItemDeployFlowVO; +import com.cmvr.test.model.vo.TeDetectionItemVO; + +import java.util.List; + +/** + * 检测项配置Service接口 + * + * @author cmvr-iot + */ +public interface ITeDetectionItemService extends IService { + /** + * 查询检测项配置 + * + * @param ID 检测项配置主键 + * @return 检测项配置 + */ + public TeDetectionItem selectTeDetectionItemById(String ID); + + /** + * 查询检测项配置列表 + * + * @param teDetectionItem 检测项配置 + * @return 检测项配置集合 + */ + public List selectTeDetectionItemList(TeDetectionItem teDetectionItem); + + /** + * 新增检测项配置 + * + * @param teDetectionItem 检测项配置 + * @return 结果 + */ + public int insertTeDetectionItem(TeDetectionItem teDetectionItem); + + /** + * 修改检测项配置 + * + * @param teDetectionItem 检测项配置 + * @return 结果 + */ + public int updateTeDetectionItem(TeDetectionItem teDetectionItem); + + /** + * 部署检测项流程 + */ + public int deployFlow(TeDetectItemDeployFlowVO teDeployFlowVo); + + /** + * 发布流程 + */ + public int publish(String flowId); + + /** + * 批量删除检测项配置 + * + * @param ids 需要删除的检测项配置主键集合 + * @return 结果 + */ + public int deleteTeDetectionItemByIds(String[] ids); + + /** + * 删除检测项配置信息 + * + * @param id 检测项配置主键 + * @return 结果 + */ + public int deleteTeDetectionItemById(String id); +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/service/ITeNodeInstService.java b/cmvr-iot-test/src/main/java/com/cmvr/test/service/ITeNodeInstService.java new file mode 100644 index 0000000..3117b0c --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/service/ITeNodeInstService.java @@ -0,0 +1,62 @@ +package com.cmvr.test.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.cmvr.test.enums.TaskStatusEnum; +import com.cmvr.test.model.domain.TeNodeInst; +import com.cmvr.test.model.vo.TeFlowViewVO; + +import java.util.List; + +/** + * 流程节点Service接口 + * + * @author cmvr-iot + */ +public interface ITeNodeInstService extends IService { + + + /** + * 查询某任务实例下的节点执行记录(用于前端展示) + */ + public List view(TeFlowViewVO flowViewVO); + + /** + * 记录节点进入运行状态 + * + * @param instId 任务实例 ID + * @param taskId 任务定义 ID + * @param itemId 检测项 ID + * @param nodeId 节点 ID + * @param nodeType 节点类型 + * @param operate 执行来源 + * @param action 动作类型 + * @param paramsIn 输入参数(已序列化为 JSON 字符串) + */ + void logRunning(String instId, String taskId, String itemId, + String nodeId, String nodeType, + String operate, String action, String paramsIn); + + /** + * 节点执行后更新输出参数等信息/记录节点成功完成 + */ + void logSuccess(String instId, String itemId, String nodeId, + String paramsOut, String message); + + /** + * 记录节点执行失败 + */ + void logFailed(String instId, String taskId, String itemId, + String nodeId, String nodeType, + String operate, String action, String params, String message); + + /** + * 删除节点 + */ + void delete(String instId, String nodeId); + + /** + * 更新节点 + */ + void update(String instId, String nodeId, TaskStatusEnum nodeStatus); +} + diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/service/ITeTaskConfigInfoService.java b/cmvr-iot-test/src/main/java/com/cmvr/test/service/ITeTaskConfigInfoService.java new file mode 100644 index 0000000..0a2794a --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/service/ITeTaskConfigInfoService.java @@ -0,0 +1,70 @@ +package com.cmvr.test.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.cmvr.test.model.domain.TeTaskConfigInfo; +import com.cmvr.test.model.vo.TeTaskConfigInfoVO; + +import java.util.List; + +/** + * 任务流程编排Service接口 + * + * @author cmvr-iot + */ +public interface ITeTaskConfigInfoService extends IService { + /** + * 查询任务流程编排 + * + * @param id 任务流程编排主键 + * @return 任务流程编排 + */ + public TeTaskConfigInfo selectTeTaskConfigInfoById(String id); + + /** + * 查询任务流程编排列表 + * + * @param teTaskConfigInfo 任务流程编排 + * @return 任务流程编排集合 + */ + public List selectTeTaskConfigInfoList(TeTaskConfigInfo teTaskConfigInfo); + + /** + * 新增任务流程编排 + * + * @param teTaskConfigInfo 任务流程编排 + * @return 结果 + */ + public int insertTeTaskConfigInfo(TeTaskConfigInfo teTaskConfigInfo); + + /** + * 修改任务流程编排 + * + * @param teTaskConfigInfo 任务流程编排 + * @return 结果 + */ + public int updateTeTaskConfigInfo(TeTaskConfigInfo teTaskConfigInfo); + + /** + * 批量删除任务流程编排 + * + * @param ids 需要删除的任务流程编排主键集合 + * @return 结果 + */ + public int deleteTeTaskConfigInfoByIds(String[] ids); + + /** + * 删除任务流程编排信息 + * + * @param id 任务流程编排主键 + * @return 结果 + */ + public int deleteTeTaskConfigInfoById(String id); + + /** + * 检查任务配置是否存在 + * + * @param id 任务流程编排主键 + * @return 结果 + */ + public boolean isTaskExist(String id); +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/service/ITeTaskInstService.java b/cmvr-iot-test/src/main/java/com/cmvr/test/service/ITeTaskInstService.java new file mode 100644 index 0000000..cd732d1 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/service/ITeTaskInstService.java @@ -0,0 +1,49 @@ +package com.cmvr.test.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.cmvr.test.enums.TaskStatusEnum; +import com.cmvr.test.model.domain.TeTaskInst; +import com.cmvr.test.model.vo.TeQueryTaskInstVO; +import com.cmvr.test.model.vo.TeTaskInstVO; + +import java.util.List; + +/** + * 任务实例Service接口 + * + * @author cmvr-iot + */ +public interface ITeTaskInstService extends IService { + /** + * 查询任务实例列表 + * + * @return 任务实例集合 + */ + public List selectTeTaskInstList(TeQueryTaskInstVO queryTaskInstVO); + + /** + * 更新实例状态 + */ + public boolean updateStatus(String instId, TaskStatusEnum taskStatusEnum); + + /* *//** + * 暂停任务 + *//* + public void pauseTask(String instId); + + *//** + * 终止任务 + *//* + public void stopTask(String instId); + + *//** + * 继续任务 + *//* + public void resumeTask(String instId); + + *//** + * 获取任务上下文信息 + *//* + public TaskContext getTaskContext(String instId); +*/ +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/service/ITeTaskOrchestrationService.java b/cmvr-iot-test/src/main/java/com/cmvr/test/service/ITeTaskOrchestrationService.java new file mode 100644 index 0000000..3e837e0 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/service/ITeTaskOrchestrationService.java @@ -0,0 +1,50 @@ +package com.cmvr.test.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.cmvr.test.model.domain.TeTaskOrchestration; +import com.cmvr.test.model.dto.TeQueryTaskDetailDTO; +import com.cmvr.test.model.vo.TeQueryTaskOrchestraItemVO; +import com.cmvr.test.model.vo.TeTaskOrchestraVO; + +import java.util.List; + +/** + * 任务编排Service接口 + * + * @author cmvr-iot + */ +public interface ITeTaskOrchestrationService extends IService { + + /** + * 根据任务ID查询任务编排 + * + * @param taskId 任务ID + * @return 任务编排 + */ + public List queryByTaskId(String taskId); + + /** + * 新增任务编排 + * + * @param taskOrchestraVO 任务编排 + * @return 结果 + */ + public boolean insertTeTaskOrchestration(TeTaskOrchestraVO taskOrchestraVO); + + /** + * 根据任务ID 删除编排信息 + * + * @param id 任务id + */ + public int deleteByTaskId(String id); + + /** + * 查询任务详情 + */ + public List queryTaskDetail(String taskId); + + /** + * 构建试运行任务 + */ + public String buildTrialTask(String itemId); +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/service/impl/ITeNodeInstServiceImpl.java b/cmvr-iot-test/src/main/java/com/cmvr/test/service/impl/ITeNodeInstServiceImpl.java new file mode 100644 index 0000000..f88e52b --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/service/impl/ITeNodeInstServiceImpl.java @@ -0,0 +1,133 @@ +package com.cmvr.test.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cmvr.test.enums.TaskStatusEnum; +import com.cmvr.test.mapper.TeNodeInstMapper; +import com.cmvr.test.model.domain.TeNodeInst; +import com.cmvr.test.model.vo.TeFlowViewVO; +import com.cmvr.test.service.ITeNodeInstService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Slf4j +@Service +@RequiredArgsConstructor +public class ITeNodeInstServiceImpl extends ServiceImpl implements ITeNodeInstService { + + @Override + public List view(TeFlowViewVO flowViewVO) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.eq(TeNodeInst::getInstId, flowViewVO.getInstId()) + .eq(TeNodeInst::getItemId, flowViewVO.getItemId()) + .eq(StrUtil.isNotEmpty(flowViewVO.getTaskId()), TeNodeInst::getTaskId, flowViewVO.getTaskId()); + return this.list(wrapper); + } + + @Override + public void logRunning(String instId, String taskId, String itemId, + String nodeId, String nodeType, + String operate, String action, String paramsIn) { + + TeNodeInst record = new TeNodeInst(); + record.setInstId(instId); + record.setTaskId(taskId); + record.setItemId(itemId); + record.setNodeId(nodeId); + record.setNodeType(nodeType); + record.setOperate(operate); + record.setAction(action); + record.setStatus(TaskStatusEnum.RUNNING.name()); + record.setParamsIn(paramsIn); + record.setParamsOut("{}"); + record.setStartTime(System.currentTimeMillis()); + + this.save(record); + } + + @Override + public void logSuccess(String instId, String itemId, String nodeId, + String paramsOut, String message) { + LambdaUpdateWrapper update = new LambdaUpdateWrapper<>(); + update.eq(TeNodeInst::getInstId, instId) + .eq(TeNodeInst::getItemId, itemId) + .eq(TeNodeInst::getNodeId, nodeId) + .set(TeNodeInst::getParamsOut, paramsOut) + .set(TeNodeInst::getStatus, TaskStatusEnum.SUCCESS.name()) + .set(TeNodeInst::getMessage, message) + .set(TeNodeInst::getEndTime, System.currentTimeMillis()); + + this.update(update); + } + + @Override + public void logFailed(String instId, String taskId, String itemId, + String nodeId, String nodeType, + String operate, String action, String params, String message) { + + LambdaQueryWrapper query = Wrappers.lambdaQuery(); + query.eq(TeNodeInst::getInstId, instId) + .eq(TeNodeInst::getItemId, itemId) + .eq(TeNodeInst::getNodeId, nodeId); + + TeNodeInst existing = this.getOne(query, false); + + long now = System.currentTimeMillis(); + + if (existing != null) { + // 更新已有记录 + LambdaUpdateWrapper update = Wrappers.lambdaUpdate(); + update.eq(TeNodeInst::getInstId, instId) + .eq(TeNodeInst::getItemId, itemId) + .eq(TeNodeInst::getNodeId, nodeId) + .set(TeNodeInst::getParamsOut, params) + .set(TeNodeInst::getStatus, TaskStatusEnum.FAILED.name()) + .set(TeNodeInst::getMessage, message) + .set(TeNodeInst::getEndTime, now); + + this.update(update); + } else { + // 记录不存在,补插入 + TeNodeInst inst = new TeNodeInst(); + inst.setInstId(instId); + inst.setTaskId(taskId); + inst.setItemId(itemId); + inst.setNodeId(nodeId); + inst.setNodeType(nodeType); + inst.setOperate(operate); + inst.setAction(action); + inst.setParamsOut(params); + inst.setMessage(message); + inst.setStatus(TaskStatusEnum.FAILED.name()); + inst.setStartTime(now); // 插入时设置 start 和 end + inst.setEndTime(now); + + this.save(inst); + } + } + + @Override + public void delete(String instId, String nodeId) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.eq(TeNodeInst::getInstId, instId) + .eq(TeNodeInst::getNodeId, nodeId); + this.baseMapper.delete(wrapper); + } + + @Override + public void update(String instId, String nodeId, TaskStatusEnum nodeStatus) { + LambdaUpdateWrapper wrapper = Wrappers.lambdaUpdate(); + wrapper.eq(TeNodeInst::getInstId, instId) + .eq(TeNodeInst::getNodeId, nodeId) + .set(TeNodeInst::getStatus,nodeStatus.name()); + this.update(wrapper); + } +} + + diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/service/impl/TeDetectionItemServiceImpl.java b/cmvr-iot-test/src/main/java/com/cmvr/test/service/impl/TeDetectionItemServiceImpl.java new file mode 100644 index 0000000..8ae3077 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/service/impl/TeDetectionItemServiceImpl.java @@ -0,0 +1,183 @@ +package com.cmvr.test.service.impl; + +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cmvr.common.core.domain.entity.SysGroup; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.test.enums.NodeTypeEnum; +import com.cmvr.test.mapper.TeDetectionItemMapper; +import com.cmvr.test.model.domain.TeDetectionItem; +import com.cmvr.test.model.vo.TeDetectItemDeployFlowVO; +import com.cmvr.test.model.vo.TeDetectionItemVO; +import com.cmvr.test.service.ITeDetectionItemService; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Arrays; +import java.util.Iterator; +import java.util.List; + +/** + * 检测项配置Service业务层处理 + * + * @author cmvr-iot + */ +@Service +@RequiredArgsConstructor +public class TeDetectionItemServiceImpl extends ServiceImpl implements ITeDetectionItemService { + + /** + * 查询检测项配置 + * + * @param id 检测项配置主键 + * @return 检测项配置 + */ + @Override + public TeDetectionItem selectTeDetectionItemById(String id) { + return this.baseMapper.selectById(id); + } + + /** + * 查询检测项配置列表 + * + * @param teDetectionItem 检测项配置 + * @return 检测项配置 + */ + @Override + public List selectTeDetectionItemList(TeDetectionItem teDetectionItem) { + MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper<>(); + + queryWrapper.selectAll(TeDetectionItem.class) + .select(SysGroup::getGroupId) + .select(SysGroup::getGroupName) + .leftJoin(SysGroup.class, SysGroup::getGroupId, TeDetectionItem::getGroupId) + .like(StringUtils.isNotBlank(teDetectionItem.getDetectName()), TeDetectionItem::getDetectName, teDetectionItem.getDetectName()) + .like(StringUtils.isNotBlank(teDetectionItem.getDetectDesc()), TeDetectionItem::getDetectDesc, teDetectionItem.getDetectDesc()) + .eq(StringUtils.isNotBlank(teDetectionItem.getStatus()), TeDetectionItem::getStatus, teDetectionItem.getStatus()) + .eq(StringUtils.isNotBlank(teDetectionItem.getIsDeploy()), TeDetectionItem::getIsDeploy, teDetectionItem.getIsDeploy()) + .eq(StringUtils.isNotBlank(teDetectionItem.getDetectVersion()), TeDetectionItem::getDetectVersion, teDetectionItem.getDetectVersion()); + + // 执行查询并返回结果 + return this.baseMapper.selectJoinList(TeDetectionItemVO.class, queryWrapper); + } + + /** + * 新增检测项配置 + * + * @param teDetectionItem 检测项配置 + * @return 结果 + */ + @Override + public int insertTeDetectionItem(TeDetectionItem teDetectionItem) { + // 新增基础配置 此时状态和部署 皆为不可用 + teDetectionItem.setStatus("1"); + teDetectionItem.setIsDeploy("1"); + return this.baseMapper.insert(teDetectionItem); + } + + /** + * 修改检测项配置 + * + * @param teDetectionItem 检测项配置 + * @return 结果 + */ + @Override + public int updateTeDetectionItem(TeDetectionItem teDetectionItem) { + return this.baseMapper.updateById(teDetectionItem); + } + + /** + * 部署检测项流程(本质还是修改检测项配置) + */ + @Override + @Transactional + public int deployFlow(TeDetectItemDeployFlowVO teDeployFlowVo) { + // 校验记录存在 + boolean exists = this.baseMapper + .exists(new QueryWrapper() + .eq("id", teDeployFlowVo.getId())); + + if (!exists) { + throw new IllegalArgumentException("ID为" + teDeployFlowVo.getId() + "的检测项不存在!"); + } + + // 保存流程 JSON + TeDetectionItem updateData = new TeDetectionItem(); + updateData.setId(teDeployFlowVo.getId()); + updateData.setFlowData(teDeployFlowVo.getFlowData()); + //获取params + JSONObject flow = JSON.parseObject(teDeployFlowVo.getFlowData()); + JSONArray nodeArray = flow.getJSONArray("nodes"); + if (nodeArray == null) { + throw new IllegalArgumentException("流程图中未找到任何节点"); + } + + for (int i = 0; i < nodeArray.size(); i++) { + JSONObject nodeJson = nodeArray.getJSONObject(i); + if (!NodeTypeEnum.START.getCode().equals(nodeJson.getString("type"))) { + continue; + } + + JSONObject properties = nodeJson.getJSONObject("properties"); + if (properties == null || !properties.containsKey("inputParams")) { + continue; + } + + JSONArray inputParams = properties.getJSONArray("inputParams"); + if (inputParams == null) { + continue; + } + + // 移除"terminalId" 的参数 + Iterator iterator = inputParams.iterator(); + while (iterator.hasNext()) { + JSONObject param = (JSONObject) iterator.next(); + if ("terminalId".equals(param.getString("name"))) { + iterator.remove(); + } + } + + updateData.setConfig(inputParams.toJSONString()); + break; + } + + return this.baseMapper.updateById(updateData); + } + + @Override + public int publish(String flowId) { + TeDetectionItem updateData = new TeDetectionItem(); + updateData.setId(flowId); + updateData.setIsDeploy("0"); + updateData.setStatus("0"); + return this.baseMapper.updateById(updateData); + } + + + /** + * 批量删除检测项配置 + * + * @param ids 需要删除的检测项配置主键 + * @return 结果 + */ + @Override + public int deleteTeDetectionItemByIds(String[] ids) { + return this.baseMapper.deleteBatchIds(Arrays.asList(ids)); + } + + /** + * 删除检测项配置信息 + * + * @param id 检测项配置主键 + * @return 结果 + */ + @Override + public int deleteTeDetectionItemById(String id) { + return this.baseMapper.deleteById(id); + } +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/service/impl/TeTaskConfigInfoServiceImpl.java b/cmvr-iot-test/src/main/java/com/cmvr/test/service/impl/TeTaskConfigInfoServiceImpl.java new file mode 100644 index 0000000..2f8fa52 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/service/impl/TeTaskConfigInfoServiceImpl.java @@ -0,0 +1,117 @@ +package com.cmvr.test.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cmvr.common.core.domain.entity.SysGroup; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.test.enums.RunModeEnum; +import com.cmvr.test.mapper.TeTaskConfigInfoMapper; +import com.cmvr.test.model.domain.TeTaskConfigInfo; +import com.cmvr.test.model.vo.TeTaskConfigInfoVO; +import com.cmvr.test.service.ITeTaskConfigInfoService; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.List; + +/** + * 任务流程编排Service业务层处理 + * + * @author cmvr-iot + */ +@Service +public class TeTaskConfigInfoServiceImpl extends ServiceImpl implements ITeTaskConfigInfoService { + + /** + * 查询任务流程编排 + * + * @param id 任务流程编排主键 + * @return 任务流程编排 + */ + @Override + public TeTaskConfigInfo selectTeTaskConfigInfoById(String id) { + return this.baseMapper.selectById(id); + } + + /** + * 查询任务流程编排列表 + * + * @param teTaskConfigInfo 任务流程编排 + * @return 任务流程编排 + */ + @Override + public List selectTeTaskConfigInfoList(TeTaskConfigInfo teTaskConfigInfo) { + MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper<>(); + + queryWrapper.selectAll(TeTaskConfigInfo.class) + .select(SysGroup::getGroupId) + .select(SysGroup::getGroupName) + .leftJoin(SysGroup.class, SysGroup::getGroupId, TeTaskConfigInfo::getGroupId) + .eq(TeTaskConfigInfo::getRunMode, RunModeEnum.NORMAL) + .like(StringUtils.isNotBlank(teTaskConfigInfo.getTaskDesc()), TeTaskConfigInfo::getTaskDesc, teTaskConfigInfo.getTaskDesc()) + .like(StringUtils.isNotBlank(teTaskConfigInfo.getTaskName()), TeTaskConfigInfo::getTaskName, teTaskConfigInfo.getTaskName()) + .eq(StringUtils.isNotBlank(teTaskConfigInfo.getGroupId()), TeTaskConfigInfo::getGroupId, teTaskConfigInfo.getGroupId()) + .eq(StringUtils.isNotBlank(teTaskConfigInfo.getStatus()), TeTaskConfigInfo::getStatus, teTaskConfigInfo.getStatus()) + .orderByDesc(TeTaskConfigInfo::getCreateTime); + + // 执行查询并返回结果 + return this.baseMapper.selectJoinList(TeTaskConfigInfoVO.class, queryWrapper); + } + + /** + * 新增任务流程编排 + * + * @param teTaskConfigInfo 任务流程编排 + * @return 结果 + */ + @Override + public int insertTeTaskConfigInfo(TeTaskConfigInfo teTaskConfigInfo) { + teTaskConfigInfo.setRunMode(RunModeEnum.NORMAL.name()); + return this.baseMapper.insert(teTaskConfigInfo); + } + + /** + * 修改任务流程编排 + * + * @param teTaskConfigInfo 任务流程编排 + * @return 结果 + */ + @Override + public int updateTeTaskConfigInfo(TeTaskConfigInfo teTaskConfigInfo) { + return this.baseMapper.updateById(teTaskConfigInfo); + } + + /** + * 批量删除任务流程编排 + * + * @param ids 需要删除的任务流程编排主键 + * @return 结果 + */ + @Override + public int deleteTeTaskConfigInfoByIds(String[] ids) { + return this.baseMapper.deleteBatchIds(Arrays.asList(ids)); + } + + /** + * 删除任务流程编排信息 + * + * @param id 任务流程编排主键 + * @return 结果 + */ + @Override + public int deleteTeTaskConfigInfoById(String id) { + return this.baseMapper.deleteById(id); + } + + /** + * 检查任务配置是否存在 + */ + @Override + public boolean isTaskExist(String id) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.eq(TeTaskConfigInfo::getId, id); + return this.baseMapper.exists(wrapper); + } +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/service/impl/TeTaskInstServiceImpl.java b/cmvr-iot-test/src/main/java/com/cmvr/test/service/impl/TeTaskInstServiceImpl.java new file mode 100644 index 0000000..e8b293f --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/service/impl/TeTaskInstServiceImpl.java @@ -0,0 +1,158 @@ +package com.cmvr.test.service.impl; + +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cmvr.common.utils.StringUtils; +import com.cmvr.test.enums.RunModeEnum; +import com.cmvr.test.enums.TaskStatusEnum; +import com.cmvr.test.mapper.TeTaskInstMapper; +import com.cmvr.test.model.domain.TeTaskConfigInfo; +import com.cmvr.test.model.domain.TeTaskInst; +import com.cmvr.test.model.vo.TeQueryTaskInstVO; +import com.cmvr.test.model.vo.TeTaskInstVO; +import com.cmvr.test.service.ITeTaskInstService; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 任务实例Service业务层处理 + * + * @author cmvr-iot + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class TeTaskInstServiceImpl extends ServiceImpl implements ITeTaskInstService { + + /** + * 查询任务实例列表 + */ + @Override + public List selectTeTaskInstList(TeQueryTaskInstVO queryTaskInstVO) { + MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper<>(); + + queryWrapper.selectAll(TeTaskInst.class) + .select(TeTaskConfigInfo::getTaskName) + .selectAs(TeTaskInst::getTaskId, TeQueryTaskInstVO::getTaskId) + .leftJoin(TeTaskConfigInfo.class, TeTaskConfigInfo::getId, TeTaskInst::getTaskId) + .eq(TeTaskInst::getRunMode, RunModeEnum.NORMAL) + .eq(StringUtils.isNotBlank(queryTaskInstVO.getStatus()), TeTaskInst::getStatus, queryTaskInstVO.getStatus()) + .like(StringUtils.isNotBlank(queryTaskInstVO.getTaskName()), TeTaskConfigInfo::getTaskName, queryTaskInstVO.getTaskName()) + .ge(StringUtils.isNotBlank(queryTaskInstVO.getStartTime()), TeTaskInst::getCreateTime, queryTaskInstVO.getStartTime()) + .le(StringUtils.isNotBlank(queryTaskInstVO.getEndTime()), TeTaskInst::getCreateTime, queryTaskInstVO.getEndTime()) + .orderByDesc(TeTaskInst::getCreateTime); + + // 执行查询并返回结果 + return this.baseMapper.selectJoinList(TeTaskInstVO.class, queryWrapper); + } + +/* + @Override + public void pauseTask(String instId) { + // todo 调用 edge 暂停接口 + + TaskContext ctx = taskInstHolder.getContext(instId); + if (ctx == null || ctx.isStopped()) { + throw new GlobalException("任务不存在或已终止,无法暂停"); + } + if (ctx.isPaused()) { + throw new GlobalException("任务已处于暂停状态"); + } + + List nodePaths = ctx.getActiveNodeInfo(); + if (CollUtil.isEmpty(nodePaths)) { + throw new GlobalException("当前任务节点路径信息缺失,无法暂停"); + } + + FlowNodePath flowNodePath = nodePaths.get(0); + + // 调用 Node-RED 停止当前流程 + String stopUrl = StrUtil.format(nodeRedProperties.getStopProcess(), flowNodePath.getCurrentNodeId()); + CallAPIUtil.doPostJson(stopUrl, null, null); + + // 统一记录日志 + 设置上下文状态 + 数据库状态 + taskInstHolder.markPaused(instId, ctx.getTaskId(), ctx.getItemId()); + } + + @Override + public void stopTask(String instId) { + // todo调用edge + + TaskContext ctx = taskInstHolder.getContext(instId); + if (ctx == null) { + throw new GlobalException("任务不存在"); + } + if (ctx.isStopped()) { + throw new GlobalException("任务已终止,无需重复操作"); + } + + List nodePaths = ctx.getActiveNodeInfo(); + if (CollUtil.isEmpty(nodePaths)) { + throw new GlobalException("当前任务节点路径信息缺失,无法终止"); + } + + FlowNodePath flowNodePath = nodePaths.get(0); + + // 调用 Node-RED 停止当前流程 + String stopUrl = StrUtil.format(nodeRedProperties.getStopProcess(), flowNodePath.getCurrentNodeId()); + CallAPIUtil.doPostJson(stopUrl, null, null); + + // 统一记录日志 + 设置上下文状态 + 数据库状态 + taskInstHolder.markStopped(instId, ctx.getTaskId(), ctx.getItemId()); + } + + @Override + public void resumeTask(String instId) { + TaskContext ctx = taskInstHolder.getContext(instId); + if (ctx == null) { + throw new GlobalException("任务不存在"); + } + if (!ctx.isPaused()) { + throw new GlobalException("当前任务未处于暂停状态,无法继续运行"); + } + + List nodePaths = ctx.getActiveNodeInfo(); + if (CollUtil.isEmpty(nodePaths)) { + throw new GlobalException("当前任务节点路径信息缺失,无法暂停"); + } + + // 先处理统一状态 + // 统一记录日志 + 设置上下文状态 + 数据库状态 + taskInstHolder.markResumed(instId, ctx.getTaskId(), ctx.getItemId()); + + // 循环调用 Node-RED 的 resume 接口 + for (FlowNodePath nodePath : nodePaths) { + String resumeUrl = StrUtil.format(nodeRedProperties.getStartProcess(), nodePath.getCurrentNodeId()); + TeTaskRunMessageVO msg = new TeTaskRunMessageVO(); + msg.setInstId(instId); + msg.setTaskId(ctx.getTaskId()); + msg.setItemId(ctx.getItemId()); + msg.setTerminalId(ctx.getTerminalId()); + msg.setNodeId(nodePath.getCurrentNodeId()); + msg.setNodeType(nodePath.getCurrentNodeType()); + msg.setParams(JSONObject.parseObject(nodePath.getCurrentParams())); + msg.setStatus(TaskStatusEnum.RUNNING.name()); + CallAPIUtil.doPostJson(resumeUrl, null, msg); + } + + } + + @Override + public TaskContext getTaskContext(String instId) { + return taskInstHolder.getContext(instId); + } +*/ + + @Override + public boolean updateStatus(String instId, TaskStatusEnum taskStatusEnum) { + return this.update( + new LambdaUpdateWrapper() + .eq(TeTaskInst::getId, instId) + .set(TeTaskInst::getStatus, taskStatusEnum.getCode()) + ); + } +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/service/impl/TeTaskOrchestrationServiceImpl.java b/cmvr-iot-test/src/main/java/com/cmvr/test/service/impl/TeTaskOrchestrationServiceImpl.java new file mode 100644 index 0000000..74a1ed2 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/service/impl/TeTaskOrchestrationServiceImpl.java @@ -0,0 +1,124 @@ +package com.cmvr.test.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cmvr.common.utils.uuid.IdUtils; +import com.cmvr.test.enums.RunModeEnum; +import com.cmvr.test.mapper.TeTaskOrchestrationMapper; +import com.cmvr.test.model.domain.TeDetectionItem; +import com.cmvr.test.model.domain.TeTaskConfigInfo; +import com.cmvr.test.model.domain.TeTaskOrchestration; +import com.cmvr.test.model.dto.TeQueryTaskDetailDTO; +import com.cmvr.test.model.vo.TeQueryTaskOrchestraItemVO; +import com.cmvr.test.model.vo.TeTaskOrchestraVO; +import com.cmvr.test.service.ITeTaskConfigInfoService; +import com.cmvr.test.service.ITeTaskOrchestrationService; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; + +/** + * 任务编排Service业务层处理 + * + * @author cmvr-iot + */ +@Service +@RequiredArgsConstructor +public class TeTaskOrchestrationServiceImpl extends ServiceImpl implements ITeTaskOrchestrationService { + + private final ITeTaskConfigInfoService taskConfigInfoService; + + @Override + public List queryByTaskId(String taskId) { + MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); + wrapper.selectAs(TeTaskOrchestration::getItemId, TeQueryTaskOrchestraItemVO::getItemId) + .select(TeTaskOrchestration::getOrderNum) + .leftJoin(TeDetectionItem.class, TeDetectionItem::getId, TeTaskOrchestration::getItemId) + .selectAs(TeDetectionItem::getDetectName, TeQueryTaskOrchestraItemVO::getItemName) + .selectAs(TeDetectionItem::getConfig, TeQueryTaskOrchestraItemVO::getConfig) + .eq(TeTaskOrchestration::getTaskId, taskId) + .orderByAsc(TeTaskOrchestration::getOrderNum); + + return baseMapper.selectJoinList(TeQueryTaskOrchestraItemVO.class, wrapper); + } + + /** + * 新增任务编排 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public boolean insertTeTaskOrchestration(TeTaskOrchestraVO taskOrchestraVO) { + // 校验任务是否存在 + if (!taskConfigInfoService.isTaskExist(taskOrchestraVO.getTaskId())) { + throw new IllegalArgumentException("ID为" + taskOrchestraVO.getTaskId() + "的任务配置不存在!"); + } + + // 先删除原有编排 + deleteByTaskId(taskOrchestraVO.getTaskId()); + + List itemIds = taskOrchestraVO.getItemIds(); + + List list = new ArrayList<>(); + for (int i = 0; i < itemIds.size(); i++) { + TeTaskOrchestration orchestra = new TeTaskOrchestration(); + orchestra.setTaskId(taskOrchestraVO.getTaskId()); + orchestra.setItemId(itemIds.get(i)); + orchestra.setOrderNum(i + 1); + list.add(orchestra); + } + + return saveBatch(list); + } + + /** + * 根据任务ID删除编排信息 + */ + @Override + public int deleteByTaskId(String id) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.eq(TeTaskOrchestration::getTaskId, id); + return this.baseMapper.delete(wrapper); + } + + /** + * 查询任务详情 + */ + @Override + public List queryTaskDetail(String taskId) { + MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); + wrapper + .selectAs(TeTaskOrchestration::getItemId, TeQueryTaskDetailDTO::getDetectItemId) + .select(TeTaskOrchestration::getOrderNum) + .select(TeDetectionItem::getFlowData) + .eq(TeTaskOrchestration::getTaskId, taskId) + .leftJoin(TeDetectionItem.class, TeDetectionItem::getId, TeTaskOrchestration::getItemId) + .orderByAsc(TeTaskOrchestration::getOrderNum); + + return this.baseMapper.selectJoinList(TeQueryTaskDetailDTO.class, wrapper); + } + + /** + * 构建试运行任务 + */ + @Override + public String buildTrialTask(String itemId) { + // 新建试运行任务 + TeTaskConfigInfo task = new TeTaskConfigInfo(); + task.setTaskName(StrUtil.format("{}_{}",RunModeEnum.TRIAL, IdUtils.fastSimpleUUID())); + task.setRunMode(RunModeEnum.TRIAL.name()); + taskConfigInfoService.save(task); + // 编排单一检测项 + TeTaskOrchestration orchestration = new TeTaskOrchestration(); + orchestration.setTaskId(task.getId()); + orchestration.setItemId(itemId); + orchestration.setOrderNum(1); + this.save(orchestration); + return task.getId(); + } +} diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..742dca4 --- /dev/null +++ b/pom.xml @@ -0,0 +1,360 @@ + + + 4.0.0 + + com.cmvr + cmvr-iot + 3.8.9 + + cmvr-iot + http://fastbuild.run + 招商车研物联网平台 + + + 3.8.9 + UTF-8 + UTF-8 + 1.8 + 3.1.1 + 2.5.15 + 1.2.23 + 1.21 + 3.0.0 + 2.3.3 + 1.4.7 + 2.0.53 + 6.6.5 + 2.13.0 + 4.1.2 + 2.3 + 0.9.1 + + 9.0.96 + 1.2.13 + 5.7.12 + 5.3.39 + 3.5.2 + 1.5.1 + 5.8.16 + 8.5.1 + 4.9.3 + 1.58.0 + 2.15.0.RELEASE + + + + + + + + + org.springframework + spring-framework-bom + ${spring-framework.version} + pom + import + + + + + org.springframework.security + spring-security-bom + ${spring-security.version} + pom + import + + + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot.version} + pom + import + + + + + ch.qos.logback + logback-core + ${logback.version} + + + + ch.qos.logback + logback-classic + ${logback.version} + + + + + org.apache.tomcat.embed + tomcat-embed-core + ${tomcat.version} + + + + org.apache.tomcat.embed + tomcat-embed-el + ${tomcat.version} + + + + org.apache.tomcat.embed + tomcat-embed-websocket + ${tomcat.version} + + + + + com.alibaba + druid-spring-boot-starter + ${druid.version} + + + + + eu.bitwalker + UserAgentUtils + ${bitwalker.version} + + + + + com.github.pagehelper + pagehelper-spring-boot-starter + ${pagehelper.boot.version} + + + + + com.baomidou + mybatis-plus-boot-starter + ${mybatis-plus.version} + + + + + com.github.yulichang + mybatis-plus-join-boot-starter + ${mybatis-plus-join.version} + + + + + com.github.oshi + oshi-core + ${oshi.version} + + + + + + + + + + + + + + + + + + com.github.xiaoymin + knife4j-spring-boot-starter + 3.0.3 + + + + + commons-io + commons-io + ${commons.io.version} + + + + + org.apache.poi + poi-ooxml + ${poi.version} + + + + + org.apache.velocity + velocity-engine-core + ${velocity.version} + + + + + com.alibaba.fastjson2 + fastjson2 + ${fastjson.version} + + + + + io.jsonwebtoken + jjwt + ${jwt.version} + + + + + pro.fessional + kaptcha + ${kaptcha.version} + + + + + com.cmvr + cmvr-iot-quartz + ${cmvr-iot.version} + + + + + com.cmvr + cmvr-iot-generator + ${cmvr-iot.version} + + + + + com.cmvr + cmvr-iot-framework + ${cmvr-iot.version} + + + + + com.cmvr + cmvr-iot-system + ${cmvr-iot.version} + + + + + com.cmvr + cmvr-iot-common + ${cmvr-iot.version} + + + + + com.cmvr + cmvr-iot-test + ${cmvr-iot.version} + + + + + com.cmvr + cmvr-iot-device + ${cmvr-iot.version} + + + + + com.cmvr + cmvr-iot-llm + ${cmvr-iot.version} + + + + + com.cmvr + cmvr-iot-grpc-lib + ${cmvr-iot.version} + + + + + com.cmvr + cmvr-iot-grpc-client + ${cmvr-iot.version} + + + + + cn.hutool + hutool-all + ${hutool.version} + + + + + io.minio + minio + ${minio.version} + + + + + com.squareup.okhttp3 + okhttp + ${okhttp.version} + + + + + + cmvr-iot-admin + cmvr-iot-framework + cmvr-iot-system + cmvr-iot-quartz + cmvr-iot-generator + cmvr-iot-common + cmvr-iot-device + cmvr-iot-test + cmvr-iot-api + + pom + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.1 + + ${java.version} + ${java.version} + ${project.build.sourceEncoding} + + + + + + + + public + aliyun nexus + https://maven.aliyun.com/repository/public + + true + + + + + + + public + aliyun nexus + https://maven.aliyun.com/repository/public + + true + + + false + + + + +