OmmNiProviderConfig config = EmaFactory.createOmmNiProviderConfig(); provider = EmaFactory.createOmmProvider(config.adminControlDirectory(OmmNiProviderConfig.AdminControl.USER_CONTROL) .username("user")); OmmArray capablities = EmaFactory.createOmmArray(); capablities.add(EmaFactory.createOmmArrayEntry().uintValue( EmaRdm.MMT_MARKET_PRICE)); capablities.add(EmaFactory.createOmmArrayEntry().uintValue( EmaRdm.MMT_MARKET_BY_PRICE)); OmmArray dictionaryUsed = EmaFactory.createOmmArray(); dictionaryUsed.add(EmaFactory.createOmmArrayEntry().ascii( "RWFFld")); dictionaryUsed.add(EmaFactory.createOmmArrayEntry().ascii( "RWFEnum")); ElementList serviceInfoId = EmaFactory.createElementList(); serviceInfoId.add( EmaFactory.createElementEntry().ascii(EmaRdm.ENAME_NAME, "NI_PUB")); serviceInfoId.add( EmaFactory.createElementEntry().array(EmaRdm.ENAME_CAPABILITIES, capablities)); serviceInfoId.add( EmaFactory.createElementEntry().array(EmaRdm.ENAME_DICTIONARYS_USED, dictionaryUsed)); ElementList serviceStateId = EmaFactory.createElementList(); serviceStateId.add( EmaFactory.createElementEntry().uintValue(EmaRdm.ENAME_SVC_STATE, EmaRdm.SERVICE_UP)); FilterList filterList = EmaFactory.createFilterList(); filterList.add( EmaFactory.createFilterEntry().elementList(EmaRdm.SERVICE_INFO_ID, FilterEntry.FilterAction.SET, serviceInfoId) ); filterList.add( EmaFactory.createFilterEntry().elementList(EmaRdm.SERVICE_STATE_ID, FilterEntry.FilterAction.SET, serviceStateId)); Map map = EmaFactory.createMap(); map.add( EmaFactory.createMapEntry().keyUInt(2, MapEntry.MapAction.ADD, filterList)); RefreshMsg refreshMsg = EmaFactory.createRefreshMsg();
public ConsumerInstance(String host, String username) { _appClient = new AppClient(); _reqMsg = EmaFactory.createReqMsg(); _consumer = EmaFactory.createOmmConsumer(EmaFactory.createOmmConsumerConfig().host(host).username(username)); _executor = Executors.newSingleThreadExecutor(); _executor.execute(this); }
@Test public void testDataDictionary_ExtractDictionaryType() { TestUtilities.printTestHead("testDataDictionary_ExtractDictionaryType()","Test to extract dictionary type from dictionary payload's summary data.\n"); int dictionaryType = 5; Series series = EmaFactory.createSeries(); ElementList summaryData = EmaFactory.createElementList(); summaryData.add(EmaFactory.createElementEntry().buffer("Version", ByteBuffer.wrap("40.20".getBytes()))); summaryData.add(EmaFactory.createElementEntry().uintValue("Type", dictionaryType)); summaryData.add(EmaFactory.createElementEntry().intValue("DictionaryId", 5)); series.summaryData(summaryData).totalCountHint(0).add(EmaFactory.createSeriesEntry().elementList(EmaFactory.createElementList())); TestUtilities.checkResult(EmaFactory.createDataDictionary().extractDictionaryType(series) == dictionaryType, "DataDictionary.extractDictionaryType()"); }
void processUpdateServiceStatus( OmmProvider provider) { ElementList serviceState = EmaFactory.createElementList(); serviceState.add( EmaFactory.createElementEntry().uintValue( EmaRdm.ENAME_SVC_STATE, EmaRdm.SERVICE_DOWN )); FilterList filterList = EmaFactory.createFilterList(); filterList.add( EmaFactory.createFilterEntry().elementList( EmaRdm.SERVICE_STATE_ID, FilterEntry.FilterAction.UPDATE, serviceState ) ); Map map = EmaFactory.createMap(); map.add( EmaFactory.createMapEntry().keyUInt( 1, MapEntry.MapAction.UPDATE, filterList )); RefreshMsg refreshMsg = EmaFactory.createRefreshMsg(); provider.submit( refreshMsg.domainType( EmaRdm.MMT_DIRECTORY ). filter( EmaRdm.SERVICE_STATE_FILTER ). payload( map ).complete( true ), 0); // use 0 item handle to fanout to all subscribers }
void processUpdateGroupStatus( OmmProvider provider) { ElementList serviceGroupId = EmaFactory.createElementList(); serviceGroupId.add( EmaFactory.createElementEntry().buffer( EmaRdm.ENAME_GROUP, groupId )); serviceGroupId.add( EmaFactory.createElementEntry().state( EmaRdm.ENAME_STATUS, OmmState.StreamState.CLOSED_RECOVER, OmmState.DataState.SUSPECT, OmmState.StatusCode.NONE, "Group Status Msg" ) ); FilterList filterList = EmaFactory.createFilterList(); filterList.add( EmaFactory.createFilterEntry().elementList( EmaRdm.SERVICE_GROUP_ID, FilterEntry.FilterAction.SET, serviceGroupId ) ); Map map = EmaFactory.createMap(); map.add( EmaFactory.createMapEntry().keyUInt(1, MapEntry.MapAction.UPDATE, filterList)); provider.submit( EmaFactory.createUpdateMsg().domainType( EmaRdm.MMT_DIRECTORY ). filter( EmaRdm.SERVICE_GROUP_FILTER ). payload( map ), 0); // use 0 item handle to fanout to all subscribers }
void processDirectoryRequest(ReqMsg reqMsg, OmmProviderEvent event) { OmmArray capablities = EmaFactory.createOmmArray(); capablities.add(EmaFactory.createOmmArrayEntry().uintValue( EmaRdm.MMT_MARKET_PRICE)); capablities.add(EmaFactory.createOmmArrayEntry().uintValue( EmaRdm.MMT_MARKET_BY_PRICE)); OmmArray dictionaryUsed = EmaFactory.createOmmArray(); dictionaryUsed.add(EmaFactory.createOmmArrayEntry().ascii( "RWFFld")); dictionaryUsed.add(EmaFactory.createOmmArrayEntry().ascii( "RWFEnum")); ElementList serviceInfoId = EmaFactory.createElementList(); serviceInfoId.add( EmaFactory.createElementEntry().ascii(EmaRdm.ENAME_NAME, "DIRECT_FEED")); serviceInfoId.add( EmaFactory.createElementEntry().array(EmaRdm.ENAME_CAPABILITIES, capablities)); serviceInfoId.add( EmaFactory.createElementEntry().array(EmaRdm.ENAME_DICTIONARYS_USED, dictionaryUsed)); ElementList serviceStateId = EmaFactory.createElementList(); serviceStateId.add( EmaFactory.createElementEntry().uintValue(EmaRdm.ENAME_SVC_STATE, EmaRdm.SERVICE_UP)); FilterList filterList = EmaFactory.createFilterList(); filterList.add( EmaFactory.createFilterEntry().elementList(EmaRdm.SERVICE_INFO_ID, FilterEntry.FilterAction.SET, serviceInfoId) ); filterList.add( EmaFactory.createFilterEntry().elementList(EmaRdm.SERVICE_STATE_ID, FilterEntry.FilterAction.SET, serviceStateId)); Map map = EmaFactory.createMap(); map.add( EmaFactory.createMapEntry().keyUInt(2, MapEntry.MapAction.ADD, filterList)); RefreshMsg refreshMsg = EmaFactory.createRefreshMsg(); event.provider().submit( refreshMsg.domainType(EmaRdm.MMT_DIRECTORY).clearCache(true). filter( EmaRdm.SERVICE_INFO_FILTER | EmaRdm.SERVICE_STATE_FILTER). payload(map).solicited(true).complete(true), event.handle()); }
FieldList summaryData = EmaFactory.createFieldList(); summaryData.add(EmaFactory.createFieldEntry().uintValue(1, 4563)); Series series = EmaFactory.createSeries(); series.summaryData(summaryData); series.add(EmaFactory.createSeriesEntry().noData()); ElementList elementList = EmaFactory.createElementList(); elementList.add(EmaFactory.createElementEntry().series("1", series));
void processMarketPriceRequest(ReqMsg reqMsg, OmmProviderEvent event) { FieldList fieldList = EmaFactory.createFieldList(); fieldList.add( EmaFactory.createFieldEntry().real(22, 3990, OmmReal.MagnitudeType.EXPONENT_NEG_2)); fieldList.add( EmaFactory.createFieldEntry().real(25, 3994, OmmReal.MagnitudeType.EXPONENT_NEG_2)); fieldList.add( EmaFactory.createFieldEntry().real(30, 9, OmmReal.MagnitudeType.EXPONENT_0)); fieldList.add( EmaFactory.createFieldEntry().real(31, 19, OmmReal.MagnitudeType.EXPONENT_0)); event.provider().submit( EmaFactory.createRefreshMsg().name(reqMsg.name()).serviceName(reqMsg.serviceName()).solicited(true). state(OmmState.StreamState.NON_STREAMING, OmmState.DataState.OK, OmmState.StatusCode.NONE, "Refresh Completed"). payload(fieldList).complete(true), event.handle() ); }
FieldList summaryData = EmaFactory.createFieldList(); summaryData.add(EmaFactory.createFieldEntry().uintValue(1, 3056)); ElementList elementList = EmaFactory.createElementList(); elementList.add(EmaFactory.createElementEntry().codeAscii("Name1")); Series series = EmaFactory.createSeries(); series.totalCountHint(0).summaryData(summaryData).add(EmaFactory.createSeriesEntry() .elementList(elementList)); Map map = EmaFactory.createMap(); map.add(EmaFactory.createMapEntry().keyAscii("key", MapEntry.MapAction.ADD, series));
FieldList summaryData = EmaFactory.createFieldList(); summaryData.add(EmaFactory.createFieldEntry().uintValue(1, 3056)); ElementList elementList = EmaFactory.createElementList(); elementList.add(EmaFactory.createElementEntry().codeAscii("Name1")); Vector vector = EmaFactory.createVector(); vector.totalCountHint(0).summaryData(summaryData).add(EmaFactory.createVectorEntry() .elementList(1, VectorEntry.VectorAction.INSERT, elementList)); Map map = EmaFactory.createMap(); map.add(EmaFactory.createMapEntry().keyAscii("key", MapEntry.MapAction.ADD, vector));
public static void main(String[] args) { AppClient appClient = new AppClient(); AppErrorClient appErrorClient = new AppErrorClient(); OmmConsumer consumer = EmaFactory.createOmmConsumer(EmaFactory.createOmmConsumerConfig() .operationModel(OperationModel.USER_DISPATCH) .username("user"), appErrorClient); long invalidHandle = 0; consumer.reissue(EmaFactory.createReqMsg(), invalidHandle); consumer.submit(EmaFactory.createGenericMsg(), invalidHandle); consumer.submit(EmaFactory.createPostMsg(), invalidHandle); consumer.registerClient(EmaFactory.createReqMsg().serviceName("DIRECT_FEED").name("IBM.N"), appClient); long startTime = System.currentTimeMillis(); while (startTime + 60000 > System.currentTimeMillis()) consumer.dispatch(10); // calls to onRefreshMsg(), onUpdateMsg(), or onStatusMsg() execute on this thread consumer.uninitialize(); } }
FieldList fieldList = EmaFactory.createFieldList(); fieldList.add(EmaFactory.createFieldEntry().uintValue(1, 4563)); FilterList filterList = EmaFactory.createFilterList(); filterList.totalCountHint(1).add(EmaFactory.createFilterEntry().fieldList(3, FilterEntry.FilterAction.SET, fieldList)); filterList.add(EmaFactory.createFilterEntry().noData(5, FilterEntry.FilterAction.UPDATE)); ElementList elementList = EmaFactory.createElementList(); elementList.add(EmaFactory.createElementEntry().filterList("1", filterList));
public void onGenericMsg(GenericMsg genericMsg, OmmConsumerEvent event) { System.out.println("Received Generic. Item Handle: " + event.handle() + " Closure: " + event.closure()); ElementList elementList = EmaFactory.createElementList(); elementList.add(EmaFactory.createElementEntry().intValue("value", ++count)); _ommConsumer.submit(EmaFactory.createGenericMsg().domainType(200).name("genericMsg").payload(elementList), event.handle()); System.out.println(); }
public void testMapKeyTypeAndAddEntryKeyTypeMismatch_Encode() { TestUtilities.printTestHead("testMapKeyTypeAndAddEntryMismatch_Encode","Encode Map with mismatch key type"); try { Map map = EmaFactory.createMap(); map.keyFieldId(11).totalCountHint(3).keyType(DataType.DataTypes.INT); map.add(EmaFactory.createMapEntry().keyAscii("Key1", MapEntry.MapAction.ADD)); map.add(EmaFactory.createMapEntry().keyAscii("Key2", MapEntry.MapAction.ADD)); map.add(EmaFactory.createMapEntry().keyAscii("Key3", MapEntry.MapAction.ADD)); ElementList element = EmaFactory.createElementList(); element.add(EmaFactory.createElementEntry().map("1", map)); } catch( OmmException excp) { TestUtilities.checkResult( true, "Fails to encode with invalid key type - exception expected with text : " + excp.getMessage() ); TestUtilities.checkResult(excp.getMessage().equals("Attempt to add entry of ASCII_STRING while Map entry key is set to INT with keyType() method"), "Check exception message text"); return; } TestUtilities.checkResult( false, "Fails to encode with invalid key type - expect exception" ); }
void processInvalidItemRequest(ReqMsg reqMsg, OmmProviderEvent event) { event.provider().submit( EmaFactory.createStatusMsg().name(reqMsg.name()).serviceName(reqMsg.serviceName()). state(OmmState.StreamState.CLOSED, OmmState.DataState.SUSPECT, OmmState.StatusCode.NOT_FOUND, "Item not found"), event.handle() ); } }
void processLoginRequest(ReqMsg reqMsg, OmmProviderEvent event) { event.provider().submit(EmaFactory.createRefreshMsg().domainType(EmaRdm.MMT_LOGIN).name(reqMsg.name()).nameType(EmaRdm.USER_NAME). complete(true).solicited(true).state(OmmState.StreamState.OPEN, OmmState.DataState.OK, OmmState.StatusCode.NONE, "Login accepted"). attrib( EmaFactory.createElementList() ), event.handle()); }
void processLoginRequest(ReqMsg reqMsg, OmmProviderEvent event) { event.provider().submit( EmaFactory.createRefreshMsg().domainType(EmaRdm.MMT_LOGIN).name(reqMsg.name()). nameType(EmaRdm.USER_NAME).complete(true).solicited(true). state(OmmState.StreamState.OPEN, OmmState.DataState.OK, OmmState.StatusCode.NONE, "Login accepted"), event.handle() ); }
@Test public void decodeLoginRefreshInvalidTypeTest() { ElementList encodedElementList = EmaFactory.createElementList(); encodedElementList.add( EmaFactory.createElementEntry().ascii(EmaRdm.ENAME_ALLOW_SUSPECT_DATA, "1")); com.thomsonreuters.upa.codec.DataDictionary dictionary = com.thomsonreuters.upa.codec.CodecFactory .createDataDictionary(); TestUtilities.upa_encodeDictionaryMsg(dictionary); RefreshMsg encRefreshMsg = EmaFactory.createRefreshMsg(); encRefreshMsg.domainType(EmaRdm.MMT_LOGIN); encRefreshMsg.attrib(encodedElementList); RefreshMsg decRefreshMsg = JUnitTestConnect.createRefreshMsg(); JUnitTestConnect.setRsslData(decRefreshMsg, encRefreshMsg, Codec.majorVersion(), Codec.minorVersion(), dictionary, null); LoginRefresh loginRefresh = EmaFactory.Domain.createLoginRefresh(); exception.expect(OmmInvalidUsageException.class); exception.expectMessage("Decoding error for AllowSuspectData element. Attempt to uintValue() while actual entry data type is Ascii"); loginRefresh.message(decRefreshMsg); }
@Test public void decodeLoginReqInvalidTypeTest() { ElementList encodedElementList = EmaFactory.createElementList(); encodedElementList.add( EmaFactory.createElementEntry().ascii(EmaRdm.ENAME_ALLOW_SUSPECT_DATA, "1")); com.thomsonreuters.upa.codec.DataDictionary dictionary = com.thomsonreuters.upa.codec.CodecFactory .createDataDictionary(); TestUtilities.upa_encodeDictionaryMsg(dictionary); ReqMsg encReqMsg = EmaFactory.createReqMsg(); encReqMsg.domainType(EmaRdm.MMT_LOGIN); encReqMsg.attrib(encodedElementList); ReqMsg decReqMsg = JUnitTestConnect.createReqMsg(); JUnitTestConnect.setRsslData(decReqMsg, encReqMsg, Codec.majorVersion(), Codec.minorVersion(), dictionary, null); exception.expect(OmmInvalidUsageException.class); exception.expectMessage("Decoding error for AllowSuspectData element. Attempt to uintValue() while actual entry data type is Ascii"); LoginReq loginReq = EmaFactory.Domain.createLoginReq(); loginReq.message(decReqMsg); }
@Test public void blankLoginStatusTest() { ElementList encodedElementList = EmaFactory.createElementList(); encodedElementList.add(EmaFactory.createElementEntry().ascii(EmaRdm.ENAME_AUTHN_ERRORTEXT, "")); com.thomsonreuters.upa.codec.DataDictionary dictionary = com.thomsonreuters.upa.codec.CodecFactory .createDataDictionary(); TestUtilities.upa_encodeDictionaryMsg(dictionary); StatusMsg encStatusMsg = EmaFactory.createStatusMsg(); encStatusMsg.domainType(EmaRdm.MMT_LOGIN); encStatusMsg.attrib(encodedElementList); encStatusMsg.state(StreamState.OPEN, DataState.OK, StatusCode.NONE, "decodeLoginStatusTest"); StatusMsg decStatusMsg = JUnitTestConnect.createStatusMsg(); JUnitTestConnect.setRsslData(decStatusMsg, encStatusMsg, Codec.majorVersion(), Codec.minorVersion(), dictionary, null); LoginStatus loginStatus = EmaFactory.Domain.createLoginStatus(); loginStatus.authenticationErrorText("test"); loginStatus.message(decStatusMsg); assertEquals(true, loginStatus.hasState()); assertEquals(StreamState.OPEN, loginStatus.state().streamState()); assertEquals(DataState.OK, loginStatus.state().dataState()); assertEquals(StatusCode.NONE, loginStatus.state().statusCode()); assertEquals("decodeLoginStatusTest", loginStatus.state().statusText()); assertEquals(false, loginStatus.hasAuthenticationErrorText()); }