/******************************************************************************
* 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
******************************************************************************/

//*********************************************************************
// 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) ;
}
}
