//////////////////////////////////////////////////////////////////////////////
//
//  Copyright 2025 Autodesk, Inc.  All rights reserved.
//
//  Use of this software is subject to the terms of the Autodesk license 
//  agreement provided at the time of installation or download, or which 
//  otherwise accompanies this software in either electronic or hard copy form.   
//
//////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "acm.h"
#include "acmdef.h"
#include "bommgr.h"
#include "bomReactor.h"
#include "watcher.h"

void initWatcher();
void releaseWatcher();
/////////////////////////////////////////////////////////////////////////////////
// Commands
/////////////////////////////////////////////////////////////////////////////////
AmdtWatcher *pReactor = 0;
// throughout the comments in this file, 'object' means either part reference (when
// a method gets the object through selectRefArray() call, or a record (BomRow) 
// in BOM table (when given by a number and a BOM table).

// prints out data for selected object
//
void bomWatch()
{
  if( !pReactor ) {
    initWatcher();
  }
  else {
    releaseWatcher();
  }
}

void initWatcher()
{
  if( pReactor ) return;
  pReactor = new AmdtWatcher();
  acmBomMgr->attachBomReactor(pReactor);
  acutPrintf(_T("\nBOM Watcher has been started."));
}

void releaseWatcher()
{
  if( !pReactor ) return;
  acmBomMgr->removeBomReactor(pReactor);
  delete pReactor;
  pReactor = NULL;
  acutPrintf(_T("\nBOM Watcher has been stopped."));
}




