问题标签 [scalapb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
36 浏览

protocol-buffers - 使用 gRPC scalaPB 从请求中获取客户端 IP 地址

我一直在网上搜索以访问客户端的 IP 地址,当它向服务器发送请求时,我找到了类似thisthis的示例,但我无法让它在 ScalaPB 中工作。

ScalaPB 中是否有我可以遵循的示例?我对 grpc 和协议缓冲区相当陌生。

0 投票
0 回答
24 浏览

asynchronous - 等待所有客户端发送数据,然后在 scalaPB 中响应

我的服务器需要来自多个客户端的输入,然后才能响应每个客户端,因为所有输入都依赖于另一个。所以我尝试使用await,FuturePromise,但我没有运气。

在这个例子中,只有最后一个连接的客户端得到响应,而其余的则无限等待。这是示例代码,因为在此示例中没有理由等待所有客户端发送数据。

服务器

客户

.proto 文件

0 投票
0 回答
53 浏览

scala - 同步客户端和服务器

我正在制作一个分布式排序系统,其中每台机器(客户端)都有特定范围的值(分区)来存储。我发送和接收数据没有任何问题,但同步是我的问题。在从服务器检索想要的分区之前,它必须首先从其他客户端之一到达服务器。

我已经尝试过delay和其他各种 RPC 调用来尝试同步客户端和服务器,但是客户端运行不同步,程序中断。我想我必须合并futureor promise,但我不确定如何。

每个客户端都有一个唯一的 ID(从 0 开始),并将根据该编号存储分区。一行数据如下所示:AsfAGHM5om 00000000000000000000000000000000 0000222200002222000022220000222200002222000000001111

编辑:例如更新的代码

客户

服务器

原型

0 投票
2 回答
51 浏览

scala - 带有 Scala 3 的 zio-grpc(第二次尝试)

有没有人有一个简单的 zio-grpc 服务器,项目中也有 codegen,使用 Scala 3?

我从他们的 repo 开始使用 HelloWorld 项目,并尝试使用 scalaVersion := "3.1.0" 构建它

这是 plugins.sbt 中的相关部分:

在 build.sbt 中:

由于 Scala 3 可以使用 2.13 库,这就是我正在做的。(三个与 zio-grpc 相关的库中,一个是 zio-grpc-codegen,没有 Scala 3 版本,因此至少必须使用 2.13。)

我从具有上述版本的 sbt 收到此错误:

java.lang.NoSuchMethodError: scala.package$.Seq()Lscala/collection/immutable/Seq$; 在 protocbridge.gens$.java(gens.scala:17) 在 protocbridge.gens$.(gens.scala:11)

如果我删除任何一个 scala-collection-compat 排除项,我们会得到

[错误] 使用 ProjectRef(uri("file:/Users/xxx/dev/zio-grpc/examples/helloworld/project/"), "helloworld-build") 中冲突的跨版本后缀解决了模块:[错误] com.thesamet.scalapb:protoc-bridge _2.12, _2.13 [错误] com.thesamet.scalapb:compilerplugin _3, _2.13

简而言之,我找不到 Scala 2.13/3 版本的 zio-grpc-codegen、compilerplugin_3 和 scalapb-runtime-grpc 的任何排列,它们不会给出一些 sbt 冲突的跨版本后缀错误。

0 投票
2 回答
36 浏览

scala - 如何仅使用一个 TypeMapper 将任何 protobuf 枚举生成为字符串?

例如,我的原型模式中有一些枚举:

我可以通过提供scalaPB TypeMappers 来生成带有字符串而不是枚举的 scala 类:

但我不想为任何单个枚举复制粘贴相同的 TypeMappers

有没有办法为所有枚举只制作一个 TypeMapper scalaPB

0 投票
1 回答
23 浏览

scala - 将 ByteArray 转换为 String 到 ByteArray

我想将 ByteArray 转换为字符串,然后将字符串转换为 ByteArray,但是在转换值时发生了变化。有人帮助解决这个问题。

人.proto:

在 sbt compile 之后,它给出了案例类 Person(由 google protobuf 在编译时创建)

我的主课:

为什么价值观改变了?如何正确转换??

0 投票
0 回答
31 浏览

scalapb - java.lang.VerifyError:类 frameless.functions.Spark2_4_LambdaVariable 覆盖最终方法 genCode

我正在运行使用 ProtoSQL.udf 的数据块作业。数据框有一列已编码 protoValue。parse 方法用于创建一个新列,该列存储从 protoValue 中提取的 json。

scalaVersion = 2.12 scalapb.version = 0.11.8

使用以下依赖项

实施“com.thesamet.scalapb:sparksql32-scalapb0_11_2.12:1.0.0-M1”
实施“com.thesamet.scalapb:scalapb-json4s_2.12:0.11.0”
实施“com.thesamet.scalapb:scalapb-runtime_2。 12:0.11.8"

在 ProtoSQL.udf 运行时出现以下错误

java.lang.VerifyError:类 frameless.functions.Spark2_4_LambdaVariable 覆盖最终方法 genCode.(Lorg/apache/spark/sql/catalyst/expressions/codegen/CodegenContext;)Lorg/apache/spark/sql/catalyst/expressions/codegen/ExprCode ;

堆栈跟踪

OpenJDK 64 位服务器 VM 警告:忽略选项 MaxPermSize=512m;支持已在 8.0 22/02/25 11:00:28 中删除 错误未从用户代码中捕获抛出:java.lang.VerifyError: class frameless.functions.Spark2_4_LambdaVariable 覆盖最终方法 genCode.(Lorg/apache/spark/sql/catalyst/表达式/codegen/CodegenContext;)Lorg/apache/spark/sql/catalyst/expressions/codegen/ExprCode;在 java.lang.ClassLoader.defineClass1(Native Method) 在 java.lang.ClassLoader.defineClass(ClassLoader.java:757) 在 java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 在 java.net.URLClassLoader.defineClass (URLClassLoader.java:468) 在 java.net.URLClassLoader.access$100(URLClassLoader.java:74) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:369) 在 java.net.URLClassLoader$1.run(URLClassLoader .java:363) 在 java.security。

在此处输入图像描述