rpc

package
v0.0.13 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 9, 2026 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Index

Constants

View Source
const AddedListItem = -1

AddedListItem is the sentinel value used in list positions to indicate a new item.

Variables

This section is empty.

Functions

func AsRef

func AsRef(v any) any

AsRef wraps a value in a Reference for ref tracking. Returns nil if the value is nil (including typed nil pointers/interfaces).

func GetValue

func GetValue(maybeRef any) any

GetValue unwraps a Reference, returning the inner value. If the argument is not a Reference, it is returned as-is.

func GetValueNonNull

func GetValueNonNull(maybeRef any) any

GetValueNonNull unwraps a Reference and panics if the result is nil.

func IsRef

func IsRef(v any) bool

IsRef reports whether the given value is a Reference.

func RegisterFactory

func RegisterFactory(javaClassName string, factory func() any)

RegisterFactory registers a factory for creating instances of a Java class.

func RegisterValueType

func RegisterValueType(goType reflect.Type, javaClassName string)

RegisterValueType registers a Go type -> Java class name mapping for RPC serialization.

func SendMarkersCodec

func SendMarkersCodec(m java.Markers, q *SendQueue)

SendMarkersCodec serializes Markers fields like Java's Markers.rpcSend codec. Sends: ID (uuid string), then marker entries list as ref.

Types

type GoReceiver

type GoReceiver struct {
	JavaReceiver
}

GoReceiver deserializes Go AST nodes via the visitor pattern. Mirrors org.openrewrite.golang.internal.rpc.GolangReceiver, which extends JavaReceiver, which extends JavaVisitor.

GoReceiver embeds JavaReceiver to inherit J-node Visit overrides and the PreVisit hook (id/prefix/markers), and adds VisitX overrides for G-specific node types. Self is set by visitor.Init so the framework's type-switch dispatch routes to the most-derived override.

func NewGoReceiver

func NewGoReceiver() *GoReceiver

NewGoReceiver creates a GoReceiver ready to deserialize trees.

func (*GoReceiver) Visit

func (r *GoReceiver) Visit(t java.Tree, p any) java.Tree

Visit overrides the framework dispatch to special-case ParseError — it isn't a J node, has no Prefix/Markers, and uses its own codec. All other tree types fall through to the framework's switch.

func (*GoReceiver) VisitChannel

func (r *GoReceiver) VisitChannel(ch *golang.Channel, p any) java.J

func (*GoReceiver) VisitCommClause

func (r *GoReceiver) VisitCommClause(cc *golang.CommClause, p any) java.J

func (*GoReceiver) VisitCompilationUnit

func (r *GoReceiver) VisitCompilationUnit(cu *golang.CompilationUnit, p any) java.J

func (*GoReceiver) VisitComposite

func (r *GoReceiver) VisitComposite(comp *golang.Composite, p any) java.J

func (*GoReceiver) VisitDeclarationBlock added in v0.0.12

func (r *GoReceiver) VisitDeclarationBlock(db *golang.DeclarationBlock, p any) java.J

func (*GoReceiver) VisitDefer

func (r *GoReceiver) VisitDefer(d *golang.Defer, p any) java.J

func (*GoReceiver) VisitFallthrough added in v0.0.3

func (r *GoReceiver) VisitFallthrough(f *golang.Fallthrough, p any) java.J

VisitFallthrough mirrors GolangReceiver.visitFallthrough — the node has no payload beyond the framework-handled id/prefix/markers, so this override is intentionally a no-op. Present for sender/receiver symmetry.

func (*GoReceiver) VisitFuncType

func (r *GoReceiver) VisitFuncType(ft *golang.FuncType, p any) java.J

func (*GoReceiver) VisitGoArrayType added in v0.0.13

func (r *GoReceiver) VisitGoArrayType(at *golang.ArrayType, p any) java.J

func (*GoReceiver) VisitGoAssignmentOperation added in v0.0.6

func (r *GoReceiver) VisitGoAssignmentOperation(a *golang.AssignmentOperation, p any) java.J

func (*GoReceiver) VisitGoBinary added in v0.0.6

func (r *GoReceiver) VisitGoBinary(b *golang.Binary, p any) java.J

func (*GoReceiver) VisitGoMethodDeclaration added in v0.0.12

func (r *GoReceiver) VisitGoMethodDeclaration(md *golang.MethodDeclaration, p any) java.J

func (*GoReceiver) VisitGoReturn added in v0.0.11

func (r *GoReceiver) VisitGoReturn(ret *golang.Return, p any) java.J

func (*GoReceiver) VisitGoStmt

func (r *GoReceiver) VisitGoStmt(gs *golang.GoStmt, p any) java.J

