record.cxx

来自「vovida的软交换」· CXX 代码 · 共 178 行

CXX
178
字号
/* ====================================================================
 * The Vovida Software License, Version 1.0 
 * 
 * Copyright (c) 2000 Vovida Networks, Inc.  All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in
 *    the documentation and/or other materials provided with the
 *    distribution.
 * 
 * 3. The names "VOCAL", "Vovida Open Communication Application Library",
 *    and "Vovida Open Communication Application Library (VOCAL)" must
 *    not be used to endorse or promote products derived from this
 *    software without prior written permission. For written
 *    permission, please contact vocal@vovida.org.
 *
 * 4. Products derived from this software may not be called "VOCAL", nor
 *    may "VOCAL" appear in their name, without prior written
 *    permission of Vovida Networks, Inc.
 * 
 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND
 * NON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL VOVIDA
 * NETWORKS, INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT DAMAGES
 * IN EXCESS OF $1,000, NOR FOR ANY INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
 * DAMAGE.
 * 
 * ====================================================================
 * 
 * This software consists of voluntary contributions made by Vovida
 * Networks, Inc. and many individuals on behalf of Vovida Networks,
 * Inc.  For more information on Vovida Networks, Inc., please see
 * <http://www.vovida.org/>.
 *
 */
 
#include "Record.hxx" // class's header file

#include "AccountRecord.hxx"
#include "AliasRecord.hxx"
#include "UpdateRegInfoRec.hxx"
#include "TestRecord.hxx"
#include "FeatureRecord.hxx"
#include "Plan.hxx"

#include <iostream>
#include <cstdlib>


// class constructor
Record::Record() {
    setRecordType(GENERIC_RECORD);
    setKey("");
}

// class destructor
Record::~Record() {}



void Record::displayRecord(string prefix) {
  cout << prefix << ": Key:" << key << "\n"
       << prefix << ": TimeStamp:" << ctime(&lastAccessed)
       << prefix << ": RecordType:" << stringRecordType(recordType) 
                 << " (" << recordType << ")" << "\n";
}

Record* Record::createNewRecord(RecordType rec) {

    switch (rec) { 
	
	case ACCOUNT_RECORD:
	  return new AccountRecord();
	  break;

        case ALIAS_RECORD:
          return new AliasRecord();
          break;

        case UPDATE_REG_INFO_RECORD:
          return new UpdateRegInfoRec();
	  break;
	  
        case TEST_RECORD:
          return new TestRecord();
	  break;

        case FEATURE_RECORD:
          return new FeatureRecord();
          break;

	case PLAN_RECORD:
	  return new Plan();
	  break;
    
	default:;
    
    }
    
    return NULL;
}

const string Record::TEST_RECORD_STR("TEST_RECORD");
const string Record::GENERIC_RECORD_STR("GENERIC_RECORD");
const string Record::UPDATE_REG_INFO_RECORD_STR("UPDATE_REG_INFO_RECORD");
const string Record::ACCOUNT_RECORD_STR("ACCOUNT_RECORD");
const string Record::ALIAS_RECORD_STR("ALIAS_RECORD");
const string Record::FEATURE_RECORD_STR("FEATURE_RECORD");
const string Record::PLAN_RECORD_STR("PLAN_RECORD");

string Record::stringRecordType(RecordType rType) {

    switch (rType) { 

    case GENERIC_RECORD:
      return GENERIC_RECORD_STR; break;

    case UPDATE_REG_INFO_RECORD: 
      return UPDATE_REG_INFO_RECORD_STR; break;

    case ACCOUNT_RECORD:
      return ACCOUNT_RECORD_STR; break;

    case ALIAS_RECORD:
      return ALIAS_RECORD_STR; break;
	
    case PLAN_RECORD:
      return PLAN_RECORD_STR; break;

    case FEATURE_RECORD:
      return FEATURE_RECORD_STR; break;


    case TEST_RECORD: 
      return TEST_RECORD_STR; break;


    default:;

    }
    return "UNKNOWN RECORD";
}

RecordType Record::convertStrRType(string s) { 

  if (s.compare(ACCOUNT_RECORD_STR) == 0) return ACCOUNT_RECORD;
  if (s.compare(ALIAS_RECORD_STR) == 0) return ALIAS_RECORD;
  if (s.compare(PLAN_RECORD_STR) == 0) return PLAN_RECORD;
  if (s.compare(FEATURE_RECORD_STR) == 0) return FEATURE_RECORD;
  if (s.compare(UPDATE_REG_INFO_RECORD_STR) == 0) 
    return UPDATE_REG_INFO_RECORD;

  if (s.compare(TEST_RECORD_STR) == 0){
      return TEST_RECORD;
  }
  return GENERIC_RECORD;
}

void Record::copyData(Record* rec) { 
  rec->setKey(key);
  rec->setLastAccessed(lastAccessed);  
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?