|
|
@ -434,16 +434,20 @@ mmsServer_fileUploadTask(MmsServer self, MmsObtainFileTask task)
|
|
|
|
|
|
|
|
|
|
|
|
case MMS_FILE_UPLOAD_STATE_SEND_FILE_READ:
|
|
|
|
case MMS_FILE_UPLOAD_STATE_SEND_FILE_READ:
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
IsoConnection_lock(task->connection->isoConnection);
|
|
|
|
|
|
|
|
|
|
|
|
ByteBuffer* request = MmsServer_reserveTransmitBuffer(self);
|
|
|
|
ByteBuffer* request = MmsServer_reserveTransmitBuffer(self);
|
|
|
|
|
|
|
|
|
|
|
|
task->lastRequestInvokeId = MmsServerConnection_getNextRequestInvokeId(task->connection);
|
|
|
|
task->lastRequestInvokeId = MmsServerConnection_getNextRequestInvokeId(task->connection);
|
|
|
|
|
|
|
|
|
|
|
|
mmsClient_createFileReadRequest(task->lastRequestInvokeId, request, task->frmsId);
|
|
|
|
mmsClient_createFileReadRequest(task->lastRequestInvokeId, request, task->frmsId);
|
|
|
|
|
|
|
|
|
|
|
|
IsoConnection_sendMessage(task->connection->isoConnection, request, false);
|
|
|
|
IsoConnection_sendMessage(task->connection->isoConnection, request);
|
|
|
|
|
|
|
|
|
|
|
|
MmsServer_releaseTransmitBuffer(self);
|
|
|
|
MmsServer_releaseTransmitBuffer(self);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IsoConnection_unlock(task->connection->isoConnection);
|
|
|
|
|
|
|
|
|
|
|
|
task->nextTimeout = Hal_getTimeInMs() + 2000; /* timeout 2000 ms */
|
|
|
|
task->nextTimeout = Hal_getTimeInMs() + 2000; /* timeout 2000 ms */
|
|
|
|
|
|
|
|
|
|
|
|
task->state = MMS_FILE_UPLOAD_STATE_FILE_READ_SENT;
|
|
|
|
task->state = MMS_FILE_UPLOAD_STATE_FILE_READ_SENT;
|
|
|
@ -468,16 +472,20 @@ mmsServer_fileUploadTask(MmsServer self, MmsObtainFileTask task)
|
|
|
|
|
|
|
|
|
|
|
|
case MMS_FILE_UPLOAD_STATE_SEND_FILE_CLOSE:
|
|
|
|
case MMS_FILE_UPLOAD_STATE_SEND_FILE_CLOSE:
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
IsoConnection_lock(task->connection->isoConnection);
|
|
|
|
|
|
|
|
|
|
|
|
ByteBuffer* request = MmsServer_reserveTransmitBuffer(self);
|
|
|
|
ByteBuffer* request = MmsServer_reserveTransmitBuffer(self);
|
|
|
|
|
|
|
|
|
|
|
|
task->lastRequestInvokeId = MmsServerConnection_getNextRequestInvokeId(task->connection);
|
|
|
|
task->lastRequestInvokeId = MmsServerConnection_getNextRequestInvokeId(task->connection);
|
|
|
|
|
|
|
|
|
|
|
|
mmsClient_createFileCloseRequest(task->lastRequestInvokeId, request, task->frmsId);
|
|
|
|
mmsClient_createFileCloseRequest(task->lastRequestInvokeId, request, task->frmsId);
|
|
|
|
|
|
|
|
|
|
|
|
IsoConnection_sendMessage(task->connection->isoConnection, request, false);
|
|
|
|
IsoConnection_sendMessage(task->connection->isoConnection, request);
|
|
|
|
|
|
|
|
|
|
|
|
MmsServer_releaseTransmitBuffer(self);
|
|
|
|
MmsServer_releaseTransmitBuffer(self);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IsoConnection_unlock(task->connection->isoConnection);
|
|
|
|
|
|
|
|
|
|
|
|
task->nextTimeout = Hal_getTimeInMs() + 2000; /* timeout 2000 ms */
|
|
|
|
task->nextTimeout = Hal_getTimeInMs() + 2000; /* timeout 2000 ms */
|
|
|
|
|
|
|
|
|
|
|
|
task->state = MMS_FILE_UPLOAD_STATE_FILE_CLOSE_SENT;
|
|
|
|
task->state = MMS_FILE_UPLOAD_STATE_FILE_CLOSE_SENT;
|
|
|
@ -504,17 +512,21 @@ mmsServer_fileUploadTask(MmsServer self, MmsObtainFileTask task)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
/* send ObtainFileError */
|
|
|
|
/* send ObtainFileError */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IsoConnection_lock(task->connection->isoConnection);
|
|
|
|
|
|
|
|
|
|
|
|
ByteBuffer* response = MmsServer_reserveTransmitBuffer(self);
|
|
|
|
ByteBuffer* response = MmsServer_reserveTransmitBuffer(self);
|
|
|
|
|
|
|
|
|
|
|
|
createServiceErrorObtainFileError(task->obtainFileRequestInvokeId, response, MMS_ERROR_FILE_FILE_NON_EXISTENT, 0);
|
|
|
|
createServiceErrorObtainFileError(task->obtainFileRequestInvokeId, response, MMS_ERROR_FILE_FILE_NON_EXISTENT, 0);
|
|
|
|
|
|
|
|
|
|
|
|
IsoConnection_sendMessage(task->connection->isoConnection, response, false);
|
|
|
|
IsoConnection_sendMessage(task->connection->isoConnection, response);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MmsServer_releaseTransmitBuffer(self);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IsoConnection_unlock(task->connection->isoConnection);
|
|
|
|
|
|
|
|
|
|
|
|
FileSystem_closeFile(task->fileHandle);
|
|
|
|
FileSystem_closeFile(task->fileHandle);
|
|
|
|
deleteFile(MmsServerConnection_getFilesystemBasepath(task->connection), task->destinationFilename);
|
|
|
|
deleteFile(MmsServerConnection_getFilesystemBasepath(task->connection), task->destinationFilename);
|
|
|
|
|
|
|
|
|
|
|
|
MmsServer_releaseTransmitBuffer(self);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (DEBUG_MMS_SERVER)
|
|
|
|
if (DEBUG_MMS_SERVER)
|
|
|
|
printf("MMS_SERVER: ObtainFile service: failed to open file from client\n");
|
|
|
|
printf("MMS_SERVER: ObtainFile service: failed to open file from client\n");
|
|
|
|
|
|
|
|
|
|
|
@ -526,11 +538,17 @@ mmsServer_fileUploadTask(MmsServer self, MmsObtainFileTask task)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
/* send ObtainFileError */
|
|
|
|
/* send ObtainFileError */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IsoConnection_lock(task->connection->isoConnection);
|
|
|
|
|
|
|
|
|
|
|
|
ByteBuffer* response = MmsServer_reserveTransmitBuffer(self);
|
|
|
|
ByteBuffer* response = MmsServer_reserveTransmitBuffer(self);
|
|
|
|
|
|
|
|
|
|
|
|
createServiceErrorObtainFileError(task->obtainFileRequestInvokeId, response, MMS_ERROR_FILE_OTHER, 1);
|
|
|
|
createServiceErrorObtainFileError(task->obtainFileRequestInvokeId, response, MMS_ERROR_FILE_OTHER, 1);
|
|
|
|
|
|
|
|
|
|
|
|
IsoConnection_sendMessage(task->connection->isoConnection, response, false);
|
|
|
|
IsoConnection_sendMessage(task->connection->isoConnection, response);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MmsServer_releaseTransmitBuffer(self);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IsoConnection_unlock(task->connection->isoConnection);
|
|
|
|
|
|
|
|
|
|
|
|
if (task->fileHandle) {
|
|
|
|
if (task->fileHandle) {
|
|
|
|
FileSystem_closeFile(task->fileHandle);
|
|
|
|
FileSystem_closeFile(task->fileHandle);
|
|
|
@ -539,8 +557,6 @@ mmsServer_fileUploadTask(MmsServer self, MmsObtainFileTask task)
|
|
|
|
deleteFile(MmsServerConnection_getFilesystemBasepath(task->connection), task->destinationFilename);
|
|
|
|
deleteFile(MmsServerConnection_getFilesystemBasepath(task->connection), task->destinationFilename);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
MmsServer_releaseTransmitBuffer(self);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (DEBUG_MMS_SERVER)
|
|
|
|
if (DEBUG_MMS_SERVER)
|
|
|
|
printf("MMS_SERVER: ObtainFile service: failed to create local file\n");
|
|
|
|
printf("MMS_SERVER: ObtainFile service: failed to create local file\n");
|
|
|
|
|
|
|
|
|
|
|
@ -551,14 +567,18 @@ mmsServer_fileUploadTask(MmsServer self, MmsObtainFileTask task)
|
|
|
|
|
|
|
|
|
|
|
|
case MMS_FILE_UPLOAD_STATE_SEND_OBTAIN_FILE_RESPONSE:
|
|
|
|
case MMS_FILE_UPLOAD_STATE_SEND_OBTAIN_FILE_RESPONSE:
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
IsoConnection_lock(task->connection->isoConnection);
|
|
|
|
|
|
|
|
|
|
|
|
ByteBuffer* response = MmsServer_reserveTransmitBuffer(self);
|
|
|
|
ByteBuffer* response = MmsServer_reserveTransmitBuffer(self);
|
|
|
|
|
|
|
|
|
|
|
|
createObtainFileResponse(task->obtainFileRequestInvokeId, response);
|
|
|
|
createObtainFileResponse(task->obtainFileRequestInvokeId, response);
|
|
|
|
|
|
|
|
|
|
|
|
IsoConnection_sendMessage(task->connection->isoConnection, response, false);
|
|
|
|
IsoConnection_sendMessage(task->connection->isoConnection, response);
|
|
|
|
|
|
|
|
|
|
|
|
MmsServer_releaseTransmitBuffer(self);
|
|
|
|
MmsServer_releaseTransmitBuffer(self);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IsoConnection_unlock(task->connection->isoConnection);
|
|
|
|
|
|
|
|
|
|
|
|
if (self->getFileCompleteHandler)
|
|
|
|
if (self->getFileCompleteHandler)
|
|
|
|
self->getFileCompleteHandler(self->getFileCompleteHandlerParameter, task->connection, task->destinationFilename);
|
|
|
|
self->getFileCompleteHandler(self->getFileCompleteHandlerParameter, task->connection, task->destinationFilename);
|
|
|
|
|
|
|
|
|
|
|
@ -678,7 +698,7 @@ mmsServer_handleObtainFileRequest(
|
|
|
|
|
|
|
|
|
|
|
|
mmsClient_createFileOpenRequest(task->lastRequestInvokeId, request, sourceFilename, 0);
|
|
|
|
mmsClient_createFileOpenRequest(task->lastRequestInvokeId, request, sourceFilename, 0);
|
|
|
|
|
|
|
|
|
|
|
|
IsoConnection_sendMessage(task->connection->isoConnection, request, true);
|
|
|
|
IsoConnection_sendMessage(task->connection->isoConnection, request);
|
|
|
|
|
|
|
|
|
|
|
|
MmsServer_releaseTransmitBuffer(connection->server);
|
|
|
|
MmsServer_releaseTransmitBuffer(connection->server);
|
|
|
|
|
|
|
|
|
|
|
|