func (*GoReceiver) VisitGoUnary added in v0.0.6

func (r *GoReceiver) VisitGoUnary(u *golang.Unary, p any) java.J

func (*GoReceiver) VisitGoVariadic added in v0.0.6

func (r *GoReceiver) VisitGoVariadic(vr *golang.Variadic, p any) java.J

func (*GoReceiver) VisitGoto

func (r *GoReceiver) VisitGoto(g *golang.Goto, p any) java.J

func (*GoReceiver) VisitIndexList

func (r *GoReceiver) VisitIndexList(il *golang.IndexList, p any) java.J

func (*GoReceiver) VisitInterfaceType

func (r *GoReceiver) VisitInterfaceType(it *golang.InterfaceType, p any) java.J

func (*GoReceiver) VisitKeyValue

func (r *GoReceiver) VisitKeyValue(kv *golang.KeyValue, p any) java.J

func (*GoReceiver) VisitMapType

func (r *GoReceiver) VisitMapType(mt *golang.MapType, p any) java.J

func (*GoReceiver) VisitMultiAssignment

func (r *GoReceiver) VisitMultiAssignment(ma *golang.MultiAssignment, p any) java.J

func (*GoReceiver) VisitPointerType

func (r *GoReceiver) VisitPointerType(pt *golang.PointerType, p any) java.J

func (*GoReceiver) VisitSend

func (r *GoReceiver) VisitSend(sn *golang.Send, p any) java.J

func (*GoReceiver) VisitSlice

func (r *GoReceiver) VisitSlice(sl *golang.Slice, p any) java.J

func (*GoReceiver) VisitStatementExpression

func (r *GoReceiver) VisitStatementExpression(se *golang.StatementExpression, p any) java.J

func (*GoReceiver) VisitStatementWithInit added in v0.0.13

func (r *GoReceiver) VisitStatementWithInit(swi *golang.StatementWithInit, p any) java.J

func (*GoReceiver) VisitStructType

func (r *GoReceiver) VisitStructType(st *golang.StructType, p any) java.J

func (*GoReceiver) VisitTypeDecl

func (r *GoReceiver) VisitTypeDecl(td *golang.TypeDecl, p any) java.J

func (*GoReceiver) VisitTypeList

func (r *GoReceiver) VisitTypeList(tl *golang.TypeList, p any) java.J

func (*GoReceiver) VisitUnderlyingType added in v0.0.5

func (r *GoReceiver) VisitUnderlyingType(ut *golang.UnderlyingType, p any) java.J

func (*GoReceiver) VisitUnion added in v0.0.5

func (r *GoReceiver) VisitUnion(u *golang.Union, p any) java.J

type GoSender

type GoSender struct {
	JavaSender
}

GoSender serializes Go AST nodes via the visitor pattern. Mirrors org.openrewrite.golang.internal.rpc.GolangSender, which extends JavaSender, which extends JavaVisitor.

GoSender embeds JavaSender to inherit J-node Visit overrides + the PreVisit hook, and adds VisitX overrides for the G-specific node types. The framework's type-switch dispatch in visitor.GoVisitor.Visit routes to the most-derived override via the Self field set by visitor.Init.

func NewGoSender

func NewGoSender() *GoSender

NewGoSender creates a GoSender ready to serialize trees. Sets Self so the framework's dispatch routes to G-node and J-node overrides across the embedding chain.

func (*GoSender) Visit

func (s *GoSender) Visit(t java.Tree, p any) java.Tree

Visit overrides the framework dispatch to special-case ParseError — it isn't a J node, has no Prefix/Markers, and uses its own codec. All other tree types fall through to the framework's switch.

func (*GoSender) VisitChannel

func (s *GoSender) VisitChannel(ch *golang.Channel, p any) java.J

func (*GoSender) VisitCommClause

func (s *GoSender) VisitCommClause(cc *golang.CommClause, p any) java.J

func (*GoSender) VisitCompilationUnit

func (s *GoSender) VisitCompilationUnit(cu *golang.CompilationUnit, p any) java.J

func (*GoSender) VisitComposite

func (s *GoSender) VisitComposite(c *golang.Composite, p any) java.J

func (*GoSender) VisitDeclarationBlock added in v0.0.12

func (s *GoSender) VisitDeclarationBlock(db *golang.DeclarationBlock, p any) java.J

func (*GoSender) VisitDefer

func (s *GoSender) VisitDefer(d *golang.Defer, p any) java.J

func (*GoSender) VisitFallthrough added in v0.0.3

func (s *GoSender) VisitFallthrough(f *golang.Fallthrough, p any) java.J

