00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #include "ComplexClientAndServer.h"
00018 #include "ComplexServer.h"
00019 #include <e32svr.h>
00020 #include <e32uid.h>
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 CCountSubSession::CCountSubSession(CCountSession* aSession)
00031 : iSession(aSession)
00032 {
00033 }
00034
00035
00041 void CCountSubSession::SetFromStringL(const RMessage2& aMessage)
00042 {
00043
00044 TInt deslen = aMessage.GetDesLength(0);
00045
00046
00047 RBuf buffer;
00048
00049
00050 buffer.CreateL(deslen);
00051
00052
00053 buffer.CleanupClosePushL();
00054
00055
00056 aMessage.ReadL(0,buffer,0);
00057
00058
00059 if (buffer.Length() == 0)
00060 {
00061 User::Leave(ENonNumericString);
00062 }
00063
00064 TLex16 lexer;
00065
00066 lexer.Assign(buffer);
00067 while (!lexer.Eos())
00068 {
00069 TChar thechar;
00070
00071 thechar = lexer.Peek();
00072 if (!thechar.IsDigit())
00073 {
00074 User::Leave(ENonNumericString);
00075 }
00076 lexer.Inc();
00077 }
00078
00079
00080 lexer.Assign(buffer);
00081 if (lexer.Val(iCount))
00082 {
00083 User::Leave(ENonNumericString);
00084 }
00085
00086
00087 CleanupStack::PopAndDestroy();
00088 }
00089
00090
00094 void CCountSubSession::Increase()
00095 {
00096 iCount++;
00097 }
00098
00099
00103 void CCountSubSession::IncreaseBy(const RMessage2& aMessage)
00104 {
00105 iCount+=aMessage.Int0();
00106 }
00107
00108
00112 void CCountSubSession::Decrease()
00113 {
00114 iCount--;
00115 }
00116
00117
00121 void CCountSubSession::DecreaseBy(const RMessage2& aMessage)
00122 {
00123 iCount-=aMessage.Int0();
00124 }
00125
00126
00130 void CCountSubSession::Reset()
00131 {
00132 iCount=0;
00133 }
00134
00135
00140 void CCountSubSession::CounterValueL(const RMessage2& aMessage)
00141 {
00142 TPckgBuf<TInt> p(iCount);
00143 aMessage.WriteL(0,p);
00144 }
00145
00146