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.
    

      

  • 相关阅读:
    (转)Linux 信号说明列表
    linux下socket函数之listen的参数backlog
    (转)auto_ptr与shared_ptr
    (转)关于两次fork
    收集外链
    (转+整理)Linux下Makefile的automake生成全攻略
    LINUX socket编程(转载)errno.h
    (转) socket编程——sockaddr_in结构体操作
    k Nearest Neighbor Search by CUDA
    CUDA Anisotropic Diffusion on a 2D Image
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/13440240.html
Copyright © 2011-2022 走看看