VisitFallthrough mirrors GolangSender.visitFallthrough — the node has no payload beyond the framework-handled id/prefix/markers, so this override is intentionally a no-op. Present for sender/receiver symmetry.

func (*GoSender) VisitFuncType

func (s *GoSender) VisitFuncType(ft *golang.FuncType, p any) java.J

func (*GoSender) VisitGoArrayType added in v0.0.13

func (s *GoSender) VisitGoArrayType(at *golang.ArrayType, p any) java.J

func (*GoSender) VisitGoAssignmentOperation added in v0.0.6

func (s *GoSender) VisitGoAssignmentOperation(a *golang.AssignmentOperation, p any) java.J

func (*GoSender) VisitGoBinary added in v0.0.6

func (s *GoSender) VisitGoBinary(b *golang.Binary, p any) java.J

func (*GoSender) VisitGoMethodDeclaration added in v0.0.12

func (s *GoSender) VisitGoMethodDeclaration(md *golang.MethodDeclaration, p any) java.J

func (*GoSender) VisitGoReturn added in v0.0.11

func (s *GoSender) VisitGoReturn(ret *golang.Return, p any) java.J

func (*GoSender) VisitGoStmt

func (s *GoSender) VisitGoStmt(gs *golang.GoStmt, p any) java.J

func (*GoSender) VisitGoUnary added in v0.0.6

func (s *GoSender) VisitGoUnary(u *golang.Unary, p any) java.J

func (*GoSender) VisitGoVariadic added in v0.0.6

func (s *GoSender) VisitGoVariadic(vr *golang.Variadic, p any) java.J

func (*GoSender) VisitGoto

func (s *GoSender) VisitGoto(g *golang.Goto, p any) java.J

func (*GoSender) VisitIndexList

func (s *GoSender) VisitIndexList(il *golang.IndexList, p any) java.J

func (*GoSender) VisitInterfaceType

func (s *GoSender) VisitInterfaceType(it *golang.InterfaceType, p any) java.J

func (*GoSender) VisitKeyValue

func (s *GoSender) VisitKeyValue(kv *golang.KeyValue, p any) java.J

func (*GoSender) VisitMapType

func (s *GoSender) VisitMapType(mt *golang.MapType, p any) java.J

func (*GoSender) VisitMultiAssignment

func (s *GoSender) VisitMultiAssignment(ma *golang.MultiAssignment, p any) java.J

func (*GoSender) VisitPointerType

func (s *GoSender) VisitPointerType(pt *golang.PointerType, p any) java.J

func (*GoSender) VisitSend

func (s *GoSender) VisitSend(sn *golang.Send, p any) java.J

func (*GoSender) VisitSlice

func (s *GoSender) VisitSlice(sl *golang.Slice, p any) java.J

func (*GoSender) VisitStatementExpression

func (s *GoSender) VisitStatementExpression(se *golang.StatementExpression, p any) java.J

func (*GoSender) VisitStatementWithInit added in v0.0.13

func (s *GoSender) VisitStatementWithInit(swi *golang.StatementWithInit, p any) java.J

func (*GoSender) VisitStructType

func (s *GoSender) VisitStructType(st *golang.StructType, p any) java.J

func (*GoSender) VisitTypeDecl

func (s *GoSender) VisitTypeDecl(td *golang.TypeDecl, p any) java.J

func (*GoSender) VisitTypeList

func (s *GoSender) VisitTypeList(tl *golang.TypeList, p any) java.J

func (*GoSender) VisitUnderlyingType added in v0.0.5

func (s *GoSender) VisitUnderlyingType(ut *golang.UnderlyingType, p any) java.J

func (*GoSender) VisitUnion added in v0.0.5

func (s *GoSender) VisitUnion(u *golang.Union, p any) java.J

type JavaReceiver

type JavaReceiver struct {
	visitor.GoVisitor
	// contains filtered or unexported fields
}

JavaReceiver deserializes J (shared Java-like) AST nodes via the visitor pattern. Mirrors org.openrewrite.java.internal.rpc.JavaReceiver.

JavaReceiver embeds visitor.GoVisitor; the framework's type-switch dispatch routes calls to JavaReceiver's VisitX overrides via the Self field. PreVisit handles the cross-cutting fields (id, prefix, markers) once per node, mirroring Java's JavaVisitor.preVisit.

func (*JavaReceiver) PreVisit

func (r *JavaReceiver) PreVisit(t java.Tree, p any) java.Tree

PreVisit deserializes the cross-cutting fields of every J node: id, prefix, markers. Returns a (possibly new) instance of t with those fields populated from the queue. ParseError isn't a J node and is special-cased at the GoReceiver layer.

