blob: 74433536486171c762039ddb8ee171bcb3583b16 [file] [log] [blame]
// **********************************************************************
// @@@ START COPYRIGHT @@@
//
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
//
// @@@ END COPYRIGHT @@@
// **********************************************************************
#ifndef CMPPROCESS_H
#define CMPPROCESS_H
#include "CmpCommon.h"
#include "ComCextdecs.h"
/************************************************************************
class CmpProcess
Used to get information about this compiler
process through Guardian procedure calls
************************************************************************/
class CmpProcess
{
public:
CmpProcess();
// getters
inline short getNodeNum() { return nodeNum_; }
inline short getPin() { return pin_; }
inline Int32 getSegmentNum() { return segmentNum_; }
inline Int64 getProcessStartTime() { return processStartTime_; }
Int64 getProcessDuration();
Lng32 getCurrentSystemHeapSize();
// generate the compiler id out of cpu#, pin, node#, and process start timestamp
void getCompilerId( char *id, int len);
private:
short nodeNum_; // cpu num
short pin_;
Int32 segmentNum_;
//
// timestamp for when this CmpProcess was created
Int64 processStartTime_;
};
/************************************************************************
helper functions for timestamps
************************************************************************/
static
void
getTimestampAsBuffer(Int64 juliantimestamp, char *datetime)
{
short timestamp[8];
CMPASSERT(NULL!=datetime);
INTERPRETTIMESTAMP(juliantimestamp, timestamp);
str_sprintf(datetime, "%04d/%02d/%02d %02d:%02d:%02d.%03u%03u",
timestamp[0], // year
timestamp[1], // month
timestamp[2], // day
timestamp[3], // hour
timestamp[4], // minute
timestamp[5], // second
timestamp[6], // fraction
timestamp[7]);// fraction
}
static
Int64
getCurrentTimestamp()
{
// return timestamp in local civil time
return CONVERTTIMESTAMP(JULIANTIMESTAMP(0,0,0,-1),0,-1,0);
}
static Int64 getCurrentTimestampUEpoch()
{
// return local timestamp in unix epoch (since January 1, 1970). This is what
// is expected by the repository UNC
time_t utcTimeStamp = time(0);
tm localTime;
localtime_r (&utcTimeStamp, &localTime);
time_t lctTimeStamp = timegm(&localTime);
Int64 usLctTimestamp = 1000000 * (Int64) lctTimeStamp;
return usLctTimestamp;
}
#endif // CMPPROCESS_H