root/src/apps/softwareupdater/WorkingLooper.cpp
/*
 * Copyright 2017, Haiku, Inc. All Rights Reserved.
 * Distributed under the terms of the MIT License.
 *
 * Authors:
 *              Brian Hill <supernova@tycho.email>
 */


#include "WorkingLooper.h"


WorkingLooper::WorkingLooper(update_type action, bool verbose)
        :
        BLooper("WorkingLooper"),
        fUpdateAction(NULL),
        fCheckAction(NULL),
        fActionRequested(action),
        fVerbose(verbose)
{
        Run();
        PostMessage(kMsgStart);
}


WorkingLooper::~WorkingLooper()
{
        delete fUpdateAction;
        delete fCheckAction;
}


void
WorkingLooper::MessageReceived(BMessage* message)
{
        switch (message->what) {
                case kMsgStart:
                {
                        if (fActionRequested == UPDATE_CHECK_ONLY) {
                                fCheckAction = new CheckAction(fVerbose);
                                fCheckAction->Perform();
                        } else {
                                fUpdateAction = new UpdateAction(fVerbose);
                                fUpdateAction->Perform(fActionRequested);
                        }
                        break;
                }
                
                default:
                        BLooper::MessageReceived(message);
        }
}