20 package org.vortex.FACE;
    23 import java.util.concurrent.TimeUnit;
    24 import java.util.concurrent.TimeoutException;
    25 import java.util.concurrent.atomic.AtomicLong;
    26 import java.util.logging.Level;
    28 import org.omg.dds.core.AlreadyClosedException;
    29 import org.omg.dds.core.policy.PolicyFactory;
    30 import org.omg.dds.core.policy.Reliability;
    31 import org.omg.dds.pub.DataWriter;
    32 import org.omg.dds.pub.DataWriterQos;
    33 import org.omg.dds.pub.Publisher;
    34 import org.omg.dds.pub.PublisherQos;
    36 import FACE.CONNECTION_DIRECTION_TYPE;
    38 import FACE.VALIDITY_TYPE;
    41     private Publisher publisher = null;
    42     private DataWriter<TYPE> dataWriter = null;
    43     private final AtomicLong transactionid;
    46             Class<TYPE> dataType) {
    47         super(description,dataType);
    48         this.transactionid = 
new AtomicLong(0);
    49         this.setupPublisher();
    50         this.setupDataWriter();
    53     private void setupPublisher() {
    58                 qos.withPolicy(PolicyFactory
    62                 Set<String> names = qos.getPartition().getName();
    64                 if (names.size() == 1 && names.contains(
"")) {
    65                     qos = qos.withPolicy(qos.getPartition().withName(
    71         } 
catch (AlreadyClosedException e) {
    73         } 
catch (Exception exc) {
    80     private void setupDataWriter() {
    85                 qos = this.publisher.getDefaultDataWriterQos();
    88             this.dataWriter = this.publisher.createDataWriter(this.
getTopic());
    90         } 
catch (AlreadyClosedException e) {
    92         } 
catch (Exception exc) {
   101         return CONNECTION_DIRECTION_TYPE.SOURCE;
   107             if (this.dataWriter.getQos().getReliability().getKind() == Reliability.Kind.RELIABLE) {
   108                 long maxBlockingTime = this.dataWriter.getQos()
   109                         .getReliability().getMaxBlockingTime()
   110                         .getDuration(TimeUnit.NANOSECONDS);
   112                 if (timeout > maxBlockingTime) {
   114                             "Supplied time-out > DataWriterQos.reliability.max_blocking_time ("   115                                     + timeout + 
" > " + maxBlockingTime + 
").",
   119                     return RETURN_CODE_TYPE.INVALID_PARAM;
   123                 this.dataWriter.write(instanceData);
   124                 transaction_id.value = this.transactionid.incrementAndGet();
   126             } 
catch (AlreadyClosedException e) {
   128             } 
catch (TimeoutException e) {
   131                 return RETURN_CODE_TYPE.TIMED_OUT;
   133         } 
catch (AlreadyClosedException e) {
   135         } 
catch (Exception exc) {
   139             return RETURN_CODE_TYPE.CONNECTION_CLOSED;
   142         return RETURN_CODE_TYPE.NO_ERROR;
 void log(String message, Level level)
DomainParticipant getParticipant()
CONNECTION_DIRECTION_TYPE getDirection()
SourceConnection(ConnectionDescription description, Class< TYPE > dataType)
static Logger getInstance()
void setLastMessageValidity(VALIDITY_TYPE lastMessageValidity)
RETURN_CODE_TYPE sendMessage(TYPE instanceData, long timeout, us.opengroup.FACE.LongHolder transaction_id)
This is a typed class which will be generated by idlpp. 
PublisherQos getPublisherQos()
ConnectionDescription getDescription()
DataWriterQos getDataWriterQos()