memory

package
v5.0.1 Latest Latest
Warning

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

Go to latest
Published: May 1, 2026 License: MIT Imports: 12 Imported by: 0

Documentation

Overview

internal/storage/memory/export.go

internal/storage/memory/memory.go

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Backend

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

Backend stores mission data in memory and exports to JSON

func New

func New(cfg config.MemoryConfig, logger *slog.Logger) *Backend

New creates a new memory backend

func (*Backend) AddMarker

func (b *Backend) AddMarker(m *core.Marker) (uint, error)

AddMarker registers a new marker. Assigns an auto-increment ID so marker state updates can reference it. Returns the assigned ID.

func (*Backend) AddPlacedObject

func (b *Backend) AddPlacedObject(p *core.PlacedObject) error

AddPlacedObject registers a new placed object (mine, explosive, etc.). The object's ID is their ObjectID (game identifier).

func (*Backend) AddSoldier

func (b *Backend) AddSoldier(s *core.Soldier) error

AddSoldier registers a new soldier. The soldier's ID is their ObjectID (game identifier).

func (*Backend) AddVehicle

func (b *Backend) AddVehicle(v *core.Vehicle) error

AddVehicle registers a new vehicle. The vehicle's ID is their ObjectID (game identifier).

func (*Backend) BuildExport

func (b *Backend) BuildExport() v1.Export

BuildExport creates a v1 export from the current mission data. This is safe for concurrent use.

func (*Backend) Close

func (b *Backend) Close() error

Close cleans up resources

func (*Backend) DeleteMarker

func (b *Backend) DeleteMarker(dm *core.DeleteMarker) error

DeleteMarker sets the end frame for a marker, marking it as deleted at that frame

func (*Backend) DeleteSoldier

func (b *Backend) DeleteSoldier(id uint16, frame core.Frame) error

DeleteSoldier sets the delete frame for a soldier, marking it as excluded at that frame.

func (*Backend) DeleteVehicle

func (b *Backend) DeleteVehicle(id uint16, frame core.Frame) error

DeleteVehicle sets the delete frame for a vehicle, marking it as excluded at that frame.

func (*Backend) EndMission

func (b *Backend) EndMission() (retErr error)

EndMission finalizes and exports the mission data.

Recovers from panics in the builder or encoder and converts them into an error return so the calling save worker can report them via :MISSION:SAVED: instead of crashing the host process.

Regardless of outcome (success, error return, or recovered panic), the backend state is always reset so the next mission starts fresh and poisoned data from a failed export cannot cause a repeat panic on a subsequent call.

func (*Backend) GetExportMetadata

func (b *Backend) GetExportMetadata() core.UploadMetadata

GetExportMetadata returns metadata about the last export. If a mission is active (before EndMission), computes metadata from live data. After EndMission, returns cached metadata from the export.

func (*Backend) GetExportedFilePath

func (b *Backend) GetExportedFilePath() string

GetExportedFilePath returns the path to the last exported file.

func (*Backend) Init

func (b *Backend) Init() error

Init initializes the backend

func (*Backend) RecordAce3DeathEvent

func (b *Backend) RecordAce3DeathEvent(e *core.Ace3DeathEvent) error

RecordAce3DeathEvent records an ACE3 death event

func (*Backend) RecordAce3UnconsciousEvent

func (b *Backend) RecordAce3UnconsciousEvent(e *core.Ace3UnconsciousEvent) error

RecordAce3UnconsciousEvent records an ACE3 unconscious event

func (*Backend) RecordChatEvent

func (b *Backend) RecordChatEvent(e *core.ChatEvent) error

RecordChatEvent records a chat event

func (*Backend) RecordEndMissionEvent

func (b *Backend) RecordEndMissionEvent(e *core.EndMissionEvent) error

RecordEndMissionEvent records an end-of-mission event.

func (*Backend) RecordFiredEvent

func (b *Backend) RecordFiredEvent(e *core.FiredEvent) error

RecordFiredEvent records a fired event. SoldierID must be set to the soldier's ObjectID.

func (*Backend) RecordGeneralEvent

func (b *Backend) RecordGeneralEvent(e *core.GeneralEvent) error

RecordGeneralEvent records a general event

func (*Backend) RecordHitEvent

func (b *Backend) RecordHitEvent(e *core.HitEvent) error

RecordHitEvent records a hit event

func (*Backend) RecordKillEvent

func (b *Backend) RecordKillEvent(e *core.KillEvent) error

RecordKillEvent records a kill event

func (*Backend) RecordMarkerState

func (b *Backend) RecordMarkerState(s *core.MarkerState) error

RecordMarkerState records a marker state update

func (*Backend) RecordPlacedObjectEvent

func (b *Backend) RecordPlacedObjectEvent(e *core.PlacedObjectEvent) error

RecordPlacedObjectEvent records a lifecycle event for a placed object. PlacedID must be set to the placed object's ObjectID.

func (*Backend) RecordProjectileEvent

func (b *Backend) RecordProjectileEvent(e *core.ProjectileEvent) error

RecordProjectileEvent records a raw projectile event

func (*Backend) RecordRadioEvent

func (b *Backend) RecordRadioEvent(e *core.RadioEvent) error

RecordRadioEvent records a radio event

func (*Backend) RecordSectorEvent

func (b *Backend) RecordSectorEvent(e *core.SectorEvent) error

RecordSectorEvent records a sector state change event.

func (*Backend) RecordSoldierState

func (b *Backend) RecordSoldierState(s *core.SoldierState) error

RecordSoldierState records a soldier state update. SoldierID must be set to the soldier's ObjectID.

func (*Backend) RecordTelemetryEvent

func (b *Backend) RecordTelemetryEvent(e *core.TelemetryEvent) error

RecordTelemetryEvent records a telemetry event.

func (*Backend) RecordTimeState

func (b *Backend) RecordTimeState(t *core.TimeState) error

RecordTimeState records a time synchronization state

func (*Backend) RecordVehicleState

func (b *Backend) RecordVehicleState(v *core.VehicleState) error

RecordVehicleState records a vehicle state update. VehicleID must be set to the vehicle's ObjectID.

func (*Backend) SetFocusEnd

func (b *Backend) SetFocusEnd(frame core.Frame) error

SetFocusEnd closes the currently open focus range. Returns an error if no range is open or if the end frame is invalid.

func (*Backend) SetFocusStart

func (b *Backend) SetFocusStart(frame core.Frame) error

SetFocusStart opens a new focus range. Returns an error if a range is already open or if the start frame is invalid.

func (*Backend) StartMission

func (b *Backend) StartMission(mission *core.Mission, world *core.World) error

StartMission begins recording a new mission

type MarkerRecord

type MarkerRecord struct {
	Marker core.Marker
	States []core.MarkerState
}

MarkerRecord groups a marker with all its state changes

type PlacedObjectRecord

type PlacedObjectRecord struct {
	PlacedObject core.PlacedObject
	Events       []core.PlacedObjectEvent
}

PlacedObjectRecord groups a placed object with all its lifecycle events

type SoldierRecord

type SoldierRecord struct {
	Soldier     core.Soldier
	States      []core.SoldierState
	FiredEvents []core.FiredEvent
}

SoldierRecord groups a soldier with all its time-series data

type VehicleRecord

type VehicleRecord struct {
	Vehicle core.Vehicle
	States  []core.VehicleState
}

VehicleRecord groups a vehicle with all its time-series data

Directories

Path Synopsis
export
v1
Package v1 contains the v1 export format for OCAP2 mission data.
Package v1 contains the v1 export format for OCAP2 mission data.

Jump to

Keyboard shortcuts

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