Each field is updated via the immutable typed wither (WithPrefix / WithMarkers, called polymorphically via reflection) so the input tree is never mutated and the visitor framework's pointer-identity change detection sees the right thing — same input pointer means nothing changed; different output pointer means something changed. Mirrors rewrite-java's `j.withPrefix(...).withMarkers(...)` chain.

func (*JavaReceiver) VisitAnnotation

func (r *JavaReceiver) VisitAnnotation(ann *java.Annotation, p any) java.J

receiveAnnotation matches JavaReceiver.visitAnnotation field order: annotationType, then nullable arguments container.

func (*JavaReceiver) VisitArrayAccess

func (r *JavaReceiver) VisitArrayAccess(aa *java.ArrayAccess, p any) java.J

func (*JavaReceiver) VisitArrayDimension

func (r *JavaReceiver) VisitArrayDimension(ad *java.ArrayDimension, p any) java.J

func (*JavaReceiver) VisitArrayType

func (r *JavaReceiver) VisitArrayType(at *java.ArrayType, p any) java.J

func (*JavaReceiver) VisitAssignment

func (r *JavaReceiver) VisitAssignment(a *java.Assignment, p any) java.J

func (*JavaReceiver) VisitAssignmentOperation

func (r *JavaReceiver) VisitAssignmentOperation(a *java.AssignmentOperation, p any) java.J

func (*JavaReceiver) VisitBinary

func (r *JavaReceiver) VisitBinary(b *java.Binary, p any) java.J

func (*JavaReceiver) VisitBlock

func (r *JavaReceiver) VisitBlock(b *java.Block, p any) java.J

func (*JavaReceiver) VisitBreak

func (r *JavaReceiver) VisitBreak(b *java.Break, p any) java.J

func (*JavaReceiver) VisitCase

func (r *JavaReceiver) VisitCase(cs *java.Case, p any) java.J

func (*JavaReceiver) VisitContinue

func (r *JavaReceiver) VisitContinue(cont *java.Continue, p any) java.J

func (*JavaReceiver) VisitControlParentheses

func (r *JavaReceiver) VisitControlParentheses(cp *java.ControlParentheses, p any) java.J

func (*JavaReceiver) VisitElse

func (r *JavaReceiver) VisitElse(el *java.Else, p any) java.J

func (*JavaReceiver) VisitFieldAccess

func (r *JavaReceiver) VisitFieldAccess(fa *java.FieldAccess, p any) java.J

func (*JavaReceiver) VisitForControl

func (r *JavaReceiver) VisitForControl(fc *java.ForControl, p any) java.J

func (*JavaReceiver) VisitForEachControl

func (r *JavaReceiver) VisitForEachControl(fc *java.ForEachControl, p any) java.J

func (*JavaReceiver) VisitForEachLoop

func (r *JavaReceiver) VisitForEachLoop(f *java.ForEachLoop, p any) java.J

func (*JavaReceiver) VisitForLoop

func (r *JavaReceiver) VisitForLoop(f *java.ForLoop, p any) java.J

func (*JavaReceiver) VisitIdentifier

func (r *JavaReceiver) VisitIdentifier(id *java.Identifier, p any) java.J

func (*JavaReceiver) VisitIf

func (r *JavaReceiver) VisitIf(i *java.If, p any) java.J

func (*JavaReceiver) VisitImport

func (r *JavaReceiver) VisitImport(imp *java.Import, p any) java.J

func (*JavaReceiver) VisitLabel

func (r *JavaReceiver) VisitLabel(l *java.Label, p any) java.J

func (*JavaReceiver) VisitLiteral

func (r *JavaReceiver) VisitLiteral(lit *java.Literal, p any) java.J

func (*JavaReceiver) VisitMethodDeclaration

func (r *JavaReceiver) VisitMethodDeclaration(md *java.MethodDeclaration, p any) java.J

func (*JavaReceiver) VisitMethodInvocation

func (r *JavaReceiver) VisitMethodInvocation(mi *java.MethodInvocation, p any) java.J

func (*JavaReceiver) VisitParameterizedType

func (r *JavaReceiver) VisitParameterizedType(pt *java.ParameterizedType, p any) java.J

func (*JavaReceiver) VisitParentheses

func (r *JavaReceiver) VisitParentheses(parens *java.Parentheses, p any) java.J

func (*JavaReceiver) VisitReturn

func (r *JavaReceiver) VisitReturn(ret *java.Return, p any) java.J

func (*JavaReceiver) VisitSwitch

func (r *JavaReceiver) VisitSwitch(sw *java.Switch, p any) java.J

func (*JavaReceiver) VisitTypeCast

