The Media Kit Table of Contents     The Media Kit Index

BTimedEventQueue

Derived from: (none)

Declared in: be/media/TimedEventQueue.h

Library: libmedia.so

Allocation: Constructor only

Summary

 BTimedEventQueueクラスは、node内での一連のイベントをキューに入れる簡単な方法を提供します。あなたは、開始、停止及びseek要求を並べるために、また入ってきたデータのバッファを扱うために用意している間、それらを並べるためにこのクラスを使用することができます。それぞれのキューの要素はイベントが処理されるべき時間によってタグ付けされており、関数は扱われるべき次のイベントを探すために提供されます。

 
BTimedEventQueueのサブクラスを使用する必要はありませんが、それができない理由はありません。



Cleaning Up After Nodes

 それぞれのイベントは、イベントがキューから削除される際に、どんな特別な動作が行われる必要があるかを示す(自分自身に関連する)クリーンアップフラグを持ちます。もしこの値がB_NO_CLEANUPであれば、なにも行われません。もし値がB_RECYCLEであり、イベントがB_HANDLE_BUFFERイベントであれば、BTimedEventQueueはそのイベントに関連するバッファを自動的にリサイクルするでしょう。

 もしクリーンアップフラグがB_DELETEB_USER_CLEANUPまたはそれ以上の値であれば、クリーンアップフック関数が呼び出されます。あなたはイベントデータの削除を自分自身で扱うために、クリーンアップフック関数を実装し、確立することができます。そのフック関数は、cleanup_hookタイプです。

   typedef void (*cleanup_hook)(void *context, bigtime_t time, int32 what,
            void *pointer, uint32 pointerCleanup, int64 data);

 SetCleanupHook()を呼び出すことによって、下記のようにクリーンアップフック関数を指定できます。

   SetCleanupHook(MyCleanupFunction, contextPtr);

 contextPtrは、あなたがクリーンアップフック関数を使用するポインタであり、それは種類を問わずあなたが要求するデータを内包することができます。


Constructor and Destructor


BTimedEventQueue()

                                                         
  

BTimedEventQueue()

 新しくて中身が空の、時刻設定のあるイベントキュー(timed event queue)を初期化します。


~BTimedEventQueue()

                                                         
  

virtual ~BTimedEventQueue()

 キューを消去し、そのオブジェクトによって領域確保されていたメモリを解放します。


Member Functions


AddEvent()

                                                         
  

status_t AddEvent(const media_timed_event &event)

 キューに、指定されたeventを追加します。

RETURN CODES

B_OK. イベントが追加された。


DoForEach()

                                                         
  

status_t DoForEach(for_each_hook hook, void *context,
      bigtime_t time,
      time_direction direction,
      bool inclusive = true,
      int32 event = B_ANY_EVENT)

 キューにある指定したparameterに一致する各々のイベントに対して、hook関数が呼び出されます。contextポインタはフック関数に渡され、あなたのフック関数が要求するなにかを指し示すことになるでしょう。

 これによって、それぞれのnode(または、あるタイプの或いはある時間に起こった全てのnode)に於てキューをスキャンし、特定の動作を行うことの意味が提供されます。もし全てのイベントを処理したいなら、時間をB_INFINITE_TIMEOUTに指定し、directionをB_BEFORE_TIMEに指定することができます。

The hook function should return a queue_action value.

   queue_action MyHook(media_timed_event *event, void *context) {
      if (event->data == 0) {
         /* countdown finished, do something */
         return BTimedEventQueue::B_REMOVE_EVENT;
      }
      event->data--;
      return BTimedEventQueue::B_NO_ACTION;
   }

 この例では、もしイベント構造体のdataがゼロであれば、フック関数はイベントを処理します(そして戻る際にキューから削除されるできであることを示します)。

RETURN CODES

B_OK. イベントは処理された。


EventCount()

                                                         
  

int32 EventCount(void) const

 キューにあるイベント数を返します。


FindFirstMatch()

                                                         
  

const media_timed_event *FindFirstMatch(bigtime_t eventTime,
      time_direction direction,
      bool inclusive = true,
      int32 eventType = B_ANY_EVENT)

 与えられた特徴に一致する最初のイベントを、それぞれのキューから探します。この探索は、eventTimeで指定された時間から始まり、指定されたdirectionに進行します。

 もし全てのイベントをスキャンしたいなら、時間にB_INFINITE_TIMEOUTを、directionにB_BEFORE_TIMEを指定することができます。

 もし一致するイベントが見つからなければ、NULLが返されます。


FirstEvent() , FirstEventTime()

                                                         
  

const media_timed_event *FirstEvent(void) const

bigtime_t FirstEventTime(void) const

 FirstEvent()は、キューからイベントを削除せずに、キューの最初のイベントを返します。

 FirstEventTime()は、最初のイベントの生じる時間をマイクロ秒で返します。

RETURN CODES

B_OK. エラーは生じなかった。


FlushEvents()

                                                         
  

status_t FlushEvents(bigtime_t time, time_direction direction,
      bool inclusive = true,
      int32 event = B_ANY_EVENT)

 キューから指定されたイベントを消去します。イベントが消去されるtime、消去するイベント探すdirection、及び消去されるイベントのタイプを指定することで、どのイベントが消去されるかを指定します。

 もし全てのイベントを消去したいなら、時間にB_INFINITE_TIMEOUTを、そしてdirectionにB_BEFORE_TIMEを指定することができます。

RETURN CODES

B_OK. イベントは消去された。


HasEvents()

                                                         
  

bool HasEvents(void)

 もしキューにイベントがあれば、trueを返します。そうでなければfalseを返します。


LastEvent() , LastEventTime()

                                                         
  

