⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bmssnmpagent.h

📁 利用Windows自带的api采用snmp协议读取网络设备运行状态。
💻 H
字号:
#pragma once
#include "BmsSnmpNode.h"
#include <IceUtil/Mutex.h>
#include <list>
#include <map>
#include <snmp.h>
#include <mgmtapi.h>
class SnmpTableFiled
{
public:
	SnmpTableFiled();
	virtual ~SnmpTableFiled();
	void setOid(std::string Oid);
	void setValues(std::string val);
	std::string& getOid();
	std::string& getValues();
protected:
private:
	std::string _Oid;
	std::string _value;
};
class BmsSnmpAgent
{
public:
	BmsSnmpAgent(void);
	virtual ~BmsSnmpAgent(void);
	typedef ::std::list<BmsSnmpNode> BmsSnmpNodeList;
	typedef ::std::map<::std::string,BmsSnmpNode> BmsSnmpNodeMap;
	typedef std::list<SnmpTableFiled>SnmpTable;
	typedef SnmpTable::iterator SnmpTableItem;
public:
	//************************************
	// Method:    iniAgent
	// FullName:  BmsSnmpAgent::iniAgent
	// Access:    public 
	// Returns:   bool
	// Qualifier:
	// Parameter: const std::string & IpAd ip地址
	// Parameter: const std::string & commStr 默认链接方式 public/private
	//************************************
	bool iniAgent(const std::string IpAd ,const std::string commStr);

	//************************************
	// Method:    connectSnmpServer
	// FullName:  BmsSnmpAgent::connectSnmpServer
	// Access:    public 
	// Returns:   bool
	// Qualifier:链接到snmp服务器
	//************************************
	bool connectSnmpServer();

	//************************************
	// Method:    reConnectSnmpServer
	// FullName:  BmsSnmpAgent::reConnectSnmpServer
	// Access:    public 
	// Returns:   bool
	// Qualifier: 重新连接数据
	//************************************
	bool reConnectSnmpServer();


	//************************************
	// Method:    getLastErMsg
	// FullName:  BmsSnmpAgent::getLastErMsg
	// Access:    public 
	// Returns:   void
	// Qualifier: 获取最后一次错误信息
	// Parameter: ::std::string & Msg
	//************************************
	void getLastErMsg(::std::string &Msg);

	//************************************
	// Method:    disConnectSnmpServer
	// FullName:  BmsSnmpAgent::disConnectSnmpServer
	// Access:    public 
	// Returns:   bool
	// Qualifier: 断开snmp服务器
	//************************************
	bool disConnectSnmpServer();

	//************************************
	// Method:    UpdateNodeMapOidValueByOid
	// FullName:  BmsSnmpAgent::UpdateNodeMapOidValueByOid
	// Access:    public 
	// Returns:   bool
	// Qualifier: 根据传入的node map中node的oid获取oid values
	// Parameter: BmsSnmpNodeMap &
	//************************************
	bool UpdateNodeMapOidValueByOid(BmsSnmpNodeMap&);
public:
	//************************************
	// Method:    walkNode
	// FullName:  BmsSnmpAgent::walkNode
	// Access:    public 
	// Returns:   bool
	// Qualifier: 遍历一个oid节点
	// Parameter: const std::string & Oid
	// Parameter: BmsSnmpNodeList & NodeList
	//************************************
	bool walkNode(const std::string &Oid,BmsSnmpNodeList& NodeList);
	//************************************
	// Method:    walkNode
	// FullName:  BmsSnmpAgent::walkNode
	// Access:    public 
	// Returns:   bool
	// Qualifier: 遍历一个oid节点
	// Parameter: const std::string & Oid
	// Parameter: std::list<std::string> *TableList
	//************************************
	bool walkNode(const std::string &Oid,SnmpTable*TableList);

	//************************************
	// Method:    getNodeValue
	// FullName:  BmsSnmpAgent::getNodeValue
	// Access:    public 
	// Returns:   bool
	// Qualifier: 根据oid 获取相应的值
	// Parameter: const std::string & Oid
	//************************************
	bool getNodeValue(const std::string &Oid,std::string &OidValues);

	bool setNodeValue(const std::string &Oid);

	int GetRequest(AsnObjectIdentifier &asnOid ,std::string &OidValues);

	char * SNMP_AnyToStr(AsnObjectSyntax *sAny);
	void PrintStatusError(int nErrorStatus, char *&szErrorMsg);

	static void EncodeNodeMapToJson( std::string &serStr ,BmsSnmpAgent::BmsSnmpNodeMap& nodeMap);
private:
	::std::string m_ip;
	::std::string m_commStr;
	bool m_isIni;
	bool m_isConn;
	std::string m_lastErMsg;
	::IceUtil::Mutex m_mutex;
	LPSNMP_MGR_SESSION m_lpMgrSession;
};

⌨️ 快捷键说明

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