zoukankan      html  css  js  c++  java
  • SOCKET缓存

    SOCKET缓存

    /// <author>cxg 2020-7-13</author>
    /// socket缓存(线程安全)
    
    unit sockBuf;
    
    interface
    
    uses
      System.SyncObjs, Net.SocketAPI, Net.CrossSocket.Base, Net.CrossSocket,
      System.Generics.Collections, System.Classes, System.SysUtils;
    
    const
      bufsize = 32768; //32K
    
    type
      TSockBuf = class
      private
        bufs: TDictionary<ICrossConnection, TMemoryStream>; 
        fCS: TCriticalSection;
      public
        constructor Create;
        destructor Destroy; override;
        function process(const Connection: ICrossConnection; const Buf: Pointer; const Len: Integer): TMemoryStream;
        procedure remove(const Connection: ICrossConnection);
      end;
    
    implementation
    
    { TSockBuf }
    
    constructor TSockBuf.Create;
    begin
      bufs := TDictionary<ICrossConnection, TMemoryStream>.Create;
      fCS := TCriticalSection.Create;
    end;
    
    destructor TSockBuf.Destroy;
    begin
      for var v: TMemoryStream in bufs.Values do
        v.Free;
      FreeAndNil(bufs);
      FreeAndNil(fCS);
      inherited;
    end;
    
    function TSockBuf.process(const Connection: ICrossConnection; const Buf: Pointer; const Len: Integer): TMemoryStream;
    begin
      fCS.Enter;
      if not bufs.ContainsKey(Connection) then  
      begin
        Result := TMemoryStream.Create;
        bufs.Add(Connection, Result);
      end
      else     
        bufs.TryGetValue(Connection, Result);
      fCS.Leave;
      Result.Write(Buf^, Len);
    end;
    
    procedure TSockBuf.remove(const Connection: ICrossConnection);
    begin
      fCS.Enter;
      bufs[Connection].Free;
      bufs.Remove(Connection);
      fCS.Leave;
    end;
    
    end.
    

      

  • 相关阅读:
    相机标定/校正(Camera Calibration)
    彩色图像直方图均衡(Histogram Equalization)
    SQL--数据的检索
    SQL--数据的增删改
    SQL--数据库的创建与管理
    java学习笔记之异常、断言
    Mysql学习笔记(二)
    初学机器学习(一)
    Mysql学习笔记(一)
    软件课设Day15
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/13296359.html
Copyright © 2011-2022 走看看