//***************************************************************************
//
//  Copyright (c) 1999 - 2006 Intel Corporation
//
//  Licensed under the Apache License, Version 2.0 (the "License");
//  you may not use this file except in compliance with the License.
//  You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
//  Unless required by applicable law or agreed to in writing, software
//  distributed under the License is distributed on an "AS IS" BASIS,
//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//  See the License for the specific language governing permissions and
//  limitations under the License.
//
//***************************************************************************

/**
	@file	IFXOSSocket.h

			This header defines the socket stream functionality.
*/


#ifndef IFXOSSocket_H
#define IFXOSSocket_H


//***************************************************************************
//	Includes
//***************************************************************************

#include "IFXResult.h"
#include "IFXDataTypes.h"
#include "IFXAPI.h"

//***************************************************************************
//	Defines
//***************************************************************************


//***************************************************************************
//	Constants
//***************************************************************************


//***************************************************************************
//	Enumerations
//***************************************************************************

enum
{
	IFXOSSOCKET_CONNECT_TIMEOUT,
	IFXOSSOCKET_SEND_TIMEOUT,
	IFXOSSOCKET_RECEIVE_TIMEOUT
};


//***************************************************************************
//	Classes, structures and types
//***************************************************************************


//***************************************************************************
//  Global function prototypes
//***************************************************************************

/**
	Wraps open function of Socket API
*/
extern "C" int IFXAPI_CALLTYPE IFXOSSocketOpen();

/**
	Wraps close function of Socket API
*/
extern "C" IFXRESULT IFXAPI_CALLTYPE IFXOSSocketClose( int descriptor );

/**
	Wraps connet function of Socket API
*/
extern "C" IFXRESULT IFXAPI_CALLTYPE IFXOSSocketConnect( 
										int descriptor, 
										const char* pHost, 
										U16 port );

/**
	Wraps recv function of Socket API
*/
extern "C" int IFXAPI_CALLTYPE IFXOSSocketReceive ( 
										int descriptor, 
										char* pBuffer, 
										int nbytes, 
										int flags);

/**
	Wraps send function of Socket API
*/
extern "C" int IFXAPI_CALLTYPE IFXOSSocketSend ( 
										int descriptor, 
										const char* pBuffer, 
										int nbytes, 
										int flags);

/**
	Wraps setsockopt function of Socket API
*/
extern "C" 
IFXRESULT IFXAPI_CALLTYPE IFXOSSocketSetOptions(
										int descriptor,
										U32 option, 
										const char* pBuffer, 
										int bufferLength );

/**
	Wraps getsockopt function of Socket API
*/
extern "C" 
IFXRESULT IFXAPI_CALLTYPE IFXOSSocketGetOptions( 
										int descriptor,
										U32 option, 
										char* pBuffer, 
										int* pBufferLength );

#endif
