/******************************************************************************
* Copyright (c) 2017 Easy Global Market
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*  Spaseski Naum - initial implementation
*  Bence Janos Szabo - negative testing branch 
******************************************************************************/

//*********************************************************************
// To use this function with the IPL4 port,                           *
// you should add these lines to your TTCN-3 code:		              *
//                                                                    *  
// var f_IPL4_getMsgLen getMsg_Func := refers(f_GetMsgLengthMQTT);    *
// f_IPL4_setGetMsgLen(IPL4_port,connectionId, getMsg_Func, {});      *
//*********************************************************************

module MQTT_v3_1_1_IPL4SizeFunction {


import from Socket_API_Definitions all;

//-----------------------------------------------------------------------------
//External functions
//-----------------------------------------------------------------------------

external function f_calc_MQTT_length(in octetstring data) return integer;


//*************************************************************************
function f_GetMsgLengthMQTT(  in octetstring stream, inout ro_integer args) return integer
//*************************************************************************

{
  return f_calc_MQTT_length(stream) ;
}
}
