[seiscomp, scanloc] Install, add .gitignore
This commit is contained in:
259
include/seiscomp/core/record.h
Normal file
259
include/seiscomp/core/record.h
Normal file
@ -0,0 +1,259 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) gempa GmbH *
|
||||
* All rights reserved. *
|
||||
* Contact: gempa GmbH (seiscomp-dev@gempa.de) *
|
||||
* *
|
||||
* GNU Affero General Public License Usage *
|
||||
* This file may be used under the terms of the GNU Affero *
|
||||
* Public License version 3.0 as published by the Free Software Foundation *
|
||||
* and appearing in the file LICENSE included in the packaging of this *
|
||||
* file. Please review the following information to ensure the GNU Affero *
|
||||
* Public License version 3.0 requirements will be met: *
|
||||
* https://www.gnu.org/licenses/agpl-3.0.html. *
|
||||
* *
|
||||
* Other Usage *
|
||||
* Alternatively, this file may be used in accordance with the terms and *
|
||||
* conditions contained in a signed written agreement between you and *
|
||||
* gempa GmbH. *
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
#ifndef SEISCOMP_CORE_RECORD_H
|
||||
#define SEISCOMP_CORE_RECORD_H
|
||||
|
||||
|
||||
#include <string>
|
||||
#include <time.h>
|
||||
#include <iostream>
|
||||
|
||||
#include <seiscomp/core/baseobject.h>
|
||||
#include <seiscomp/core/interfacefactory.h>
|
||||
#include <seiscomp/core/timewindow.h>
|
||||
#include <seiscomp/core/array.h>
|
||||
#include <seiscomp/core/exceptions.h>
|
||||
|
||||
|
||||
|
||||
namespace Seiscomp {
|
||||
|
||||
|
||||
class BitSet;
|
||||
|
||||
|
||||
DEFINE_SMARTPOINTER(Record);
|
||||
|
||||
class SC_SYSTEM_CORE_API Record : public Seiscomp::Core::BaseObject {
|
||||
DECLARE_SC_CLASS(Record);
|
||||
DECLARE_SERIALIZATION;
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
// Public enumeration
|
||||
// ----------------------------------------------------------------------
|
||||
public:
|
||||
//! Specifies the memory storage flags.
|
||||
enum Hint {
|
||||
META_ONLY,
|
||||
DATA_ONLY,
|
||||
SAVE_RAW,
|
||||
H_QUANTITY
|
||||
};
|
||||
|
||||
//! This enum was introduced with API 13
|
||||
enum Authentication {
|
||||
NOT_SIGNED,
|
||||
SIGNATURE_VALIDATED,
|
||||
SIGNATURE_VALIDATION_FAILED,
|
||||
A_QUANTITY
|
||||
};
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
// X'truction
|
||||
// ----------------------------------------------------------------------
|
||||
public:
|
||||
//! Default Constructor
|
||||
Record(Array::DataType datatype, Hint);
|
||||
|
||||
//! Initializing Constructor
|
||||
Record(Array::DataType, Hint,
|
||||
std::string net, std::string sta, std::string loc, std::string cha,
|
||||
Seiscomp::Core::Time stime, int nsamp, double fsamp, int tqual);
|
||||
|
||||
//! Copy Constructor
|
||||
Record(const Record &rec);
|
||||
|
||||
//! Destructor
|
||||
virtual ~Record();
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
// Operators
|
||||
// ----------------------------------------------------------------------
|
||||
public:
|
||||
//! Assignment operator
|
||||
Record &operator=(const Record &rec);
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
// Public attribute access
|
||||
// ----------------------------------------------------------------------
|
||||
public:
|
||||
//! Returns the network code
|
||||
const std::string &networkCode() const;
|
||||
|
||||
//! Sets the network code
|
||||
virtual void setNetworkCode(std::string net);
|
||||
|
||||
//! Returns the station code
|
||||
const std::string &stationCode() const;
|
||||
|
||||
//! Sets the station code
|
||||
virtual void setStationCode(std::string sta);
|
||||
|
||||
//! Returns the location code
|
||||
const std::string &locationCode() const;
|
||||
|
||||
//! Sets the location code
|
||||
virtual void setLocationCode(std::string loc);
|
||||
|
||||
//! Returns the channel code
|
||||
const std::string &channelCode() const;
|
||||
|
||||
//! Sets the channel code
|
||||
virtual void setChannelCode(std::string cha);
|
||||
|
||||
//! Returns the start time
|
||||
const Core::Time& startTime() const;
|
||||
|
||||
//! Sets the start time
|
||||
virtual void setStartTime(const Core::Time& time);
|
||||
|
||||
//! Returns the end time
|
||||
Core::Time endTime() const;
|
||||
|
||||
//! Returns the time window between start and end time of a record
|
||||
Core::TimeWindow timeWindow() const;
|
||||
|
||||
//! Returns the sample number
|
||||
int sampleCount() const;
|
||||
|
||||
//! Returns the sample frequency
|
||||
double samplingFrequency() const;
|
||||
|
||||
//! Returns the timing quality
|
||||
int timingQuality() const;
|
||||
|
||||
//! Sets the timing quality
|
||||
void setTimingQuality(int tqual);
|
||||
|
||||
//! Returns the so called stream ID: <net>.<sta>.<loc>.<cha>
|
||||
std::string streamID() const;
|
||||
|
||||
//! Returns the data type specified for the data sample requests
|
||||
Array::DataType dataType() const;
|
||||
|
||||
//! Sets the data type for the data requests which can differ
|
||||
//! from the real type of the data samples.
|
||||
void setDataType(Array::DataType dt);
|
||||
|
||||
//! Sets the hint used for data operations
|
||||
void setHint(Hint h);
|
||||
|
||||
/**
|
||||
* @brief Sets the authentication state.
|
||||
* This function was introduced with API 13.
|
||||
* @param auth The authentication status
|
||||
*/
|
||||
void setAuthentication(Authentication auth);
|
||||
|
||||
//! This function was introduced with API 13
|
||||
Authentication authentication() const;
|
||||
|
||||
/**
|
||||
* @brief Sets the authentication authority
|
||||
* This function was introduced with API 13.
|
||||
* @param authority The authority which signed the record
|
||||
*/
|
||||
void setAuthority(const std::string &authority);
|
||||
|
||||
//! This function was introduced with API 13
|
||||
const std::string &authority() const;
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
// Public data access
|
||||
// ----------------------------------------------------------------------
|
||||
public:
|
||||
//! Returns a nonmutable pointer to the data samples if the data is available; otherwise 0
|
||||
//! (the data type is independent from the original one and was given by the DataType flag in the constructor)
|
||||
virtual const Array* data() const = 0;
|
||||
|
||||
//! Returns the raw data of the record if existing
|
||||
virtual const Array* raw() const = 0;
|
||||
|
||||
//! Returns a deep copy of the calling object.
|
||||
virtual Record* copy() const = 0;
|
||||
|
||||
//! Return the clip mask for the data in the record. The clip mask
|
||||
//! holds a bit for each sample and sets that bit to 1 if the sample
|
||||
//! is clipped. The default implementation always returns nullptr.
|
||||
//! Support has to be provided in derived implementations.
|
||||
virtual const BitSet *clipMask() const;
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
// Public methods
|
||||
// ----------------------------------------------------------------------
|
||||
public:
|
||||
//! Frees the memory allocated for the data samples.
|
||||
virtual void saveSpace() const = 0;
|
||||
|
||||
virtual void read(std::istream &in) = 0;
|
||||
virtual void write(std::ostream &out) = 0;
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
// Protected members
|
||||
// ----------------------------------------------------------------------
|
||||
protected:
|
||||
std::string _net;
|
||||
std::string _sta;
|
||||
std::string _loc;
|
||||
std::string _cha;
|
||||
Core::Time _stime;
|
||||
Array::DataType _datatype;
|
||||
Hint _hint;
|
||||
int _nsamp;
|
||||
double _fsamp;
|
||||
int _timequal;
|
||||
Authentication _authenticationStatus;
|
||||
std::string _authority;
|
||||
};
|
||||
|
||||
|
||||
DEFINE_INTERFACE_FACTORY(Record);
|
||||
|
||||
#define REGISTER_RECORD_VAR(Class, Service) \
|
||||
Seiscomp::Core::Generic::InterfaceFactory<Seiscomp::Record, Class> __##Class##InterfaceFactory__(Service)
|
||||
|
||||
#define REGISTER_RECORD(Class, Service) \
|
||||
static REGISTER_RECORD_VAR(Class, Service)
|
||||
|
||||
|
||||
inline Record::Authentication Record::authentication() const {
|
||||
return _authenticationStatus;
|
||||
}
|
||||
|
||||
inline const std::string &Record::authority() const {
|
||||
return _authority;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
SC_SYSTEM_CORE_API std::istream& operator>>(std::istream &is, Seiscomp::Record &rec);
|
||||
SC_SYSTEM_CORE_API std::ostream& operator<<(std::ostream &os, Seiscomp::Record &rec);
|
||||
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user