///////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2000-2017 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:               IFW_HTTP_Client_Definitions.ttcn
//  Description:
//  Rev:                R1A
//  Prodnr:             LPA 108 661
//  Updated:            2017-09-01
//  Contact:            http://ttcn.ericsson.se
///////////////////////////////////////////////////////////////////////////////
module IFW_HTTP_Client_Definitions
{

	import from HTTPmsg_Types all;
	import from IPL4asp_PortType all;
	import from IFW_Common all;
	
	type component IFW_HTTP_Client_CT extends IFW_BASE_CT
	{
	    var HttpClientContext ctx := c_HttpClientContext_empty; 
	    
		var HTTPMessage msgToSend := c_HTTPMessage_empty;
		var HTTPMessage lastReceived := c_HTTPMessage_empty;
	  
    	port IPL4asp_PT IPL4_PCO;
	}

	type record HttpClientContext
	{
		integer connId,
		charstring remoteHost,
		integer remotePort,
		charstring localHost,
		integer localPort,
		HeaderLines requestHeaders
	}	
	with { extension "done" }

	const HttpClientContext c_HttpClientContext_empty :=
	{
		connId := -1,
		remoteHost := "",
		remotePort := -1,
		localHost := "",
		localPort := -1,
		requestHeaders := {}
	}
	
	const HTTPMessage c_HTTPMessage_empty :=
	{
	  erronous_msg :=
	  {
	    client_id := omit,
	    msg := ""
	  }
	}
}
