objectclassattribute.hh

来自「certi-SHM-3.0.tar 不错的开源的分布式方针软件 大家多多支持 他」· HH 代码 · 共 148 行

HH
148
字号
// -*- mode:C++ ; tab-width:4 ; c-basic-offset:4 ; indent-tabs-mode:nil -*-// ----------------------------------------------------------------------------// CERTI - HLA RunTime Infrastructure// Copyright (C) 2002, 2003  ONERA//// This file is part of CERTI-libCERTI//// CERTI-libCERTI is free software ; you can redistribute it and/or// modify it under the terms of the GNU Lesser General Public License// as published by the Free Software Foundation ; either version 2 of// the License, or (at your option) any later version.//// CERTI-libCERTI is distributed in the hope that it will be useful, but// WITHOUT ANY WARRANTY ; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU// Lesser General Public License for more details.//// You should have received a copy of the GNU Lesser General Public// License along with this program ; if not, write to the Free Software// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307// USA//// $Id: ObjectClassAttribute.hh,v 3.6 2003/02/21 17:36:39 breholee Exp $// ----------------------------------------------------------------------------#ifndef _CERTI_OBJECT_CLASS_ATTRIBUTE_HH#define _CERTI_OBJECT_CLASS_ATTRIBUTE_HH#include <config.h>#include <iostream>using std::cout ;using std::endl ;#include <list>using std::list ;#include "RTItypes.hh"#include "SecurityLevel.hh"#include "Subscriber.hh"#include "Publisher.hh"#include "ObjectClassBroadcastList.hh"#include "PrettyDebug.hh"namespace certi {/*! This class descrives an object class attribute (handle, level id, ordering,  transportation mode and name). This class also keeps track of published and  subscribed federates.*/class ObjectClassAttribute {public:    // -----------------------    // -- Public Attributes --    // -----------------------    SecurityLevelID LevelID ;    OrderType Order ;    TransportType Transport ;    // This Object help to find a TCPLink from a Federate Handle.    SecurityServer *server ;    // --------------------    // -- Public Methods --    // --------------------    ObjectClassAttribute(void);    ObjectClassAttribute(ObjectClassAttribute *source);    ~ObjectClassAttribute(void);    void display(void) const ;    /*! Name attribute access(GetName reference must be considered READ-ONLY).      NewName lenght must be lower or equal to MAX_USER_TAG_LENGTH.    */    inline char *getName(void) const {return Name ; };    void setName(char *NewName)        throw (ValueLengthExceeded, RTIinternalError);    void setHandle(AttributeHandle h);    AttributeHandle getHandle(void) const ;    // ----------------------    // -- Security Methods --    // ----------------------    void checkFederateAccess(FederateHandle the_federate, const char *reason)        throw (SecurityError);    // ---------------------------    // -- Publish and Subscribe --    // ---------------------------    Boolean isPublishing(FederateHandle the_handle) const ;    Boolean hasSubscribed(FederateHandle the_handle) const ;    void publish(FederateHandle theFederate, bool PubOrUnpub)        throw (RTIinternalError, SecurityError);    void subscribe(FederateHandle theFederate,                   bool SubOrUnsub)        throw (RTIinternalError,               SecurityError);    // -----------------------------    // -- Update Attribute Values --    // -----------------------------    void updateBroadcastList(ObjectClassBroadcastList *ocb_list);private:    // ------------------    // -- Private Part --    // ------------------    AttributeHandle handle ; //!< The attribute handle.    AttributeName Name ; //!< The attribute name, must be locally allocated.    list<Subscriber *> subscribers ; //!< The subscriber's list.    list<Publisher *> publishers ; //!< The publisher's list.    // The four next methods do the memory management stuff to    // add and delete publishers and subscribers.    void addPublisher(FederateHandle theFederate)        throw (RTIinternalError);    void addSubscriber(FederateHandle theFederate)        throw (RTIinternalError);    void deletePublisher(int PublisherRank);    void deleteSubscriber(int SubscriberRank);    // Both following methods return the Rank of the Federate in the list,    // or ZERO if not found.    int getPublisherRank(FederateHandle theFederate) const ;    int getSubscriberRank(FederateHandle theFederate) const ;};}#endif // _CERTI_OBJECT_CLASS_ATTRIBUTE_HH// $Id: ObjectClassAttribute.hh,v 3.6 2003/02/21 17:36:39 breholee Exp $

⌨️ 快捷键说明

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