Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions pricing-template/blade/DataSource/etc/datasource.conf
Original file line number Diff line number Diff line change
Expand Up @@ -52,3 +52,27 @@ if "${FAILOVER}" == "ENABLED"
heartbeat-slack-time 5
end-peer
endif

##################################################
#
# Transformer peer
#
add-peer
local-type active|contrib
remote-name transformer${THIS_LEG}
addr ${TRANSFORMER${THIS_LEG}_HOST}
port ${TRANSFORMER${THIS_LEG}_DATASRCPORT}
heartbeat-time 15
heartbeat-slack-time 5
end-peer

if "${FAILOVER}" == "ENABLED"
add-peer
local-type active|contrib
remote-name transformer${OTHER_LEG}
addr ${TRANSFORMER${OTHER_LEG}_HOST}
port ${TRANSFORMER${OTHER_LEG}_DATASRCPORT}
heartbeat-time 15
heartbeat-slack-time 5
end-peer
endif
12 changes: 6 additions & 6 deletions pricing-template/blade/Liberator/etc/rttpd.conf
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ add-data-service
end-data-service

add-data-service
service-name ${ADAPTER_NAME}ContainerSvc${THIS_LEG}
service-name ${ADAPTER_NAME}TransformerContainerSvc${THIS_LEG}
include-pattern ^/TEMPLATE/CONTAINER

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we already send Containers and Type2 records via transformer we should probably do the same for pricing

include-pattern ^/TEMPLATE/TYPE2

Expand All @@ -105,26 +105,26 @@ add-data-service
# Load balancing with 2 legs
#
add-priority
label ${ADAPTER_NAME}${THIS_LEG}
label ${ADAPTER_NAME}${OTHER_LEG}
label transformer${THIS_LEG}
label transformer${OTHER_LEG}
end-priority
else
#
# Failover with 2 legs
#
add-priority
label ${ADAPTER_NAME}${THIS_LEG}
label transformer${THIS_LEG}
end-priority
add-priority
label ${ADAPTER_NAME}${OTHER_LEG}
label transformer${OTHER_LEG}
end-priority
endif
else
#
# One leg only
#
add-priority
label ${ADAPTER_NAME}${THIS_LEG}
label transformer${THIS_LEG}
end-priority
endif
end-source-group
Expand Down
57 changes: 57 additions & 0 deletions pricing-template/blade/Transformer/etc/transformer.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
include-file ${ccd}/../../blade_config/bootstrap.conf

add-peer
label ${ADAPTER_NAME}${THIS_LEG}
remote-name ${ADAPTER_NAME}${THIS_LEG}
remote-type active
heartbeat-time 15
heartbeat-slack-time 5
end-peer

if "${FAILOVER}" == "ENABLED"
add-peer
label ${ADAPTER_NAME}${OTHER_LEG}
remote-type active
remote-name ${ADAPTER_NAME}${OTHER_LEG}
heartbeat-time 15
heartbeat-slack-time 5
end-peer
endif

add-data-service
service-name ${ADAPTER_NAME}ContainerSvc${THIS_LEG}
include-pattern ^/TEMPLATE/CONTAINER
include-pattern ^/TEMPLATE/TYPE2

