00001 /* 00002 * Copyright (C) 2009, Edmundo Albuquerque de Souza e Silva. 00003 * 00004 * This file may be distributed under the terms of the Q Public License 00005 * as defined by Trolltech AS of Norway and appearing in the file 00006 * LICENSE.QPL included in the packaging of this file. 00007 * 00008 * THIS FILE IS PROVIDED AS IS WITH NO WARRANTY OF ANY KIND, INCLUDING 00009 * THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR 00010 * PURPOSE. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, 00011 * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING 00012 * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, 00013 * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION 00014 * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 00015 * 00016 * Thanks: Jose Renato Santos 00017 * 00018 */ 00019 00020 #ifndef __OBJECTMANAGER_H_ 00021 #define __OBJECTMANAGER_H_ 00022 00023 #include "RioTCP.h" 00024 00025 class CObjectManager 00026 { 00027 public: 00028 CObjectManager( CRioTCP* TCPconnection ); 00029 ~CObjectManager(); 00030 HRESULT Close( /*[in]*/ const ObjectHandle Handle ); 00031 HRESULT GetSize( /*[in]*/ const ObjectHandle Handle, 00032 /*[out]*/ RioObjectSize *Size ); 00033 HRESULT SetSize( /*[in]*/ const ObjectHandle Handle, 00034 /*[in]*/ const RioObjectSize Size, 00035 /*[in]*/ char *md5sum ); 00036 HRESULT GetType( /*[in]*/ const ObjectHandle Handle, 00037 /*[out]*/ short *Type ); 00038 HRESULT GetnBlocks( /*[in]*/ const ObjectHandle Handle, 00039 /*[out]*/ RioBlock *nBlocks ); 00040 HRESULT NextObject( /*[in]*/ ObjectHandle Handle, 00041 /*[out]*/ int* IsDirectory, 00042 /*[in]*/ int BufferSize, 00043 /*[out,size_is(BufferSize)*/ signed char* ObjectName ); 00044 00045 // Funcoes usadas pela implementacao do controle de fluxo. 00046 00047 /** 00048 * GetVideoRate retorna a taxa de transmissao (em Kbps) do video. 00049 * @param Handle identificador do objeto cuja taxa de transmissao 00050 * desejamos obter. 00051 * @param VideoRate ponteiro para o inteiro nao sinalizado que 00052 * armazenara a taxa de transmissao do video. 00053 * @return erro se nao foi possivel chamar o metodo ou se algum erro 00054 * ocorreu ao executar o metodo. 00055 */ 00056 HRESULT GetVideoRate( /*[in]*/ const ObjectHandle Handle, 00057 /*[out]*/ unsigned int *VideoRate ); 00058 00059 /** 00060 * SetVideoRate altera a taxa de transmissao (em Kbps) do video. 00061 * @param Handle identificador do objeto cuja taxa de transmissao 00062 * desejamos alterar. 00063 * @param VideoRate nova taxa de transmissao do video. 00064 * @return erro se nao foi possivel chamar o metodo ou se algum erro 00065 * ocorreu ao executar o metodo. 00066 */ 00067 HRESULT SetVideoRate( /*[in]*/ const ObjectHandle Handle, 00068 /*[in]*/ const unsigned int VideoRate ); 00069 /** 00070 * Funcao usada para realocar os blocos fisicos do bloco logico passado 00071 * como parametro 00072 * @param Block identificadao do bloco logico. 00073 * @return S_OK se a realocacao foi feita com sucesso ou um valor 00074 * diferente de S_OK se algum erro ocorreu. 00075 */ 00076 HRESULT ReallocBlocks( /*[in]*/ const ObjectHandle Handle, 00077 /*[in]*/ const RioBlock Block ); 00078 00079 private: 00080 CRioTCP* m_TCPconnection; 00081 00082 }; 00083 00084 #endif // __OBJECTMANAGER_H_