windowing/windowserver/nga/CLIENT/MWSCLI.CPP
changeset 36 01a6848ebfd7
parent 0 5d03bc08d59c
--- a/windowing/windowserver/nga/CLIENT/MWSCLI.CPP	Tue Feb 02 01:47:50 2010 +0200
+++ b/windowing/windowserver/nga/CLIENT/MWSCLI.CPP	Fri Apr 16 16:21:04 2010 +0300
@@ -1,4 +1,4 @@
-// Copyright (c) 1996-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 1996-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -28,14 +28,63 @@
 	{
 	}
 
-void MWsClientClass::Write(const TAny *aData1, TInt aLength1,const TAny *aData2, TInt aLength2,TUint aOpcode) const
+/**
+Writes data sent in aData1 of length aLength1 for the specifed aOpcode
+into wserv buffer. It also takes aLength2 paratmeter, which is the length of second data 
+that will be added using AppendData. This Function checks if current command and aLength2 
+can fit in the remaining buffer, if not then it does flush of previous command so that
+the current command can be set along with data of aLength2. 
+
+@param aData1 Data to be added to the buffer
+@param aLength1 Length of the data to be added to buffer
+@param aLength2 Length of second data that will(and must) be added using AppendData()
+@param aOpcode Opcode for the current command
+*/
+void MWsClientClass::Write(const TAny *aData1,TInt aLength1,TInt aLength2,TUint aOpcode) const
 	{
-	iBuffer->Write(iWsHandle,aOpcode,aData1,aLength1,aData2,aLength2);
+	Write(aData1,aLength1,NULL,aLength2,aOpcode);
 	}
 
-void MWsClientClass::Write(const TAny *aData1, TInt aLength1,TUint aOpcode) const
+/**
+Writes data sent in aData1 and aData2 of lengths aLength1 and aLength2 
+for the specifed aOpcode into wserv buffer. It also takes an TIpcArgs by which 
+you can send additional data. But one thing needs to be noted that if aIpcArgs 
+has some content then this function flushes the wserv buffer 
+
+@param aData1 Data to be added to the buffer
+@param aLength1 Length of the data to be added to buffer
+@param aData2 second Data to be added to the buffer
+@param aLength2 second Length of second data then can be added using AppendData()
+@param aOpcode Opcode for the current command
+@param aIpcArgs Additional data sent from client to server. It has default argument NULL.
+				And if some data is sent in aIpcArgs, it flushes wserv buffer.
+
+Note:Only second, third and fourth slot of IPC agrs can be used to send data 
+as first slot is used up for normal wserv buffer
+*/
+void MWsClientClass::Write(const TAny *aData1, TInt aLength1,const TAny *aData2, TInt aLength2,TUint aOpcode,const TIpcArgs* aIpcArgs/*=NULL*/) const
 	{
-	iBuffer->Write(iWsHandle,aOpcode,aData1,aLength1);
+	iBuffer->Write(iWsHandle,aOpcode,aData1,aLength1,aData2,aLength2,aIpcArgs);
+	}
+
+/**
+Writes data sent in aData1 of length aLength1 for the specifed aOpcode 
+into wserv buffer. It also takes an TIpcArgs by which you can send additional data. 
+But one thing needs to be noted that if aIpcArgs has some content then this 
+function flushes the wserv buffer 
+
+@param aData1 Data to be added to the buffer
+@param aLength1 Length of the data to be added to buffer
+@param aOpcode Opcode for the current command
+@param aIpcArgs Additional data sent from client to server. It has default argument NULL.
+				And if some data is sent in aIpcArgs, it flushes wserv buffer
+
+Note:Only second, third and fourth slot of IPC agrs can be used to send data 
+as first slot is used up for normal wserv buffer				
+*/
+void MWsClientClass::Write(const TAny *aData, TInt aLength, TUint aOpcode, const TIpcArgs* aIpcArgs/*=NULL*/) const
+	{
+	iBuffer->Write(iWsHandle,aOpcode,aData,aLength,aIpcArgs);
 	}
 
 void MWsClientClass::Write(TUint aOpcode) const
@@ -63,6 +112,31 @@
 	Write(&aSize,sizeof(aSize),aOpcode);
 	}
 
+/**
+Appends data directly to wserv buffer for the current command. So this function 
+should be used after adding the current command.
+Typically this function is used in conjunction with  
+MWsClientClass::Write(const TAny *aData1,TInt aLength1,TInt aLength2,TUint aOpcode)
+Please see its description for more details.  
+
+@param aData Data to be added to the buffer
+@param aLength Length of the data to be added to buffer. Make sure that its length
+		is less than availabe buffer.
+@param aFinished EFalse, adds data to buffer and disables flushing(notfies that more data is pending to be added)
+				 ETrue, adds data to buffer and enables flushing(Signals that this is the last bit of data to be added)
+
+Notes:
+1. The total length of all data added by using this API(by one or more calls) must be less then(See note 3)or 
+same as aLength2 passed in earlier call to MWsClientClass::Write(const TAny *aData1,TInt aLength1,TInt aLength2,TUint aOpcode)
+2. When data is added using this API, it pads out buffer to multiple of 4 bytes so that 
+all strings added to the buffer will begin on a 4 byte boundary.
+3. If data added is less then the length passed to above Write API it works, but wastes buffer spaces. 
+*/
+void MWsClientClass::AppendData(const TAny *aData,TInt aLength,TBool aFinished)
+	{
+	iBuffer->AppendData(aData,aLength,aFinished);
+	}
+
 TInt MWsClientClass::WriteReply(TUint aOpcode,const TIpcArgs* aIpcArgs) const
 	{
 	return(iBuffer->WriteReply(iWsHandle,aOpcode,aIpcArgs));