webengine/wmlengine/src/utils/include/nwx_msg_api.h
changeset 0 dd21522fd290
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/webengine/wmlengine/src/utils/include/nwx_msg_api.h	Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,136 @@
+/*
+* Copyright (c) 1999 - 2001 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+/*****************************************************************
+
+  Subsystem Name: Messaging
+  Version: V1.0
+  Description:
+    Provides interfaces to support messaging in a platform independent
+  manner. 
+
+  Messages are sent to a unique message Address. A NW_Msg_Address_t is used to 
+  identify the receipient of a message. It is an opaque data type.  
+  All receivers of messages must have a unique address.
+
+    An address is a 1-way communicate channel. To receive a response from a 
+  message the sender will also need to obtain a unique address of it's own 
+  and listen for responses. 
+
+  To send a message, the sender must first locate the reciever using the 
+  function NW_Msg_LookupReceiver(Name). This id is then made part of 
+  a NW_Msg_t structure. Also in that structure will be the senders address
+  (assuming a response is desired), and the message itself.
+
+    The RmMsgSend() function is called to send the message to the receiver.
+  This function will return KBrsrSuccess or an error code.
+
+     Messages are allocated by the sender and freed by the receiver.
+
+******************************************************************/
+#ifndef NWX_MSG_API_H
+#define NWX_MSG_API_H
+
+/*
+**----------------------------------------------------------------------
+** Preprocessor Macro Definitions
+**----------------------------------------------------------------------
+*/
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+**----------------------------------------------------------------------
+** Includes
+**----------------------------------------------------------------------
+*/
+#include "nwx_defs.h"
+#include "nwx_msg_types.h"
+#include "BrsrStatusCodes.h"
+
+/*
+**----------------------------------------------------------------------
+** Type Definitions
+**----------------------------------------------------------------------
+*/ 
+
+/* Messaging Data Types */
+typedef NW_Uint16 NW_Msg_Address_t;
+typedef NW_Uint16 NW_Msg_Type_t;
+typedef NW_Uint16 NW_Msg_RName_t;
+
+
+typedef struct _NW_Msg_t NW_Msg_t;
+
+struct _NW_Msg_t {
+  NW_Msg_t          *next;    /* the next node */
+  void              *data;    /* the content of the message */
+  NW_Uint16         tid;      /* transaction ID */
+  NW_Msg_Address_t  src;      /* source address */
+  NW_Msg_Address_t  dest;     /* destination address */
+  NW_Msg_Type_t     type;     /* set by the sender */
+  TBrowserStatusCode       status;   /* additional status data (see status.h) */
+};
+ 
+/*
+**----------------------------------------------------------------------
+** Global Function Declarations
+**----------------------------------------------------------------------
+*/
+
+/* 1-time initialization function */
+TBrowserStatusCode NW_Msg_Initialize(const char* qName);
+
+/* create a new message */
+NW_Msg_t *NW_Msg_New(const NW_Uint16 tid, const NW_Msg_Address_t src,
+                     const NW_Msg_Address_t dest, const NW_Msg_Type_t type);
+
+/* delete a message */
+void NW_Msg_Delete(NW_Msg_t *msg);
+
+/* send a message */
+TBrowserStatusCode NW_Msg_Send(NW_Msg_t *msg);
+
+/* return address of receiver */
+TBrowserStatusCode NW_Msg_LookupReceiverByName(const NW_Msg_RName_t name, 
+                                        NW_Msg_Address_t *addr); 
+
+/* return address of receiver */
+TBrowserStatusCode NW_Msg_GetThisReceiver(NW_Msg_Address_t *addr);
+
+/* reinitialize the fields of a message */
+void NW_Msg_Reinit(NW_Msg_t *msg, const NW_Uint16 tid, const NW_Msg_Address_t dest,
+                   const NW_Msg_Address_t src, const NW_Msg_Type_t type, 
+                   const TBrowserStatusCode status, void *data );
+
+/* Send a message back to previous source */
+TBrowserStatusCode NW_Msg_Reply(NW_Msg_t *msg, const NW_Msg_Type_t type);
+
+/* Send a message on to another destination */
+TBrowserStatusCode NW_Msg_Forward(NW_Msg_t *msg, const NW_Msg_Address_t dest, 
+                           const NW_Msg_Type_t type);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif  /* NWX_MSG_API_H */
+
+