# Example code

Source: [https://docs.qualcomm.com/doc/80-PK177-134/topic/example_code.html](https://docs.qualcomm.com/doc/80-PK177-134/topic/example_code.html)

## Java

**Required imports**

    import com.qualcomm.qti.qesdk.Modem.IlinkLatencyCBs;
            import com.qualcomm.qti.qesdk.Modem.LinkLatencyEnums.level;
            import com.qualcomm.qti.qesdk.Modem.LinkLatencyEnums.slotId;
            import com.qualcomm.qti.qesdk.Modem.LinkLatencyManager;
            import com.qualcomm.qti.qesdk.QesdkStatusException;Copy to clipboard

**Declare required objects**

    private Iqesdk mQesdkManager;
            private PP_eDGNSSManager mPpeEdgnssManager; 
            private PP_RTKManager mPpeRtkManager;Copy to clipboard

**Create the QESDK manager instance**

    mQesdkManager = Iqesdk.createInstance(this);Copy to clipboard

**Create data path priority manager instance**

    datapathPriorityManager = new DataPathPriorityManager(qesdkManager)
    int status = datapathPriorityManager.init([String license], (opcodes, subsystem) -> { 
    //  Callback handle
    });Copy to clipboard

**Setup callbacks**

    // For Registering flow
            datapathPriorityManager.registerFlowStatusUpdates(new IdataPathPriorityCBs.IflowStatus() {
            @Override
            public void onValues(long l, DataPathPriorityEnums.flowStatusEnum flowStatusEnum, String s) {
            // Handle callback
            }
            });Copy to clipboard

**Add a flow**

    datapathPriorityManager.addFlow(directionEnum, srcIp, srcPort, dstIp, dstPort, protocolEnum, apptypeEnum, inactivityTimer, dscp, new IdataPathPriorityCBs.IflowStatus() {
            @Override 
            public void onValues(long l, DataPathPriorityEnums.flowStatusEnum flowStatusEnum, String s) {
            // Handle callback
            }
            });Copy to clipboard

**Get a flow from the stack**

    datapathPriorityManager.getFlows(new IdataPathPriorityCBs.IflowStatus() { @Override
            public void onValues(long l, DataPathPriorityEnums.flowStatusEnum flowStatusEnum, String s) {
            // Handle callback
            }
            });Copy to clipboard

**Delete a single flow**

    datapathPriorityManager.deleteFlow(FilterID) Copy to clipboard

**Delete all flows**

    datapathPriorityManager.deleteAllFlows();Copy to clipboard

## Native

**Required includes**

    #include “qesdk_ndk.h”     Copy to clipboard

**Initialize**

    DataPathPriorityManager * dppManager = new LinkLatencyManager(); DataPathPriorityManager ();
    int ret = dppManager->init(licenseStr, license_length, (uint32_t opcodes, uint32_t *subsystems) {
    // Handle QESDK event
    });Copy to clipboard

**Setup callbacks**

    void flowStatusCallback(uint32_t id, dpp_flowStatusEnum status, std::string statusString) {
            // Handle DPP flow Status callback
            }Copy to clipboard

**Register callbacks**

    int8_t ret = -1;
            qesdk_transaction_status qesdk_ndk_response = dppManager->registerFlowStatusUpdates(flowStatusCallback, ret); 
            if(qesdk_ndk_response.is_ok()){
            // Use the ret value
            if(ret != SUCCESS)
            } else {
            // Can get error code by get_error_code() 
            }Copy to clipboard

**Add a flow**

    qesdk_ndk_response = dppManager->addFlow(directionEnum, reinterpret_cast<const char *>(src_ip), src_port,reinterpret_cast<const char *>(dst_ip), dst_port, protocolEnum, apptypeEnum, inactivity_timer, dscp, flowStatusCallback, ret); 
            if(qesdk_ndk_response.is_ok()){
            // Use the ret value
            } else { 
            // Can get error code by get_error_code() 
            }Copy to clipboard

**Get a flow from the stack**

    qesdk_ndk_response = dppManager->getFlows(flowStatusCallback, ret); 
            if(qesdk_ndk_response.is_ok()){
            // Use the ret value
            } else { 
            // Can get error code by get_error_code() 
            }Copy to clipboard

**Delete a single flow**

    qesdk_ndk_response = dppManager->deleteFlow(flowid, ret); 
            if(qesdk_ndk_response.is_ok()){
            // Use the ret value
            } else { 
            // Can get error code by get_error_code() 
            }Copy to clipboard

**Delete all flows**

    qesdk_ndk_response = dppManager->deleteAllFlows(ret); 
            if(qesdk_ndk_response.is_ok()){
            // Use the ret value
            } else { 
            // Can get error code by get_error_code() 
            }Copy to clipboard

**Parent Topic:** [Data path priority (smart data flow)](https://docs.qualcomm.com/doc/80-PK177-134/topic/data_path_priority.html)

Last Published: Nov 14, 2024

[Previous Topic
Flow status](https://docs.qualcomm.com/bundle/publicresource/80-PK177-134/topics/flow_status.md) [Next Topic
Link latency estimation (smart data link)](https://docs.qualcomm.com/bundle/publicresource/80-PK177-134/topics/link_latency_estimation.md)