func (r *JavaReceiver) VisitTypeCast(tc *java.TypeCast, p any) java.J

func (*JavaReceiver) VisitTypeParameter added in v0.0.5

func (r *JavaReceiver) VisitTypeParameter(tp *java.TypeParameter, p any) java.J

func (*JavaReceiver) VisitTypeParameters added in v0.0.5

func (r *JavaReceiver) VisitTypeParameters(tps *java.TypeParameters, p any) java.J

func (*JavaReceiver) VisitUnary

func (r *JavaReceiver) VisitUnary(u *java.Unary, p any) java.J

func (*JavaReceiver) VisitVariableDeclarations

func (r *JavaReceiver) VisitVariableDeclarations(vd *java.VariableDeclarations, p any) java.J

func (*JavaReceiver) VisitVariableDeclarator

func (r *JavaReceiver) VisitVariableDeclarator(vd *java.VariableDeclarator, p any) java.J

type JavaSender

type JavaSender struct {
	visitor.GoVisitor
	// contains filtered or unexported fields
}

JavaSender serializes J (shared Java-like) AST nodes via the visitor pattern. Mirrors org.openrewrite.java.internal.rpc.JavaSender.

Architecture: JavaSender embeds visitor.GoVisitor so the framework's type-switch dispatch routes calls into JavaSender's VisitX overrides. PreVisit handles the cross-cutting fields (id, prefix, markers) once per node, mirroring Java's JavaVisitor.preVisit.

Language-specific senders (GoSender) embed JavaSender and override the additional G-node Visit methods on top.

func (*JavaSender) PreVisit

func (s *JavaSender) PreVisit(t java.Tree, p any) java.Tree

PreVisit serializes the cross-cutting fields of every J node: id, prefix, markers. Called by the framework before the type-specific VisitX dispatch. ParseError isn't a J node and is special-cased at the GoSender layer.

Field access goes through the polymorphic J-interface methods (GetID / GetPrefix / GetMarkers), mirroring rewrite-java's JavaVisitor.preVisit pattern.

func (*JavaSender) VisitAnnotation

func (s *JavaSender) VisitAnnotation(ann *java.Annotation, p any) java.J

sendAnnotation matches JavaSender.visitAnnotation field order: annotationType, then nullable arguments container.

func (*JavaSender) VisitArrayAccess

func (s *JavaSender) VisitArrayAccess(aa *java.ArrayAccess, p any) java.J

func (*JavaSender) VisitArrayDimension

func (s *JavaSender) VisitArrayDimension(ad *java.ArrayDimension, p any) java.J

func (*JavaSender) VisitArrayType

func (s *JavaSender) VisitArrayType(at *java.ArrayType, p any) java.J

func (*JavaSender) VisitAssignment

func (s *JavaSender) VisitAssignment(a *java.Assignment, p any) java.J

func (*JavaSender) VisitAssignmentOperation

func (s *JavaSender) VisitAssignmentOperation(a *java.AssignmentOperation, p any) java.J

func (*JavaSender) VisitBinary

func (s *JavaSender) VisitBinary(b *java.Binary, p any) java.J

func (*JavaSender) VisitBlock

func (s *JavaSender) VisitBlock(b *java.Block, p any) java.J

func (*JavaSender) VisitBreak

func (s *JavaSender) VisitBreak(b *java.Break, p any) java.J

func (*JavaSender) VisitCase

func (s *JavaSender) VisitCase(c *java.Case, p any) java.J

func (*JavaSender) VisitContinue

func (s *JavaSender) VisitContinue(c *java.Continue, p any) java.J

func (*JavaSender) VisitControlParentheses

func (s *JavaSender) VisitControlParentheses(cp *java.ControlParentheses, p any) java.J

func (*JavaSender) VisitElse

func (s *JavaSender) VisitElse(el *java.Else, p any) java.J

func (*JavaSender) VisitFieldAccess

func (s *JavaSender) VisitFieldAccess(fa *java.FieldAccess, p any) java.J

func (*JavaSender) VisitForControl

func (s *JavaSender) VisitForControl(fc *java.ForControl, p any) java.J

func (*JavaSender) VisitForEachControl

func (s *JavaSender) VisitForEachControl(fc *java.ForEachControl, p any) java.J

func (*JavaSender) VisitForEachLoop

func (s *JavaSender) VisitForEachLoop(f *java.ForEachLoop, p any) java.J

func (*JavaSender) VisitForLoop

func (s *JavaSender) VisitForLoop(f *java.ForLoop, p any) java.J

func (*JavaSender) VisitIdentifier

func (s *JavaSender) VisitIdentifier(id *java.Identifier, p any) java.J

