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