//
// Generated file, do not edit! Created by nedtool 5.6 from discoveryMessage.msg.
//

#ifndef __DISCOVERYMESSAGE_M_H
#define __DISCOVERYMESSAGE_M_H

#if defined(__clang__)
#  pragma clang diagnostic ignored "-Wreserved-id-macro"
#endif
#include <omnetpp.h>

// nedtool version check
#define MSGC_VERSION 0x0506
#if (MSGC_VERSION!=OMNETPP_VERSION)
#    error Version mismatch! Probably this file was generated by an earlier version of nedtool: 'make clean' should help.
#endif



// cplusplus {{
    #include <map>
    #include <vector>
    //using namespace omnetpp;
    typedef std::map<int,int> DBresult;
    
    // this has a problem
    
    typedef std::vector<omnetpp::cGate *> GateVector;
// }}

/**
 * Class generated from <tt>discoveryMessage.msg:16</tt> by nedtool.
 * <pre>
 * message discoveryMessage
 * {
 *     // ID assigned to QUERY
 *     int queryID;
 *     // this is the identifer of the very first AE generating Discovery QUERY
 *     int URI_init;
 *     // this is identifer of in route CSE, sending the message to another CSE
 *     int URI_route;
 *     // this is type of Resource CSE is looking for. Values can be "waterValve","thermometer","airStation","ATM","smartLock"
 *     string feature_type;
 * 
 * 	//this can be Registration, update, cancellation, Query, Response, Notify      
 *     int op_code;
 *     // Indicates result of query
 *     int returnCode;
 *     // Used with depth of Notify
 *     int delta;
 *   	// this value  lists the number of remaining hopes before end of forwarding QUERY 
 *     int hopCount;
 *     // this will be UP (customer to provider) or DOWN (Provider to Customer)
 *     // or SIDE (Sibling to Sibling and Peer to Peer). direction where the message has been sent
 *     int direction;
 *     // this is the index of the gate from which the request has been sent originator gate.
 *     int initialGateIndex;
 *     //This is the result obtained when looking in the local database
 *     DBresult dbResult;
 *     // this is the list that contains the discovery path (list of CSE that forward the query) 
 *     GateVector gateVector;
 * 
 * 
 * 
 * }
 * </pre>
 */
class discoveryMessage : public ::omnetpp::cMessage
{
  protected:
    int queryID;
    int URI_init;
    int URI_route;
    ::omnetpp::opp_string feature_type;
    int op_code;
    int returnCode;
    int delta;
    int hopCount;
    int direction;
    int initialGateIndex;
    DBresult dbResult;
    GateVector gateVector;

  private:
    void copy(const discoveryMessage& other);

  protected:
    // protected and unimplemented operator==(), to prevent accidental usage
    bool operator==(const discoveryMessage&);

  public:
    discoveryMessage(const char *name=nullptr, short kind=0);
    discoveryMessage(const discoveryMessage& other);
    virtual ~discoveryMessage();
    discoveryMessage& operator=(const discoveryMessage& other);
    virtual discoveryMessage *dup() const override {return new discoveryMessage(*this);}
    virtual void parsimPack(omnetpp::cCommBuffer *b) const override;
    virtual void parsimUnpack(omnetpp::cCommBuffer *b) override;

    // field getter/setter methods
    virtual int getQueryID() const;
    virtual void setQueryID(int queryID);
    virtual int getURI_init() const;
    virtual void setURI_init(int URI_init);
    virtual int getURI_route() const;
    virtual void setURI_route(int URI_route);
    virtual const char * getFeature_type() const;
    virtual void setFeature_type(const char * feature_type);
    virtual int getOp_code() const;
    virtual void setOp_code(int op_code);
    virtual int getReturnCode() const;
    virtual void setReturnCode(int returnCode);
    virtual int getDelta() const;
    virtual void setDelta(int delta);
    virtual int getHopCount() const;
    virtual void setHopCount(int hopCount);
    virtual int getDirection() const;
    virtual void setDirection(int direction);
    virtual int getInitialGateIndex() const;
    virtual void setInitialGateIndex(int initialGateIndex);
    virtual DBresult& getDbResult();
    virtual const DBresult& getDbResult() const {return const_cast<discoveryMessage*>(this)->getDbResult();}
    virtual void setDbResult(const DBresult& dbResult);
    virtual GateVector& getGateVector();
    virtual const GateVector& getGateVector() const {return const_cast<discoveryMessage*>(this)->getGateVector();}
    virtual void setGateVector(const GateVector& gateVector);
};

inline void doParsimPacking(omnetpp::cCommBuffer *b, const discoveryMessage& obj) {obj.parsimPack(b);}
inline void doParsimUnpacking(omnetpp::cCommBuffer *b, discoveryMessage& obj) {obj.parsimUnpack(b);}


#endif // ifndef __DISCOVERYMESSAGE_M_H

