OpenMAXBellagio  0.9.3
content_pipe_file.c
Go to the documentation of this file.
1 
26 #include "content_pipe_file.h"
27 
29 static CPresult Create( CPhandle *hContent, CPstring szURI )
30 {
31  file_ContentPipe* pFilePipe = (file_ContentPipe*) hContent;
32  char* pathname = szURI + 7;
33  CPresult err = 0;
34  int flags, ret;
35 
36  DEBUG(DEB_LEV_FUNCTION_NAME, "content_pipe_file:%s \n", __func__);
37 
38  if(0 != strncmp(szURI, "file://", 7))
39  err = KD_EINVAL;
40 
41  flags = O_WRONLY | O_CREAT;
42 
43  if(0 == err) {
44  ret = open(pathname, flags, 0);
45  if(-1 != ret) {
46  pFilePipe->fd = ret;
47  } else {
48  err = KD_EIO; /* ??? */
49  }
50  }
51 
52  return err;
53 }
54 
56 static CPresult Open( CPhandle* hContent, CPstring szURI, CP_ACCESSTYPE eAccess )
57 {
58  file_ContentPipe* pFilePipe = (file_ContentPipe*) hContent;
59  CPresult err = 0;
60  int flags, ret;
61 
62  DEBUG(DEB_LEV_FUNCTION_NAME, "content_pipe_file:%s \n", __func__);
63 
64  if(0 != strncmp(szURI, "file://", 7))
65  err = KD_EINVAL;
66 
67  if(0 == err)
68  switch(eAccess) {
69  case CP_AccessRead:
70  flags = O_RDONLY;
71  break;
72  case CP_AccessWrite:
73  flags = O_WRONLY;
74  break;
75  case CP_AccessReadWrite:
76  flags = O_RDWR;
77  break;
78  default:
79  err = KD_EINVAL; /* ??? */
80  break;
81  }
82 
83  if(0 == err) {
84  char* pathname = szURI + 7;
85  ret = open(pathname, flags);
86  if(-1 != ret) {
87  pFilePipe->fd = ret;
88  } else {
89  /* Map errno */
90  err = KD_EIO; /* ??? */
91  }
92  }
93 
94  return err;
95 }
96 
98 static CPresult Close( CPhandle hContent )
99 {
100  file_ContentPipe* pFilePipe = (file_ContentPipe*) hContent;
101  CPresult err = 0;
102  int ret;
103 
104  DEBUG(DEB_LEV_FUNCTION_NAME, "content_pipe_file:%s \n", __func__);
105 
106  ret = close(pFilePipe->fd);
107  if(ret == -1) {
108  /* Map errno */
109  err = KD_EIO; /* ??? */
110  }
111 
112  return err;
113 }
114 
116 static CPresult CheckAvailableBytes( CPhandle hContent, CPuint nBytesRequested, CP_CHECKBYTESRESULTTYPE *eResult )
117 {
118  DEBUG(DEB_LEV_FUNCTION_NAME, "content_pipe_file:%s \n", __func__);
119 
120  return KD_EBADF;
121 }
122 
124 static CPresult SetPosition( CPhandle hContent, CPint nOffset, CP_ORIGINTYPE eOrigin)
125 {
126  DEBUG(DEB_LEV_FUNCTION_NAME, "content_pipe_file:%s \n", __func__);
127 
128  return KD_EBADF;
129 }
130 
132 static CPresult GetPosition( CPhandle hContent, CPuint *pPosition)
133 {
134  DEBUG(DEB_LEV_FUNCTION_NAME, "content_pipe_file:%s \n", __func__);
135 
136  return KD_EBADF;
137 }
138 
141 static CPresult Read( CPhandle hContent, CPbyte *pData, CPuint nSize)
142 {
143  file_ContentPipe* pFilePipe = (file_ContentPipe*) hContent;
144  CPresult err = 0;
145  ssize_t count;
146 
147  DEBUG(DEB_LEV_FUNCTION_NAME, "content_pipe_file:%s \n", __func__);
148 
149  count = read(pFilePipe->fd, (void*) pData, (size_t) nSize);
150 
151  if(count < nSize) {
152  err = KD_EIO; /* ??? */
153  } else if(count == -1) {
154  err = KD_EIO; /* ??? */
155  }
156 
157  return err;
158 }
159 
172 static CPresult ReadBuffer( CPhandle hContent, CPbyte **ppBuffer, CPuint *nSize, CPbool bForbidCopy)
173 {
174  DEBUG(DEB_LEV_FUNCTION_NAME, "content_pipe_file:%s \n", __func__);
175 
176  return KD_EBADF;
177 }
178 
180 static CPresult ReleaseReadBuffer(CPhandle hContent, CPbyte *pBuffer)
181 {
182  DEBUG(DEB_LEV_FUNCTION_NAME, "content_pipe_file:%s \n", __func__);
183 
184  return KD_EBADF;
185 }
186 
189 static CPresult Write( CPhandle hContent, CPbyte *pData, CPuint nSize)
190 {
191  file_ContentPipe* pFilePipe = (file_ContentPipe*) hContent;
192  CPresult err = 0;
193  ssize_t ret;
194 
195  DEBUG(DEB_LEV_FUNCTION_NAME, "content_pipe_file:%s \n", __func__);
196 
197  ret = write(pFilePipe->fd, (void*) pData, (size_t) nSize);
198 
199  if(ret < nSize) {
200  err = KD_EIO; /* ??? */
201  } else if(ret == -1) {
202  err = KD_EIO; /* ??? */
203  }
204 
205  return err;
206 }
207 
211 static CPresult GetWriteBuffer( CPhandle hContent, CPbyte **ppBuffer, CPuint nSize)
212 {
213  DEBUG(DEB_LEV_FUNCTION_NAME, "content_pipe_file:%s \n", __func__);
214 
215  return KD_EBADF;
216 }
217 
220 static CPresult WriteBuffer( CPhandle hContent, CPbyte *pBuffer, CPuint nFilledSize)
221 {
222  DEBUG(DEB_LEV_FUNCTION_NAME, "content_pipe_file:%s \n", __func__);
223 
224  return KD_EBADF;
225 }
226 
228 static CPresult RegisterCallback( CPhandle hContent, CPresult (*ClientCallback)(CP_EVENTTYPE eEvent, CPuint iParam))
229 {
230  DEBUG(DEB_LEV_FUNCTION_NAME, "content_pipe_file:%s \n", __func__);
231 
232  return KD_EBADF;
233 }
234 
236 {
237  file_ContentPipe* pFilePipe;
238 
239  pFilePipe = (file_ContentPipe*) calloc(1, sizeof(file_ContentPipe));
240 
241  if(NULL != pFilePipe) {
242 
243  pFilePipe->pipe.Open = Open;
244  pFilePipe->pipe.Close = Close;
245  pFilePipe->pipe.Create = Create;
246  pFilePipe->pipe.CheckAvailableBytes = CheckAvailableBytes;
247  pFilePipe->pipe.SetPosition = SetPosition;
248  pFilePipe->pipe.GetPosition = GetPosition;
249  pFilePipe->pipe.Read = Read;
250  pFilePipe->pipe.ReadBuffer = ReadBuffer;
251  pFilePipe->pipe.ReleaseReadBuffer = ReleaseReadBuffer;
252  pFilePipe->pipe.Write = Write;
253  pFilePipe->pipe.GetWriteBuffer = GetWriteBuffer;
254  pFilePipe->pipe.WriteBuffer = WriteBuffer;
255  pFilePipe->pipe.RegisterCallback = RegisterCallback;
256 
257  pFilePipe->fd = -1; /* An invalid value */
258 
259  *ppPipe = (CP_PIPETYPE*) pFilePipe;
260  }
261 
262  return 0;
263 }
264 
DEB_LEV_FUNCTION_NAME
#define DEB_LEV_FUNCTION_NAME
Definition: omx_comp_debug_levels.h:59
CPuint
OMX_U32 CPuint
Definition: OMX_ContentPipe.h:69
DEBUG
#define DEBUG(n, fmt, args...)
Definition: omx_comp_debug_levels.h:77
CP_AccessWrite
@ CP_AccessWrite
Definition: OMX_ContentPipe.h:91
KD_EIO
#define KD_EIO
Definition: OMX_ContentPipe.h:50
CP_PIPETYPE::Read
CPresult(* Read)(CPhandle hContent, CPbyte *pData, CPuint nSize)
Definition: OMX_ContentPipe.h:157
CPint
OMX_S32 CPint
Definition: OMX_ContentPipe.h:70
CP_PIPETYPE::Close
CPresult(* Close)(CPhandle hContent)
Definition: OMX_ContentPipe.h:141
CPstring
char * CPstring
Definition: OMX_ContentPipe.h:67
CP_PIPETYPE::ReadBuffer
CPresult(* ReadBuffer)(CPhandle hContent, CPbyte **ppBuffer, CPuint *nSize, CPbool bForbidCopy)
Definition: OMX_ContentPipe.h:171
CPhandle
void * CPhandle
Definition: OMX_ContentPipe.h:68
CP_PIPETYPE::GetPosition
CPresult(* GetPosition)(CPhandle hContent, CPuint *pPosition)
Definition: OMX_ContentPipe.h:153
CP_CHECKBYTESRESULTTYPE
CP_CHECKBYTESRESULTTYPE
Definition: OMX_ContentPipe.h:102
CP_PIPETYPE::Create
CPresult(* Create)(CPhandle *hContent, CPstring szURI)
Definition: OMX_ContentPipe.h:144
CP_PIPETYPE::RegisterCallback
CPresult(* RegisterCallback)(CPhandle hContent, CPresult(*ClientCallback)(CP_EVENTTYPE eEvent, CPuint iParam))
Definition: OMX_ContentPipe.h:190
KD_EBADF
#define KD_EBADF
Definition: OMX_ContentPipe.h:39
CP_PIPETYPE::Write
CPresult(* Write)(CPhandle hContent, CPbyte *data, CPuint nSize)
Definition: OMX_ContentPipe.h:178
content_pipe_file.h
CP_EVENTTYPE
CP_EVENTTYPE
Definition: OMX_ContentPipe.h:123
CP_PIPETYPE
Definition: OMX_ContentPipe.h:136
CP_PIPETYPE::SetPosition
CPresult(* SetPosition)(CPhandle hContent, CPint nOffset, CP_ORIGINTYPE eOrigin)
Definition: OMX_ContentPipe.h:150
CP_ORIGINTYPE
CP_ORIGINTYPE
Definition: OMX_ContentPipe.h:77
CP_PIPETYPE::CheckAvailableBytes
CPresult(* CheckAvailableBytes)(CPhandle hContent, CPuint nBytesRequested, CP_CHECKBYTESRESULTTYPE *eResult)
Definition: OMX_ContentPipe.h:147
OMX_BOOL
OMX_BOOL
Definition: OMX_Types.h:189
CP_ACCESSTYPE
CP_ACCESSTYPE
Definition: OMX_ContentPipe.h:89
CP_PIPETYPE::Open
CPresult(* Open)(CPhandle *hContent, CPstring szURI, CP_ACCESSTYPE eAccess)
Definition: OMX_ContentPipe.h:138
CP_AccessRead
@ CP_AccessRead
Definition: OMX_ContentPipe.h:90
CP_PIPETYPE::WriteBuffer
CPresult(* WriteBuffer)(CPhandle hContent, CPbyte *pBuffer, CPuint nFilledSize)
Definition: OMX_ContentPipe.h:187
err
OMX_ERRORTYPE err
Definition: omxvolcontroltest.c:34
CP_AccessReadWrite
@ CP_AccessReadWrite
Definition: OMX_ContentPipe.h:92
CPbyte
char CPbyte
Definition: OMX_ContentPipe.h:71
file_ContentPipe::pipe
CP_PIPETYPE pipe
Definition: content_pipe_file.h:43
CPresult
OMX_U32 CPresult
Definition: OMX_ContentPipe.h:66
file_pipe_Constructor
CPresult file_pipe_Constructor(CP_PIPETYPE **ppPipe, CPstring szURI)
Definition: content_pipe_file.c:235
KD_EINVAL
#define KD_EINVAL
Definition: OMX_ContentPipe.h:49
file_ContentPipe
Definition: content_pipe_file.h:40
file_ContentPipe::fd
int fd
Definition: content_pipe_file.h:46
CP_PIPETYPE::GetWriteBuffer
CPresult(* GetWriteBuffer)(CPhandle hContent, CPbyte **ppBuffer, CPuint nSize)
Definition: OMX_ContentPipe.h:183
CP_PIPETYPE::ReleaseReadBuffer
CPresult(* ReleaseReadBuffer)(CPhandle hContent, CPbyte *pBuffer)
Definition: OMX_ContentPipe.h:174

Generated for OpenMAX Bellagio rel. 0.9.3 by  doxygen 1.5.1
SourceForge.net Logo