[BACK]Return to MachinesAssocWithFailoverPolicy.c++ CVS log [TXT][DIR] Up to [Development] / failsafe / FailSafe-mgr / association / machinesAssocWithFailoverPolicy

File: [Development] / failsafe / FailSafe-mgr / association / machinesAssocWithFailoverPolicy / MachinesAssocWithFailoverPolicy.c++ (download)

Revision 1.3, Mon Jul 24 22:36:22 2000 UTC (17 years, 3 months ago) by rusty
Branch: MAIN
CVS Tags: HEAD
Changes since 1.2: +28 -21 lines

Added GPL/LGPL copyright headers & documentation for open source release, and removed CXFS stuff

//
// MachinesAssocWithFailoverPolicy.c++
//
//	Association between Resource Groups and Failover Policies.
//
//
//  Copyright (c) 1998, 2000 Silicon Graphics, Inc.  All Rights Reserved.
//  
//  This program is free software; you can redistribute it and/or modify
//  it under the terms of version 2.1 of the GNU Lesser General Public
//  License as published by the Free Software Foundation.
//  
//  This program is distributed in the hope that it would be useful, but
//  WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
//  
//  Further, this software is distributed without any warranty that it is
//  free of the rightful claim of any third person regarding infringement
//  or the like.  Any license provided herein, whether implied or
//  otherwise, applies only to this software file.  Patent licenses, if
//  any, provided herein do not apply to combinations of this program
//  with other software, or any other product whatsoever.
//  
//  You should have received a copy of the GNU Lesser General Public
//  License along with this program; if not, write the Free Software
//  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
//  USA.
//  
//  Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
//  Mountain View, CA 94043, or http://www.sgi.com/
//  
//  For further information regarding this notice, see:
//  http://oss.sgi.com/projects/GenInfo/NoticeExplan/
//

#ident "$Revision: 1.3 $"

#include <fsmgr/MachinesAssocWithFailoverPolicy.h>
#include <sysadm/Log.h>
#include <sysadm/format.h>
#include <ci_clikeys.h>
#include <string.h>

namespace fsmgr {

SaASSOC_REF_DEF(MachinesAssocWithFailoverPolicy);

using namespace sysadm;

//
// Constructor
//
MachinesAssocWithFailoverPolicy::
    MachinesAssocWithFailoverPolicy(Category& parentCategory,
				    const String& parentSelector,
				    Category& childCategory) :
    ComputedAssoc(parentCategory, parentSelector, childCategory) {
}

//
//  void MachinesAssocWithFailoverPolicy::
//  parentChanged(const Item& oldItem, const Item& newItem)
//
//  Description:
//      Called by ParentCategoryListener when the parent item
//	changes. Turn off behavior of ComputedAssoc.
//
//  Parameters:
//      oldItem The old item.
//      newItem The new item.
//
void MachinesAssocWithFailoverPolicy::
parentChanged(const Item& oldItem, const Item& newItem) {
    Association::parentChanged(oldItem, newItem);
}

//
//  bool MachinesAssocWithFailoverPolicy::isChild(const Item&
//                                                potentialChildItem)
//
//  Description:
//      Check if an item is a child of the parent item.
//
//  Parameters:
//      potentialChildItem An item of the child category.
//
//  Returns:
//	true if the item is a child of the parent item. false otherwise.
//
bool MachinesAssocWithFailoverPolicy::
isChild(const Item& potentialChildItem) {
    const Item* parentItem = getParent();

    String failoverAFD(CICLI_FAILOVER_AFD_);

    Attribute machine = potentialChildItem.getAttr(CICLI_MACHINE);
    Attribute count = parentItem->getAttr(CICLI_NUM_IN_FAILOVER_AFD);
    if (count != Attribute::NUL) {
	int len = failoverAFD.getLength() + 3;
	char attrName[len];

	for (int ii = 0; ii < count.longValue(); ii++) {
	    SaStringFormat(attrName, len, "%s%d", CICLI_FAILOVER_AFD_, ii);

	    Attribute afdMember = parentItem->getAttr(attrName);

	    if (strcmp(machine.stringValue(),afdMember.stringValue()) == 0)
		return true;
	}
    }
    return false;

}

} // namespace fsmgr