17f6b40d78b1976c78d1300e8a51fda36eeb50c5dPhil Burk/*
27f6b40d78b1976c78d1300e8a51fda36eeb50c5dPhil Burk * Copyright (C) 2017 The Android Open Source Project
37f6b40d78b1976c78d1300e8a51fda36eeb50c5dPhil Burk *
47f6b40d78b1976c78d1300e8a51fda36eeb50c5dPhil Burk * Licensed under the Apache License, Version 2.0 (the "License");
57f6b40d78b1976c78d1300e8a51fda36eeb50c5dPhil Burk * you may not use this file except in compliance with the License.
67f6b40d78b1976c78d1300e8a51fda36eeb50c5dPhil Burk * You may obtain a copy of the License at
77f6b40d78b1976c78d1300e8a51fda36eeb50c5dPhil Burk *
87f6b40d78b1976c78d1300e8a51fda36eeb50c5dPhil Burk *      http://www.apache.org/licenses/LICENSE-2.0
97f6b40d78b1976c78d1300e8a51fda36eeb50c5dPhil Burk *
107f6b40d78b1976c78d1300e8a51fda36eeb50c5dPhil Burk * Unless required by applicable law or agreed to in writing, software
117f6b40d78b1976c78d1300e8a51fda36eeb50c5dPhil Burk * distributed under the License is distributed on an "AS IS" BASIS,
127f6b40d78b1976c78d1300e8a51fda36eeb50c5dPhil Burk * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137f6b40d78b1976c78d1300e8a51fda36eeb50c5dPhil Burk * See the License for the specific language governing permissions and
147f6b40d78b1976c78d1300e8a51fda36eeb50c5dPhil Burk * limitations under the License.
157f6b40d78b1976c78d1300e8a51fda36eeb50c5dPhil Burk */
167f6b40d78b1976c78d1300e8a51fda36eeb50c5dPhil Burk
177f6b40d78b1976c78d1300e8a51fda36eeb50c5dPhil Burk
18a54f1283fdd9adbd64ecca4e14af56aaa0e8c825Eric Laurent#ifndef ANDROID_AUDIO_CLIENT_H
19a54f1283fdd9adbd64ecca4e14af56aaa0e8c825Eric Laurent#define ANDROID_AUDIO_CLIENT_H
207f6b40d78b1976c78d1300e8a51fda36eeb50c5dPhil Burk
2121da647792c0b78ab3943be0f32066015d5e8c34Eric Laurent#include <binder/Parcel.h>
22f14db3c3ebc1ea29b3eb5b7e9b944cabcb5f83ffEric Laurent#include <binder/Parcelable.h>
23a54f1283fdd9adbd64ecca4e14af56aaa0e8c825Eric Laurent#include <system/audio.h>
24a54f1283fdd9adbd64ecca4e14af56aaa0e8c825Eric Laurent#include <utils/String16.h>
257f6b40d78b1976c78d1300e8a51fda36eeb50c5dPhil Burk
26a54f1283fdd9adbd64ecca4e14af56aaa0e8c825Eric Laurentnamespace android {
27a54f1283fdd9adbd64ecca4e14af56aaa0e8c825Eric Laurent
28f14db3c3ebc1ea29b3eb5b7e9b944cabcb5f83ffEric Laurentclass AudioClient : public Parcelable {
29a54f1283fdd9adbd64ecca4e14af56aaa0e8c825Eric Laurent public:
30a54f1283fdd9adbd64ecca4e14af56aaa0e8c825Eric Laurent    AudioClient() :
3121da647792c0b78ab3943be0f32066015d5e8c34Eric Laurent        clientUid(-1), clientPid(-1), clientTid(-1), packageName("") {}
327f6b40d78b1976c78d1300e8a51fda36eeb50c5dPhil Burk
33a54f1283fdd9adbd64ecca4e14af56aaa0e8c825Eric Laurent    uid_t clientUid;
34a54f1283fdd9adbd64ecca4e14af56aaa0e8c825Eric Laurent    pid_t clientPid;
3521da647792c0b78ab3943be0f32066015d5e8c34Eric Laurent    pid_t clientTid;
36a54f1283fdd9adbd64ecca4e14af56aaa0e8c825Eric Laurent    String16 packageName;
3721da647792c0b78ab3943be0f32066015d5e8c34Eric Laurent
38f14db3c3ebc1ea29b3eb5b7e9b944cabcb5f83ffEric Laurent    status_t readFromParcel(const Parcel *parcel) override {
3921da647792c0b78ab3943be0f32066015d5e8c34Eric Laurent        clientUid = parcel->readInt32();
4021da647792c0b78ab3943be0f32066015d5e8c34Eric Laurent        clientPid = parcel->readInt32();
4121da647792c0b78ab3943be0f32066015d5e8c34Eric Laurent        clientTid = parcel->readInt32();
4221da647792c0b78ab3943be0f32066015d5e8c34Eric Laurent        packageName = parcel->readString16();
4321da647792c0b78ab3943be0f32066015d5e8c34Eric Laurent        return NO_ERROR;
4421da647792c0b78ab3943be0f32066015d5e8c34Eric Laurent    }
4521da647792c0b78ab3943be0f32066015d5e8c34Eric Laurent
46f14db3c3ebc1ea29b3eb5b7e9b944cabcb5f83ffEric Laurent    status_t writeToParcel(Parcel *parcel) const override {
4721da647792c0b78ab3943be0f32066015d5e8c34Eric Laurent        parcel->writeInt32(clientUid);
4821da647792c0b78ab3943be0f32066015d5e8c34Eric Laurent        parcel->writeInt32(clientPid);
4921da647792c0b78ab3943be0f32066015d5e8c34Eric Laurent        parcel->writeInt32(clientTid);
5021da647792c0b78ab3943be0f32066015d5e8c34Eric Laurent        parcel->writeString16(packageName);
5121da647792c0b78ab3943be0f32066015d5e8c34Eric Laurent        return NO_ERROR;
5221da647792c0b78ab3943be0f32066015d5e8c34Eric Laurent    }
537f6b40d78b1976c78d1300e8a51fda36eeb50c5dPhil Burk};
547f6b40d78b1976c78d1300e8a51fda36eeb50c5dPhil Burk
55a54f1283fdd9adbd64ecca4e14af56aaa0e8c825Eric Laurent}; // namespace android
567f6b40d78b1976c78d1300e8a51fda36eeb50c5dPhil Burk
57a54f1283fdd9adbd64ecca4e14af56aaa0e8c825Eric Laurent#endif  // ANDROID_AUDIO_CLIENT_H
58