/* * 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 org.jacorb.demo.dds.dcps.foosample; import java.util.Iterator; import java.util.Vector; import org.jacorb.dds.SubscriberImpl; import org.omg.dds.DataReaderListener; import org.omg.dds.DataReaderQos; import org.omg.dds.DataReaderQosHolder; import org.omg.dds.Duration_t; import org.omg.dds.InstanceHandleSeqHolder; import org.omg.dds.LivelinessChangedStatus; import org.omg.dds.PublicationBuiltinTopicDataHolder; import org.omg.dds.QueryCondition; import org.omg.dds.RETCODE_OK; import org.omg.dds.ReadCondition; import org.omg.dds.RequestedDeadlineMissedStatus; import org.omg.dds.RequestedIncompatibleQosStatus; import org.omg.dds.SampleInfoHolder; import org.omg.dds.SampleInfoSeqHolder; import org.omg.dds.SampleLostStatus; import org.omg.dds.SampleRejectedStatus; import org.omg.dds.StatusCondition; import org.omg.dds.Subscriber; import org.omg.dds.SubscriptionMatchStatus; import org.omg.dds.Topic; import org.omg.dds.TopicDescription; /** * DataReader is an abstract class. It must be specialized for each particular application * data-type . The additional methods that must be defined in the auto-generated class for * a hypothetical application type 'Foo'. */ public class FooDataReaderImpl extends FooDataReaderPOA { // represent the data stockage space of a dataReader private Vector Vector_Foo; private DataReaderQos qos; private DataReaderListener a_listener; private Subscriber SubParent; private Topic topic; private org.omg.CORBA.ORB orb; private org.omg.PortableServer.POA poa; private DataReaderListener _listener; /** * @param qos * @param a_listener * @param subParent * @param topic_name */ public FooDataReaderImpl(DataReaderQos qos, DataReaderListener a_listener, Subscriber subParent, Topic topic, org.omg.CORBA.ORB orb, org.omg.PortableServer.POA poa) { this.qos = qos; this.a_listener = a_listener; SubParent = subParent; this.topic = topic; Vector_Foo = new Vector(); this.orb = orb; this.poa = poa; } /** * @param received_data * @param info_seq * @param max_samples * @param sample_states * @param view_states * @param instance_states * @return */ public int read(FooSeqHolder received_data, SampleInfoSeqHolder info_seq, int max_samples, int sample_states, int view_states, int instance_states) { try { int i = 0; Foo tab[] = new Foo[getVector_Foo().size()]; Iterator it = getVector_Foo().iterator(); while (it.hasNext()) { tab[i] = (Foo) it.next(); i++; } received_data.value = tab; } catch (Exception e) { System.out.println("Error e = " + e); e.printStackTrace(); } return RETCODE_OK.value; } /** * @param received_data * @param info_seq * @param max_samples * @param sample_states * @param view_states * @param instance_states * @return */ public int take(FooSeqHolder received_data, SampleInfoSeqHolder info_seq, int max_samples, int sample_states, int view_states, int instance_states) { int i = 0; Foo tab[] = new Foo[getVector_Foo().size()]; Iterator it = getVector_Foo().iterator(); while (it.hasNext()) { tab[i] = (Foo) it.next(); i++; } received_data.value = tab; // remove all element from the vector clear(); return RETCODE_OK.value; } /** * Not Implemented */ public int read_w_condition(FooSeqHolder received_data, SampleInfoSeqHolder info_seq, int max_samples, ReadCondition a_condition) { return 0; } /** * Not Implemented */ public int take_w_condition(FooSeqHolder received_data, SampleInfoSeqHolder info_seq, int max_samples, ReadCondition a_condition) { return 0; } /** * Not Implemented */ public int read_next_sample(FooHolder received_data, SampleInfoHolder sample_info) { return 0; } /** * Not Implemented */ public int take_next_sample(FooHolder received_data, SampleInfoHolder sample_info) { return 0; } /** * Not Implemented */ public int read_instance(FooSeqHolder received_data, SampleInfoSeqHolder info_seq, int max_samples, int a_handle, int sample_states, int view_states, int instance_states) { return 0; } /** * Not Implemented */ public int take_instance(FooSeqHolder received_data, SampleInfoSeqHolder info_seq, int max_samples, int a_handle, int sample_states, int view_states, int instance_states) { return 0; } /** * Not Implemented */ public int read_next_instance(FooSeqHolder received_data, SampleInfoSeqHolder info_seq, int max_samples, int a_handle, int sample_states, int view_states, int instance_states) { return 0; } /** * Not Implemented */ public int take_next_instance(FooSeqHolder received_data, SampleInfoSeqHolder info_seq, int max_samples, int a_handle, int sample_states, int view_states, int instance_states) { return 0; } /** * Not Implemented */ public int read_next_instance_w_condition(FooSeqHolder received_data, SampleInfoSeqHolder info_seq, int max_samples, int a_handle, ReadCondition a_condition) { return 0; } /** * Not Implemented */ public int take_next_instance_w_condition(FooSeqHolder received_data, SampleInfoSeqHolder info_seq, int max_samples, int a_handle, ReadCondition a_condition) { return 0; } /** * Not Implemented */ public int return_loan(FooSeqHolder received_data, SampleInfoSeqHolder info_seq) { return 0; } /** * Not Implemented */ public int get_key_value(FooHolder key_holder, int handle) { return 0; } /** * Not Implemented */ public ReadCondition create_readcondition(int sample_states, int view_states, int instance_states) { return null; } /** * Not Implemented */ public QueryCondition create_querycondition(int sample_states, int view_states, int instance_states, String query_expression, String[] query_parameters) { return null; } /** * Not Implemented */ public int delete_readcondition(ReadCondition a_condition) { return 0; } /** * Not Implemented */ public int delete_contained_entities() { return 0; } /** * Not Implemented */ public int set_qos(DataReaderQos qos) { return 0; } /** * Not Implemented */ public void get_qos(DataReaderQosHolder qos) { } /** * @param a_listener * @param mask * @return */ public int set_listener(org.omg.dds.DataReaderListener a_listener, int mask) { try { this._listener = a_listener; } catch (Exception e) { System.out.println(" Exception e :" + e); e.printStackTrace(); } return 0; } /** * @return _listener */ public DataReaderListener get_listener() { return _listener; } /** * @return topic */ public TopicDescription get_topicdescription() { return topic; } /** * Not Implemented */ public Subscriber get_subscriber() { return null; } /** * Not Implemented */ public SampleRejectedStatus get_sample_rejected_status() { return null; } /** * Not Implemented */ public LivelinessChangedStatus get_liveliness_changed_status() { return null; } /** * Not Implemented */ public RequestedDeadlineMissedStatus get_requested_deadline_missed_status() { return null; } /** * Not Implemented */ public RequestedIncompatibleQosStatus get_requested_incompatible_qos_status() { return null; } /** * Not Implemented */ public SubscriptionMatchStatus get_subscription_match_status() { return null; } /** * Not Implemented */ public SampleLostStatus get_sample_lost_status() { return null; } /** * Not Implemented */ public int wait_for_historical_data(Duration_t max_wait) { return 0; } /** * Not Implemented */ public int get_matched_publications( InstanceHandleSeqHolder publication_handles) { return 0; } /** * Not Implemented */ public int get_matched_publication_data( PublicationBuiltinTopicDataHolder publication_data, int publication_handle) { return 0; } /** * Not Implemented */ public int enable() { return 0; } /** * Not Implemented */ public StatusCondition get_statuscondition() { return null; } /** * Not Implemented */ public int get_status_changes() { return 0; } /** * @param arg0 * @return */ public boolean add(Object arg0) { return Vector_Foo.add(arg0); } /** * */ public void clear() { Vector_Foo.clear(); } /** * @param arg0 * @return */ public boolean remove(Object arg0) { return Vector_Foo.remove(arg0); } /** * @return Returns the vector_Foo. */ public Vector getVector_Foo() { return Vector_Foo; } /** * @return Returns the a_listener. */ public DataReaderListener getA_listener() { return a_listener; } /** * @return Returns the qos. */ public DataReaderQos getQos() { return qos; } /** * @return Returns the subParent. */ public Subscriber getSubParent() { return SubParent; } /** * take instance of Foo from suscriber */ public void take_instance_from_subscriber() { try { SubscriberImpl Subscriber_Parent = (SubscriberImpl) _poa() .reference_to_servant(getSubParent()); add((Foo) Subscriber_Parent.getInstance()); } catch (Exception e) { } } }