Join Now
Quality Rating:
  • Currently 0.0 / 5
(0.0 / 5 - 0 votes cast)
Expertise Level:
  • Currently 0.0 / 5
(0.0 / 5 - 0 votes cast)

This page was last modified 04:41, 2 May 2008.

AIW ジェネリック・パラメータ(Generic Parameters) API

From Forum Nokia Wiki

英語版: AIW Generic Parameters API


Note!
このAPIは、SDKの標準には含まれていません。SDK API Plug-inに含まれています。


AIWジェネリック・パラメータAPI は、AIWコンシューマ・アプリケーションに、AIWジェネリック・パラメータを扱う方法を提供するために使用されます。ジェネリック・パラメータは、AIWコンシューマ(consumers)プロバイダ(providers)間でデータを転送するために使用されます。

使用例

AIWジェネリック・パラメータAPIは主に次のことに使用されます:

ベーシックな型のジェネリック・パラメータ・リストの作成

プロバイダ特有のオブジェクトのジェネリック・パラメータ・リストの作成


サンプル・コード

ベーシックな型のジェネリック・パラメータ・リストの作成 (訳注:「ベーシックな型」は、TBoolやTReal 等を意味しない)

このサンプル・コードは、どのようにしてジェネリック・パラメタ・リストを作成し、ファイル名(ディスクリプタ)とエラー・コード(整数)アイテムでそれを埋めるかを示します。これは、プロバイダ特有のオブジェクトを必要としないAIWプロバイダに、共通の型のパラメータを渡す方法です。

#include <AiwGenericParam.h>
// Create a list and put it into the cleanup stack.

CAiwGenericParamList* list = CAiwGenericParamList::NewLC();   // Set up and append file name parameter. _LIT(KMyFileName, "c:\\data\\testfile.txt"); TFileName filename(KMyFileName); TAiwGenericParam param(EGenericParamFile); param.Value().Set(filename); list->AppendL(param);   // Set up and append error code parameter. param.Reset(); param.SetSemanticId(EGenericParamError); param.Value().Set(KErrNotFound); list->AppendL(param);   // The list can now be passed e.g. by calling Service Handler's // ExecuteMenuCmdL() or ExecuteServiceCmdL().   // Pop and destroy the list when it is not needed anymore.

CleanupStack::PopAndDestroy(list);


一つのリストに、同じセマンティックidで複数のアイテムがあるかも知れません。 受け取ったアプリケーションは、CAiwGenericParamList の反復(iterator)メソッドを使って、リストのデータ・アイテムにアクセスします。

AIWフレームワークには、入力と出力のリストを作成するための便利なメソッドがあります。このリストを使うことで、コンシューマ・アプリケーションは、リストのヒープの割り当てと削除を行う必要はありません。唯一の制限は、入力と出力のリストそれぞれ一つずつのみリクエスト可能という点です。もし複数必要な場合、コンシューマ・アプリケーションは、自身でそれらを生成・削除しなければいけません。入力と出力リストを作成するメソッドは以下のように定義されています:


CAiwGenericParamList& CAiwServiceHandler::InParamListL();
CAiwGenericParamList& CaiwServiceHandler::OutParamListL();

プロバイダ特有のオブジェクトのジェネリック・パラメータ・リストの作成

コンシューマとプロバイダ間で、プロバイダ特有のクラスや構造体を転送する必要がある場合、ジェネリック・パラメータ・リストに追加する前に、それをTPtrC8 か TPckg を使ってシリアル化(直列化, serialize)する必要があります。このような種類のパラメータには、変数型id EVariantTypeDesC8 を使用します。AIWフレームワークは、ポインターを渡すことをサポートしていないことに注意してください。例題として、"Map and Navigation AIW プロバイダ"の文章を参照してください。


Example project

Image:AIWConsumerBasics.zip 

Related Discussions
Thread Thread Starter Forum Replies Last Post
S60 3rd Edition Device and Heap limitation! khurshed79 General Symbian C++ 6 2006-06-29 10:51
HTTP over GPRS slow? reaktori Mobile Java General 0 2003-03-31 14:44
How to manage time for sub threads novis Python 8 2008-03-27 03:29
Phone and Network Parameters Nokia_Archive Mobile Java General 4 2004-12-15 22:46
encypting data to be sent using HTTP (MIDP 1.0) dihex Mobile Java Networking & Messaging & Security 7 2005-10-27 20:16
 
Powered by MediaWiki