2014-09-23 15:04:57 +02:00
/////////////////////////////////////////////////////////////////////////////////
2013-05-24 11:07:59 +02:00
//
2014-09-23 15:04:57 +02:00
// Copyright (C) 2011- Statoil ASA
// Copyright (C) 2013- Ceetron Solutions AS
// Copyright (C) 2011-2012 Ceetron AS
2013-05-24 11:07:59 +02:00
//
// ResInsight is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE.
//
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
// for more details.
//
/////////////////////////////////////////////////////////////////////////////////
#include "RiaStdInclude.h"
2014-04-01 15:31:13 +02:00
#include "RiaApplication.h"
#include "RiaPreferences.h"
2013-05-24 11:07:59 +02:00
#include "RiaSocketTools.h"
#include "RiaSocketServer.h"
2015-05-15 09:16:33 +02:00
#include "RimEclipseCase.h"
2013-05-24 11:07:59 +02:00
#include "RimCaseCollection.h"
#include "RimIdenticalGridCaseGroup.h"
#include "RimInputCase.h"
2015-05-21 10:34:38 +02:00
#include "RimEclipseView.h"
2013-05-24 11:07:59 +02:00
#include "RimResultSlot.h"
#include "RimCellEdgeResultSlot.h"
#include "RimCellRangeFilterCollection.h"
#include "RimCellPropertyFilterCollection.h"
#include "RimWellCollection.h"
#include "Rim3dOverlayInfoConfig.h"
2014-07-24 14:03:17 +02:00
#include "RimReservoirCellResultsStorage.h"
2013-05-24 11:07:59 +02:00
#include "RimInputPropertyCollection.h"
2014-04-14 14:36:47 +02:00
#include "RiaSocketDataTransfer.h"
2014-04-01 15:31:13 +02:00
2014-04-14 14:36:47 +02:00
#include <QTcpSocket>
2013-05-24 11:07:59 +02:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2015-05-15 08:40:27 +02:00
RimEclipseCase * RiaSocketTools :: findCaseFromArgs ( RiaSocketServer * server , const QList < QByteArray >& args )
2013-05-24 11:07:59 +02:00
{
2015-05-15 08:40:27 +02:00
RimEclipseCase * rimCase = NULL ;
2013-05-24 11:07:59 +02:00
int caseId = - 1 ;
if ( args . size () > 1 )
{
caseId = args [ 1 ]. toInt ();
}
rimCase = server -> findReservoir ( caseId );
if ( rimCase == NULL )
{
// TODO: Display error message a different place to avoid socket comm to be halted.
//server->errorMessageDialog()->showMessage(RiaSocketServer::tr("ResInsight SocketServer: \n") + RiaSocketServer::tr("Could not find the Case with CaseId : \"%1\"").arg(caseId));
}
return rimCase ;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2015-05-15 18:51:49 +02:00
void RiaSocketTools :: getCaseInfoFromCase ( RimCase * rimCase , qint64 & caseId , QString & caseName , QString & caseType , qint64 & caseGroupId )
2013-05-24 11:07:59 +02:00
{
CVF_ASSERT ( rimCase );
caseId = rimCase -> caseId ;
caseName = rimCase -> caseUserDescription ;
2015-05-15 18:51:49 +02:00
RimEclipseCase * eclCase = dynamic_cast < RimEclipseCase *> ( rimCase );
RimCaseCollection * caseCollection = NULL ;
if ( eclCase )
{
caseCollection = eclCase -> parentCaseCollection ();
}
2013-05-24 11:07:59 +02:00
if ( caseCollection )
{
caseGroupId = caseCollection -> parentCaseGroup () -> groupId ;
if ( RimIdenticalGridCaseGroup :: isStatisticsCaseCollection ( caseCollection ))
{
caseType = "StatisticsCase" ;
}
else
{
caseType = "SourceCase" ;
}
}
else
{
caseGroupId = - 1 ;
if ( dynamic_cast < RimInputCase *> ( rimCase ))
{
caseType = "InputCase" ;
}
2015-05-15 18:51:49 +02:00
else if ( eclCase )
{
caseType = "GeoMechCase" ;
}
2013-05-24 11:07:59 +02:00
else
{
caseType = "ResultCase" ;
}
}
}
2014-04-14 14:36:47 +02:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2014-04-01 15:31:13 +02:00
bool RiaSocketTools :: writeBlockData ( RiaSocketServer * server , QTcpSocket * socket , const char * data , quint64 bytesToWrite )
{
cvf :: Timer timer ;
2014-04-14 14:36:47 +02:00
QStringList errorMessages ;
bool writeSucceded = RiaSocketDataTransfer :: writeBlockDataToSocket ( socket , data , bytesToWrite , errorMessages );
2014-04-01 15:31:13 +02:00
2014-04-14 14:36:47 +02:00
if ( server )
2014-04-01 15:31:13 +02:00
{
2014-04-14 14:36:47 +02:00
for ( int i = 0 ; i < errorMessages . size (); i ++ )
2014-04-01 15:31:13 +02:00
{
2014-04-14 14:36:47 +02:00
server -> errorMessageDialog () -> showMessage ( errorMessages [ i ]);
2014-04-01 15:31:13 +02:00
}
2014-04-15 13:40:53 +02:00
// double totalTimeMS = timer.time() * 1000.0;
// QString resultInfo = QString("Total time '%1 ms'").arg(totalTimeMS);
//
// server->errorMessageDialog()->showMessage(resultInfo);
2014-04-01 15:31:13 +02:00
}
2014-04-14 14:36:47 +02:00
return writeSucceded ;
2014-04-01 15:31:13 +02:00
}