| /* |
| * Copyright (C) 2007 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| /** |
| * IPC messaging library. |
| */ |
| |
| #ifndef __MQ_H |
| #define __MQ_H |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| /** A message. */ |
| typedef struct MqMessage MqMessage; |
| |
| /** A destination to which messages can be sent. */ |
| typedef struct MqDestination MqDestination; |
| |
| /* Array of bytes. */ |
| typedef struct MqBytes MqBytes; |
| |
| /** |
| * Hears messages. |
| * |
| * @param destination to which the message was sent |
| * @param message the message to hear |
| */ |
| typedef void MqMessageListener(MqDestination* destination, MqMessage* message); |
| |
| /** |
| * Hears a destination close. |
| * |
| * @param destination that closed |
| */ |
| typedef void MqCloseListener(MqDestination* destination); |
| |
| /** Message functions. */ |
| |
| /** |
| * Creates a new Message. |
| * |
| * @param header as defined by user |
| * @param body as defined by user |
| * @param replyTo destination to which replies should be sent, NULL if none |
| */ |
| MqMessage* mqCreateMessage(MqBytes header, MqBytes body, |
| MqDestination* replyTo); |
| |
| /** Sends a message to a destination. */ |
| void mqSendMessage(MqMessage* message, MqDestination* destination); |
| |
| /** Destination functions. */ |
| |
| /** |
| * Creates a new destination. Acquires a reference implicitly. |
| * |
| * @param messageListener function to call when a message is recieved |
| * @param closeListener function to call when the destination closes |
| * @param userData user-specific data to associate with the destination. |
| * Retrieve using mqGetDestinationUserData(). |
| */ |
| MqDestination* mqCreateDestination(MqMessageListener* messageListener, |
| MqCloseListener* closeListener, void* userData); |
| |
| /** |
| * Gets user data which was associated with the given destination at |
| * construction time. |
| * |
| * It is only valid to call this function in the same process that the |
| * given destination was created in. |
| * This function returns a null pointer if you call it on a destination |
| * created in a remote process. |
| */ |
| void* mqGetUserData(MqDestination* destination); |
| |
| /** |
| * Returns 1 if the destination was created in this process, or 0 if |
| * the destination was created in a different process, in which case you have |
| * a remote stub. |
| */ |
| int mqIsDestinationLocal(MqDestination* destination); |
| |
| /** |
| * Increments the destination's reference count. |
| */ |
| void mqKeepDestination(MqDesintation* destination); |
| |
| /** |
| * Decrements the destination's reference count. |
| */ |
| void mqFreeDestination(MqDestination* desintation); |
| |
| /** Registry API. */ |
| |
| /** |
| * Gets the destination bound to a name. |
| */ |
| MqDestination* mqGetDestination(char* name); |
| |
| /** |
| * Binds a destination to a name. |
| */ |
| void mqPutDestination(char* name, MqDestination* desintation); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* __MQ_H */ |