/*
* DDS (Data Distribution Service) for JacORB
*
* Copyright (C) 2005-2012 Gerald Brose / The JacORB Team.
* allaoui <fouad.allaoui@gmail.com>, Didier Donsez (didier.donsez@ieee.org)
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
* 02111-1307, USA.
*
* Coontact: Ahmed yehdih <ahmed.yehdih@gmail.com>, fouad allaoui
* <fouad.allaoui@gmail.com>, Didier Donsez (didier.donsez@ieee.org)
* Contributor(s)
*
**/
package demo.dds.dcps.foosample;
import org.omg.CORBA.ORB;
import org.omg.CosNaming.NamingContextExt;
import org.omg.CosNaming.NamingContextExtHelper;
import org.omg.dds.DataReader;
import org.omg.dds.DataReaderListener;
import org.omg.dds.DataReaderListenerHelper;
import org.omg.dds.DataReaderQos;
import org.omg.dds.DeadlineQosPolicy;
import org.omg.dds.DestinationOrderQosPolicy;
import org.omg.dds.DestinationOrderQosPolicyKind;
import org.omg.dds.DomainParticipant;
import org.omg.dds.DomainParticipantFactory;
import org.omg.dds.DomainParticipantFactoryHelper;
import org.omg.dds.DomainParticipantQos;
import org.omg.dds.DurabilityQosPolicy;
import org.omg.dds.DurabilityQosPolicyKind;
import org.omg.dds.Duration_t;
import org.omg.dds.EntityFactoryQosPolicy;
import org.omg.dds.GroupDataQosPolicy;
import org.omg.dds.HistoryQosPolicy;
import org.omg.dds.HistoryQosPolicyKind;
import org.omg.dds.LatencyBudgetQosPolicy;
import org.omg.dds.LifespanQosPolicy;
import org.omg.dds.LivelinessQosPolicy;
import org.omg.dds.LivelinessQosPolicyKind;
import org.omg.dds.OwnershipQosPolicy;
import org.omg.dds.OwnershipQosPolicyKind;
import org.omg.dds.LivelinessQosPolicyKind;
import org.omg.dds.PartitionQosPolicy;
import org.omg.dds.ReaderDataLifecycleQosPolicy;
import org.omg.dds.ResourceLimitsQosPolicy;
import org.omg.dds.ReliabilityQosPolicy;
import org.omg.dds.ReliabilityQosPolicyKind;
import org.omg.dds.Subscriber;
import org.omg.dds.SubscriberQos;
import org.omg.dds.TimeBasedFilterQosPolicy;
import org.omg.dds.TopicDataQosPolicy;
import org.omg.dds.TopicQos;
import org.omg.dds.TransportPriorityQosPolicy;
import org.omg.dds.UserDataQosPolicy;
import org.omg.PortableServer.POA;
import org.omg.PortableServer.POAHelper;
/**
* Simple example : Receive a Foo data (Integer)
*/
public class FooConsumer implements Runnable {
private String[] args ;
/**
* @param args
*/
public static void main(String[] args) {
FooConsumer fooConsumer = new FooConsumer() ;
fooConsumer.setArgs(args);
new Thread(fooConsumer).start();
}
/**
*
*/
public void run() {
try {
// create and initialize the ORB
ORB orb = ORB.init(args,null);
POA poa = POAHelper.narrow(orb.resolve_initial_references("RootPOA"));
poa.the_POAManager().activate();
DomainParticipantFactory domainparticipantFactory ;
DomainParticipant domainparticipant ;
Subscriber suscriber ;
FooDataReader foodatareader ;
DataReader datareader ;
org.omg.dds.Topic topic ;
SubscriberQos suscriberqos ;
DataReaderQos datareaderqos ;
org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService");
// Use NamingContextExt which is part of the Interoperable
// Naming Service (INS) specification.
NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);
// resolve the Object Reference in Naming
String rname = "DomainParticipantFactory";
byte tab[ ] = new byte [1];
tab[0] = 1 ;
UserDataQosPolicy UDQP = new UserDataQosPolicy(tab);
DomainParticipantQos DPQOS =
new DomainParticipantQos(UDQP,new EntityFactoryQosPolicy()) ;
domainparticipantFactory = DomainParticipantFactoryHelper.narrow(ncRef.resolve_str(rname));
TopicQos tq = new TopicQos(
new TopicDataQosPolicy(tab),
new DurabilityQosPolicy(
DurabilityQosPolicyKind.from_int(0),
new Duration_t(0,0)),
new DeadlineQosPolicy(new Duration_t(0,0)),
new LatencyBudgetQosPolicy(new Duration_t(0,0)),
new LivelinessQosPolicy(
LivelinessQosPolicyKind.from_int(0),
new Duration_t(0,0)),
new ReliabilityQosPolicy(
ReliabilityQosPolicyKind.from_int(0),
new Duration_t(0,0)),
new DestinationOrderQosPolicy(
DestinationOrderQosPolicyKind.from_int(0)),
new HistoryQosPolicy(
HistoryQosPolicyKind.from_int(0),0),
new ResourceLimitsQosPolicy(0,0,0),
new TransportPriorityQosPolicy(0),
new LifespanQosPolicy (new Duration_t(0,0)),
new OwnershipQosPolicy(
OwnershipQosPolicyKind.from_int(0)));
domainparticipant =
domainparticipantFactory.create_participant(0,DPQOS,null);
topic =
domainparticipant.create_topic("foo",
"demo.dds.dcps.foosample.Foo",
tq ,null);
String st [] = new String [1];
st[0] = "" ;
suscriberqos = new SubscriberQos(
new org.omg.dds.PresentationQosPolicy(
org.omg.dds.PresentationQosPolicyAccessScopeKind.from_int(0),
false ,false ),
new PartitionQosPolicy(st),
new GroupDataQosPolicy(tab),
new org.omg.dds.EntityFactoryQosPolicy(false));
suscriber = domainparticipant.create_subscriber(suscriberqos,null);
datareaderqos = new DataReaderQos(
new DurabilityQosPolicy(
DurabilityQosPolicyKind.from_int(0),
new Duration_t(0,0)),
new DeadlineQosPolicy(new Duration_t(0,0)),
new LatencyBudgetQosPolicy(new Duration_t(0,0)),
new LivelinessQosPolicy (
LivelinessQosPolicyKind.from_int(0),
new Duration_t(0,0)),
new ReliabilityQosPolicy(
ReliabilityQosPolicyKind.from_int(0),
new Duration_t(0,0)),
new DestinationOrderQosPolicy(
DestinationOrderQosPolicyKind.from_int(0)),
new HistoryQosPolicy(
HistoryQosPolicyKind.from_int(0),0),
new ResourceLimitsQosPolicy(0,0,0),
new UserDataQosPolicy(tab) ,
new TimeBasedFilterQosPolicy(new Duration_t(0,0)),
new ReaderDataLifecycleQosPolicy(new Duration_t(0,0)));
datareader = suscriber. create_datareader(topic,datareaderqos,null);
foodatareader = FooDataReaderHelper.narrow(datareader);
DataReaderListener listener =
DataReaderListenerHelper.narrow(poa.servant_to_reference(new FooDataReaderListenerImpl())) ;
if (foodatareader == null) {
System.out.println ("Unable to get FooDataReader reference");
return;
}
foodatareader.set_listener(listener,0);
orb.run();
}
catch(Exception e){
System.out.println(" ERROR : " + e);
e.printStackTrace();
}
}
public void end(){
Thread.currentThread().destroy();
}
/**
* @param args The args to set.
*/
public void setArgs(String[] args) {
this.args = args;
}
}