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.
    

      

  • 相关阅读:
    拓扑排序
    Frame Stacking 框架堆叠
    第二课 欧几里德算法与扩展欧几里德算法
    欧拉回路
    第一课 快速幂取模
    cookie使用汇总 c设置ookie的生命周期
    .net ArrayList的用法简介
    关于C#的partial修饰符
    sql server修改表结构的sql语句
    Web MVC模式中的基本表单提交
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/13440240.html
Copyright © 2011-2022 走看看