add-source-group
required
if "${FAILOVER}" == "ENABLED"
if "${LOAD_BALANCING}" == "ENABLED"
#
# Load balancing with 2 legs
#
add-priority
label ${ADAPTER_NAME}${THIS_LEG}
label ${ADAPTER_NAME}${OTHER_LEG}
end-priority
else
#
# Failover with 2 legs
#
add-priority
label ${ADAPTER_NAME}${THIS_LEG}
end-priority
add-priority
label ${ADAPTER_NAME}${OTHER_LEG}
end-priority
endif
else
#
# One leg only
#
add-priority
label ${ADAPTER_NAME}${THIS_LEG}
end-priority
endif
end-source-group
end-data-service
3 changes: 3 additions & 0 deletions pricing-template/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ task setupWorkingDirectory(type: Copy) {
exclude 'blade_config/bootstrap.conf'
exclude 'DataSource/bin'
exclude 'Liberator'
exclude 'Transformer'
}
into("${buildDir}/env")
}
Expand All @@ -83,6 +84,8 @@ task createEnvironmentConfig << {
define THIS_LEG ${thisLeg}
define LIBERATOR${thisLeg}_HOST ${(project.hasProperty("liberatorHost") ? project.liberatorHost : "localhost")}
define LIBERATOR${thisLeg}_DATASRCPORT ${(project.hasProperty("liberatorDsPort") ? project.liberatorDsPort : "15001")}
define TRANSFORMER${thisLeg}_HOST ${(project.hasProperty("transformerHost") ? project.transformerHost : "localhost")}
define TRANSFORMER${thisLeg}_DATASRCPORT ${(project.hasProperty("transformerDsPort") ? project.transformerDsPort : "15002")}
""".stripIndent()


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import com.caplin.template.channel.ChannelTemplate;
import com.caplin.template.container.ContainerTemplateDataProvider;
import com.caplin.template.pricing.PricingTemplateDataProvider;
import com.caplin.template.type2.Type2DataProvider;

public class PricingAdapterTemplate {

Expand All @@ -18,10 +19,12 @@ public void initialise() {
PricingTemplateDataProvider pricingTemplateDataProvider = new PricingTemplateDataProvider(dataSource);
ContainerTemplateDataProvider containerTemplateDataProvider = new ContainerTemplateDataProvider(dataSource);
ChannelTemplate channelTemplate = new ChannelTemplate(dataSource);
Type2DataProvider type2DataProvider = new Type2DataProvider(dataSource);

pricingTemplateDataProvider.initialise();
containerTemplateDataProvider.initialise();
channelTemplate.initialise();
type2DataProvider.initialise();
}

public static void main(String[] args) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,68 +1,56 @@
package com.caplin.template.container;

import java.util.logging.Level;

import com.caplin.datasource.DataSource;
import com.caplin.datasource.messaging.container.ContainerMessage;
import com.caplin.datasource.messaging.record.RecordType1Message;
import com.caplin.datasource.messaging.record.RecordType2Message;
import com.caplin.datasource.messaging.record.GenericMessage;
import com.caplin.datasource.namespace.PrefixNamespace;
import com.caplin.datasource.publisher.ActivePublisher;
import com.caplin.datasource.publisher.DataProvider;
import com.caplin.datasource.publisher.DiscardEvent;
import com.caplin.datasource.publisher.RequestEvent;

public class ContainerTemplateDataProvider implements DataProvider {
public class ContainerTemplateDataProvider {

private static final int NUM_CONSTITUENTS = 50;
private final DataSource dataSource;

private ActivePublisher publisher;
private ActivePublisher containerPublisher;
private ActivePublisher rowPublisher;

public ContainerTemplateDataProvider(DataSource dataSource) {
this.dataSource = dataSource;
}

public void initialise() {
publisher = dataSource.createActivePublisher(new PrefixNamespace("/TEMPLATE/CONTAINER"), this);
}
containerPublisher = dataSource.createActivePublisher(new PrefixNamespace("/TEMPLATE/CONTAINER/ALL"), new DataProvider() {
@Override
public void onRequest(RequestEvent requestEvent) {
ContainerMessage containerMessage = containerPublisher.getMessageFactory().createContainerMessage(requestEvent.getSubject());
containerMessage.setDoNotAuthenticate(true);

@Override
public void onRequest(RequestEvent requestEvent) {
if (requestEvent.getSubject().equals("/TEMPLATE/CONTAINER/ALL")) {
ContainerMessage containerMessage = publisher.getMessageFactory().createContainerMessage(requestEvent.getSubject());
containerMessage.setDoNotAuthenticate(true);

for (int i = 0; i < NUM_CONSTITUENTS; i++) {
containerMessage.addElement("/TEMPLATE/CONTAINERROW_" + i);
}

for (int i = 0; i < NUM_CONSTITUENTS; i++) {
containerMessage.addElement("/TEMPLATE/CONTAINERROW_" + i);
containerMessage.setImage(true);
containerPublisher.publishInitialMessage(containerMessage);
}

containerMessage.setImage(true);
publisher.publishInitialMessage(containerMessage);
} else if (requestEvent.getSubject().startsWith("/TEMPLATE/CONTAINERROW")) {
RecordType1Message message = publisher.getMessageFactory().createRecordType1Message(requestEvent.getSubject());

message.setImage(true);
publisher.publishInitialMessage(message);
} else if (requestEvent.getSubject().equals("/TEMPLATE/TYPE2/ALL")) {
for (int i = 0; i < NUM_CONSTITUENTS; i++) {
@Override
public void onDiscard(DiscardEvent discardEvent) {}
});

RecordType2Message type2Message = publisher.getMessageFactory().createRecordType2Message(requestEvent.getSubject(), "TYPE2_KEY", String.valueOf(i));

if (i == 0) {
type2Message.setImage(true);
publisher.publishInitialMessage(type2Message);
} else {
publisher.publishToSubscribedPeers(type2Message);
}
rowPublisher = dataSource.createActivePublisher(new PrefixNamespace("/TEMPLATE/CONTAINER/CONTAINERROW"), new DataProvider() {
@Override
public void onRequest(RequestEvent requestEvent) {
GenericMessage updateMessage = rowPublisher.getMessageFactory().createGenericMessage(requestEvent.getSubject());
updateMessage.setField("currentTime", String.valueOf(System.currentTimeMillis()));
rowPublisher.publishInitialMessage(updateMessage);
}
} else {
dataSource.getLogger().log(Level.INFO, "Unknown subject " + requestEvent.getSubject());
}

@Override
public void onDiscard(DiscardEvent discardEvent) {}
});
}

@Override
public void onDiscard(DiscardEvent discardEvent) {}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package com.caplin.template.type2;

import com.caplin.datasource.DataSource;
import com.caplin.datasource.messaging.record.RecordType2Message;
import com.caplin.datasource.namespace.PrefixNamespace;
import com.caplin.datasource.publisher.ActivePublisher;
import com.caplin.datasource.publisher.DataProvider;
import com.caplin.datasource.publisher.DiscardEvent;
import com.caplin.datasource.publisher.RequestEvent;

public class Type2DataProvider {

private static final int NUM_CONSTITUENTS = 50;

private final DataSource dataSource;

private ActivePublisher publisher;

public Type2DataProvider(DataSource dataSource) {
this.dataSource = dataSource;
}

public void initialise() {
publisher = dataSource.createActivePublisher(new PrefixNamespace("/TEMPLATE/TYPE2/ALL"), new DataProvider() {
@Override
public void onRequest(RequestEvent requestEvent) {
for (int i = 0; i < NUM_CONSTITUENTS; i++) {

RecordType2Message type2Message = publisher.getMessageFactory().createRecordType2Message(
requestEvent.getSubject(), "TYPE2_KEY", String.valueOf(i));

if (i == 0) {
type2Message.setImage(true);
publisher.publishInitialMessage(type2Message);
} else {
publisher.publishToSubscribedPeers(type2Message);
}
}
}

@Override
public void onDiscard(DiscardEvent discardEvent) {
// Handle discard
}
});
}
}