import {workerData,parentPort} from 'node:worker_threads';
import {ROOT_CONTEXT,propagation} from '@opentelemetry/api';
import {startTelemetry,inSpan,traceLog} from './telemetry.mjs';
const telemetry=startTelemetry('workshop-cpu-worker');
parentPort.postMessage({type:'ready'});
try{
 const result=await inSpan(telemetry.tracer,'report.cpu-worker',{},async span=>{
  const rounds=workerData.rounds;if(!Number.isInteger(rounds)||rounds<1||rounds>10000000)throw Error('Invalid worker rounds');
  let checksum=2166136261;for(let i=0;i<rounds;i++)checksum=Math.imul(checksum^i,16777619)>>>0;
  span.setAttribute('workshop.rounds',rounds);traceLog('worker.completed',{checksum});
  return {checksum,traceId:span.spanContext().traceId};
 },propagation.extract(ROOT_CONTEXT,workerData.carrier));
 const flushed=await telemetry.shutdown();parentPort.postMessage({ok:true,...result,flushed:{service:flushed.service,exported:flushed.exported}});
}catch(error){await telemetry.shutdown();parentPort.postMessage({ok:false,error:error.message});process.exitCode=1;}
