///////////////////////////////////////////////////////////////////////////////
// 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
///////////////////////////////////////////////////////////////////////////////
//
//  File:           SGsAP_SCTP_Daemon_Types.ttcn
//  Description:    SGsAP SDD types
//  Rev:            <RnXnn>
//  Prodnr:         CNL 113 630
//  Updated:        2010-10-20
//  Contact:        http://ttcn.ericsson.se
///////////////////////////////////////////////////////////////////////////////


module SGsAP_SCTP_Daemon_Types
{

//=========================================================================
// Import Part
//=========================================================================

import from SCTP_Daemon_Dynamic_Types all;
import from EPTF_CLL_FBQ_Definitions all

//=========================================================================
// Data Types
//=========================================================================

type record of charstring ro_charstring;

type record ConnectionEntry
{
  integer       connId,
  ro_charstring imsiList
}

const ConnectionEntry ConnectionEntry_empty :=
{
  connId := -1,
  imsiList := {}
}

type record of ConnectionEntry Connection_List;

type record ConnectionDB
{
  integer             hashRef,
  Connection_List     data,
  EPTF_FreeBusyQueue  queue
}

//=========================================================================
//Component Types
//=========================================================================

type component SGsAP_SDD_CT extends SDD_CT
{
  var integer       v_imsi2connDbIdx;
  var ConnectionDB  v_connDB;
}

}  // end of module