func (*JavaSender) VisitIf

func (s *JavaSender) VisitIf(i *java.If, p any) java.J

func (*JavaSender) VisitImport

func (s *JavaSender) VisitImport(imp *java.Import, p any) java.J

func (*JavaSender) VisitLabel

func (s *JavaSender) VisitLabel(l *java.Label, p any) java.J

func (*JavaSender) VisitLiteral

func (s *JavaSender) VisitLiteral(lit *java.Literal, p any) java.J

func (*JavaSender) VisitMethodDeclaration

func (s *JavaSender) VisitMethodDeclaration(md *java.MethodDeclaration, p any) java.J

func (*JavaSender) VisitMethodInvocation

func (s *JavaSender) VisitMethodInvocation(mi *java.MethodInvocation, p any) java.J

func (*JavaSender) VisitParameterizedType

func (s *JavaSender) VisitParameterizedType(pt *java.ParameterizedType, p any) java.J

func (*JavaSender) VisitParentheses

func (s *JavaSender) VisitParentheses(parens *java.Parentheses, p any) java.J

func (*JavaSender) VisitReturn

func (s *JavaSender) VisitReturn(r *java.Return, p any) java.J

func (*JavaSender) VisitSwitch

func (s *JavaSender) VisitSwitch(sw *java.Switch, p any) java.J

func (*JavaSender) VisitTypeCast

func (s *JavaSender) VisitTypeCast(tc *java.TypeCast, p any) java.J

func (*JavaSender) VisitTypeParameter added in v0.0.5

func (s *JavaSender) VisitTypeParameter(tp *java.TypeParameter, p any) java.J

func (*JavaSender) VisitTypeParameters added in v0.0.5

func (s *JavaSender) VisitTypeParameters(tps *java.TypeParameters, p any) java.J

func (*JavaSender) VisitUnary

func (s *JavaSender) VisitUnary(u *java.Unary, p any) java.J

func (*JavaSender) VisitVariableDeclarations

func (s *JavaSender) VisitVariableDeclarations(vd *java.VariableDeclarations, p any) java.J

func (*JavaSender) VisitVariableDeclarator

func (s *JavaSender) VisitVariableDeclarator(vd *java.VariableDeclarator, p any) java.J

type JavaTypeReceiver

type JavaTypeReceiver struct {
	visitor.JavaTypeVisitor
}

JavaTypeReceiver deserializes JavaType objects from the receive queue. Field ordering MUST match JavaTypeReceiver.java exactly. Embeds JavaTypeVisitor for dispatch; override methods deserialize each type.

func NewJavaTypeReceiver

func NewJavaTypeReceiver() *JavaTypeReceiver

NewJavaTypeReceiver creates a JavaTypeReceiver with virtual dispatch wired.

func (*JavaTypeReceiver) VisitAnnotation

func (r *JavaTypeReceiver) VisitAnnotation(a *java.JavaTypeAnnotation, p any) java.JavaType

VisitAnnotation mirrors JavaTypeReceiver.visitAnnotation

func (*JavaTypeReceiver) VisitArray

func (r *JavaTypeReceiver) VisitArray(a *java.JavaTypeArray, p any) java.JavaType

VisitArray mirrors JavaTypeReceiver.visitArray

func (*JavaTypeReceiver) VisitClass

func (r *JavaTypeReceiver) VisitClass(c *java.JavaTypeClass, p any) java.JavaType

VisitClass mirrors JavaTypeReceiver.visitClass field order: flagsBitMap, kind, fullyQualifiedName, typeParameters, supertype, owningClass, annotations, interfaces, members, methods

func (*JavaTypeReceiver) VisitGenericTypeVariable

func (r *JavaTypeReceiver) VisitGenericTypeVariable(g *java.JavaTypeGenericTypeVariable, p any) java.JavaType

VisitGenericTypeVariable mirrors JavaTypeReceiver.visitGenericTypeVariable

func (*JavaTypeReceiver) VisitIntersection

func (r *JavaTypeReceiver) VisitIntersection(is *java.JavaTypeIntersection, p any) java.JavaType

VisitIntersection mirrors JavaTypeReceiver.visitIntersection

func (*JavaTypeReceiver) VisitMethod

func (r *JavaTypeReceiver) VisitMethod(m *java.JavaTypeMethod, p any) java.JavaType

VisitMethod mirrors JavaTypeReceiver.visitMethod field order: declaringType, name, flagsBitMap, returnType, parameterNames, parameterTypes, thrownExceptions, annotations, defaultValue, declaredFormalTypeNames

func (*JavaTypeReceiver) VisitMultiCatch