const media_timed_event *LastEvent(void) const

bigtime_t LastEventTime(void) const

 LastEvent()は、キューからイベントを削除せずに、キューの最後のイベントを返します。

 LastEventTime()は、最後のイベントの生じる時間をマイクロ秒で返します。

RETURN CODES

B_OK. エラーは生じなかった。


RemoveEvent() , RemoveFirstEvent()

                                                         
  

status_t RemoveEvent(const media_timed_event *event)

status_t RemoveFirstEvent(const media_timed_event *outEvent = NULL)

 RemoveEvent()は、キューから指定されたeventを削除します。

 RemoveFirstEvent()は、キューから最初のイベントを削除します。もしoutEventNULLでなければ、指定されたバッファには削除されるイベントのコピーが格納されます。

RETURN CODES

B_OK. イベントは削除された。


SetCleanupHook()

                                                         
  

void SetCleanupHook(cleanup_hook hook, void *context)

 イベントがキューから削除される際に、イベントに対して呼び出されるフックによって指定されるクリーンアップフック関数を設定します。このフックは、B_DELETEB_USER_CLEANUPまたはそれ以上のcleanup_flagの値の場合のみイベントに対して呼び出されます。


Constants


cleanup_flag

Declared in: <be/media/TimedEventQueue.h>

Constant Description
B_NO_CLEANUP イベントがキューから削除される際にクリーンアップしてはいけない。
B_RECYCLE_BUFFER BTimedEventQueueは、バッファイベントがキューから削除される際にバッファをリサイクルしなければならない。
B_EXPIRE_TIMER イベントのdataフィールドで、TimerExpired()を呼び出す。
B_USER_CLEANUP ユーザ定義のクリーンアップタイプに対するベースの値。

 これらの値は、BTimedEventQueueがキューから削除される際にどう扱われるかを定義します。もしフラグがB_USER_CLEANUPまたはそれ以上の値であれば、クリーンアップフック関数はイベントが削除される際に呼び出されます。


event_type

Declared in: <be/media/TimedEventQueue.h>

Constant Description
B_NO_EVENT このタイプのバッファをプッシュしてはいけない。それは戻り値のみである。
B_ANY_EVENT このタイプのバッファをプッシュしてはいけない。それは検索にのみ使用される。
B_START 開始イベント。
B_STOP 停止イベント。
B_SEEK seekイベント。
B_WARP ワープイベント。
B_TIMER タイマーイベント。
B_HANDLE_BUFFER 取り扱うためにキューに入れられたバッファを表現する。このイベントのpointerは、BBufferオブジェクトへのポインタである。
B_DATA_STATUS データ状態イベントを表現する。
B_HARDWARE ハードウェアイベント。
B_PARAMETER バッファはparameterの値の変化を内包している。それをBControllable::ApplyParameterData()に渡しなさい。
B_USER_EVENT ユーザ定義のイベントに対するベースの値。

 これらの値は、BTimedEventQueueが扱うことのできるイベントのタイプを記述します。


queue_action

Declared in: <be/media/TimedEventQueue.h>

Constant Description
B_DONE DoForEach()のパスを終了させる。
B_NO_ACTION このイベントについてはなにも行わない。
B_REMOVE_EVENT イベントを削除する。
B_RESORT_QUEUE イベントが正しい順番に並んでいることを確実にするために、キューを再度ソートします。

 これらのキュー動作の値は、DoForEach()によって使用されるフック関数によって返されます。これらの値は、フックがイベントを処理した後に、DoForEach()がイベントに対してなにをすべきかを示します。


time_direction

Declared in: <be/media/TimedEventQueue.h>

Constant Description
B_ALWAYS 任意の時間に生じるイベントに一致する。
B_BEFORE_TIME 指定された時間より前に生じるイベントに一致する。
B_AT_TIME 指定された時間に生じるイベントに一致する。
B_AFTER_TIME 指定された時間より後に生じるイベントに一致する。

 これらの値は、時間の連続をどちらの方向に検索するかを示すために使用されます。


Defined Types


cleanup_hook

Declared in: <be/media/TimedEventQueue.h>

   
   typedef queue_action (*cleanup_hook)(media_timed_event *event, void *context);

 cleanup_hookタイプは、キューからイベントを削除している間に呼び出されるフック関数を定義するために使用されます。それはSetCleanupHook()の呼び出しによって設定されます。


for_each_hook

Declared in: <be/media/TimedEventQueue.h>

   
   typedef queue_action (*for_each_hook)(media_timed_event *event, void *context);

 for_each_hookタイプは、DoForEach()によって呼び出されるフック関数を定義するために使用されます。


media_timed_event

Declared in: <be/media/TimedEventQueue.h>

   
   struct media_timed_event {
      media_timed_event();
      media_timed_event(bigtime_t inTime, int32 inType);
      media_timed_event(bigtime_t inTime, int32 inType, void *inPointer,
               uint32 inCleanup);
      media_timed_event(bigtime_t inTime, int32 inType,
               void *inPointer, uint32 inCleanup,
               int32 inData, int64 inBigdata,
               char *inUserData, size_t dataSize = 0);
   
      media_timed_event(const media_timed_event &clone);
      void operator=(const media_timed_event &clone);
   
      ~media_timed_event();
   
      bigtime_t event_time;
      int32 type;
      void *pointer;
      uint32 cleanup;
      int32 data;
      int64 bigdata;
      char user_data[64];
      uint32 _reserved_media_timed_event_[8];
   };

 メディアイベントを記述します :


The Media Kit Table of Contents     The Media Kit Index


The Be Book,
...in lovely HTML...
for BeOS Release 5.

Copyright © 2000 Be, Inc. All rights reserved..