当前位置: 首页>>代码示例>>Java>>正文


Java SnmpPduPacket.pduGetBulkRequestPdu方法代码示例

本文整理汇总了Java中com.sun.jmx.snmp.SnmpPduPacket.pduGetBulkRequestPdu方法的典型用法代码示例。如果您正苦于以下问题:Java SnmpPduPacket.pduGetBulkRequestPdu方法的具体用法?Java SnmpPduPacket.pduGetBulkRequestPdu怎么用?Java SnmpPduPacket.pduGetBulkRequestPdu使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在com.sun.jmx.snmp.SnmpPduPacket的用法示例。


在下文中一共展示了SnmpPduPacket.pduGetBulkRequestPdu方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: makeResponsePdu

import com.sun.jmx.snmp.SnmpPduPacket; //导入方法依赖的package包/类
/**
 * Here we make a response pdu from a request pdu.
 * We return null if there is no pdu to reply.
 */
private SnmpPduPacket makeResponsePdu(SnmpPduPacket reqPdu,
                                      Object userData) {

    SnmpAdaptorServer snmpServer = (SnmpAdaptorServer)adaptorServer ;
    SnmpPduPacket respPdu = null ;

    snmpServer.updateRequestCounters(reqPdu.type) ;
    if (reqPdu.varBindList != null)
        snmpServer.updateVarCounters(reqPdu.type,
                                     reqPdu.varBindList.length) ;

    if (checkPduType(reqPdu)) {
        respPdu = checkAcl(reqPdu) ;
        if (respPdu == null) { // reqPdu is accepted by ACLs
            if (mibs.size() < 1) {
                if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINER)) {
                    SNMP_ADAPTOR_LOGGER.logp(Level.FINER, dbgTag,
                       "makeResponsePdu", "Request " + reqPdu.requestId +
                       " received but no MIB registered.");
                }
                return makeNoMibErrorPdu((SnmpPduRequest)reqPdu, userData);
            }
            switch(reqPdu.type) {
            case SnmpPduPacket.pduGetRequestPdu:
            case SnmpPduPacket.pduGetNextRequestPdu:
            case SnmpPduPacket.pduSetRequestPdu:
                respPdu = makeGetSetResponsePdu((SnmpPduRequest)reqPdu,
                                                userData) ;
                break ;

            case SnmpPduPacket.pduGetBulkRequestPdu:
                respPdu = makeGetBulkResponsePdu((SnmpPduBulk)reqPdu,
                                                 userData) ;
                break ;
            }
        }
        else { // reqPdu is rejected by ACLs
            // respPdu contains the error response to be sent.
            // We send this response only if authResEnabled is true.
            if (!snmpServer.getAuthRespEnabled()) { // No response should be sent
                respPdu = null ;
            }
            if (snmpServer.getAuthTrapEnabled()) { // A trap must be sent
                try {
                    snmpServer.snmpV1Trap(SnmpPduTrap.
                                          trapAuthenticationFailure, 0,
                                          new SnmpVarBindList()) ;
                }
                catch(Exception x) {
                    if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) {
                        SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, dbgTag,
                           "makeResponsePdu", "Failure when sending authentication trap", x);
                    }
                }
            }
        }
    }
    return respPdu ;
}
 
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:64,代码来源:SnmpRequestHandler.java

示例2: reduceResponsePdu

import com.sun.jmx.snmp.SnmpPduPacket; //导入方法依赖的package包/类
private SnmpPduPacket reduceResponsePdu(SnmpPduPacket req,
                                        SnmpPduPacket resp,
                                        int acceptedVbCount)
    throws SnmpTooBigException {

    // Reduction can be attempted only on bulk response
    //
    if (req.type != SnmpPduPacket.pduGetBulkRequestPdu) {
        if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) {
            SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, dbgTag,
               "reduceResponsePdu", "cannot remove anything");
        }
        throw new SnmpTooBigException(acceptedVbCount) ;
    }

    // We're going to reduce the varbind list.
    // First determine which items should be removed.
    // Next duplicate and replace the existing list by the reduced one.
    //
    // acceptedVbCount is the number of varbind which have been
    // successfully encoded before reaching bufferSize:
    //   * when it is >= 2, we split the varbindlist at this
    //     position (-1 to be safe),
    //   * when it is 1, we only put one (big?) item in the varbindlist
    //   * when it is 0 (in fact, acceptedVbCount is not available),
    //     we split the varbindlist by 2.
    //
    int vbCount;
    if (acceptedVbCount >= 3)
        vbCount = Math.min(acceptedVbCount - 1, resp.varBindList.length) ;
    else if (acceptedVbCount == 1)
        vbCount = 1 ;
    else // acceptedCount == 0 ie it is unknown
        vbCount = resp.varBindList.length / 2 ;

    if (vbCount < 1) {
        if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) {
            SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, dbgTag,
               "reduceResponsePdu", "cannot remove anything");
        }
        throw new SnmpTooBigException(acceptedVbCount) ;
    }
    else {
        SnmpVarBind[] newVbList = new SnmpVarBind[vbCount] ;
        for (int i = 0 ; i < vbCount ; i++) {
            newVbList[i] = resp.varBindList[i] ;
        }
        if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) {
            SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, dbgTag,
               "reduceResponsePdu", (resp.varBindList.length - newVbList.length) +
                " items have been removed");
        }
        resp.varBindList = newVbList ;
    }

    return resp ;
}
 
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:58,代码来源:SnmpRequestHandler.java


注:本文中的com.sun.jmx.snmp.SnmpPduPacket.pduGetBulkRequestPdu方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。