Asyncを同期に変換します -- c++ フィールド と asynchronous フィールド と synchronization フィールド 関連 問題

Transform async into sync












0
vote

問題

日本語

これは一般的な質問かもしれないことを知っていますが、私はこれを中心に頭を包み込もうとしています、そして私はそれを解決する方法がわからない。

前のSDKがそれを同期していたプロジェクトを持っていて、今度はそのSDKを非同期的に機能する新しいものと交換しようとしています。

私達は私達が私達のアプリケーションとSDKの間の中間地域として使ったラッパーを持っていました。アプリケーション「同期アプローチ」の観点から保存しなければなりません。ここで、それらがブロックされ、応答/データを待ちます。

新しいAsync SDKには、要求IDに基づいて、私たちがした各要求に対して通知されるメインコールバックスレッドがあります。

今、このASYNC呼び出しをSDKへの呼び出しをするための良い方法を把握しようとしています。その後、一定時間期限切れ/コマンドの結果が受信され、コールバックスレッドで受信された結果を返します。申請書に情報を渡すために、要求が行われた場所に? また、SDKが異なるため、複数のSDK APIを呼び出す必要があるのと同じデータを取得することがあります。

問題の解決方法について、いくつかのアイデアやこの特定の事件についていくつかの文書がある場合は感謝します。

事前にありがとうございました。

次のコードを持っていると言うことができます:

<事前> <コード> bool DeviceService::getDeviceInformation (DeviceInfo& devInfo) const { if(CM2MWSession::getInstance().isInit()) { NOTIFICATION_REQUEST_DATA rqst; rqst.sender_id = CM2MWSession::getInstance().getClientId(); get_serial_number(&rqst,NULL)) get_sim_serial_number(&rqst,NULL)) } }

get_serial_number get_sim_serial_number は、SDKへの非同期呼び出しです。

GetDeviceInformation は、Aplication側から呼び出された方法です。

メインコールバックはこのようなものに見えます:

<事前> <コード> mainCallback(REQUEST_DATA *rqst_data, uint32 size, void *data)

ここでは、要求タイプごとに rqst_data- gt; feat_idを受け取ります。 ここから、私たちはどういうわけかこのコールバックによって返されたデータで getDeviceInfo に戻る必要があります。

英語

I know that this might be a generic question, but I am trying to wrap my head around this and I don't know how to solve it.

We have a project where the previous sdk had sync calls to it and now we are trying to replace that sdk, with a new one that works asynchronously.

We also had a wrapper that we used as a middle ground between our application and the sdk. We have to keep from the perspective of the applications "the sync aproach", where they block and wait response/data.

The new async SDK has a main callback thread where we get notified for each request that we did based on the request ID.

So now I am trying to figure out a good way of making this async calls to the sdk, and afterwards block somehow until a certain time expired/the result of the command is received and return the results received on the callback thread back to where the request was made, in order to pass the information to the applications ? Also because the sdks are different, sometimes to get the same data we need to call multiple sdk apis.

I would be grateful if you have some ideas or some documentation on this specific case on how to solve the issue.

Thank you very much in advance.

Lets say we have the following code:

bool DeviceService::getDeviceInformation (DeviceInfo& devInfo) const {     if(CM2MWSession::getInstance().isInit())     {          NOTIFICATION_REQUEST_DATA rqst;          rqst.sender_id = CM2MWSession::getInstance().getClientId();              get_serial_number(&rqst,NULL))             get_sim_serial_number(&rqst,NULL))     } } 

The get_serial_number and get_sim_serial_number are async calls to the sdk.

The getDeviceInformation is the method called from the aplication side.

The main callback looks something like this:

mainCallback(REQUEST_DATA *rqst_data, uint32 size, void *data) 

Here we receive an rqst_data->feat_id) for each request type. From here we have to somehow return to the getDeviceInfo with the data returned by this callback.

</div
        
   
   

回答リスト


関連する質問

0  しばらくの間、または状態が発生するまでスレッドを待つ  ( Wait in threads for some time or until condition occurs ) 
私はC ++でサービスを書いています、そして私は与えられた時間の間寝る必要があるスレッドをいくつか持っています。 これまでのところ、<コード> boost::this_thread::sleep_for は機能しますが、私は現在割り込みが必要です(たとえば、...

3  Google Gears - どんなレベルがサポートされていますか?  ( Google gears to what level is synchronization supported ) 
データ同期についてはいくつか質問があります。建築学、建築物、建築様式 これについて明確ではないようです: Google Gearsはデータの自動同期から提供していますか (クライアントからサーバーへのクライアントからクライアントへ)? 自動データ同期...

4  Javaマルチスレッドサーバーロジック、同期キーワード、問題  ( Java multi threaded server logic synchronized keyword issue ) 
私は、クライアント側スイングアプリケーション(メモ帳)を使用して、サーバーに接続するための多数の人々を許可するJavaでクライアントサーバーアプリケーションを作成しています。接続されると、各クライアントはメモ帳の制御を要求する必要があるため、それを編集してから...

7  ブロックレベルの同期  ( Block level synchronization ) 
同期に合格したパラメータの重要性は何ですか? <事前> <コード> synchronized ( parameter ) { } ブロックレベルの同期を達成するため。どこか私はコードのようなコードを見たのを見ました <事前> <コード> class te...

7  NetBeansのローカルファイルとリモートファイルの比較  ( Comparing local and remote files in netbeans ) 
NetBeansでローカル(FTP)ファイルを比較する方法はありますか? NetBeansでアップロード(およびダウンロード)コマンドがあります。私がやりたいことは、ダウンロードとアップロードを使用しているときに、内蔵比較ツールでローカルバージョンとリモー...

6  設定調整アルゴリズムの実装  ( Implementation of set reconciliation algorithm ) 
設定調整アルゴリズムの実装を探しています。問題は次のとおりです。異なるマシンに座っているいくつかの比較的コンパクトな値(例えば、UUIDまたはMD5 / SHA1 /何でも)で識別される要素を持つ2つのセットがあります。これらのセットは比較的少数の要素が異なり...

7  致命的なエラー:未定義の関数sem_get()への呼び出し  ( Fatal error call to undefined function sem get ) 
私はPHPに慣れています、そして私は私のWindows開発マシンの他の誰かから得たコードを実行しようとしています。私はPHP 5とApache 2.2をインストールしましたが、実行しようとすると、エラーが発生します。 <事前> <コード> Fatal erro...

3  Mercurial Repositoriesのコレクションを同期させる  ( Synchronizing a collection of mercurial repositories ) 
ネットワーク共有にMercurialリポジトリのコレクションを持っています。オフライン作業を有効にするには、私のラップトップ上でこのコレクションのローカルコピー、そして私がオンラインのときに2つを同期させる簡単な方法です。 このために、各ローカルリポジトリを対...

1  WebアプリのAPIによるマルチユーザーDropbox Sync  ( Multi user dropbox sync via api in web app ) 
私は、ファイル共有とAMPのためにドロップボックスアカウントを承認する機能をユーザーに提供したいWebアプリを持っています。同期 基本的に、3人のユーザーがいる場合:ユーザーA、ユーザーB、ユーザーCがある場合は、自分のアプリに自分のドロップボックスアカウント...

7  複数のデバイス上の同時Outlookのリマインダー  ( Simultaneous outlook reminders on multiple devices ) 
免責事項:これは実際にはプログラミングの質問ではありませんが、スタックオーバーフローに関する聴衆は、そこにあるほとんどの質問/回答サイトよりも答えがある可能性が高いと感じます。 あなたの質問を盗むために、私を許してください。ジョエルは戻ってきたときにPod...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有