Apadmi Symbian Essentials Using Servers Donation Presentation
Transcript of Apadmi Symbian Essentials Using Servers Donation Presentation
-
8/14/2019 Apadmi Symbian Essentials Using Servers Donation Presentation
1/23
Apadmi Symbian Essentials
Using Servers
-
8/14/2019 Apadmi Symbian Essentials Using Servers Donation Presentation
2/23
Copyright Apadmi Ltd 2009.
Objectives
Illustrate importance of client-serverarchitectureLook at some key system serversPlug-in architectures
Find out how to use a serverClient-side APISessions & subsessionsWorking with asynchronous APIs
Handles and the Cleanup Stack
-
8/14/2019 Apadmi Symbian Essentials Using Servers Donation Presentation
3/23
Copyright Apadmi Ltd 2009.
System Servers
-
8/14/2019 Apadmi Symbian Essentials Using Servers Donation Presentation
4/23
Copyright Apadmi Ltd 2009.
Plug-in Architecture
SocketsServer
InfraredProtocols TCP/IP
File ServerLocal FileSystem Flash FilingSystem
SMS
-
8/14/2019 Apadmi Symbian Essentials Using Servers Donation Presentation
5/23
-
8/14/2019 Apadmi Symbian Essentials Using Servers Donation Presentation
6/23
Copyright Apadmi Ltd 2009.
Client-Server Overview
Session-basedmultiple sessionssubsessions
Client service API Inter-thread communication Safe
isolation in separate processmessage passing between client & server
-
8/14/2019 Apadmi Symbian Essentials Using Servers Donation Presentation
7/23
Copyright Apadmi Ltd 2009.
Using a simple server
RCountServSession session;TRequestStatus status;
User::LeaveIfError(session.Connect());
_LIT(KTxtLegalString,"224");
ret = session.SetFromString(KTxtLegalString);
session.DelayedIncrease(1, 1000000, status);User::WaitForRequest(status);
session.DecreaseBy(3);
session.Close();
-
8/14/2019 Apadmi Symbian Essentials Using Servers Donation Presentation
8/23
-
8/14/2019 Apadmi Symbian Essentials Using Servers Donation Presentation
9/23
Copyright Apadmi Ltd 2009.
Sessions
Server thread.
Client thread
with two sessions
Multiple sessions
Example system with 1 server and 1client thread
2 client sessions exist within a singlethread
-
8/14/2019 Apadmi Symbian Essentials Using Servers Donation Presentation
10/23
Copyright Apadmi Ltd 2009.
Subsessions
Better (more lightweight) way for asingle client to have multiple logical
connections with one server
Server side
Client side
-
8/14/2019 Apadmi Symbian Essentials Using Servers Donation Presentation
11/23
Copyright Apadmi Ltd 2009.
Client-side classes (1)
Two classes are used to produce clientside APIs
RSessionBaseRSubSessionBase
Derived classes must:Create sessions or subsessions as
appropriate
Send request messages from the client tothe server
-
8/14/2019 Apadmi Symbian Essentials Using Servers Donation Presentation
12/23
Copyright Apadmi Ltd 2009.
Client-side classes (2)
Create a session withRSessionBase::CreateSession()
Create a subsession withRSubSessionBase::CreateSubSession()
Send messages withSend(TInt aFunction,TAny* aPtr)SendReceive(TInt aFunction,TAny*aPtr,TRequestStatus& aStatus)
SendReceive(TInt aFunction,TAny*aPtr)
-
8/14/2019 Apadmi Symbian Essentials Using Servers Donation Presentation
13/23
Copyright Apadmi Ltd 2009.
Client-side DLL
Client Side API often built as DLL Access services using export library
File Server: efsrv.libSocket Server: esock.libetc.
KernelExec
EUSER
Client
Server
SrvrClient
DLL
-
8/14/2019 Apadmi Symbian Essentials Using Servers Donation Presentation
14/23
Copyright Apadmi Ltd 2009.
Messages (1)
Clients send messages to servers Each message is a request for a service
Server processes requestPerforms work on behalf of client(Optionally) sends a reply to the client
Two types of message:synchronousasynchronous
-
8/14/2019 Apadmi Symbian Essentials Using Servers Donation Presentation
15/23
Copyright Apadmi Ltd 2009.
Messages (2)
Request messages simply consist offive 32-bit numbersA function number (or opcode)Four 32-bit parameters
Each of the 32-bit parameters can be:An integer, orA pointer to a flat data structure, wrapped
as a descriptor
-
8/14/2019 Apadmi Symbian Essentials Using Servers Donation Presentation
16/23
Copyright Apadmi Ltd 2009.
A real API...
class RFs : public RSessionBase {}class RFsBase : public RSubSessionBase {}
class RFile : public RFsBase{public:
IMPORT_C TInt Open(RFs& aFs, const TDesC&
aName, TUint aFileMode);IMPORT_C TInt Read(TDes8& aDes) const;IMPORT_C void Read(TDes8& aDes,
TRequestStatus& aStatus) const;IMPORT_C TInt Write(const TDesC8& aDes);IMPORT_C void Write(const TDesC8& aDes,
TRequestStatus& aStatus);
};
-
8/14/2019 Apadmi Symbian Essentials Using Servers Donation Presentation
17/23
Copyright Apadmi Ltd 2009.
Implementation Issues
Beyond the client service API
A server publishes a client service API This API should be sufficient to enable
a client to utilise the server effectively
using an R-class session/subsession But a higher-level API is often desirable
hide implementation details such asopcodes and package buffers
-
8/14/2019 Apadmi Symbian Essentials Using Servers Donation Presentation
18/23
Copyright Apadmi Ltd 2009.
Handling an asynchronous method
Write an active object, which has anRFile as its service provider
Handle completion of asynchronousrequests in the active objects RunL()method
void RFile::Read(TDes8& aDes,TRequestStatus& aStatus) const;
-
8/14/2019 Apadmi Symbian Essentials Using Servers Donation Presentation
19/23
Copyright Apadmi Ltd 2009.
Implementation Issues
Handles & the cleanup stack
All client-side APIs are derived fromRSessionBaseRSessionBase is derived fromRHandleBase
Every client-side API is a handle on aserver side session
You must look after any handles
Just as you would with pointers
-
8/14/2019 Apadmi Symbian Essentials Using Servers Donation Presentation
20/23
Copyright Apadmi Ltd 2009.
Example: handles & the cleanup stack
The file server session (fs) is protectedagainst leaves during the Connect()and Delete() calls by storing it on thecleanup stack
void CClass::SomeFunctionL(){RFs fs;CleanupClosePushL(fs);User::LeaveIfError(fs.Connect());User::LeaveIfError(fs.Delete(KSomeFileName));CleanupStack::PopAndDestroy();// fs
}
-
8/14/2019 Apadmi Symbian Essentials Using Servers Donation Presentation
21/23
Copyright Apadmi Ltd 2009.
Summary
Large number of system serversFundamental Symbian OS architecture Plug-in architecture can provide server
with extensibility and future-proofing
Sessions and subsessions Synchronous and asynchronous APIs Higher-level APIs Using the cleanup stack with handles
(R-classes)
-
8/14/2019 Apadmi Symbian Essentials Using Servers Donation Presentation
22/23
Copyright Apadmi Ltd 2009.
End of Using Servers Section
Next section is File Server and StreamStores
-
8/14/2019 Apadmi Symbian Essentials Using Servers Donation Presentation
23/23
Copyright Apadmi Ltd 2009.
About Apadmi
Apadmi is an international mobile consultancy, training anddevelopment company with an excellent reputation for providing
top quality engineering and training services to the Symbian
community.
Our training is undertaken by our Senior Technical Consultants,who have over 10 years of experience running Symbian OS
training sessions, boot camps and technical workshopsthroughout the world for companies such as Nokia, Symbian,
Sony Ericsson, Motorola, Siemens, UIQ and Orange.
For more information please go to :
http://www.apadmi.com/training.html