examples/ForumNokia/Symbian_OS_End-to-End_Sockets_API_Example/SocketTaskManager/engine/Request.cpp

00001 /*
00002  * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
00003  *    
00004  * Redistribution and use in source and binary forms, with or without
00005  * modification, are permitted provided that the following conditions are met:
00006  *    
00007  *  * Redistributions of source code must retain the above copyright notice, this
00008  *    list of conditions and the following disclaimer.
00009  *  * Redistributions in binary form must reproduce the above copyright notice,
00010  *    this list of conditions and the following disclaimer in the documentation
00011  *    and/or other materials provided with the distribution.
00012  *  * Neither the name of Nokia Corporation nor the names of its contributors
00013  *    may be used to endorse or promote products derived from this software
00014  *    without specific prior written permission.
00015  *    
00016  *    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
00017  *    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00018  *    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
00019  *    DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
00020  *    FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
00021  *    DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
00022  *    SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
00023  *    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
00024  *    OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
00025  *    OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00026  *    
00027  *    Description:  
00028  */
00029 
00030 
00031 // INCLUDE FILES
00032 #include "Request.h"
00033 #include "TaskManager.pan"
00034 
00035 // CONSTANTS
00036 _LIT(KLineEnd, "\n");
00037 _LIT(KSeparator, "#");
00038 
00039 _LIT(KFetchCommand, "fetch");
00040 _LIT(KMarkCommand, "mark");
00041 
00042 _LIT(KUnknownOperation, "Unknown operation!");
00043 
00044 // ================= MEMBER FUNCTIONS =======================
00045 
00046 // ----------------------------------------------------
00047 // CRequest::GetMessage()
00048 // Static parser function that returns a descriptor containing
00049 // a client message that the server end understands.
00050 // ----------------------------------------------------
00051 //      
00052 void TRequest::GetMessage( TDesC& aUsername, TDesC& aPassword,
00053                                TRequest::TOperationType aOperation,
00054                                TDesC& aId, TDes8& aMessage )
00055     {
00056         // A valid command string is built
00057         // Format: username#password#operation[#id]
00058     aMessage.Zero();
00059     
00060         aMessage.Append( aUsername );
00061         aMessage.Append( KSeparator );
00062         aMessage.Append( aPassword );
00063         aMessage.Append( KSeparator );
00064 
00065         switch( aOperation )
00066         {
00067                 case TRequest::EFetchTasks:
00068                 {
00069                         aMessage.Append( KFetchCommand );
00070                         break;
00071                 }
00072                 case TRequest::ETaskDone:
00073                 {
00074                         aMessage.Append( KMarkCommand );
00075                         aMessage.Append( KSeparator );
00076                 aMessage.Append( aId );
00077                         break;
00078                 }
00079                 default:
00080                 {
00081                         User::Panic( KUnknownOperation, ETaskManagerInvalidTask );
00082                 }
00083         }
00084         
00085         aMessage.Append( KLineEnd );
00086     }
00087 
00088 // End of file

Generated by  doxygen 1.6.2