[성현모] CPXV2 Init
This commit is contained in:
@ -0,0 +1,216 @@
|
||||
using System;
|
||||
using System.CodeDom;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Runtime.Remoting.Messaging;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using SystemX.Common.Archive;
|
||||
using SystemX.Common.Serialization;
|
||||
using SystemX.Net.BaseProtocol;
|
||||
using static SystemX.Net.Platform.Common.Util.LogMessage;
|
||||
|
||||
//STATIC 일반적으로 쓸 공용
|
||||
namespace SystemX.Common
|
||||
{
|
||||
public class ResultEventArgs : EventArgs
|
||||
{
|
||||
public bool bProcReuslt { get; set; }
|
||||
|
||||
public ResultEventArgs(bool bGetResult)
|
||||
{
|
||||
bProcReuslt = bGetResult;
|
||||
}
|
||||
~ResultEventArgs()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
public class ScheduleEvent : EventArgs
|
||||
{
|
||||
public int CALL_NUMBER { get; set; }
|
||||
public bool PROCESS_RESULT { get; set; }
|
||||
public string STATE_MSG { get; set; }
|
||||
public byte nLABEL { get; set; }
|
||||
|
||||
public ScheduleEvent(int iCallNumer, bool bState, string strMsg, byte nLabel)
|
||||
{
|
||||
CALL_NUMBER = iCallNumer;
|
||||
|
||||
PROCESS_RESULT = bState;
|
||||
|
||||
STATE_MSG = strMsg;
|
||||
|
||||
nLABEL = nLabel;
|
||||
}
|
||||
|
||||
~ScheduleEvent()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
public delegate void SendRecvCallEvent(byte[] sender, ScheduleEvent e);
|
||||
public delegate void SocketCallEvent(object sender, ScheduleEvent e);
|
||||
|
||||
//SystemXNetCommons
|
||||
public static partial class XCommons
|
||||
{
|
||||
[DllImport("msvcrt.dll", CallingConvention = CallingConvention.Cdecl)]
|
||||
static extern int memcmp(byte[] b1, byte[] b2, long count);
|
||||
|
||||
public static bool ByteArrayCompare(byte[] ucArr1, byte[] ucArr2)
|
||||
{
|
||||
if (ucArr1 == null || ucArr2 == null)
|
||||
return false;
|
||||
if (ucArr1.Length != ucArr2.Length)
|
||||
return false;
|
||||
|
||||
// Validate buffers are the same length.
|
||||
// This also ensures that the count does not exceed the length of either buffer.
|
||||
return (memcmp(ucArr1, ucArr2, ucArr1.Length) == 0);
|
||||
}
|
||||
|
||||
|
||||
public const int PAD_SIZE = 12;
|
||||
private const int HEAD_SIZE = 8;
|
||||
private const int TAIL_SIZE = 4;
|
||||
|
||||
public static bool isHasRow(DataSet ds)
|
||||
{
|
||||
return (ds != null) ? ds.Tables.Cast<DataTable>().Any(table => table.Rows.Count != 0) : false;
|
||||
}
|
||||
|
||||
public static bool isHasRow(DataTable dt)
|
||||
{
|
||||
return (dt != null) ? dt.Rows.Count > 0 : false;
|
||||
}
|
||||
|
||||
//
|
||||
// 요약:
|
||||
// 패킷 압축 및 마샬링 패킷 마샬링 및 압축 해제시
|
||||
public class CommonPacketMarshalException : Exception
|
||||
{
|
||||
public CommonPacketMarshalException()
|
||||
{
|
||||
}
|
||||
|
||||
public CommonPacketMarshalException(string message)
|
||||
: base(message)
|
||||
{
|
||||
}
|
||||
|
||||
public CommonPacketMarshalException(string message, Exception inner)
|
||||
: base(message, inner)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
public static BASE_PROTOCOL GetHeaderProtocol(int iSize, byte[] CompressMarshalByteStream)
|
||||
{
|
||||
byte[] ucDecompressGetByte = new byte[1];
|
||||
byte[] getRowByte = new byte[iSize - PAD_SIZE];
|
||||
|
||||
BASE_PROTOCOL SET_PROTOCOL = new BASE_PROTOCOL();
|
||||
|
||||
try
|
||||
{
|
||||
try
|
||||
{
|
||||
Array.Copy(CompressMarshalByteStream, HEAD_SIZE, getRowByte, 0, iSize - PAD_SIZE);
|
||||
|
||||
HEADER_PACKET GetHeaderPacket = new HEADER_PACKET();
|
||||
int iHeaderSize = Marshal.SizeOf(GetHeaderPacket);
|
||||
byte[] ucHeaderMake = new byte[iHeaderSize];
|
||||
GetHeaderPacket = (HEADER_PACKET)SystemXNetSerialization.RawDeSerialize(ucHeaderMake, GetHeaderPacket.GetType());
|
||||
int iHeadLeng = Marshal.SizeOf(GetHeaderPacket);
|
||||
|
||||
byte[] ucHeadBytes = new byte[iHeadLeng];
|
||||
|
||||
Array.Copy(getRowByte, 0, ucHeadBytes, 0, iHeadLeng);
|
||||
|
||||
GetHeaderPacket = (HEADER_PACKET)SystemXNetSerialization.RawDeSerialize(ucHeadBytes, GetHeaderPacket.GetType());
|
||||
|
||||
SET_PROTOCOL = (new BASE_PROTOCOL(GetHeaderPacket.usCommand, GetHeaderPacket.usSubCommand, GetHeaderPacket.uiOptionCommand));
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
//throw new CommonPacketMarshalException("General packet marshalling failed.[SystemX.Common : SystemXNetCommons.GetHeaderProtocol]");
|
||||
MessageOutput.ConsoleWrite(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>>") + @"General packet marshalling failed.[SystemX.Common : SystemXNetCommons.GetHeaderProtocol]\r\n" + e.Message, ConsoleColor.Yellow, LogMessageLevel.DEBUG);
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
;//Until unused
|
||||
}
|
||||
|
||||
return SET_PROTOCOL;
|
||||
}
|
||||
public static HEADER_PACKET GetHeaderPacket(int iSize, byte[] CompressMarshalByteStream)
|
||||
{
|
||||
byte[] ucDecompressGetByte = new byte[1];
|
||||
byte[] getRowByte = new byte[iSize - PAD_SIZE];
|
||||
|
||||
HEADER_PACKET GetHeaderPacket = new HEADER_PACKET();
|
||||
|
||||
try
|
||||
{
|
||||
try
|
||||
{
|
||||
Array.Copy(CompressMarshalByteStream, HEAD_SIZE, getRowByte, 0, iSize - PAD_SIZE);
|
||||
|
||||
GetHeaderPacket = new HEADER_PACKET();
|
||||
int iHeaderSize = Marshal.SizeOf(GetHeaderPacket);
|
||||
byte[] ucHeaderMake = new byte[iHeaderSize];
|
||||
GetHeaderPacket = (HEADER_PACKET)SystemXNetSerialization.RawDeSerialize(ucHeaderMake, GetHeaderPacket.GetType());
|
||||
int iHeadLeng = Marshal.SizeOf(GetHeaderPacket);
|
||||
|
||||
byte[] ucHeadBytes = new byte[iHeadLeng];
|
||||
|
||||
Array.Copy(getRowByte, 0, ucHeadBytes, 0, iHeadLeng);
|
||||
|
||||
GetHeaderPacket = (HEADER_PACKET)SystemXNetSerialization.RawDeSerialize(ucHeadBytes, GetHeaderPacket.GetType());
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
//throw new CommonPacketMarshalException("General packet marshalling failed.[SystemX.Common : SystemXNetCommons.GetHeaderPacket]");
|
||||
MessageOutput.ConsoleWrite(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>>") + @"General packet marshalling failed.[SystemX.Common : SystemXNetCommons.GetHeaderPacket]\r\n" + e.Message, ConsoleColor.Yellow, LogMessageLevel.DEBUG);
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
;//Until unused
|
||||
}
|
||||
|
||||
return GetHeaderPacket;
|
||||
}
|
||||
private static byte[] HeadTailMake(uint uiPacketSize, byte[] HeadBuff, byte[] BodyBuff)
|
||||
{
|
||||
byte[] ucSetStreamBytes = new byte[uiPacketSize + PAD_SIZE];
|
||||
|
||||
ucSetStreamBytes[0] = 0x0D;
|
||||
ucSetStreamBytes[1] = 0x02;
|
||||
ucSetStreamBytes[2] = (byte)(uiPacketSize >> 24);
|
||||
ucSetStreamBytes[3] = (byte)(uiPacketSize >> 16);
|
||||
ucSetStreamBytes[4] = (byte)(uiPacketSize >> 8);
|
||||
ucSetStreamBytes[5] = (byte)(uiPacketSize >> 0);
|
||||
ucSetStreamBytes[6] = 0x08;
|
||||
ucSetStreamBytes[7] = 0x0A;
|
||||
|
||||
Array.Copy(HeadBuff, 0, ucSetStreamBytes, 8, HeadBuff.Count());
|
||||
Array.Copy(BodyBuff, 0, ucSetStreamBytes, HeadBuff.Count() + HEAD_SIZE, BodyBuff.Count());
|
||||
|
||||
ucSetStreamBytes[ucSetStreamBytes.Length - 4] = 0x0D;
|
||||
ucSetStreamBytes[ucSetStreamBytes.Length - 3] = 0x02;
|
||||
ucSetStreamBytes[ucSetStreamBytes.Length - 2] = 0x08;
|
||||
ucSetStreamBytes[ucSetStreamBytes.Length - 1] = 0x0A;
|
||||
|
||||
return ucSetStreamBytes;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user