summaryrefslogtreecommitdiff
path: root/utils/LocIpc.h
diff options
context:
space:
mode:
authorKevin Tang <zhikait@codeaurora.org>2018-01-15 10:18:49 -0800
committerKevin Tang <zhikait@codeaurora.org>2018-01-15 10:18:49 -0800
commit4cac1baf97d8b5e953cdcc55a3ec9bc26052e52c (patch)
tree871aa667dc78cfb76a744db19b27438b5c76fe0b /utils/LocIpc.h
parentc98dcaa84072a901167d0083fc3fef6b98077052 (diff)
downloadgps-4cac1baf97d8b5e953cdcc55a3ec9bc26052e52c.tar.gz
LocIpc: enhance startListeningNoBlocking with ready callback
For startListeningNoBlocking, for callers that need to know when the socket is actually being created and ready to receive message, this change allows callback to be invoked when socket is ready. Change-Id: Ie7c6eb1a3966371d84fc98109f07805ac7d4e3a1 CRs-fixed: 2169568
Diffstat (limited to 'utils/LocIpc.h')
-rw-r--r--utils/LocIpc.h25
1 files changed, 15 insertions, 10 deletions
diff --git a/utils/LocIpc.h b/utils/LocIpc.h
index 8bc13b7..738d4fb 100644
--- a/utils/LocIpc.h
+++ b/utils/LocIpc.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017 The Linux Foundation. All rights reserved.
+/* Copyright (c) 2017-2018 The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
@@ -66,15 +66,6 @@ public:
// Stop listening to new messages.
void stopListening();
- // Callback function for receiving incoming messages.
- // Override this function in your derived class to process incoming messages.
- // For each received message, this callback function will be called once.
- // This callback function will be called in the calling thread of startListeningBlocking
- // or in the new LocThread created by startListeningNonBlocking.
- //
- // Argument data contains the received message. You need to parse it.
- virtual void onReceive(const std::string& /*data*/) {}
-
// Send out a message.
// Call this function to send a message in argument data to socket in argument name.
//
@@ -84,6 +75,20 @@ public:
static bool send(const char name[], const std::string& data);
static bool send(const char name[], const uint8_t data[], uint32_t length);
+protected:
+ // Callback function for receiving incoming messages.
+ // Override this function in your derived class to process incoming messages.
+ // For each received message, this callback function will be called once.
+ // This callback function will be called in the calling thread of startListeningBlocking
+ // or in the new LocThread created by startListeningNonBlocking.
+ //
+ // Argument data contains the received message. You need to parse it.
+ inline virtual void onReceive(const std::string& /*data*/) {}
+
+ // LocIpc client can overwrite this function to get notification
+ // when the socket for LocIpc is ready to receive messages.
+ inline virtual void onListenerReady() {}
+
private:
static bool sendData(int fd, const sockaddr_un& addr,
const uint8_t data[], uint32_t length);