An Adaptable Data Object Service for
Pervasive Computing Environments
Christopher K. Hess, Francisco Ballesteros, Roy H. Campbell, and
M. Dennis MickunasUniversity of Illinois at Urbana-
Champaign
04/22/23 COOTS'01 2
Introduction Entering age of ubiquitous computing. Future “smart” cities, buildings,
rooms, vehicles will join disparate devices.
Traditional file systems/databases are static and generally targeted at homogeneous environments.
Some attempts to incorporate weaker devices – WAP, TACC, etc.
04/22/23 COOTS'01 3
Gaia – Enabling Active Spaces Coordinates devices in an active space. Operating system for physical spaces. Treats space as one logical computing
device. Merging of physical and virtual. Application model:
MVC inspired. Adaptors change data model.
04/22/23 COOTS'01 4
Motivation Some devices possess limited resources. May not be able to render data in original
format. Propose adaptable data service to
accommodate requirements of diverse set of devices.
Device accesses data source in the format it requires.
Service handles complex tasks ordinarily left to the application developer.
04/22/23 COOTS'01 5
System Overview Applications open data as desired type
– dynamically typed file system. Information delivered as data objects. Data sources represented as
containers. Access to data gained via iterators. System sets up data flow paths. Modules in flow path may alter data.
04/22/23 COOTS'01 6
MPEGContainer
MPEG
WordContainer
Word
Example
GrepProcessor Pixel2Bitmap
Converter
Text2AudioConverter
GIF2PixelConverter
GIF2PixelConverter
Pixel2BitmapConverter
BitmapContainer
AudioContainer
PixelContainer
MailContainer
PowerPointContainer
MailPowerPoint
BitmapContainerGrepContainer
04/22/23 COOTS'01 7
Architecture OverviewContainerManager
LayoutManager
XML Database
Application
Component Repository
ClientLibrary
04/22/23 COOTS'01 8
Architecture System layer:
Distributed objects. Container and stream interfaces.
User layer: Combination of templates and
wrappers. Container/iterator API plus container-
specific methods.
04/22/23 COOTS'01 9
Factory for container creation. Application specifies source and
type. Manager chains containers
together.
Container Manager
createContainer(source, type)
Manager
Application
Source
otype
itype
type
04/22/23 COOTS'01 10
Container Manager Interface of container may be
changed to produce different data format.
Used to call methods on “inner” container.
Obj. ref.
adaptInterface(type)
ContainerManager
Obj. ref.
Container
Manager
typeotype
type
itype
04/22/23 COOTS'01 11
Container Categories File containers – access to native
operating system files. Processor containers – files with
“dynamic content”. Converter containers – transform
content. Partition containers – creates
chunks for “streamable” containers.
04/22/23 COOTS'01 12
XML Container Description <DOS:Container> <DOS:Converter/> <DOS:Interface>BitmapContainer</DOS:Interface> <DOS:Name>Pixel2BitmapConverter</DOS:Name> <DOS:Input>pixel</DOS:Input> <DOS:Output>bitmap</DOS:Output></DOS:Container>
04/22/23 COOTS'01 13
Path GeneratorInterface Map
Converter/Processor Containers
bitmap
pixelBitmapContainer
MPEGContainerPowerPointContainer
PixelContainer
ByteContainerDirectoryContainer
WordContainerTextContainer
FileContainers
dirent
byte
.ppt
*
.mpg
.gif
gif
mpeg
.txt
.doc
text
ByteContainer
DirectoryContainer
TextContainer
WordContainer
GIF2PixelContainerPixel2BitmapConverter
MPEGContainer
GIF2PixelConverter PowerPointContainer
04/22/23 COOTS'01 14
API Based on containers and iterators (STL). Combination of template classes and
C++ wrappers provides simple interface.
Apply generic programming to distributed objects. CORBA
ContainerIteratorContainer Wrapper
DataObjects Container Template
Specific Methods
04/22/23 COOTS'01 15
Generic Programming Containers adhere to method name
conventions. Templates used to handle data type
differences. Container specifies iterator type:
ForwardObjectIterator RandomObjectIterator InputStreamIterator RandomStreamIterator
04/22/23 COOTS'01 16
Application ExampleBitmapViewer viewer;PowerPointContainer p("/tmp/presentation.ppt");p.setDimensions(352, 240);BitmapContainer *b = new BitmapContainer(&p);BitmapContainer::iterator i;for (i = b->begin(); i != b->end(); i++) {
BitmapObject obj = *i;viewer.display(obj);// get input from user
}
04/22/23 COOTS'01 17
Uses of Containers Data storage – files and directories. Devices - printer, whiteboard, X10. Shared memory - tuple spaces. Proxies – remote transformations. Change interfaces of data sources –
whiteboard to mouse. Services – news.
04/22/23 COOTS'01 18
Future Work Port to small devices (e.g.,
PalmPilot). Dynamic placement for load
balancing. Streaming of container contents. Use as location-specific storage:Layout
Manager
04/22/23 COOTS'01 19
Conclusions Heterogeneous distributed systems
becoming more pervasive. Some devices cannot accept original
data format due to available resources. Applications open data as desired type. Data object service adapts content to
device characteristics. Simple user interface.