Package elisa :: Package core :: Module media_file
[hide private]
[frames] | no frames]

Source Code for Module elisa.core.media_file

 1  # -*- coding: utf-8 -*- 
 2  # Elisa - Home multimedia server 
 3  # Copyright (C) 2006-2008 Fluendo Embedded S.L. (www.fluendo.com). 
 4  # All rights reserved. 
 5  # 
 6  # This file is available under one of two license agreements. 
 7  # 
 8  # This file is licensed under the GPL version 3. 
 9  # See "LICENSE.GPL" in the root of this distribution including a special 
10  # exception to use Elisa with Fluendo's plugins. 
11  # 
12  # The GPL part of Elisa is also available under a commercial licensing 
13  # agreement from Fluendo. 
14  # See "LICENSE.Elisa" in the root directory of this distribution package 
15  # for details on that license. 
16   
17  """ 
18  MediaFile abstraction support 
19  """ 
20   
21  from elisa.core.utils import classinit 
22   
23 -class MediaFile(object):
24 """ 25 This class provides a file-like API to access data at a given URI. 26 27 MediaFiles are created by 28 L{elisa.base_components.media_provider.MediaProvider} 29 objects. They act as proxies to the latter, thus are bound to 30 MediaProviders. 31 32 @ivar descriptor: media descriptor symbolizing the opened media 33 @type descriptor: object 34 """ 35 36 __metaclass__ = classinit.ClassInitMeta 37 __classinit__ = classinit.build_properties 38
39 - def __init__(self, media_provider, descriptor):
40 """ 41 42 @param media_provider: the Component which provides media access to the 43 descriptor, hence the media URI 44 @type media_provider: L{elisa.base_components.media_provider.MediaProvider} 45 @param descriptor: media descriptor symbolizing the opened media 46 @type descriptor: object 47 """ 48 self._media_provider = media_provider 49 self._descriptor = descriptor
50
51 - def close(self):
52 """ Close myself via my media_provider 53 """ 54 self._media_provider.close(self)
55
56 - def descriptor__get(self):
57 """ Descriptor readonly access 58 """ 59 return self._descriptor
60
61 - def read(self, size=-1):
62 """ Read some data from my descriptor using my media_provider 63 64 @param size: length of data to retrieve. The media_provider will do 65 its best to fetch that amount of data. size = -1 means 66 retrieving all available data at once 67 @type size: int 68 @returns: string 69 """ 70 return self._media_provider.read(self, size)
71
72 - def seek(self, offset, whence=0):
73 """ Seek to given offset of my descriptor, via my media_provider 74 75 @param offset: how much to seek in the file 76 @type offset: int 77 @param whence: from where to seek in the file, default=0 means 78 current position 79 @type whence: int 80 @returns: bool 81 """ 82 return self._media_provider.seek(self, offset, whence)
83
84 - def _blocking_read(self, size=-1):
85 return self._media_provider._blocking_read(self, size=size)
86
87 - def _blocking_seek(self, offset, whence=0):
88 return self._media_provider._blocking_seek(self, offset, whence)
89
90 - def _blocking_close(self):
91 return self._media_provider._blocking_close(self)
92