00001 #!/usr/bin/env python 00002 # -*- coding: euc-jp -*- 00003 00004 ## 00005 # @file PublisherBase.py 00006 # @brief Publisher base class 00007 # @date $Date: 2007/09/05$ 00008 # @author Noriaki Ando <n-ando@aist.go.jp> 00009 # 00010 # Copyright (C) 2006-2008 00011 # Noriaki Ando 00012 # Task-intelligence Research Group, 00013 # Intelligent Systems Research Institute, 00014 # National Institute of 00015 # Advanced Industrial Science and Technology (AIST), Japan 00016 # All rights reserved. 00017 00018 import OpenRTM_aist 00019 00020 00021 ## 00022 # @if jp 00023 # 00024 # @class PublisherBase 00025 # 00026 # @brief Publisher 基底クラス 00027 # 00028 # データ送出タイミングを管理して送出を駆動するPublisher* の基底クラス。 00029 # 各種 Publisher はこのクラスを継承して詳細を実装する。 00030 # 00031 # @since 0.4.0 00032 # 00033 # @else 00034 # 00035 # @class PublisherBase 00036 # 00037 # @brief Base class of Publisher. 00038 # 00039 # A base class of Publisher*. 00040 # Variation of Publisher* which implements details of Publisher 00041 # inherits this PublisherBase class. 00042 # 00043 # @endif 00044 class PublisherBase(OpenRTM_aist.DataPortStatus): 00045 """ 00046 """ 00047 00048 00049 ## 00050 # @if jp 00051 # @brief 設定初期化 00052 # 00053 # InPortConsumerの各種設定を行う。実装クラスでは、与えられた 00054 # Propertiesから必要な情報を取得して各種設定を行う。この init() 関 00055 # 数は、OutPortProvider生成直後および、接続時にそれぞれ呼ばれる可 00056 # 能性がある。したがって、この関数は複数回呼ばれることを想定して記 00057 # 述されるべきである。 00058 # 00059 # @param prop 設定情報 00060 # 00061 # @else 00062 # 00063 # @brief Initializing configuration 00064 # 00065 # This operation would be called to configure in initialization. 00066 # In the concrete class, configuration should be performed 00067 # getting appropriate information from the given Properties data. 00068 # This function might be called right after instantiation and 00069 # connection sequence respectivly. Therefore, this function 00070 # should be implemented assuming multiple call. 00071 # 00072 # @param prop Configuration information 00073 # 00074 # @endif 00075 ## virtual ReturnCode init(coil::Properties& prop) = 0; 00076 def init(self, prop): 00077 pass 00078 00079 ## virtual ReturnCode setConsumer(InPortConsumer* consumer) = 0; 00080 def setConsumer(self, consumer): 00081 pass 00082 00083 ## virtual ReturnCode setBuffer(BufferBase<cdrMemoryStream>* buffer) = 0; 00084 def setBuffer(self, buffer): 00085 pass 00086 00087 # virtual ReturnCode setListener(ConnectorInfo& info, 00088 # ConnectorListeners* listeners) = 0; 00089 def setListener(self, info, listeners): 00090 pass 00091 00092 # virtual ReturnCode write(const cdrMemoryStream& data, 00093 # unsigned long sec, 00094 # unsigned long usec) = 0; 00095 def write(self, data, sec, usec): 00096 pass 00097 00098 ## virtual bool isActive() = 0; 00099 def isActive(self): 00100 pass 00101 00102 ## virtual ReturnCode activate() = 0; 00103 def activate(self): 00104 pass 00105 00106 ## virtual ReturnCode deactivate() = 0; 00107 def deactivate(self): 00108 pass 00109 00110 00111 00112 ## 00113 # @if jp 00114 # 00115 # @brief Publisher を破棄する。 00116 # 00117 # 当該 Publisher を破棄する。 00118 # 当該 Publisher が不要になった場合に PublisherFactory から呼び出される。 00119 # 00120 # @else 00121 # 00122 # @brief Release the Publisher 00123 # 00124 # Release this Publisher. 00125 # When Publisher becomes unnecessary, this is invoked from 00126 # PublisherFactory. 00127 # 00128 # @endif 00129 # virtual void release(){} 00130 def release(self): 00131 pass 00132 00133 00134 publisherfactory = None 00135 00136 class PublisherFactory(OpenRTM_aist.Factory,PublisherBase): 00137 def __init__(self): 00138 OpenRTM_aist.Factory.__init__(self) 00139 pass 00140 00141 00142 def __del__(self): 00143 pass 00144 00145 00146 def instance(): 00147 global publisherfactory 00148 00149 if publisherfactory is None: 00150 publisherfactory = PublisherFactory() 00151 00152 return publisherfactory 00153 00154 instance = staticmethod(instance)