func (r *JavaTypeReceiver) VisitMultiCatch(mc *java.JavaTypeMultiCatch, p any) java.JavaType

VisitMultiCatch mirrors JavaTypeReceiver.visitMultiCatch

func (*JavaTypeReceiver) VisitParameterized

func (r *JavaTypeReceiver) VisitParameterized(pt *java.JavaTypeParameterized, p any) java.JavaType

VisitParameterized mirrors JavaTypeReceiver.visitParameterized

func (*JavaTypeReceiver) VisitPrimitive

func (r *JavaTypeReceiver) VisitPrimitive(pr *java.JavaTypePrimitive, p any) java.JavaType

VisitPrimitive mirrors JavaTypeReceiver.visitPrimitive

func (*JavaTypeReceiver) VisitShallowClass added in v0.0.3

func (r *JavaTypeReceiver) VisitShallowClass(sc *java.JavaTypeShallowClass, p any) java.JavaType

VisitShallowClass mirrors VisitClass — Java's ShallowClass extends Class and uses the same field set; the discriminator is the wire valueType.

func (*JavaTypeReceiver) VisitVariable

func (r *JavaTypeReceiver) VisitVariable(v *java.JavaTypeVariable, p any) java.JavaType

VisitVariable mirrors JavaTypeReceiver.visitVariable

type JavaTypeSender

type JavaTypeSender struct {
	visitor.JavaTypeVisitor
}

JavaTypeSender serializes JavaType objects into the send queue. Field ordering MUST match JavaTypeSender.java exactly. Embeds JavaTypeVisitor for dispatch; override methods serialize each type.

func NewJavaTypeSender

func NewJavaTypeSender() *JavaTypeSender

NewJavaTypeSender creates a JavaTypeSender with virtual dispatch wired.

func (*JavaTypeSender) VisitAnnotation

func (s *JavaTypeSender) VisitAnnotation(a *java.JavaTypeAnnotation, p any) java.JavaType

VisitAnnotation matches JavaTypeSender.visitAnnotation

func (*JavaTypeSender) VisitArray

func (s *JavaTypeSender) VisitArray(a *java.JavaTypeArray, p any) java.JavaType

VisitArray matches JavaTypeSender.visitArray

func (*JavaTypeSender) VisitClass

func (s *JavaTypeSender) VisitClass(c *java.JavaTypeClass, p any) java.JavaType

VisitClass matches JavaTypeSender.visitClass field order exactly: flagsBitMap, kind, fullyQualifiedName, typeParameters, supertype, owningClass, annotations, interfaces, members, methods

func (*JavaTypeSender) VisitGenericTypeVariable

func (s *JavaTypeSender) VisitGenericTypeVariable(g *java.JavaTypeGenericTypeVariable, p any) java.JavaType

VisitGenericTypeVariable matches JavaTypeSender.visitGenericTypeVariable

func (*JavaTypeSender) VisitIntersection

func (s *JavaTypeSender) VisitIntersection(is *java.JavaTypeIntersection, p any) java.JavaType

VisitIntersection matches JavaTypeSender.visitIntersection

func (*JavaTypeSender) VisitMethod

func (s *JavaTypeSender) VisitMethod(m *java.JavaTypeMethod, p any) java.JavaType

VisitMethod matches JavaTypeSender.visitMethod field order exactly: declaringType, name, flagsBitMap, returnType, parameterNames, parameterTypes, thrownExceptions, annotations, defaultValue, declaredFormalTypeNames

func (*JavaTypeSender) VisitMultiCatch

func (s *JavaTypeSender) VisitMultiCatch(mc *java.JavaTypeMultiCatch, p any) java.JavaType

VisitMultiCatch matches JavaTypeSender.visitMultiCatch

func (*JavaTypeSender) VisitParameterized

func (s *JavaTypeSender) VisitParameterized(pt *java.JavaTypeParameterized, p any) java.JavaType

VisitParameterized matches JavaTypeSender.visitParameterized

func (*JavaTypeSender) VisitPrimitive

func (s *JavaTypeSender) VisitPrimitive(pr *java.JavaTypePrimitive, p any) java.JavaType

VisitPrimitive matches JavaTypeSender.visitPrimitive

func (*JavaTypeSender) VisitShallowClass added in v0.0.3

func (s *JavaTypeSender) VisitShallowClass(sc *java.JavaTypeShallowClass, p any) java.JavaType

VisitShallowClass walks the same field set as VisitClass — Java's ShallowClass extends Class and uses the same wire shape; only the outgoing valueType discriminator differs (handled by valueTypeMap).

func (*JavaTypeSender) VisitVariable

func (s *JavaTypeSender) VisitVariable(v *java.JavaTypeVariable, p any) java.JavaType

