1 /*
2  * Copyright (C) 2019 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #include "Connection.h"
18 
19 #include "Entry.h"
20 
21 namespace android::inputdispatcher {
22 
Connection(const sp<InputChannel> & inputChannel,bool monitor)23 Connection::Connection(const sp<InputChannel>& inputChannel, bool monitor)
24       : status(STATUS_NORMAL),
25         inputChannel(inputChannel),
26         monitor(monitor),
27         inputPublisher(inputChannel),
28         inputPublisherBlocked(false) {}
29 
~Connection()30 Connection::~Connection() {}
31 
getWindowName() const32 const std::string Connection::getWindowName() const {
33     if (inputChannel != nullptr) {
34         return inputChannel->getName();
35     }
36     if (monitor) {
37         return "monitor";
38     }
39     return "?";
40 }
41 
getStatusLabel() const42 const char* Connection::getStatusLabel() const {
43     switch (status) {
44         case STATUS_NORMAL:
45             return "NORMAL";
46         case STATUS_BROKEN:
47             return "BROKEN";
48         case STATUS_ZOMBIE:
49             return "ZOMBIE";
50         default:
51             return "UNKNOWN";
52     }
53 }
54 
findWaitQueueEntry(uint32_t seq)55 DispatchEntry* Connection::findWaitQueueEntry(uint32_t seq) {
56     for (DispatchEntry* entry = waitQueue.head; entry != nullptr; entry = entry->next) {
57         if (entry->seq == seq) {
58             return entry;
59         }
60     }
61     return nullptr;
62 }
63 
64 } // namespace android::inputdispatcher
65