124 // ---------------------------------------------------------------------------------------- |
113 // ---------------------------------------------------------------------------------------- |
125 |
114 |
126 CDCMOServer::CDCMOServer() : CServer2(EPriorityStandard, EUnsharableSessions) /*CServer2(0)*/ |
115 CDCMOServer::CDCMOServer() : CServer2(EPriorityStandard, EUnsharableSessions) /*CServer2(0)*/ |
127 { |
116 { |
128 iStarter = EFalse; |
117 iStarter = EFalse; |
129 iNotifier = NULL; |
118 iMessageBox = NULL; |
130 } |
119 } |
131 |
120 |
132 // ---------------------------------------------------------------------------------------- |
121 // ---------------------------------------------------------------------------------------- |
133 // CDCMOServer::~CDCMOServer() |
122 // CDCMOServer::~CDCMOServer() |
134 // ---------------------------------------------------------------------------------------- |
123 // ---------------------------------------------------------------------------------------- |
135 CDCMOServer::~CDCMOServer() |
124 CDCMOServer::~CDCMOServer() |
136 { |
125 { |
137 RDEBUG("CDCMOServer::~CDCMOServer- begin"); |
126 RDEBUG("CDCMOServer::~CDCMOServer- begin"); |
138 TInt count = idcmoArray.Count(); |
127 TInt count = idcmoArray.Count(); |
139 RDEBUG_2("~~CDCMOServer::~CDCMOServer; %d", count ); |
128 RDEBUG_2("CDCMOServer::~CDCMOServer; %d", count ); |
140 if(count) |
129 if(count) |
141 { |
130 { |
142 for(TInt i=0; i< count; i++) |
131 for(TInt i=0; i< count; i++) |
143 delete idcmoArray[i].iCategoryName; |
132 delete idcmoArray[i].iCategoryName; |
144 idcmoArray.Reset(); |
133 idcmoArray.Reset(); |
145 delete iNotifier; |
134 delete iMessageBox; |
146 iNotifier = NULL; |
135 iMessageBox = NULL; |
147 } |
136 } |
148 |
137 else |
149 RLDEBUG("CDCMOServer::wipe done delete pluginuid()"); |
138 { |
150 TInt pluginObjectCount = ilawmoPlugins.Count(); |
139 //Kill the server |
151 while(pluginObjectCount>0) |
140 if( iSessionCount == 0) |
152 { |
141 CActiveScheduler::Stop(); |
153 RLDEBUG("plugin to be deleted"); |
142 } |
154 delete ilawmoPlugins[pluginObjectCount-1]; |
143 |
155 RLDEBUG("plugin deleted"); |
|
156 pluginObjectCount--; |
|
157 } |
|
158 RLDEBUG("CDCMOServer::close all RArrays()"); |
|
159 ilawmoPluginUidToBeWiped.Close(); |
|
160 |
|
161 RLDEBUG("CDCMOServer::closeD all RArrays()"); |
|
162 ilawmoPlugins.Close(); |
|
163 |
|
164 RDEBUG("CDCMOServer::call FinalClose"); |
|
165 REComSession::FinalClose(); |
144 REComSession::FinalClose(); |
166 RDEBUG("~~~CDCMOServer::~CDCMOServer- end"); |
145 RDEBUG("CDCMOServer::~CDCMOServer- end"); |
167 } |
146 } |
168 |
147 |
169 // ----------------------------------------------------------------------------- |
148 // ----------------------------------------------------------------------------- |
170 // CDCMOServer::DropSession() |
149 // CDCMOServer::DropSession() |
171 // ----------------------------------------------------------------------------- |
150 // ----------------------------------------------------------------------------- |
235 } |
210 } |
236 // ---------------------------------------------------------------------------------------- |
211 // ---------------------------------------------------------------------------------------- |
237 // CDCMOServer::GetAdapterUidL |
212 // CDCMOServer::GetAdapterUidL |
238 // Gets the plug-in adapter implementation uid if it present. |
213 // Gets the plug-in adapter implementation uid if it present. |
239 // ---------------------------------------------------------------------------------------- |
214 // ---------------------------------------------------------------------------------------- |
240 TUid CDCMOServer::GetAdapterUidL(const TDesC& aCategory, TBool aIsLawmo) |
215 TUid CDCMOServer::GetAdapterUidL(const TDesC& aCategory) |
241 { |
216 { |
242 RDEBUG("CDCMOServer::GetDCMOAdapterUidL(): begin"); |
217 RDEBUG("CDCMOServer::GetDCMOAdapterUidL(): begin"); |
243 RLDEBUG("CDCMOServer::GetAdapterUidL(): begin"); |
218 |
244 TUid retUid = {0x0}; |
219 TUid retUid = {0x0}; |
245 TEComResolverParams resolverParams; |
220 |
246 RImplInfoPtrArray infoArray; |
221 RImplInfoPtrArray infoArray; |
247 // Note that a special cleanup function is required to reset and destroy |
222 // Note that a special cleanup function is required to reset and destroy |
248 // all items in the array, and then close it. |
223 // all items in the array, and then close it. |
249 TCleanupItem cleanup(CleanupEComArray, &infoArray); |
224 TCleanupItem cleanup(CleanupEComArray, &infoArray); |
250 CleanupStack::PushL(cleanup); |
225 CleanupStack::PushL(cleanup); |
251 if(aIsLawmo) |
|
252 { |
|
253 REComSession::ListImplementationsL(KLAWMOPluginInterfaceUid, resolverParams, KRomOnlyResolverUid, infoArray); |
|
254 RLDEBUG("CDCMOServer::GetAdapterUidL(): listImpl"); |
|
255 } |
|
256 else |
|
257 REComSession::ListImplementationsL(KDCMOInterfaceUid, infoArray); |
226 REComSession::ListImplementationsL(KDCMOInterfaceUid, infoArray); |
258 |
227 |
259 // Loop through each info for each implementation |
228 // Loop through each info for each implementation |
260 TBuf8<KBufferSize> buf; |
229 TBuf8<KBufferSize> buf; |
261 RLDEBUG("CDCMOServer::GetAdapterUidL(): for loop"); |
|
262 for (TInt i=0; i< infoArray.Count(); i++) |
230 for (TInt i=0; i< infoArray.Count(); i++) |
263 { |
231 { |
264 buf = infoArray[i]->OpaqueData(); |
232 buf = infoArray[i]->OpaqueData(); |
265 TBuf8<KBufferSize> category; |
233 TBuf8<KBufferSize> category; |
266 category.Copy(aCategory); |
234 category.Copy(aCategory); |
267 if(category.Find(infoArray[i]->OpaqueData())!= KErrNotFound) |
235 if(category.Find(infoArray[i]->OpaqueData())!= KErrNotFound) |
268 { |
236 { |
269 retUid = infoArray[i]->ImplementationUid(); |
237 retUid = infoArray[i]->ImplementationUid(); |
270 RLDEBUG("CDCMOServer::GetAdapterUidL(): matched"); |
|
271 break; |
238 break; |
272 } |
239 } |
273 buf.Zero(); |
240 buf.Zero(); |
274 } |
241 } |
275 CleanupStack::PopAndDestroy(); //cleanup |
242 CleanupStack::PopAndDestroy(); //cleanup |
276 RLDEBUG("CDCMOServer::GetAdapterUidL():end"); |
243 |
277 RDEBUG("CDCMOServer::GetDCMOAdapterUidL(): end"); |
244 RDEBUG("CDCMOServer::GetDCMOAdapterUidL(): end"); |
278 return retUid; |
245 return retUid; |
279 } |
246 } |
280 // ---------------------------------------------------------------------------------------- |
247 // ---------------------------------------------------------------------------------------- |
281 // CDCMOServer::GetLocalCategoryL |
248 // CDCMOServer::GetLocalCategoryL |
645 |
600 |
646 RDEBUG("CDCMOServer::SearchAdaptersL(): end"); |
601 RDEBUG("CDCMOServer::SearchAdaptersL(): end"); |
647 } |
602 } |
648 |
603 |
649 // ---------------------------------------------------------------------------------------- |
604 // ---------------------------------------------------------------------------------------- |
650 // CDCMOServer::GetPluginUids |
|
651 // Gets the plug-in adapter implementation uid if it present. |
|
652 // ---------------------------------------------------------------------------------------- |
|
653 void CDCMOServer::GetLawmoPluginUidsL() |
|
654 { |
|
655 RDEBUG("CDCMOServer::GetPluginUids(): begin"); |
|
656 ilawmoPluginUidToBeWiped.Reset(); |
|
657 RImplInfoPtrArray infoArray; |
|
658 TEComResolverParams resolverParams; |
|
659 // Note that a special cleanup function is required to reset and destroy |
|
660 // all items in the array, and then close it. |
|
661 TCleanupItem cleanup(CleanupEComArray, &infoArray); |
|
662 CleanupStack::PushL(cleanup); |
|
663 REComSession::ListImplementationsL(KLAWMOPluginInterfaceUid, resolverParams, KRomOnlyResolverUid, infoArray); |
|
664 RLDEBUG("CDCMOServer::GetPluginUids(): listImpl"); |
|
665 // Loop through each info for each implementation |
|
666 for (TInt i=0; i< infoArray.Count(); i++) |
|
667 { |
|
668 ilawmoPluginUidToBeWiped.Append(infoArray[i]->ImplementationUid()); |
|
669 RLDEBUG("CDCMOServer::GetPluginUids(): for loop"); |
|
670 } |
|
671 CleanupStack::PopAndDestroy(); //cleanup |
|
672 RLDEBUG("CDCMOServer::GetPluginUids():end"); |
|
673 return; |
|
674 } |
|
675 |
|
676 TLawMoStatus CDCMOServer::WipeAllItem() |
|
677 { |
|
678 //Update ilawmopluginUid, so that all Node items are wiped. |
|
679 //WipeItem doesn only on Uid's in the RArray. |
|
680 TRAPD(error,GetLawmoPluginUidsL()); |
|
681 if(error == KErrNone) |
|
682 return WipeItem(); |
|
683 else |
|
684 return ELawMoWipeNotPerformed; |
|
685 } |
|
686 |
|
687 TLawMoStatus CDCMOServer::WipeItem(TInt aValue) |
|
688 { |
|
689 RLDEBUG("CDCMOServer::WipeItem(): begin"); |
|
690 TLawMoStatus lawmostat(ELawMoAccepted); |
|
691 iCount = 0; |
|
692 if(ilawmoPluginUidToBeWiped.Count() > 0) |
|
693 { |
|
694 RLDEBUG_2("CDCMOServer::WipeItem got uid(): %d",ilawmoPluginUidToBeWiped[iCount]); |
|
695 CLAWMOPluginInterface* obj; |
|
696 RLDEBUG("CDCMOServer::WipeItem(): NewL"); |
|
697 TRAPD(err,obj = CLAWMOPluginInterface::NewL(ilawmoPluginUidToBeWiped[iCount], this)); |
|
698 if(err == KErrNone) |
|
699 { |
|
700 RLDEBUG("CDCMOServer::WipeItem(): obj created"); |
|
701 RLDEBUG_2("CDCMOServer::WipeItem plugin count: %d",ilawmoPlugins.Count()); |
|
702 TRAP(err,obj->WipeL()); |
|
703 RLDEBUG_2("CDCMOServer::WipeItem(): wipe called %d",err); |
|
704 ilawmoPlugins.Append(obj); |
|
705 // Get the IAP being used in the current session |
|
706 TRAP( err, SmlHelper::GetDefaultIAPFromDMProfileL( iSessionIap ) ); |
|
707 RLDEBUG_2("CDCMOServer::HandleWipeCompleted(): get iap %d",iSessionIap); |
|
708 } |
|
709 if(err!=KErrNone) |
|
710 HandleWipeCompleted(KErrGeneral); |
|
711 } |
|
712 else |
|
713 { |
|
714 lawmostat = ELawMoWipeNotPerformed; |
|
715 } |
|
716 |
|
717 RLDEBUG("CDCMOServer::WipeItem(): End"); |
|
718 return lawmostat; |
|
719 } |
|
720 |
|
721 TLawMoStatus CDCMOServer::GetListItemL(TDesC& item, TDes& strValue) |
|
722 { |
|
723 RLDEBUG("CDCMOServer::GetListItem(): begin"); |
|
724 TEComResolverParams resolverParams; |
|
725 TLawMoStatus lawmostat(ELawMoSuccess); |
|
726 TBuf<KBufferSize> itemName; |
|
727 RImplInfoPtrArray infoArray; |
|
728 TCleanupItem cleanup(CleanupEComArray, &infoArray); |
|
729 CleanupStack::PushL(cleanup); |
|
730 REComSession::ListImplementationsL(KLAWMOPluginInterfaceUid, resolverParams, KRomOnlyResolverUid, infoArray); |
|
731 RLDEBUG("CDCMOServer::GetListItem(): listImpl"); |
|
732 |
|
733 for (TInt i=0; i< infoArray.Count(); i++) |
|
734 { |
|
735 RLDEBUG("CDCMOServer::GetListItem(): for loop"); |
|
736 TBuf<KBufferSize> temp; |
|
737 temp.Copy(infoArray[i]->OpaqueData()); |
|
738 RLDEBUG_2("CDCMOServer::GetListItem opaque data to compare is %s", temp.PtrZ()); |
|
739 if(item == temp) |
|
740 { |
|
741 itemName.Copy(infoArray[i]->DisplayName()); |
|
742 RLDEBUG("CDCMOServer::GetListItem(): matched"); |
|
743 break; |
|
744 } |
|
745 } |
|
746 CleanupStack::PopAndDestroy(); //cleanup |
|
747 RLDEBUG_2("CDCMOServer::GetListItem display name is %s", itemName.PtrZ()); |
|
748 strValue.Zero(); |
|
749 strValue.Append(itemName); |
|
750 RLDEBUG("CDCMOServer::GetListItem(): End"); |
|
751 return lawmostat; |
|
752 } |
|
753 |
|
754 |
|
755 TLawMoStatus CDCMOServer::GetToBeWipedL(TDesC& item, TDes& wipeValue) |
|
756 { |
|
757 RLDEBUG("CDCMOServer::GetToBeWiped(): begin"); |
|
758 TLawMoStatus lawmostat(ELawMoSuccess); |
|
759 TInt wipeVal(0); |
|
760 TUid impluid = GetAdapterUidL(item, ETrue); |
|
761 RLDEBUG_2("CDCMOServer::GetToBeWiped for uid(): %d", impluid); |
|
762 TInt afind = ilawmoPluginUidToBeWiped.Find(impluid); |
|
763 if(afind!=KErrNotFound) |
|
764 { |
|
765 wipeVal = 1; |
|
766 RLDEBUG("CDCMOServer::GetToBeWiped(): uid in Rarray"); |
|
767 } |
|
768 wipeValue.Zero(); |
|
769 wipeValue.Num(wipeVal); |
|
770 RLDEBUG("CDCMOServer::GetToBeWiped(): End"); |
|
771 return lawmostat; |
|
772 } |
|
773 |
|
774 TLawMoStatus CDCMOServer::SetToBeWipedL(TDesC& item, TInt wipeValue) |
|
775 { |
|
776 RLDEBUG("CDCMOServer::SetToBeWiped(): begin"); |
|
777 TLawMoStatus lawmostat(ELawMoSuccess); |
|
778 TUid impluid = GetAdapterUidL(item, ETrue); |
|
779 RLDEBUG_2("CDCMOServer::SetToBeWiped for uid(): %d", impluid); |
|
780 TInt afind = ilawmoPluginUidToBeWiped.Find(impluid); |
|
781 // Add Node's corresponding plugin uid to list so that it can be wiped |
|
782 if(impluid.iUid) |
|
783 { |
|
784 if(wipeValue) |
|
785 { |
|
786 RLDEBUG("CDCMOServer::SetToBeWiped(): wipeVal true"); |
|
787 if(afind==KErrNotFound) |
|
788 ilawmoPluginUidToBeWiped.Append(impluid); |
|
789 else |
|
790 RLDEBUG("CDCMOServer::SetToBeWiped() tobewiped already set"); |
|
791 } |
|
792 else |
|
793 { |
|
794 RLDEBUG("CDCMOServer::SetToBeWiped(): wipeVal false"); |
|
795 if(afind!=KErrNotFound) |
|
796 { |
|
797 ilawmoPluginUidToBeWiped.Remove(afind); |
|
798 RLDEBUG("CDCMOServer::SetToBeWiped() tobewiped unset"); |
|
799 } |
|
800 else |
|
801 RLDEBUG("CDCMOServer::SetToBeWiped() tobewiped notset atall"); |
|
802 } |
|
803 } |
|
804 else |
|
805 { |
|
806 RLDEBUG("CDCMOServer::SetToBeWiped(): no such plugin found"); |
|
807 lawmostat = ELawMoFail; |
|
808 } |
|
809 RLDEBUG("CDCMOServer::SetToBeWiped(): End"); |
|
810 return lawmostat; |
|
811 } |
|
812 |
|
813 // ---------------------------------------------------------------------------------------- |
|
814 // CDCMOServer::SetStarter |
605 // CDCMOServer::SetStarter |
815 // Sets the iStarter value |
606 // Sets the iStarter value |
816 // ---------------------------------------------------------------------------------------- |
607 // ---------------------------------------------------------------------------------------- |
817 void CDCMOServer::SetStarter(TBool aValue) |
608 void CDCMOServer::SetStarter(TBool aValue) |
818 { |
609 { |
819 RDEBUG("CDCMOServer::SetStarter(): begin"); |
610 RDEBUG("CDCMOServer::SetStarter(): begin"); |
820 iStarter = aValue; |
611 iStarter = aValue; |
821 RDEBUG("CDCMOServer::SetStarter(): end"); |
612 RDEBUG("CDCMOServer::SetStarter(): end"); |
822 } |
613 } |
823 |
614 |
824 void CDCMOServer::HandleWipeCompleted(TInt status) |
615 // ---------------------------------------------------------------------------------------- |
825 { |
616 // CDCMOServer::CleanDcmoArray |
826 RLDEBUG("CDCMOServer::HandleWipeCompleted(): begin"); |
617 // Sets the iStarter value |
827 // whether wipe is performed or failed |
618 // ---------------------------------------------------------------------------------------- |
828 iwipeStatus = (iwipeStatus && status); |
619 void CDCMOServer::CleanDcmoArray() |
829 RLDEBUG_2("CDCMOServer::HandleWipeCompleted wipestate: %d",iwipeStatus); |
620 { |
830 iCount++; |
621 RDEBUG("CDCMOServer::CleanDcmoArray(): begin"); |
831 if(ilawmoPluginUidToBeWiped.Count()>iCount) |
622 TInt count = idcmoArray.Count(); |
832 { |
623 RDEBUG_2("CDCMOServer::CleanDcmoArray; %d", count ); |
833 RLDEBUG("CDCMOServer::HandleWipeCompleted(): create obj"); |
624 if(count) |
834 CLAWMOPluginInterface* obj; |
625 { |
835 TRAPD(err, obj = CLAWMOPluginInterface::NewL(ilawmoPluginUidToBeWiped[iCount], this)); |
626 for(TInt i=0; i< count; i++) |
836 if(err == KErrNone) |
627 delete idcmoArray[i].iCategoryName; |
837 { |
628 idcmoArray.Reset(); |
838 RLDEBUG("CDCMOServer::HandleWipeCompleted(): obj created"); |
629 } |
839 RLDEBUG_2("CDCMOServer::HandleWipeCompleted plugin count: %d",ilawmoPlugins.Count()); |
630 CDCMOMessageBox::SetMsgBoxStatus(EFalse); |
840 TRAP(err,obj->WipeL()); |
631 RDEBUG("CDCMOServer::CleanDcmoArray(): end"); |
841 RLDEBUG_2("CDCMOServer::HandleWipeCompleted(): wipe called %d",err); |
632 } |
842 ilawmoPlugins.Append(obj); |
|
843 } |
|
844 if(err!=KErrNone) |
|
845 HandleWipeCompleted(KErrGeneral); |
|
846 } |
|
847 else |
|
848 { |
|
849 // start DM session using the Monitor for generic alert |
|
850 RLDEBUG("CDCMOServer::HandleWipeCompleted(): done"); |
|
851 TInt err; |
|
852 TBuf<KBufferSize> srvrid; |
|
853 CRepository* crep; |
|
854 TRAP(err, crep = CRepository::NewLC( KCRUidDeviceManagementInternalKeys ); |
|
855 CleanupStack::Pop(crep)); |
|
856 RLDEBUG("CDCMOServer::HandleWipeCompleted(): get srvrid"); |
|
857 if(err == KErrNone) |
|
858 err = crep->Get( KLAWMOfactoryDmServerID, srvrid ); |
|
859 RDEBUG_2("CDCMOServer::GetCurrentServerId() %d",err); |
|
860 RLDEBUG_2("CDCMOServer::HandleWipeCompleted(): srvrid %s",srvrid.PtrZ()); |
|
861 if (err == KErrNone) |
|
862 { |
|
863 RLDEBUG("CDCMOServer::startNwMonitor()"); |
|
864 TRAP(err,StartDMNetworkMonitorL(srvrid, iSessionIap)); |
|
865 } |
|
866 |
|
867 if(crep) |
|
868 { |
|
869 delete crep; //crep |
|
870 crep = NULL; |
|
871 } |
|
872 |
|
873 // Only when session is started successfully, Set wipestatus |
|
874 if(err==KErrNone) |
|
875 { |
|
876 RLDEBUG("CDCMOServer::HandleWipeCompleted(): writing wipestatus to cenrep"); |
|
877 CRepository* repository; |
|
878 TRAP(err, repository = CRepository::NewLC ( KCRUidLawmoAdapter ); |
|
879 CleanupStack::Pop(crep)); |
|
880 |
|
881 if(iwipeStatus==KErrNone) |
|
882 iwipeStatus = KWipeSuccess; |
|
883 else |
|
884 iwipeStatus = KWipeFailure; |
|
885 |
|
886 repository->Set(KLawmoWipeStatus,iwipeStatus); |
|
887 RLDEBUG_2("CDCMOServer::HandleWipeCompleted wipestate: %d",iwipeStatus); |
|
888 if (repository) |
|
889 { |
|
890 delete repository; |
|
891 repository = NULL; |
|
892 } |
|
893 } |
|
894 |
|
895 RLDEBUG_2("printing ilawmoPluginUidToBeWiped %d", ilawmoPluginUidToBeWiped.Count()); |
|
896 RLDEBUG_2("printing ilawmoPlugins %d", ilawmoPlugins.Count()); |
|
897 RLDEBUG_2("printing ilawmoPlugins %d", iCount); |
|
898 iCount = -1; // To indicate all wipe is done |
|
899 if( iSessionCount == 0) |
|
900 { |
|
901 CActiveScheduler::Stop(); |
|
902 RLDEBUG("CDCMOServer::HandleWipeCompleted(): kill server"); |
|
903 } |
|
904 } |
|
905 |
|
906 RLDEBUG("CDCMOServer::HandleWipeCompleted(): end"); |
|
907 } |
|
908 |
|
909 // ------------------------------------------------------------------------------------------------ |
|
910 // CDCMOServer::StartDMNetworkMonitorL() |
|
911 // ------------------------------------------------------------------------------------------------ |
|
912 void CDCMOServer::StartDMNetworkMonitorL(TDesC& aServerId, TInt iapid) |
|
913 { |
|
914 TInt retryenabled = 1; |
|
915 _LIT( KNetMon,"\\dmnetworkmon.exe" ); |
|
916 RLDEBUG("CDCMOServer::StartDMNetworkMonitorL(): start"); |
|
917 TBuf8<KBufferSize> serverid; |
|
918 serverid.Copy(aServerId); |
|
919 // Enable DM Network Monitoring for retry of Generic alert in case of N/W loss |
|
920 |
|
921 CRepository *repository= CRepository::NewLC ( KCRUidDeviceManagementInternalKeys ); |
|
922 repository->Set(KDevManEnableDMNetworkMon, retryenabled); |
|
923 repository->Set(KDevManServerIdKey, serverid); |
|
924 repository->Set(KDevManIapIdKey, iapid); |
|
925 RLDEBUG("CDCMOServer::StartDMNetworkMonitorL(): set rep keys"); |
|
926 CleanupStack::PopAndDestroy(); |
|
927 |
|
928 // create NetMon EXE |
|
929 RProcess rp; |
|
930 TInt err = rp.Create(KNetMon,KNullDesC); |
|
931 RLDEBUG("CDCMOServer::StartDMNetworkMonitorL():create rprocess"); |
|
932 User::LeaveIfError(err); |
|
933 TRequestStatus stat; |
|
934 rp.Rendezvous(stat); |
|
935 RLDEBUG("CDCMOServer::StartDMNetworkMonitorL():rendezvous"); |
|
936 |
|
937 if (stat!=KRequestPending) |
|
938 { |
|
939 RLDEBUG("CDCMOServer::StartDMNetworkMonitorL():abort srvr"); |
|
940 rp.Kill(0); // abort startup |
|
941 } |
|
942 else |
|
943 { |
|
944 RLDEBUG("CDCMOServer::StartDMNetworkMonitorL(): start server"); |
|
945 rp.Resume(); // logon OK - start the server |
|
946 } |
|
947 User::WaitForRequest(stat); // wait for start or death |
|
948 TInt r= rp.ExitType(); |
|
949 TInt reqstat = stat.Int(); |
|
950 //TExitType a; |
|
951 RLDEBUG_2("CDCMOServer::StartDMNetworkMonitorL() exittype %d",r); |
|
952 RLDEBUG_2("CDCMOServer::StartDMNetworkMonitorL() reqstatus %d",reqstat); |
|
953 |
|
954 rp.Close(); |
|
955 } |
|
956 |
|
957 |
|