VisitVariable matches JavaTypeSender.visitVariable

type ReceiveQueue

type ReceiveQueue struct {
	// contains filtered or unexported fields
}

ReceiveQueue deserializes RpcObjectData messages from the RPC channel.

func NewReceiveQueue

func NewReceiveQueue(refs map[int]any, pull func() []RpcObjectData) *ReceiveQueue

NewReceiveQueue creates a new ReceiveQueue.

func (*ReceiveQueue) PeekBatch

func (q *ReceiveQueue) PeekBatch() []RpcObjectData

PeekBatch returns the current batch without consuming. Useful for checking if END_OF_OBJECT is waiting without triggering a new fetch.

func (*ReceiveQueue) Receive

func (q *ReceiveQueue) Receive(before any, onChange func(any) any) any

Receive reads the next value from the queue. If onChange is non-nil, it's called for ADD/CHANGE states to deserialize nested fields.

func (*ReceiveQueue) ReceiveAndGet

func (q *ReceiveQueue) ReceiveAndGet(before any, mapping func(any) any) any

ReceiveAndGet reads a value and applies a mapping function for ADD/CHANGE.

func (*ReceiveQueue) ReceiveList

func (q *ReceiveQueue) ReceiveList(before []any, onChange func(any) any) []any

ReceiveList reads a list from the queue with position-based tracking.

func (*ReceiveQueue) Take

func (q *ReceiveQueue) Take() RpcObjectData

Take returns the next message from the queue, pulling a new batch if needed.

type Receiver

type Receiver interface {
	Visit(t java.Tree, p any) java.Tree
}

Receiver deserializes a tree node from a ReceiveQueue. Mirrors the visitor.VisitorI signature so receivers slot into the framework's dispatch — same shape as rewrite-java's JavaReceiver, which extends JavaVisitor<RpcReceiveQueue>.

type Reference

type Reference struct {
	Value any
}

Reference wraps a value to indicate it should be ref-tracked during RPC serialization.

type RpcObjectData

type RpcObjectData struct {
	State     State   `json:"state"`
	ValueType *string `json:"valueType,omitempty"`
	Value     any     `json:"value,omitempty"`
	Ref       *int    `json:"ref,omitempty"`
}

RpcObjectData is the wire format for RPC messages.

func ParseObjectData

func ParseObjectData(m map[string]any) RpcObjectData

ParseObjectData converts a JSON-decoded map to an RpcObjectData.

func (RpcObjectData) MarshalJSON

func (d RpcObjectData) MarshalJSON() ([]byte, error)

MarshalJSON implements custom JSON marshaling for RpcObjectData.

type SendQueue

type SendQueue struct {
	// contains filtered or unexported fields
}

SendQueue serializes objects into RpcObjectData messages for RPC transmission. It tracks refs for deduplication and maintains a "before" state for delta encoding.

func NewSendQueue

func NewSendQueue(batchSize int, drain func([]RpcObjectData), refs map[uintptr]int) *SendQueue

NewSendQueue creates a new SendQueue.

func (*SendQueue) Flush

func (q *SendQueue) Flush()

Flush sends the accumulated batch and clears it.

func (*SendQueue) GetAndSend

func (q *SendQueue) GetAndSend(parent any, getter func(any) any, onChange func(any))

GetAndSend extracts a value from parent (and before), compares them, and sends the delta.

func (*SendQueue) GetAndSendList

func (q *SendQueue) GetAndSendList(parent any, getter func(any) []any, id func(any) any, onChange func(any))

GetAndSendList extracts a list from parent and sends it with position tracking.

func (*SendQueue) GetAndSendListAsRef

func (q *SendQueue) GetAndSendListAsRef(parent any, getter func(any) []any, id func(any) any, onChange func(any))

GetAndSendListAsRef is like GetAndSendList but wraps items in ref tracking.

func (*SendQueue) Put

func (q *SendQueue) Put(data RpcObjectData)

Put adds a message to the batch, flushing if the batch is full.

func (*SendQueue) Send

func (q *SendQueue) Send(after, before any, onChange func(any))

Send compares after and before values and emits the appropriate state message.

type Sender

type Sender interface {
	Visit(t java.Tree, p any) java.Tree
}

Sender serializes a tree node into a SendQueue. Implementations are visitor.VisitorI-conformant so they slot into the standard visitor dispatch — mirrors rewrite-java's JavaSender, which extends JavaVisitor<RpcSendQueue>.

type State

type State int

State represents the state of an RPC object data message.

const (
	NoChange State = iota
	Add
	Delete
	Change
	EndOfObject
)

func (State) String

func (s State) String() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL