提交 ea6c2aa4 编写于 作者: cdy816's avatar cdy816

日常更新

上级 8885605d
......@@ -154,7 +154,7 @@ namespace SpiderDriver
/// </summary>
private IByteBuffer TagInfoRequest(string clientId, IByteBuffer memory)
{
mInfoProcess.ProcessData(clientId, memory);
mInfoProcess?.ProcessData(clientId, memory);
return null;
}
......@@ -166,7 +166,7 @@ namespace SpiderDriver
/// <returns></returns>
private IByteBuffer RealDataRequest(string clientId, IByteBuffer memory)
{
this.mRealProcess.ProcessData(clientId, memory);
this.mRealProcess?.ProcessData(clientId, memory);
return null;
}
......@@ -178,7 +178,7 @@ namespace SpiderDriver
/// <returns></returns>
private IByteBuffer HisDataRequest(string clientid,IByteBuffer memory)
{
this.mHisProcess.ProcessData(clientid, memory);
this.mHisProcess?.ProcessData(clientid, memory);
return null;
}
......
......@@ -2,7 +2,7 @@
"profiles": {
"DBInRun": {
"commandName": "Executable",
"executablePath": "C:\\Users\\chongdaoyang\\source\\repos\\mars\\Output\\DBInRun.exe"
"executablePath": "C:\\Users\\cdy81\\source\\repos\\mars\\Output\\DBInRun.exe"
}
}
}
\ No newline at end of file
......@@ -7,6 +7,7 @@
// 种道洋
//==============================================================
using System;
using System.Buffers;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
......@@ -94,8 +95,15 @@ namespace Cdy.Tag
/// </summary>
public override DataFileSeriserbase Flush()
{
if (mStream != null)
mStream.Flush();
try
{
if (mStream != null && mStream.CanWrite)
mStream.Flush();
}
catch
{
}
return this;
}
......@@ -104,9 +112,16 @@ namespace Cdy.Tag
/// </summary>
public override DataFileSeriserbase Close()
{
if (mStream != null)
try
{
mStream.Close();
if (mStream != null)
{
mStream.Close();
}
}
catch
{
}
return this;
}
......@@ -195,16 +210,26 @@ namespace Cdy.Tag
{
mStream.Position = mStream.Length;
int size = 1024 * 128;
byte[] bvals = new byte[size];
for(int i=0;i<(len/size);i++)
//byte[] bvals = new byte[size];
var bvals = ArrayPool<byte>.Shared.Rent(size);
try
{
mStream.Write(bvals, 0, bvals.Length);
for (int i = 0; i < (len / size); i++)
{
mStream.Write(bvals, 0, bvals.Length);
}
int csize = len % size;
if (csize > 0)
{
mStream.Write(bvals, 0, csize);
}
}
int csize = len % size;
if (csize > 0)
catch
{
mStream.Write(bvals, 0, csize);
}
ArrayPool<byte>.Shared.Return(bvals);
return this;
}
......@@ -216,9 +241,17 @@ namespace Cdy.Tag
public override long ReadLong(long start)
{
mStream.Position = start;
byte[] re = new byte[8];
mStream.Read(re, 0, re.Length);
return BitConverter.ToInt64(re, 0);
//byte[] re = new byte[8];
var re = ArrayPool<byte>.Shared.Rent(8);
try
{
mStream.Read(re, 0, re.Length);
return BitConverter.ToInt64(re, 0);
}
finally
{
ArrayPool<byte>.Shared.Return(re);
}
}
/// <summary>
......@@ -229,9 +262,17 @@ namespace Cdy.Tag
public override int ReadInt(long start)
{
mStream.Position = start;
byte[] re = new byte[4];
mStream.Read(re, 0, re.Length);
return BitConverter.ToInt32(re, 0);
//byte[] re = new byte[4];
var re = ArrayPool<byte>.Shared.Rent(4);
try
{
mStream.Read(re, 0, re.Length);
return BitConverter.ToInt32(re, 0);
}
finally
{
ArrayPool<byte>.Shared.Return(re);
}
}
/// <summary>
......@@ -242,9 +283,17 @@ namespace Cdy.Tag
public override float ReadFloat(long start)
{
mStream.Position = start;
byte[] re = new byte[4];
mStream.Read(re, 0, re.Length);
return MemoryHelper.ReadFloat(re);
// byte[] re = new byte[4];
var re = ArrayPool<byte>.Shared.Rent(4);
try
{
mStream.Read(re, 0, re.Length);
return MemoryHelper.ReadFloat(re);
}
finally
{
ArrayPool<byte>.Shared.Return(re);
}
}
/// <summary>
......@@ -255,9 +304,17 @@ namespace Cdy.Tag
public override double ReadDouble(long start)
{
mStream.Position = start;
byte[] re = new byte[8];
mStream.Read(re, 0, re.Length);
return MemoryHelper.ReadDouble(re);
// byte[] re = new byte[8];
var re = ArrayPool<byte>.Shared.Rent(8);
try
{
mStream.Read(re, 0, re.Length);
return MemoryHelper.ReadDouble(re);
}
finally
{
ArrayPool<byte>.Shared.Return(re);
}
}
/// <summary>
......@@ -277,12 +334,19 @@ namespace Cdy.Tag
public override DateTime ReadDateTime(long start)
{
mStream.Position = start;
byte[] re = new byte[8];
mStream.Read(re, 0, re.Length);
return MemoryHelper.ReadDateTime(re);
// byte[] re = new byte[8];
var re = ArrayPool<byte>.Shared.Rent(8);
try
{
mStream.Read(re, 0, re.Length);
// return DateTime.FromBinary(BitConverter.ToInt64(re, 0));
return MemoryHelper.ReadDateTime(re);
}
finally
{
ArrayPool<byte>.Shared.Return(re);
}
// return DateTime.FromBinary(BitConverter.ToInt64(re, 0));
}
/// <summary>
......
......@@ -527,6 +527,8 @@ namespace Cdy.Tag
mFileWriter.Write(mFileWriter.ReadInt(16) + 1, 16);
LoggerService.Service.Debug("SeriseEnginer2", "AppendDataRegionHeader_数据区数量更新:" + mFileWriter.ReadInt(16));
mPreDataRegion = mCurrentDataRegion;
mBlockPointOffset = mCurrentDataRegion + mBlockPointOffset;
......@@ -550,6 +552,8 @@ namespace Cdy.Tag
mFileWriter.Write(mFileWriter.ReadInt(16) + 1, 16);
LoggerService.Service.Debug("SeriseEnginer2", "NewDataRegionHeader_数据区数量更新:" + mFileWriter.ReadInt(16));
ArrayPool<byte>.Shared.Return(bval);
}
......@@ -679,34 +683,46 @@ namespace Cdy.Tag
string sfile = GetFileName(time);
// DataFileSeriserbase reader = mFileWriter2;
DataFileSeriserbase dfs;
if (time > mCurrentTime)
{
//如果需要新建的文件,影响到自动记录存储要用到的文件,
//则转到自动记录存储逻辑进行处理
CheckFile(time);
dfs = this.mFileWriter;
//mCurrentTime = time;
}
else
{
if (mFileWriter2.CreatOrOpenFile(sfile))
if (sfile == mCurrentFileName)
{
var date = new DateTime(time.Year, time.Month, time.Day, ((time.Hour / FileDuration) * FileDuration), 0, 0);
//新建文件
AppendFileHeader(time, this.DatabaseName, mFileWriter2);
NewDataRegionHeader(date, mFileWriter2);
dfs = this.mFileWriter;
}
else
{
//如果文件格式不正确,则新建
if (mFileWriter2.Length < FileHeadSize)
dfs = mFileWriter2;
if (mFileWriter2.CreatOrOpenFile(sfile))
{
var date = new DateTime(time.Year, time.Month, time.Day, ((time.Hour / FileDuration) * FileDuration), 0, 0);
//新建文件
AppendFileHeader(time, this.DatabaseName, mFileWriter2);
NewDataRegionHeader(date, mFileWriter2);
}
else
{
//如果文件格式不正确,则新建
if (mFileWriter2.Length < FileHeadSize)
{
var date = new DateTime(time.Year, time.Month, time.Day, ((time.Hour / FileDuration) * FileDuration), 0, 0);
//新建文件
AppendFileHeader(time, this.DatabaseName, mFileWriter2);
NewDataRegionHeader(date, mFileWriter2);
}
}
}
}
mFileReader = dfs;
long ltmp = 0;
......@@ -716,9 +732,7 @@ namespace Cdy.Tag
var icount = mTagIdsCach.IndexOf(id);
ltmp = SearchDataRegionToDatetime(mFileWriter2, time);
mFileReader = mFileWriter2;
ltmp = SearchDataRegionToDatetime(dfs, time);
if (ltmp < 0)
{
......@@ -728,6 +742,8 @@ namespace Cdy.Tag
ltmp += mDataRegionHeadSize + mTagCount * 8 * bid + icount * 8;
LoggerService.Service.Debug("SeriseEnginer2", "DataRegion Pointer:"+ ltmp + ",mDataRegionHeadSize:" + mDataRegionHeadSize + ",BlockIndex:" + bid + " tag index:" + icount);
return ltmp;
}
......@@ -792,8 +808,13 @@ namespace Cdy.Tag
var vpointer = mwriter.GoToEnd().CurrentPostion;
datablock.WriteToStream(mFileWriter.GetStream(), vpointer, size);//直接拷贝数据块
datablock.WriteLong(heads, vpointer);
LoggerService.Service.Debug("SeriseEnginer2", "更新数据区指针:"+heads+" Values:"+vpointer);
mwriter.Flush();
mwriter.Close();
if (mwriter != mFileWriter)
mwriter.Close();
datablock.MakeMemoryNoBusy();
MarshalMemoryBlockPool.Pool.Release(datablock);
......@@ -1003,8 +1024,6 @@ namespace Cdy.Tag
if (!CheckFile(time))
return;
//更新最后写入时间
var vtmp = mFileWriter.ReadDateTime(8);
if (endTime > vtmp)
......@@ -1012,7 +1031,7 @@ namespace Cdy.Tag
mFileWriter.Write(endTime, 8);
}
if(datasize==0)
if (datasize == 0)
{
Flush();
sw.Stop();
......
......@@ -2,7 +2,7 @@
"profiles": {
"HisDataTools": {
"commandName": "Executable",
"executablePath": "C:\\Users\\chongdaoyang\\source\\repos\\mars\\Output\\HisDataTools.exe"
"executablePath": "C:\\Users\\cdy81\\source\\repos\\mars\\Output\\HisDataTools.exe"
}
}
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册