zoukankan      html  css  js  c++  java
  • 中间件集群协议msgpack

    中间件集群协议msgpack

    /// <author>cxg 2020-8-5</author>
    /// 集群协议
    /// broker:代理服务器
    
    unit groupProtocol;
    
    interface
    
    uses
      SysUtils, MsgPack
      ,classes
      ;
    
    const         //命令字
      ConnMiddleWare = 2;
      ConnMiddleWareResp = 52;
      MiddleHeartBeat = 5;
      MiddleHeartBeatResp = 55;
    
    /// <summary>
    /// 向broker申请连中间件
    /// </summary>
    /// <returns></returns>
    function connMiddle: TStream;
    /// <summary>
    /// broket返回可用中间件的ip和port
    /// </summary>
    /// <param name="status"></param>
    /// <param name="ip"></param>
    /// <param name="port"></param>
    /// <returns></returns>
    function connMiddleResp(const status: Boolean; const ip: string; const port: Integer): TStream;
    /// <summary>
    /// 中间件发送心跳给broker
    /// </summary>
    /// <param name="ip"></param>
    /// <param name="port"></param>
    /// <returns></returns>
    function middleHeart(const ip: string; const port: Integer): TStream;
    /// <summary>
    /// broker返回中间件心跳应答
    /// </summary>
    /// <param name="status"></param>
    /// <returns></returns>
    function middleHeartResp: TStream;
    
    implementation
    
    function middleHeartResp: TStream;
    begin
      var p: TMsgPack := TMsgPack.Create;
      Result := TMemoryStream.Create;
      p.Force('cmd').AsInteger := MiddleHeartBeatResp;
      p.EncodeToStream(Result);
      p.Free;
    end;
    
    function middleHeart(const ip: string; const port: Integer): TStream;
    begin
      var p: TMsgPack := TMsgPack.Create;
      Result := TMemoryStream.Create;
      p.Force('cmd').AsInteger := MiddleHeartBeat;
      p.Force('ip').AsString := ip;
      p.Force('port').AsInteger := port;
      p.EncodeToStream(Result);
      p.Free;
    end;
    
    function connMiddleResp(const status: Boolean; const ip: string; const port: Integer): TStream;
    begin
      var p: TMsgPack := TMsgPack.Create;
      Result := TMemoryStream.Create;
      p.Force('cmd').AsInteger := ConnMiddleWareResp;
      p.Force('status').AsBoolean := status;
      p.Force('ip').AsString := ip;
      p.Force('port').AsInteger := port;
      p.EncodeToStream(Result);
      p.Free;
    end;
    
    function connMiddle: TStream;
    begin
      var p: TMsgPack := TMsgPack.Create;
      Result := TMemoryStream.Create;
      p.Force('cmd').AsInteger := ConnMiddleWare;
      p.EncodeToStream(Result);
      p.Free;
    end;
    
    end.
    

      

  • 相关阅读:
    数据库索引分析(一)
    对象的序列化(串行化)分析(一)
    Java 集合类 TreeSet、TreeMap
    查找杀死指定进程delphi
    delphi集合的用法
    debian 删除软件
    linux 各种国内源更新 (source)
    screen 命令使用记录
    Python 常用import
    常用Python函数
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/13440240.html
Copyright © 2011-2022 走看看