| /* | |
| * 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 */ |