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 __RIOPROXY_H_ 00021 #define __RIOPROXY_H_ 00022 00023 #include "DataConversion.h" 00024 #include "RioTCP.h" 00025 00026 /* const unsigned int MaxParameterSize = 2048; */ 00027 /* const unsigned int MaxResultSize = 2048; */ 00028 00029 const unsigned int MaxBlockMapSize = ( MaxTCPDataSize - MAX_LONG_STRING_SIZE) / 00030 ( 2 * ( MAX_SHORT_STRING_SIZE + 00031 MAX_ULONG_STRING_SIZE) ); 00032 const unsigned int MaxStorageNodes = ( MaxTCPDataSize - 3 * MAX_LONG_STRING_SIZE) / 00033 ( MAX_ULONG_STRING_SIZE + 00034 MAX_USHORT_STRING_SIZE ); 00035 /* Classes ids */ 00036 const unsigned int RioClassSessionManager = 1; 00037 const unsigned int RioClassStreamManager = 2; 00038 const unsigned int RioClassObjectManager = 3; 00039 const unsigned int RioClassRouter = 4; 00040 // Identificador para as novas chamadas remotas para a classe UserManager. 00041 const unsigned int RioClassUserManager = 5; 00042 00043 /* Session Manager methods */ 00044 const unsigned int RioMethodSessionManagerOpen = 1; 00045 const unsigned int RioMethodSessionManagerClose = 2; 00046 const unsigned int RioMethodSessionManagerOpenStream = 3; 00047 const unsigned int RioMethodSessionManagerCreateObject = 4; 00048 const unsigned int RioMethodSessionManagerDeleteObject = 5; 00049 const unsigned int RioMethodSessionManagerRenameObject = 6; 00050 const unsigned int RioMethodSessionManagerGetBlockSize = 7; 00051 // Apesar de este metodo nao esta implementado no servidor de despacho e nao 00052 // estar sendo usado, nao removemos o seu codigo porque ele pode ser util no 00053 // futuro. 00054 const unsigned int RioMethodSessionManagerGetnStorageNodes = 8; 00055 const unsigned int RioMethodSessionManagerFirstObject = 9; 00056 const unsigned int RioMethodSessionManagerChangeDir = 10; 00057 const unsigned int RioMethodSessionManagerGetCurrentDir = 11; 00058 const unsigned int RioMethodSessionManagerGetObjectInfo = 12; 00059 // Apesar de este metodo nao estar sendo usado, nao removemos o seu codigo 00060 // porque ele pode ser util no futuro. 00061 const unsigned int RioMethodSessionManagerGetNumberOfDisks = 13; 00062 const unsigned int RioMethodSessionManagerGetNumberOfStorageNodes = 14; 00063 const unsigned int RioMethodSessionManagerGetStorageNodeInfo = 15; 00064 const unsigned int RioMethodSessionManagerGetNumberOfActiveAndMaxSessions = 16; 00065 const unsigned int RioMethodSessionManagerSaveMeasures = 17; 00066 // Obs: o metodo com a id 18 (RioMethodSessionManagerGetVideoDuration) foi 00067 // removido porque nao estava sendo usado em lugar nenhum do codigo, e nao 00068 // era util para ser usado futuramente. 00069 // Identificador de um novo metodo usado para obter o IP e as portas do 00070 // Servidor RIO e dos Storage Servers. 00071 const unsigned int RioMethodSessionManagerGetServerAddress = 19; 00072 // Método para uso do cliente de monitoramento (interface) 00073 const unsigned int RioMethodSessionManagerGetMonitorTable = 20; 00074 // Identificador de um novo metodo usado para detectarmos se a versao do 00075 // servidor usa ou nao o controle de fluxo. Este metodo nao retornara nenhum 00076 // resultado, e detectaremos se a versao e nova caso a funcao que executa os 00077 // metodos retorne com sucesso (isto e, sem o erro de que este metodo nao 00078 // existe). 00079 const unsigned int RioMethodSessionManagerCheckStreamControl = 21; 00080 00081 /* Stream Manager methods */ 00082 const unsigned int RioMethodStreamManagerClose = 1; 00083 const unsigned int RioMethodStreamManagerOpenObject = 2; 00084 // Apesar de este metodo nao estar sendo usado, nao removemos o seu codigo 00085 // porque ele pode ser util no futuro. 00086 const unsigned int RioMethodStreamManagerMaxRequests = 3; 00087 const unsigned int RioMethodStreamManagerOpenObjectSubmitToCAC = 4; 00088 // Apesar de este metodo nao estar sendo usado, nao removemos o seu codigo 00089 // porque ele pode ser util no futuro. 00090 const unsigned int RioMethodStreamManagerClientCanStart = 5; 00091 00092 /* Object Manager methods */ 00093 const unsigned int RioMethodObjectManagerClose = 1; 00094 const unsigned int RioMethodObjectManagerGetSize = 2; 00095 const unsigned int RioMethodObjectManagerSetSize = 3; 00096 // Apesar dos tres metodos a seguir (4-6) nao estarem sendo usados, nao 00097 // removemos os seus codigos porque eles podem ser uteis no futuro. 00098 const unsigned int RioMethodObjectManagerGetType = 4; 00099 const unsigned int RioMethodObjectManagerGetnBlocks = 5; 00100 const unsigned int RioMethodObjectManagerGetBlockMap = 6; 00101 const unsigned int RioMethodObjectManagerNextObject = 7; 00102 // Identificadores dos novos metodos usados para obter e alterar a taxa de 00103 // transmissao de um objeto (somente usada para videos transmitidos em tempo 00104 // real). Estes metodos sao usados pela implementacao de controle de fluxo. 00105 const unsigned int RioMethodObjectManagerGetVideoRate = 8; 00106 const unsigned int RioMethodObjectManagerSetVideoRate = 9; 00107 // Identificador do novo metodo usado pela implementacao que permite o reinicio 00108 // dos servidores. Este metodo sera usado pelo cliente para realocar os blocos 00109 // fisicos de um bloco logico ao escrever este bloco do arquivo caso, durante 00110 // a escrita, um dos servidores de armazenamento associado a escrita deixe de 00111 // funcionar. 00112 const unsigned int RioMethodObjectManagerReallocBlocks = 10; 00113 00114 /* Router methods */ 00115 const unsigned int RioMethodRouterDataRequest = 1; 00116 // Metodo utilizado para fornecer ao servidor a lista de mapeamentos NAT do 00117 // cliente utilizados na comunicacao com o servidor e os storages 00118 const unsigned int RioMethodRouterSetNATMappings = 2; 00119 // Novos metodos para executar uma busca nos logs gerados nos servidores. 00120 // Metodo para iniciar uma busca em um dos logs de um servidores. 00121 const unsigned int RioMethodRouterSearchLogsRequest = 3; 00122 // Novo metodo para pedir os blocos do resultado de uma busca iniciada pelo 00123 // metodo acima 00124 const unsigned int RioMethodRouterSearchResultDataRequest = 4; 00125 // Novo metodo para informar ao servidor que um arquivo com um resultado da 00126 // busca pelos logs pode ser removido. 00127 const unsigned int RioMethodRouterRemoveSearchResultFile = 5; 00128 00129 // Novos metodos para a classe UserManager (criar/remover usuarios e alterar a 00130 // senha de um usuario). 00131 // 00132 // Obs: As chamadas para criar/remover usuarios somente poderao ser feitas pelo 00133 // usuario root. Somente o root podera alterar a senha de todos os usuarios, 00134 // sem fornecer a senha anterior. Um usuario comum somente podera mudar a sua 00135 // senha, e precisara, neste caso, fornecer a sua senha anterior. 00136 // 00137 00138 // Novo metodo para criar um novo usuario (um diretorio com o mesmo nome do 00139 // usuario e criado). 00140 const unsigned int RioMethodUserManagerCreateUser = 1; 00141 // Novo metodo para remover um novo usuario (o diretorio nao e removido). 00142 const unsigned int RioMethodUserManagerRemoveUser = 2; 00143 // Novo metodo para mudar a senha de um usuario existente. 00144 const unsigned int RioMethodUserManagerChangePassword = 3; 00145 // Novo metodo para retornar a lista com todos os usuarios do sistema RIO. 00146 const unsigned int RioMethodUserManagerUserList = 4; 00147 00148 #endif /* __RIOPROXY_H_ */