SocketListener.h revision 8702bb17f40022e970e8acd40b348d074e39afc7
1168415b822cae1f8b54ef09c41c11a9b97b87f40San Mehat/* 2168415b822cae1f8b54ef09c41c11a9b97b87f40San Mehat * Copyright (C) 2008 The Android Open Source Project 3168415b822cae1f8b54ef09c41c11a9b97b87f40San Mehat * 4168415b822cae1f8b54ef09c41c11a9b97b87f40San Mehat * Licensed under the Apache License, Version 2.0 (the "License"); 5168415b822cae1f8b54ef09c41c11a9b97b87f40San Mehat * you may not use this file except in compliance with the License. 6168415b822cae1f8b54ef09c41c11a9b97b87f40San Mehat * You may obtain a copy of the License at 7168415b822cae1f8b54ef09c41c11a9b97b87f40San Mehat * 8168415b822cae1f8b54ef09c41c11a9b97b87f40San Mehat * http://www.apache.org/licenses/LICENSE-2.0 9168415b822cae1f8b54ef09c41c11a9b97b87f40San Mehat * 10168415b822cae1f8b54ef09c41c11a9b97b87f40San Mehat * Unless required by applicable law or agreed to in writing, software 11168415b822cae1f8b54ef09c41c11a9b97b87f40San Mehat * distributed under the License is distributed on an "AS IS" BASIS, 12168415b822cae1f8b54ef09c41c11a9b97b87f40San Mehat * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13168415b822cae1f8b54ef09c41c11a9b97b87f40San Mehat * See the License for the specific language governing permissions and 14168415b822cae1f8b54ef09c41c11a9b97b87f40San Mehat * limitations under the License. 15168415b822cae1f8b54ef09c41c11a9b97b87f40San Mehat */ 16168415b822cae1f8b54ef09c41c11a9b97b87f40San Mehat#ifndef _SOCKETLISTENER_H 17168415b822cae1f8b54ef09c41c11a9b97b87f40San Mehat#define _SOCKETLISTENER_H 18168415b822cae1f8b54ef09c41c11a9b97b87f40San Mehat 19fa644ffe944c01a9b00f8d7676d58394fabee285San Mehat#include <pthread.h> 20fa644ffe944c01a9b00f8d7676d58394fabee285San Mehat 21fa644ffe944c01a9b00f8d7676d58394fabee285San Mehat#include <sysutils/SocketClient.h> 22fa644ffe944c01a9b00f8d7676d58394fabee285San Mehat 23168415b822cae1f8b54ef09c41c11a9b97b87f40San Mehatclass SocketListener { 248702bb17f40022e970e8acd40b348d074e39afc7Robert Greenwalt bool mListen; 25fa644ffe944c01a9b00f8d7676d58394fabee285San Mehat const char *mSocketName; 268702bb17f40022e970e8acd40b348d074e39afc7Robert Greenwalt int mSock; 27fa644ffe944c01a9b00f8d7676d58394fabee285San Mehat SocketClientCollection *mClients; 28fa644ffe944c01a9b00f8d7676d58394fabee285San Mehat pthread_mutex_t mClientsLock; 29fa644ffe944c01a9b00f8d7676d58394fabee285San Mehat int mCtrlPipe[2]; 30fa644ffe944c01a9b00f8d7676d58394fabee285San Mehat pthread_t mThread; 318702bb17f40022e970e8acd40b348d074e39afc7Robert Greenwalt bool mUseCmdNum; 32168415b822cae1f8b54ef09c41c11a9b97b87f40San Mehat 33168415b822cae1f8b54ef09c41c11a9b97b87f40San Mehatpublic: 34cf9e1003ce69a2aea2c64cd82d54a0d3e8917dbbDavid 'Digit' Turner SocketListener(const char *socketName, bool listen); 358702bb17f40022e970e8acd40b348d074e39afc7Robert Greenwalt SocketListener(const char *socketName, bool listen, bool useCmdNum); 36fa644ffe944c01a9b00f8d7676d58394fabee285San Mehat SocketListener(int socketFd, bool listen); 37168415b822cae1f8b54ef09c41c11a9b97b87f40San Mehat 38c4a895b7094461c98101924cf096680bfb7856f1San Mehat virtual ~SocketListener(); 39fa644ffe944c01a9b00f8d7676d58394fabee285San Mehat int startListener(); 40fa644ffe944c01a9b00f8d7676d58394fabee285San Mehat int stopListener(); 41fa644ffe944c01a9b00f8d7676d58394fabee285San Mehat 42db017545796747115b8797f03e662b0f398a7c7bSan Mehat void sendBroadcast(int code, const char *msg, bool addErrno); 43168415b822cae1f8b54ef09c41c11a9b97b87f40San Mehat 44168415b822cae1f8b54ef09c41c11a9b97b87f40San Mehatprotected: 45fa644ffe944c01a9b00f8d7676d58394fabee285San Mehat virtual bool onDataAvailable(SocketClient *c) = 0; 46fa644ffe944c01a9b00f8d7676d58394fabee285San Mehat 47fa644ffe944c01a9b00f8d7676d58394fabee285San Mehatprivate: 48fa644ffe944c01a9b00f8d7676d58394fabee285San Mehat static void *threadStart(void *obj); 49fa644ffe944c01a9b00f8d7676d58394fabee285San Mehat void runListener(); 508702bb17f40022e970e8acd40b348d074e39afc7Robert Greenwalt void init(const char *socketName, int socketFd, bool listen, bool useCmdNum); 51168415b822cae1f8b54ef09c41c11a9b97b87f40San Mehat}; 52168415b822cae1f8b54ef09c41c11a9b97b87f40San Mehat#endif 53