///////////////////////////////////////////////////////////////////////////////
//                                                                           //
// Copyright (c) 2000-2019 Ericsson Telecom AB                               //
//                                                                           //
// All rights reserved. This program and the accompanying materials          //
// are made available under the terms of the Eclipse Public License v2.0     //
// which accompanies this distribution, and is available at                  //
// https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html                                 //
///////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////
//  Module: EPTF_CLL_TransportRouting_Definitions
// 
//  Purpose:
//    -
// 
//  Module Parameters:
//    -
// 
//  Module depends on:
//    <EPTF_CLL_Base_Definitions>
// 
//  Current Owner:
//    ENORPIN
// 
//  Last Review Date:
//    2007- - 
// 
//  Detailed Comments:
// 
///////////////////////////////////////////////////////////
module EPTF_CLL_TransportRouting_Definitions
{
import from EPTF_CLL_Base_Definitions all;

//=========================================================================
// Data Types
//=========================================================================
///////////////////////////////////////////////////////////
//  Group: Routing_Definitions
// 
//  Purpose:
//    Definitions of the EPTF_Routing_CT
//
///////////////////////////////////////////////////////////
group Transport_Routing_Definitions
{
  ///////////////////////////////////////////////////////////
  // Type: f_EPTF_processMessage_FT
  //
  // Purpose:
  //   Function type to register processMessage functions
  //
  // Elements:
  //   -
  ///////////////////////////////////////////////////////////
  type function f_EPTF_Routing_processMessage_FT() 
  runs on self; 
  
  //////////////////////////////////////////////////////////
  // Type: EPTF_Routing_CT
  //
  // Purpose:
  //   Component type to store routing functions
  //
  // Elements:
  //   vf_EPTF_Routing_processOutgoingMessage - <f_EPTF_Routing_processMessage_FT> - functions pointer to the defined processOutgoingMessage
  //   vf_EPTF_Routing_processIncomingMessage - <f_EPTF_Routing_processMessage_FT> - functions pointer to the defined processIncomingMessage
  //   v_EPTF_Routing_initialized - *boolean* - guard flag to the init function
  ///////////////////////////////////////////////////////////
  //store routing information from incoming and outgoing messages
  type component EPTF_Routing_CT
  extends EPTF_Base_CT
  {
    private var f_EPTF_Routing_processMessage_FT  vf_EPTF_Routing_processOutgoingMessage := null;
    private var f_EPTF_Routing_processMessage_FT  vf_EPTF_Routing_processIncomingMessage := null;
    private var boolean                   v_EPTF_Routing_initialized := false;
  }
}// end of the Routing_Definitions group
}  // end of module
