Changeset 5001

Show
Ignore:
Timestamp:
09/10/07 11:13:06 (6 years ago)
Author:
jgaeddert
Message:

updating functionality of sound components

Location:
experimental/components/Sound/trunk/Sound-metadata
Files:
7 modified

Legend:

Unmodified
Added
Removed
  • experimental/components/Sound/trunk/Sound-metadata/Doxyfile

    r5000 r5001  
    1 # Doxyfile 1.4.6 
     1# Doxyfile 1.5.2 
    22 
    33# This file describes the settings to be used by the documentation system 
     
    1515#--------------------------------------------------------------------------- 
    1616 
     17# This tag specifies the encoding used for all characters in the config file that  
     18# follow. The default is UTF-8 which is also the encoding used for all text before  
     19# the first occurrence of this tag. Doxygen uses libiconv (or the iconv built into  
     20# libc) for the transcoding. See http://www.gnu.org/software/libiconv for the list of  
     21# possible encodings. 
     22 
     23DOXYFILE_ENCODING      = UTF-8 
     24 
    1725# The PROJECT_NAME tag is a single word (or a sequence of words surrounded  
    1826# by quotes) that should identify the project. 
    1927 
    20 PROJECT_NAME           = "Sound Card (Capture)" 
     28PROJECT_NAME           = "Sound Component Library" 
    2129 
    2230# The PROJECT_NUMBER tag can be used to enter a project or revision number.  
     
    4654# information to generate all constant output in the proper language.  
    4755# The default language is English, other supported languages are:  
    48 # Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish,  
    49 # Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese,  
    50 # Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian,  
    51 # Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish,  
    52 # Swedish, and Ukrainian. 
     56# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,  
     57# Croatian, Czech, Danish, Dutch, Finnish, French, German, Greek, Hungarian,  
     58# Italian, Japanese, Japanese-en (Japanese with English messages), Korean,  
     59# Korean-en, Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian,  
     60# Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian. 
    5361 
    5462OUTPUT_LANGUAGE        = English 
    55  
    56 # This tag can be used to specify the encoding used in the generated output.  
    57 # The encoding is not always determined by the language that is chosen,  
    58 # but also whether or not the output is meant for Windows or non-Windows users.  
    59 # In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES  
    60 # forces the Windows encoding (this is the default for the Windows binary),  
    61 # whereas setting the tag to NO uses a Unix-style encoding (the default for  
    62 # all platforms other than Windows). 
    63  
    64 USE_WINDOWS_ENCODING   = NO 
    6563 
    6664# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will  
     
    205203BUILTIN_STL_SUPPORT    = yes 
    206204 
     205# If you use Microsoft's C++/CLI language, you should set this option to YES to 
     206# enable parsing support. 
     207 
     208CPP_CLI_SUPPORT        = NO 
     209 
    207210# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC  
    208211# tag is set to YES, then doxygen will reuse the documentation of the first  
     
    460463# with spaces. 
    461464 
    462 INPUT                  = documentation.txt soundCardCapture.cpp soundCardCapture.h 
     465INPUT                  = documentation.txt \ 
     466                         src/ 
     467 
     468# This tag can be used to specify the character encoding of the source files that  
     469# doxygen parses. Internally doxygen uses the UTF-8 encoding, which is also the default  
     470# input encoding. Doxygen uses libiconv (or the iconv built into libc) for the transcoding.  
     471# See http://www.gnu.org/software/libiconv for the list of possible encodings. 
     472 
     473INPUT_ENCODING         = UTF-8 
    463474 
    464475# If the value of the INPUT tag contains directories, you can use the  
     
    496507 
    497508EXCLUDE_PATTERNS       =  
     509 
     510# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names  
     511# (namespaces, classes, functions, etc.) that should be excluded from the output.  
     512# The symbol name can be a fully qualified name, a word, or if the wildcard * is used,  
     513# a substring. Examples: ANamespace, AClass, AClass::ANamespace, ANamespace::*Test 
     514 
     515EXCLUDE_SYMBOLS        =  
    498516 
    499517# The EXAMPLE_PATH tag can be used to specify one or more files or  
     
    582600REFERENCES_RELATION    = YES 
    583601 
     602# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) 
     603# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from 
     604# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will 
     605# link to the source code.  Otherwise they will link to the documentstion. 
     606 
     607REFERENCES_LINK_SOURCE = YES 
     608 
    584609# If the USE_HTAGS tag is set to YES then the references to source code  
    585610# will point to the HTML generated by the htags(1) tool instead of doxygen  
     
    659684# stylesheet in the HTML output directory as well, or it will be erased! 
    660685 
    661 HTML_STYLESHEET        = 
     686HTML_STYLESHEET        =  
    662687 
    663688# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,  
     
    10791104CLASS_DIAGRAMS         = YES 
    10801105 
     1106# You can define message sequence charts within doxygen comments using the \msc  
     1107# command. Doxygen will then run the mscgen tool (see http://www.mcternan.me.uk/mscgen/) to  
     1108# produce the chart and insert it in the documentation. The MSCGEN_PATH tag allows you to  
     1109# specify the directory where the mscgen tool resides. If left empty the tool is assumed to  
     1110# be found in the default search path. 
     1111 
     1112MSCGEN_PATH            =  
     1113 
    10811114# If set to YES, the inheritance and collaboration graphs will hide  
    10821115# inheritance and usage relations if the target is undocumented  
     
    11441177CALL_GRAPH             = NO 
    11451178 
     1179# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then doxygen will  
     1180# generate a caller dependency graph for every global function or class method.  
     1181# Note that enabling this option will significantly increase the time of a run.  
     1182# So in most cases it will be better to enable caller graphs for selected  
     1183# functions only using the \callergraph command. 
     1184 
     1185CALLER_GRAPH           = NO 
     1186 
    11461187# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen  
    11471188# will graphical hierarchy of all classes instead of a textual one. 
     
    11731214DOTFILE_DIRS           =  
    11741215 
    1175 # The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width  
    1176 # (in pixels) of the graphs generated by dot. If a graph becomes larger than  
    1177 # this value, doxygen will try to truncate the graph, so that it fits within  
    1178 # the specified constraint. Beware that most browsers cannot cope with very  
    1179 # large images. 
    1180  
    1181 MAX_DOT_GRAPH_WIDTH    = 1024 
    1182  
    1183 # The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height  
    1184 # (in pixels) of the graphs generated by dot. If a graph becomes larger than  
    1185 # this value, doxygen will try to truncate the graph, so that it fits within  
    1186 # the specified constraint. Beware that most browsers cannot cope with very  
    1187 # large images. 
    1188  
    1189 MAX_DOT_GRAPH_HEIGHT   = 1024 
    1190  
    1191 # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the  
    1192 # graphs generated by dot. A depth value of 3 means that only nodes reachable  
    1193 # from the root by following a path via at most 3 edges will be shown. Nodes  
    1194 # that lay further from the root node will be omitted. Note that setting this  
    1195 # option to 1 or 2 may greatly reduce the computation time needed for large  
    1196 # code bases. Also note that a graph may be further truncated if the graph's  
    1197 # image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH  
    1198 # and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default),  
    1199 # the graph is not depth-constrained. 
    1200  
    1201 MAX_DOT_GRAPH_DEPTH    = 0 
     1216# The MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of  
     1217# nodes that will be shown in the graph. If the number of nodes in a graph  
     1218# becomes larger than this value, doxygen will truncate the graph, which is  
     1219# visualized by representing a node as a red box. Note that doxygen will always  
     1220# show the root nodes and its direct children regardless of this setting. 
     1221 
     1222DOT_GRAPH_MAX_NODES    = 50 
    12021223 
    12031224# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent  
  • experimental/components/Sound/trunk/Sound-metadata/src/SoundCapture.cpp

    r5000 r5001  
    2929 
    3030// Initializing constructor 
    31 SoundCapture_i::SoundCapture_i(char *uuid, char *label, char *profile, omni_condition *condition)  
    32   : Device_impl(uuid, label, profile), component_running(condition), isRunning(false) 
     31SoundCapture_i::SoundCapture_i(const char *uuid, omni_condition *condition) 
     32  : Resource_impl(uuid), component_running(condition) 
    3333{ 
    3434    DEBUG(3, SoundCapture, "constructor invoked") 
     
    4545SoundCapture_i::~SoundCapture_i() 
    4646{ 
    47  
     47    delete dataOut; 
    4848} 
    4949 
  • experimental/components/Sound/trunk/Sound-metadata/src/SoundCapture.h

    r5000 r5001  
    3333#include "ossie/cf.h" 
    3434#include "ossie/PortTypes.h" 
    35 #include "ossie/Device_impl.h" 
    3635#include "ossie/Resource_impl.h" 
    3736#include "ossie/debug.h" 
    3837 
    39 #include "standardinterfaces/complexShort.h" 
    4038#include "standardinterfaces/complexShort_u.h" 
    4139 
    4240#include <alsa/asoundlib.h> 
    4341 
    44 /// Main sound card device (capture) definition 
    45 class SoundCapture_i : public virtual Device_impl  
     42/// Main sound capture definition 
     43class SoundCapture_i : public virtual Resource_impl  
    4644{ 
    4745  public: 
     46    /// Initializing constructor 
     47    SoundCapture_i(const char *uuid, omni_condition *sem); 
     48 
    4849    /// Initializing constructor (old) 
    4950    SoundCapture_i(char *uuid, char* label, char* profile, omni_condition *condition); 
  • experimental/components/Sound/trunk/Sound-metadata/src/SoundPlayback.cpp

    r5000 r5001  
    2929#include <iostream> 
    3030 
    31 #include "ossie/cf.h" 
    32 #include "ossie/portability.h" 
    33  
    3431#include "SoundPlayback.h" 
    3532 
    3633// Initializing constructor 
    37 SoundPlayback_i::SoundPlayback_i(char *id, char *label, char *profile) 
    38   : Device_impl(id, label, profile), insert_idx(2), read_idx(0), length(0), data_available(&wait_for_data) 
     34SoundPlayback_i::SoundPlayback_i(const char *uuid, omni_condition *condition) 
     35    : Resource_impl(uuid), component_running(condition) 
    3936{ 
    4037    DEBUG(3, SoundPlayback, "constructor invoked") 
     38 
     39    // Create port for input sound samples 
     40    dataIn = new standardInterfaces_i::complexShort_p("bitsIn"); 
    4141 
    4242    // initialize variables 
     
    4444 
    4545    // Start the play_sound thread 
    46     sound_thread = new omni_thread(run, (void *) this); 
    47     sound_thread->start(); 
     46    processing_thread = new omni_thread(run, (void *) this); 
     47    processing_thread->start(); 
    4848} 
    4949 
     
    7777{ 
    7878    DEBUG(3, SoundPlayback, "getPort() invoked with : " << portName) 
     79 
     80    CORBA::Object_var p; 
     81 
     82    p = dataIn->getPort(portName); 
     83 
     84    if (!CORBA::is_nil(p)) 
     85        return p._retn(); 
     86 
     87    // Port not found; throw exception 
     88    throw CF::PortSupplier::UnknownPort(); 
     89 
    7990} 
    8091 
  • experimental/components/Sound/trunk/Sound-metadata/src/SoundPlayback.h

    r5000 r5001  
    2727*/ 
    2828 
     29#include <stdlib.h> 
    2930#include <omnithread.h> 
    3031#include <alsa/asoundlib.h> 
     
    3233#include "ossie/cf.h" 
    3334#include "ossie/PortTypes.h" 
     35#include "ossie/Resource_impl.h" 
    3436#include "ossie/debug.h" 
    3537 
    36 #include "soundControl.h" 
    37 #include "complexShort.h" 
     38#include "standardinterfaces/complexShort_p.h" 
    3839 
    39 #include "ossie/Device_impl.h" 
    40  
    41 /// Main Sound card device definition 
    42 class SoundPlayback_i : public virtual Device_impl 
    43  
     40/// Main sound playback definition 
     41class SoundPlayback_i : public virtual Resource_impl 
    4442{ 
    4543  public: 
    4644    /// Initializing constructor 
    47     SoundPlayback_i(char *id, char *label, char *profile); 
     45    SoundPlayback_i(const char *uuid, omni_condition *sem); 
    4846 
    4947    /// Default destructor 
     
    8381        throw (CF::LifeCycle::ReleaseError, CORBA::SystemException); 
    8482 
     83  private: 
     84    /// Disallowing default constructor 
     85    SoundPlayback_i(); 
     86 
     87    /// Disallowing copy constructor 
     88    SoundPlayback_i(SoundPlayback_i&); 
     89 
     90    /// Main processing playback loop 
     91    void play_sound(); 
     92 
     93    omni_condition *component_running; ///< for component shutdown 
     94    omni_thread *processing_thread;    ///< for component writer function 
     95 
     96    /// Port: input sound samples 
     97    standardInterfaces_i::complexShort_p *dataIn; 
     98 
    8599    // --- Sound playback variables --- 
    86100 
    87     /// 
    88101    snd_pcm_t *pcm_handle; 
    89  
    90     /// 
    91102    snd_pcm_uframes_t periodsize; 
    92103 
     
    99110    unsigned int length; 
    100111 
    101     /// Sound playback thread 
    102     omni_thread *sound_thread; 
    103  
    104   private: 
    105     /// Disallowing default constructor 
    106     SoundPlayback_i(); 
    107  
    108     /// Disallowing copy constructor 
    109     SoundPlayback_i(SoundPlayback_i&); 
    110  
    111     /// Main processing playback loop 
    112     void play_sound(); 
    113  
    114112}; 
    115113 
  • experimental/components/Sound/trunk/Sound-metadata/src/main_capture.cpp

    r5000 r5001  
    11/**************************************************************************** 
    22 
    3 Copyright 2005,2006 Virginia Polytechnic Institute and State University 
     3Copyright 2006 Virginia Polytechnic Institute and State University 
    44 
    5 This file is part of the OSSIE SoundCardCapture. 
     5This file is part of the OSSIE SoundCapture. 
    66 
    7 OSSIE SoundCardCapture is free software; you can redistribute it and/or modify 
     7OSSIE SoundCapture is free software; you can redistribute it and/or modify 
    88it under the terms of the GNU General Public License as published by 
    99the Free Software Foundation; either version 2 of the License, or 
    1010(at your option) any later version. 
    1111 
    12 OSSIE SoundCardCapture is distributed in the hope that it will be useful, 
     12OSSIE SoundCapture is distributed in the hope that it will be useful, 
    1313but WITHOUT ANY WARRANTY; without even the implied warranty of 
    1414MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
     
    1616 
    1717You should have received a copy of the GNU General Public License 
    18 along with OSSIE SoundCardCapture; if not, write to the Free Software 
     18along with OSSIE SoundCapture; if not, write to the Free Software 
    1919Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
    2020 
     
    2222 
    2323#include <iostream> 
    24 #include <string> 
    25  
    26 #include "ossie/debug.h" 
    2724#include "ossie/ossieSupport.h" 
    2825 
    29 #include "soundCardCapture.h" 
     26#include "SoundCapture.h" 
    3027 
    31 int main(int argc, char *argv[]) 
     28using namespace std; 
     29using namespace standardInterfaces;  // For standard OSSIE interface classes 
     30 
     31 
     32int main(int argc, char* argv[]) 
    3233 
    3334{ 
    34     ossieDebugLevel = 3; 
     35    ossieSupport::ORB *orb = new ossieSupport::ORB; 
     36    omni_mutex component_running_mutex; 
     37    omni_condition *component_running = new omni_condition(&component_running_mutex); 
    3538 
    36     ossieSupport::ORB* orbsup = new ossieSupport::ORB(); 
    37  
    38     char *id, *profile, *label; 
    39  
    40     if (argc != 4) { 
    41         std::cout << argv[0] << " : <identifier> <name> <SPD Profile>" << std::endl; 
    42         exit(-1); 
     39    if (argc != 3) { 
     40        cout << argv[0] << " <id> <usage name> " << endl; 
     41        exit (-1); 
    4342    } 
    4443 
    45     id = argv[1]; 
    46     label = argv[2]; 
    47     profile = argv[3]; 
     44    char *uuid = argv[1]; 
     45    char *label = argv[2]; 
    4846 
    49     DEBUG(1, SoundCardCapture, "Identifier = " << id << "Label = " << label << " Profile = " << profile) 
     47    cout << "Identifier - " << uuid << "  Label - " << label << endl; 
    5048 
     49    SoundCapture_i* soundcapture_servant; 
     50    CF::Resource_var soundcapture_var; 
    5151 
    52     // Create Executable device servant and object reference 
    53     SoundCardCapture_i* SoundCardCapture_servant; 
    54     CF::ExecutableDevice_var SoundCardCapture_var; 
     52    // Create the soundcapture component servant and object reference 
    5553 
    56     SoundCardCapture_servant = new SoundCardCapture_i(id, label, profile); 
    57     SoundCardCapture_var = SoundCardCapture_servant->_this(); 
     54    soundcapture_servant = new SoundCapture_i(uuid, component_running); 
     55    soundcapture_var = soundcapture_servant->_this(); 
    5856 
    59     // Add the object to the Naming Service 
    60     string objName = "DomainName1/"; 
    61     objName += label; 
     57    orb->bind_object_to_name((CORBA::Object_ptr) soundcapture_var, label); 
    6258 
    63     orbsup->bind_object_to_name((CORBA::Object_ptr) SoundCardCapture_var, objName.c_str()); 
     59    // This bit is ORB specific 
     60    // omniorb is threaded and the servants are running at this point 
     61    // so we block on the condition 
     62    // The releaseObject method clear the condition and the component exits 
    6463 
    65     // Start handling CORBA requests 
    66     orbsup->orb->run(); 
     64    component_running->wait(); 
     65    orb->unbind_name(label); 
     66    orb->orb->shutdown(0); 
     67 
    6768} 
  • experimental/components/Sound/trunk/Sound-metadata/src/main_playback.cpp

    r5000 r5001  
    33Copyright 2006 Virginia Polytechnic Institute and State University 
    44 
    5 This file is part of the OSSIE Sound_out Device. 
     5This file is part of the OSSIE SoundPlayback. 
    66 
    7 OSSIE Sound_out Device is free software; you can redistribute it and/or modify 
     7OSSIE SoundPlayback is free software; you can redistribute it and/or modify 
    88it under the terms of the GNU General Public License as published by 
    99the Free Software Foundation; either version 2 of the License, or 
    1010(at your option) any later version. 
    1111 
    12 OSSIE Sound_out Device is distributed in the hope that it will be useful, 
     12OSSIE SoundPlayback is distributed in the hope that it will be useful, 
    1313but WITHOUT ANY WARRANTY; without even the implied warranty of 
    1414MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
     
    1616 
    1717You should have received a copy of the GNU General Public License 
    18 along with OSSIE Sound_out Device; if not, write to the Free Software 
     18along with OSSIE SoundPlayback; if not, write to the Free Software 
    1919Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
    20  
    2120 
    2221****************************************************************************/ 
     
    2524#include "ossie/ossieSupport.h" 
    2625 
    27 #include "soundCardPlayback.h" 
     26#include "SoundPlayback.h" 
    2827 
    2928using namespace std; 
     
    3433 
    3534{ 
    36     ossieDebugLevel = 3; 
     35    ossieSupport::ORB *orb = new ossieSupport::ORB; 
     36    omni_mutex component_running_mutex; 
     37    omni_condition *component_running = new omni_condition(&component_running_mutex); 
    3738 
    38     ossieSupport::ORB *orb = new ossieSupport::ORB; 
    39  
    40     if (argc != 4) { 
    41         cout << argv[0] << " <identifier> <usage name> <software profile>" << endl; 
    42         exit (-1); 
     39    if (argc != 3) { 
     40        cout << argv[0] << " <id> <usage name> " << endl; 
     41        exit (-1); 
    4342    } 
    4443 
    45     char *id = argv[1]; 
     44    char *uuid = argv[1]; 
    4645    char *label = argv[2]; 
    47     char *profile = argv[3];  
    4846 
     47    cout << "Identifier - " << uuid << "  Label - " << label << endl; 
    4948 
    50     SoundCardPlayback_i* soundCardPlayback_servant; 
    51     CF::Device_var soundCardPlayback_var; 
     49    SoundPlayback_i* soundplayback_servant; 
     50    CF::Resource_var soundplayback_var; 
    5251 
    53     // Create the Sound Card device servant and object reference 
     52    // Create the soundplayback component servant and object reference 
    5453 
    55     soundCardPlayback_servant = new SoundCardPlayback_i(id, label, profile); 
    56     soundCardPlayback_var = soundCardPlayback_servant->_this(); 
     54    soundplayback_servant = new SoundPlayback_i(uuid, component_running); 
     55    soundplayback_var = soundplayback_servant->_this(); 
    5756 
    58     string objName = "DomainName1/"; 
    59     objName += label; 
    60     orb->bind_object_to_name((CORBA::Object_ptr) soundCardPlayback_var, objName.c_str()); 
     57    orb->bind_object_to_name((CORBA::Object_ptr) soundplayback_var, label); 
    6158 
    62     // Create control ports for sound in and out control 
     59    // This bit is ORB specific 
     60    // omniorb is threaded and the servants are running at this point 
     61    // so we block on the condition 
     62    // The releaseObject method clear the condition and the component exits 
    6363 
    64     soundOutControl_i* soundOutControl_servant; 
    65     audioOutControl_var soundOutControl_var; 
    66  
    67     soundOutControl_servant = new soundOutControl_i(); 
    68     soundOutControl_var = soundOutControl_servant->_this(); 
    69  
    70     soundInControl_i* soundInControl_servant; 
    71     audioInControl_var soundInControl_var; 
    72  
    73     soundInControl_servant = new soundInControl_i(); 
    74     soundInControl_var = soundInControl_servant->_this(); 
    75  
    76     objName = "DomainName1/"; 
    77     objName += "soundOutControl"; 
    78     orb->bind_object_to_name((CORBA::Object_ptr) soundOutControl_var, objName.c_str()); 
    79      
    80     objName = "DomainName1/"; 
    81     objName += "soundInControl"; 
    82     orb->bind_object_to_name((CORBA::Object_ptr) soundInControl_var, objName.c_str()); 
    83  
    84  
    85     // Create the ports for sound output data 
    86  
    87     soundOut_i* soundOut; 
    88  
    89     complexShort_var soundOut_var; 
    90  
    91     soundOut = new soundOut_i(soundCardPlayback_servant); 
    92     soundOut_var = soundOut->_this(); 
    93  
    94     objName = "DomainName1/"; 
    95     objName += "soundOut"; 
    96     orb->bind_object_to_name((CORBA::Object_ptr) soundOut_var, objName.c_str()); 
    97  
    98 #if 0 // Save for when I need to input from souncard 
    99     // Create the ports for RX Data 
    100  
    101     RX_data_i *rx_data_1; 
    102  
    103     CF::Port_var rx_data_1_var; 
    104  
    105     rx_data_1 = new RX_data_i(1); 
    106  
    107     rx_data_1_var = rx_data_1->_this(); 
    108  
    109     objName = "DomainName1/"; 
    110     objName += "RX_Data_1"; 
    111     orb->bind_object_to_name((CORBA::Object_var) rx_data_1_var, objName.c_str()); 
    112 #endif 
    113  
    114     // Start the orb 
    115     orb->orb->run(); 
     64    component_running->wait(); 
     65    orb->unbind_name(label); 
     66    orb->orb->shutdown(0); 
    11667 
    11768}