rpc

package
v0.0.2 Latest Latest
Warning

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

Go to latest
Published: May 23, 2026 License: Apache-2.0 Imports: 7 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ContainerStatement  = "statement"
	ContainerExpression = "expression"
	ContainerImport     = "import"
)

receiveContainer deserializes a Container. ContainerType hints for empty container creation

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 tree.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 tree.Tree, p any) tree.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 *tree.Channel, p any) tree.J

func (*GoReceiver) VisitCommClause

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

func (*GoReceiver) VisitCompilationUnit

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

func (*GoReceiver) VisitComposite

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

func (*GoReceiver) VisitDefer

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

func (*GoReceiver) VisitFuncType

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

func (*GoReceiver) VisitGoStmt

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

func (*GoReceiver) VisitGoto

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

func (*GoReceiver) VisitIndexList

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

func (*GoReceiver) VisitInterfaceType

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

func (*GoReceiver) VisitKeyValue

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

func (*GoReceiver) VisitMapType

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

func (*GoReceiver) VisitMultiAssignment

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

func (*GoReceiver) VisitPointerType

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

func (*GoReceiver) VisitSend

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

func (*GoReceiver) VisitSlice

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

func (*GoReceiver) VisitStatementExpression

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

func (*GoReceiver) VisitStructType

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

func (*GoReceiver) VisitTypeDecl

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

func (*GoReceiver) VisitTypeList

func (r *GoReceiver) VisitTypeList(tl *tree.TypeList, p any) tree.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 tree.Tree, p any) tree.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 *tree.Channel, p any) tree.J

func (*GoSender) VisitCommClause

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

func (*GoSender) VisitCompilationUnit

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

func (*GoSender) VisitComposite

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

func (*GoSender) VisitDefer

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

func (*GoSender) VisitFuncType

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

func (*GoSender) VisitGoStmt

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

func (*GoSender) VisitGoto

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

func (*GoSender) VisitIndexList

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

func (*GoSender) VisitInterfaceType

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

func (*GoSender) VisitKeyValue

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

func (*GoSender) VisitMapType

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

func (*GoSender) VisitMultiAssignment

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

func (*GoSender) VisitPointerType

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

func (*GoSender) VisitSend

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

func (*GoSender) VisitSlice

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

func (*GoSender) VisitStatementExpression

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

func (*GoSender) VisitStructType

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

func (*GoSender) VisitTypeDecl

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

func (*GoSender) VisitTypeList

func (s *GoSender) VisitTypeList(tl *tree.TypeList, p any) tree.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 tree.Tree, p any) tree.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 *tree.Annotation, p any) tree.J

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

func (*JavaReceiver) VisitArrayAccess

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

func (*JavaReceiver) VisitArrayDimension

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

func (*JavaReceiver) VisitArrayType

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

func (*JavaReceiver) VisitAssignment

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

func (*JavaReceiver) VisitAssignmentOperation

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

func (*JavaReceiver) VisitBinary

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

func (*JavaReceiver) VisitBlock

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

func (*JavaReceiver) VisitBreak

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

func (*JavaReceiver) VisitCase

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

func (*JavaReceiver) VisitContinue

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

func (*JavaReceiver) VisitControlParentheses

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

func (*JavaReceiver) VisitElse

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

func (*JavaReceiver) VisitFieldAccess

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

func (*JavaReceiver) VisitForControl

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

func (*JavaReceiver) VisitForEachControl

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

func (*JavaReceiver) VisitForEachLoop

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

func (*JavaReceiver) VisitForLoop

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

func (*JavaReceiver) VisitIdentifier

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

func (*JavaReceiver) VisitIf

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

func (*JavaReceiver) VisitImport

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

func (*JavaReceiver) VisitLabel

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

func (*JavaReceiver) VisitLiteral

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

func (*JavaReceiver) VisitMethodDeclaration

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

func (*JavaReceiver) VisitMethodInvocation

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

func (*JavaReceiver) VisitParameterizedType

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

func (*JavaReceiver) VisitParentheses

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

func (*JavaReceiver) VisitReturn

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

func (*JavaReceiver) VisitSwitch

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

func (*JavaReceiver) VisitTypeCast

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

func (*JavaReceiver) VisitUnary

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

func (*JavaReceiver) VisitVariableDeclarations

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

func (*JavaReceiver) VisitVariableDeclarator

func (r *JavaReceiver) VisitVariableDeclarator(vd *tree.VariableDeclarator, p any) tree.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 tree.Tree, p any) tree.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 *tree.Annotation, p any) tree.J

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

func (*JavaSender) VisitArrayAccess

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

