void OmmArrayEncoder::addRmtes( const EmaBuffer& value )
{
	if ( !_rsslArray.primitiveType )
	{
		_rsslArray.primitiveType = RSSL_DT_RMTES_STRING;

		acquireEncIterator();

		initEncode();
	}
	else if ( _rsslArray.primitiveType != RSSL_DT_RMTES_STRING )
	{
		EmaString temp( "Attempt to addRmtes() while OmmArray contains='" );
		temp.append( getDTypeAsString( dataType[ _rsslArray.primitiveType ] ) ).append( "'. " );
		throwIueException( temp );
		return;
	}

	if ( _rsslArray.itemLength && _rsslArray.itemLength < value.length() )
	{
		EmaString temp( "Passed in value is longer than fixed width in addRmtes(). Fixed width='" );
		temp.append( _rsslArray.itemLength ).append( "'. " );
		throwIueException( temp );
		return;
	}

	RsslBuffer buffer;
	buffer.data = (char*)value.c_buf();
	buffer.length = value.length();

	addPrimitiveEntry( "addRmtes()", &buffer );
}
void MapEncoder::encodePermissionData( const EmaBuffer& permission )
{
	if ( permission.length() > 0 )
	{
		rsslMapEntryApplyHasPermData ( &_rsslMapEntry );
		_rsslMapEntry.permData.length = permission.length();
		_rsslMapEntry.permData.data = const_cast<char *>(permission.c_buf());
	}
}
void MapEncoder::addKeyRmtes(const EmaBuffer& key, MapEntry::MapAction action,
	const EmaBuffer& permissionData)
{
	validateEntryKeyAndPayLoad(RSSL_DT_RMTES_STRING, RSSL_DT_NO_DATA, DataType::NoDataEnum, "addKeyRmtes()");

	RsslBuffer buffer;
	buffer.data = (char*)key.c_buf();
	buffer.length = key.length();

	addEntryWithNoPayload(&buffer, action, permissionData, "addKeyRmtes()");
}
示例#4
0
void hexToString( EmaString& output, const EmaBuffer& in )
{
	for ( UInt32 idx = 0; idx < in.length(); ++idx )
	{
		char charOmmArray[10];

		hexToChar( charOmmArray, *(in.c_buf() + idx) );

		output.append( charOmmArray );
		
		if ( in.length() > 1 && idx < in.length() - 1 ) output.append( " " );
	}
}
void AckMsgEncoder::extendedHeader( const EmaBuffer& extHeader )
{
    acquireEncIterator();

#ifdef __EMA_COPY_ON_SET__
    _extendedHeader = extHeader;
    _rsslAckMsg.extendedHeader.data = (char*)_extendedHeader.c_buf();
    _rsslAckMsg.extendedHeader.length = _extendedHeader.length();
#else
    _rsslAckMsg.extendedHeader.data = (char*)extHeader.c_buf();
    _rsslAckMsg.extendedHeader.length = extHeader.length();
#endif

    rsslAckMsgApplyHasExtendedHdr( &_rsslAckMsg );
}
示例#6
0
void GenericMsgEncoder::permissionData( const EmaBuffer& permData )
{
	acquireEncIterator();

#ifdef __EMA_COPY_ON_SET__
	_permissionData = permData;
	_rsslGenericMsg.permData.data = (char*)_permissionData.c_buf();
	_rsslGenericMsg.permData.length = _permissionData.length();
#else
	_rsslGenericMsg.permData.data = (char*)permData.c_buf();
	_rsslGenericMsg.permData.length = permData.length();
#endif

	rsslGenericMsgApplyHasPermData( &_rsslGenericMsg );
}
void FieldListEncoder::addRmtes( Int16 fieldId, const EmaBuffer& value )
{
	if ( rsslFieldListCheckHasStandardData( &_rsslFieldList ) == RSSL_FALSE )
	{
		rsslFieldListApplyHasStandardData( &_rsslFieldList );

		acquireEncIterator();

		initEncode();
	}

	RsslBuffer buffer;
	buffer.data = (char*)value.c_buf();
	buffer.length = value.length();

	addPrimitiveEntry( fieldId, RSSL_DT_RMTES_STRING, "addRmtes()", &buffer );
}
void MapEncoder::addKeyRmtes( const EmaBuffer& key, MapEntry::MapAction action,
	const ComplexType& value, const EmaBuffer& permissionData )
{
	const Encoder& enc = value.getEncoder();

	UInt8 rsslDataType = enc.convertDataType( value.getDataType() );

	validateEntryKeyAndPayLoad(RSSL_DT_RMTES_STRING, rsslDataType, value.getDataType(), "addKeyRmtes()");

	RsslBuffer buffer;
	buffer.data = (char*)key.c_buf();
	buffer.length = key.length();

	if ( action == MapEntry::DeleteEnum )
	{
		addEntryWithNoPayload( &buffer, action, permissionData, "addKeyRmtes()" );
	}
	else if ( value.hasEncoder() && enc.ownsIterator() )
	{
		if ( enc.isComplete() )
			addEncodedEntry( &buffer, action, value, permissionData, "addKeyRmtes()" );
		else
		{
			EmaString temp( "Attempt to add a ComplexType while complete() was not called on this ComplexType." );
			throwIueException( temp );
			return;
		}
	}
	else if ( value.hasDecoder() )
	{
		addDecodedEntry( &buffer, action, value, permissionData, "addKeyRmtes()" );
	}
	else
	{
		if ( rsslDataType == RSSL_DT_MSG )
		{
			EmaString temp( "Attempt to pass in an empty message while it is not supported." );
			throwIueException( temp );
			return;
		}

		passEncIterator( const_cast<Encoder&>( enc ) );
		startEncodingEntry( &buffer, action, permissionData, "addKeyRmtes()" );
	}
}
示例#9
0
int main( int argc, char* argv[] )
{
	try {
		authenticationToken.clear();
		newauthenticationToken.clear();
		authenticationExtended.clear();
		processCommandLineOptions( argc, argv );
		printActiveConfig();
		AppLoginClient loginClient;

		EmaBuffer authnExtendedBuf;

		Login::LoginReq loginMsg;

		OmmConsumerConfig consumerConfig;

		loginMsg.name(authenticationToken).applicationId(appId).nameType(USER_AUTH_TOKEN);
		if (!authenticationExtended.empty())
		{
			authnExtendedBuf.setFrom(authenticationExtended.c_str(), authenticationExtended.length());
			loginMsg.authenticationExtended(authnExtendedBuf);
		}
			
		
		consumerConfig.addAdminMsg(loginMsg.getMessage());

		AppClient appClient;
		OmmConsumer consumer( consumerConfig, loginClient);
		
		
		consumer.registerClient( ReqMsg().serviceName( "DIRECT_FEED" ).name( "TRI.N" ), appClient );
		
		for (int i = 0; i < 60; i++)
		{
			
			if (loginClient._TTReissue != 0 && getCurrentTime() >= loginClient._TTReissue)
			{
				loginMsg.clear().name(authenticationToken).applicationId(appId).nameType(USER_AUTH_TOKEN);
				if (!authenticationExtended.empty())
				{
					loginMsg.authenticationExtended(authnExtendedBuf);
				}

				consumer.reissue(loginMsg.getMessage(), loginClient._handle);
				loginClient._TTReissue = 0;
			}
			
			sleep(1000);
			if ( i == 3 )
			{
				cout << endl << "SEND PAUSE USING first TOKEN" << endl;
					loginMsg.clear().name(authenticationToken).applicationId(appId).nameType(USER_AUTH_TOKEN).pause(true);
				consumer.reissue(loginMsg.getMessage(), loginClient._handle);
			}
			if ( i == 10 )
			{
				cout << endl << "Renew new TOKEN with PAUSE falg" << endl;
					loginMsg.clear().name(newauthenticationToken).applicationId(appId).nameType(USER_AUTH_TOKEN).pause(true);
				consumer.reissue(loginMsg.getMessage(), loginClient._handle);
			}
			if ( i == 13 )
			{
				cout << endl << "SEND RESUME USING second TOKEN" << endl;
					loginMsg.clear().name(newauthenticationToken).applicationId(appId).nameType(USER_AUTH_TOKEN).pause(false);
				consumer.reissue(loginMsg.getMessage(), loginClient._handle);
			}
		}

	}
	catch ( const OmmException& excp ) {
		cout << excp << endl;
	}
	return 0;
}
void RmtesBufferImpl::apply( const EmaBuffer& buf )
{
	apply( buf.c_buf(), buf.length() );
}
void OmmOpaqueEncoder::set( const EmaBuffer& value )
{
	encodeBuffer( value.c_buf(), value.length() );
}