public Paket(PaketType paketType, byte[] dataBuffer) { PaketType = paketType; Data = dataBuffer; PaketGroupId = Guid.NewGuid(); PaketMaxCount = 1; PaketPosition = PaketPosition.Start; PaketNumber = 1; }
public void SendBytes(PaketType type, byte[] content, int id, Socket socket) { ITypeTranslator translator = _context.GetObject<ITypeTranslator>(); int typeId = translator.translateType(type); byte[] packet = CommunicationHelper.createPaket(content, typeId, id); lock (socket) { socket.Send(packet); } }
public static void RunPaketCommand(string rootDir, string paketExePath, PaketType paketType, string command, string args, CancellationToken cancellationToken) { var arguments = paketType switch { PaketType.Exe => $"{command} {args ?? string.Empty}".Trim(), PaketType.GlobalTool => $"{command} {args ?? string.Empty}".Trim(), PaketType.LocalTool => $"paket {command} {args ?? string.Empty}".Trim(), _ => throw new ArgumentOutOfRangeException(nameof(paketType), paketType, null) }; Run(rootDir, paketExePath, arguments, cancellationToken); }
public static Paket[] GetPakets(int paketSize, PaketType paketType, byte[] data) { // Wenn data kleiner als die vorgegebene maximalgröße ist // braucht diese nicht gesplitted werden und muss in kein großen Buffer gesteckt werden paketSize = paketSize < (data.Length + _paketSizeWithoutData) ? paketSize : (data.Length + _paketSizeWithoutData); var paketGroupId = Guid.NewGuid(); List <Paket> pakets = new List <Paket>(); using (var memoryStream = new MemoryStream(data)) { while (memoryStream.Position < memoryStream.Length) { byte[] buffer = new byte[paketSize - _paketSizeWithoutData]; var paket = new Paket(); paket.PaketGroupId = paketGroupId; paket.PaketType = paketType; paket.PaketNumber = pakets.Count; if (memoryStream.Position == 0) { paket.PaketPosition = PaketPosition.Start; memoryStream.Read(buffer, 0, buffer.Length); paket.Data = buffer; pakets.Add(paket); continue; } var readed = memoryStream.Read(buffer, 0, buffer.Length); paket.Data = buffer.Take(readed).ToArray(); if (memoryStream.Position == memoryStream.Length) { paket.PaketPosition = PaketPosition.End; pakets.Add(paket); continue; } paket.PaketPosition = PaketPosition.Between; pakets.Add(paket); } foreach (var paket in pakets) { paket.PaketMaxCount = pakets.Count; } return(pakets.ToArray()); } }
public void HandlePaket(PaketType type, byte[] content, int id) { //Bei einem IsAliveRequest der Timer dieses Threads zurücksetzen if(type == PaketType.IsAliveRequest) { _timeouthandler.HandleMessage(content, id); return; } lock (_modules) { IModuleHandler module = _modules.Where<IModuleHandler>(x => x.HandleType == type).FirstOrDefault(); if (module != null) { lock (module) { module.HandleMessage(content, id, _socket); } } else throw new ModuleNotImplementedException(type.ToString()); } }
public int translateType(PaketType type) { switch (type) { case PaketType.ConnectionInfo: return ConnectionInfo; case PaketType.NewPlayerInfo: return NewPlayerInfo; case PaketType.UserInformInfo: return UserInformInfo; case PaketType.IsAliveRequest: return IsAliveRequest; case PaketType.FileUpload: return FileUpload; case PaketType.TableUpload: return TableUpload; case PaketType.Message: return Message; case PaketType.PersonalMessage: return PersonalMessage; default: throw new TypeNotKnownException("Unbekannter Typ: " + type.ToString()); } }
public void SendTime(PaketType type, long ms, int id, Socket socket) { byte[] contentBytes = BitConverter.GetBytes(ms); SendBytes(type, contentBytes, id, socket); }
public void SendStream(PaketType type, Stream content, int id, Socket socket) { byte[] contentBytes = new byte[content.Length]; content.Read(contentBytes, 0, (int)content.Length - 1); SendBytes(type, contentBytes, id, socket); }
public void SendMessage(PaketType type, string content, int id, Socket socket) { byte[] contentBytes = CommunicationHelper.EncodeString(content); SendBytes(type, contentBytes, id, socket); }
public void SendInt(PaketType type, int content, int id, Socket socket) { byte[] contentBytes = BitConverter.GetBytes(content); SendBytes(type, contentBytes, id, socket); }
public PaketInfo(string paketPath, PaketType toolType) { PaketPath = paketPath; ToolType = toolType; }