func (*JavaSender) VisitArrayDimension

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

func (*JavaSender) VisitArrayType

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

func (*JavaSender) VisitAssignment

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

func (*JavaSender) VisitAssignmentOperation

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

func (*JavaSender) VisitBinary

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

func (*JavaSender) VisitBlock

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

func (*JavaSender) VisitBreak

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

func (*JavaSender) VisitCase

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

func (*JavaSender) VisitContinue

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

func (*JavaSender) VisitControlParentheses

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

func (*JavaSender) VisitElse

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

func (*JavaSender) VisitFieldAccess

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

func (*JavaSender) VisitForControl

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

func (*JavaSender) VisitForEachControl

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

func (*JavaSender) VisitForEachLoop

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

func (*JavaSender) VisitForLoop

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

func (*JavaSender) VisitIdentifier

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

func (*JavaSender) VisitIf

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

func (*JavaSender) VisitImport

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

func (*JavaSender) VisitLabel

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

func (*JavaSender) VisitLiteral

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

func (*JavaSender) VisitMethodDeclaration

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

func (*JavaSender) VisitMethodInvocation

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

func (*JavaSender) VisitParameterizedType

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

func (*JavaSender) VisitParentheses

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

func (*JavaSender) VisitReturn

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

func (*JavaSender) VisitSwitch

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

func (*JavaSender) VisitTypeCast

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

func (*JavaSender) VisitUnary

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

func (*JavaSender) VisitVariableDeclarations

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

func (*JavaSender) VisitVariableDeclarator

func (s *JavaSender) VisitVariableDeclarator(vd *tree.VariableDeclarator, p any) tree.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 *tree.JavaTypeAnnotation, p any) tree.JavaType

VisitAnnotation mirrors JavaTypeReceiver.visitAnnotation

func (*JavaTypeReceiver) VisitArray

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

VisitArray mirrors JavaTypeReceiver.visitArray

func (*JavaTypeReceiver) VisitClass

func (r *JavaTypeReceiver) VisitClass(c *tree.JavaTypeClass, p any) tree.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 *tree.JavaTypeGenericTypeVariable, p any) tree.JavaType

VisitGenericTypeVariable mirrors JavaTypeReceiver.visitGenericTypeVariable

func (*JavaTypeReceiver) VisitIntersection

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

VisitIntersection mirrors JavaTypeReceiver.visitIntersection

func (*JavaTypeReceiver) VisitMethod

func (r *JavaTypeReceiver) VisitMethod(m *tree.JavaTypeMethod, p any) tree.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 *tree.JavaTypeMultiCatch, p any) tree.JavaType

VisitMultiCatch mirrors JavaTypeReceiver.visitMultiCatch

func (*JavaTypeReceiver) VisitParameterized

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

VisitParameterized mirrors JavaTypeReceiver.visitParameterized

func (*JavaTypeReceiver) VisitPrimitive

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

VisitPrimitive mirrors JavaTypeReceiver.visitPrimitive

func (*JavaTypeReceiver) VisitVariable

func (r *JavaTypeReceiver) VisitVariable(v *tree.JavaTypeVariable, p any) tree.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 *tree.JavaTypeAnnotation, p any) tree.JavaType

VisitAnnotation matches JavaTypeSender.visitAnnotation

func (*JavaTypeSender) VisitArray

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

VisitArray matches JavaTypeSender.visitArray

func (*JavaTypeSender) VisitClass

func (s *JavaTypeSender) VisitClass(c *tree.JavaTypeClass, p any) tree.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 *tree.JavaTypeGenericTypeVariable, p any) tree.JavaType

VisitGenericTypeVariable matches JavaTypeSender.visitGenericTypeVariable

func (*JavaTypeSender) VisitIntersection

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

VisitIntersection matches JavaTypeSender.visitIntersection

func (*JavaTypeSender) VisitMethod

func (s *JavaTypeSender) VisitMethod(m *tree.JavaTypeMethod, p any) tree.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 *tree.JavaTypeMultiCatch, p any) tree.JavaType

VisitMultiCatch matches JavaTypeSender.visitMultiCatch

func (*JavaTypeSender) VisitParameterized

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

VisitParameterized matches JavaTypeSender.visitParameterized

func (*JavaTypeSender) VisitPrimitive

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

VisitPrimitive matches JavaTypeSender.visitPrimitive

func (*JavaTypeSender) VisitVariable

func (s *JavaTypeSender) VisitVariable(v *tree.JavaTypeVariable, p any) tree.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 tree.Tree, p any) tree.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 tree.Tree, p any) tree.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