亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? uitaxiserviceodmpclientlogistic.pas

?? a voice guide client ,it is the second part of voice guide center
?? PAS
字號:
//==============================================================================
// $修訂版本號: 1.0 $
// $日期      : 2007年4月20日 星期五 14:44:42 $
// $版本號    : 1.0.0 Goshgen 1 $
//
// 電召客戶端邏輯層定義。
//
//
// $BeginLog$
// $Endlog  $
// $Copyright 版權(quán)所有 (c)2007 TRANSIT  保留所有權(quán)利$
//==============================================================================
{:
  電召客戶端邏輯層定義。
}

unit uITaxiServiceODMPClientLogistic;

interface

uses Classes, DB, SysUtils, uBaseODMProtocalClient, uBaseODMDefs,
uBaseODMProtocalUtils, uBaseODMProtocalCommander,
uITaxiServiceODMPLogisticDefs;

Type
  {: 接收回復指令的觸發(fā)事件。}
	TOnProtocalReplyResult = procedure(_status_id: Integer) of Object;
  {: 接收主動發(fā)送的指令的觸發(fā)事件。}
	TOnProtocalReceiveResult = procedure(_p_protocal_dataset: PBaseODMProtocalDataset) of Object;
  // 觸發(fā)連接狀態(tài)
	TOnLogResult = procedure(_sender: TObject; _is_connect: Boolean) of Object;
  // 觸發(fā)連接錯誤
  TOnTCPClientErrorEvent = procedure(_sender: TObject) of Object;

  {: 電召客戶端邏輯層類。}
  TITaxiServiceBaseODMProtocalClientLogistic = class
  private
    // 客戶端
    baseNetClient : TBaseODMProtocalClient;
    {: 指令狀態(tài)觸發(fā)事件。}
    FOnProtocalReplyResult    : TOnProtocalReplyResult;
    FOnProtocalReceiveResult  : TOnProtocalReceiveResult;
    FOnLogResult              : TOnLogResult;
    FOnTCPClientError         : TOnTCPClientErrorEvent;
  	procedure doOnProtocalResult(_sender: TObject; _protocal_dataset: PBaseODMProtocalDataset;
	  	_command_status: TBaseODMCommanderStatus);
    procedure doOnTCPClientDisConnect(_sender: TObject);
    procedure doOnTCPClientConnect(_sender: TObject);
    procedure doOnTCPClientError(_sender: TObject; _ip: string);

  // 構(gòu)造析構(gòu)
  public
    constructor Create;
    destructor  Destroy; override;

  public
    procedure ConnectCallServer(_address: string; _port: Integer);
    procedure DisConnectCallServer;
    procedure SendODMP(_p_protocal_dataset: PBaseODMProtocalDataset);
    procedure AuthODMP(_command_name, _user_name, _user_password: string;
      _is_ok, _is_active, _is_kick: Boolean);
    procedure CallODMP(_command_name: string; _caller_id: Integer;
      _caller_lon, _caller_lat: Double;
      _caller_info: string);
    procedure SendNoop;
    procedure SendHelp;
    procedure SendQuit;

  published
    property OnProtocalReplyResult : TOnProtocalReplyResult
        read FOnProtocalReplyResult
       write FOnProtocalReplyResult;
    property OnProtocalReceiveResult : TOnProtocalReceiveResult
        read FOnProtocalReceiveResult
       write FOnProtocalReceiveResult;
    property OnLogResult : TOnLogResult
        read FOnLogResult
       write FOnLogResult;
    property OnTCPClientError : TOnTCPClientErrorEvent
        read FOnTCPClientError
       write FOnTCPClientError;

  end;

implementation

{ TITaxiServiceBaseODMProtocalClientLogistic }

//------------------------------------------------------------------------------
//  構(gòu)造與析構(gòu)
//------------------------------------------------------------------------------

{: 構(gòu)造函數(shù)。
}
constructor TITaxiServiceBaseODMProtocalClientLogistic.Create;
begin
  // 定義常用指令
  DefineListCommandDefine   := TStringList.Create;
  DefineListODMPDataDefine  := TStringList.Create;

  baseNetClient := TBaseODMProtocalClient.Create;
  baseNetClient.OnProtocalResult      := doOnProtocalResult;
  baseNetClient.OnTCPClientConnect    := doOnTCPClientConnect;
  baseNetClient.OnTCPClientDisConnect := doOnTCPClientDisConnect;
  baseNetClient.OnTCPClientError      := doOnTCPClientError;

  TITaxiServiceODMPLogisticUtils.defineCommandBCMSeatLogon;
  TITaxiServiceODMPLogisticUtils.defineCommandBCMTaskInfoBase;
  TITaxiServiceODMPLogisticUtils.DefineCommandBCMTaskCancel;
  TITaxiServiceODMPLogisticUtils.DefineCommandBCMTaskReply;
  TITaxiServiceODMPLogisticUtils.DefineCommandBCMTaskEnd;
  TITaxiServiceODMPLogisticUtils.defineCommandBCMTaskInfoAdditional;
  TITaxiServiceODMPLogisticUtils.DefineCommandBCMTaskNew;
  TITaxiServiceODMPLogisticUtils.defineCommandBCMTaskStatus;
  TITaxiServiceODMPLogisticUtils.DefineCommandBCMTaskTaxiInfo;
  TITaxiServiceODMPLogisticUtils.DefineCommandBCMTaskProcessDisconnect;
end;

{: 析構(gòu)函數(shù)。
}
destructor TITaxiServiceBaseODMProtocalClientLogistic.Destroy;
begin
  TBaseODMProtocalUtils.ClearDefineCommandList(DefineListCommandDefine);
  DefineListCommandDefine.Free;
  TBaseODMProtocalUtils.ClearDefineDataList(DefineListODMPDataDefine);
  DefineListODMPDataDefine.Free;

  baseNetClient.Free;

  inherited;
end;

//------------------------------------------------------------------------------
//  公有方法 -- 連接和觸發(fā)事件
//------------------------------------------------------------------------------

{: 客戶端連接服務端。
  @param _address   IP地址
  @param _port      端口
}
procedure TITaxiServiceBaseODMProtocalClientLogistic.ConnectCallServer(_address: string;
  _port: Integer);
begin
  baseNetClient.Connect(_address, _port);
end;

{: 客戶端斷開服務端。
  @param _address   IP地址
  @param _port      端口
}
procedure TITaxiServiceBaseODMProtocalClientLogistic.DisConnectCallServer;
begin
  baseNetClient.Disconnect;
end;

{: 指令接收觸發(fā)事件。
  @param _p_protocal_dataset  指令集
  @param _command_status      指令狀態(tài)
}
procedure TITaxiServiceBaseODMProtocalClientLogistic.doOnProtocalResult(
  _sender: TObject; _protocal_dataset: PBaseODMProtocalDataset;
  _command_status: TBaseODMCommanderStatus);
begin
  // 觸發(fā)日志
  TBaseODMProtocalUtils.OnProtocalResult(
    _protocal_dataset^.Command^.CommandDefine^.CommandName,
    '', _command_status);

  // 處理邏輯指令
  case _command_status of
    // 接收指令
    TBaseODMCommanderStatusReceive:
      // 如果是回復的指令
      if _protocal_dataset^.Command^.CommandDefine^.CommandName = 'REPLY' then
      begin
        if Assigned(FOnProtocalReplyResult) then
          FOnProtocalReplyResult(StrToIntDef(_protocal_dataset^.Command^.CommandStatus, 0));
      end
      // 收到服務端發(fā)送的指令
      else begin
        if Assigned(FOnProtocalReceiveResult) then
          FOnProtocalReceiveResult(_protocal_dataset);
      end
  end;
end;

{: 斷開觸發(fā)事件。
  @param _p_protocal_dataset  指令集
  @param _command_status      指令狀態(tài)
}
procedure TITaxiServiceBaseODMProtocalClientLogistic.doOnTCPClientDisConnect(
  _sender: TObject);
begin
  if Assigned(FOnLogResult) then
    FOnLogResult(Self, False);
end;

{: 連接觸發(fā)事件。
  @param _p_protocal_dataset  指令集
  @param _command_status      指令狀態(tài)
}
procedure TITaxiServiceBaseODMProtocalClientLogistic.doOnTCPClientConnect(
  _sender: TObject);
begin
  if Assigned(FOnLogResult) then
    FOnLogResult(Self, True);
end;

procedure TITaxiServiceBaseODMProtocalClientLogistic.doOnTCPClientError(_sender: TObject; _ip: string);
begin
  if Assigned(FOnLogResult) then
    FOnLogResult(Self, False);
end;

//------------------------------------------------------------------------------
//  公有方法 -- 指令發(fā)送
//------------------------------------------------------------------------------

{: 發(fā)送認證。
  @param _p_protocal_dataset    指令數(shù)據(jù)集
}
procedure TITaxiServiceBaseODMProtocalClientLogistic.SendODMP(_p_protocal_dataset: PBaseODMProtocalDataset);
begin
  // 發(fā)送指令對象
  baseNetClient.commander.SendCommand(_p_protocal_dataset);
  // 釋放指令對象
  TBaseODMProtocalUtils.ClearProtocalDataset(_p_protocal_dataset);
end;

{: 發(fā)送認證。
  @param _user_name       用戶名
  @param _user_password   密碼
  @param _is_kick         是否踢用戶
}
procedure TITaxiServiceBaseODMProtocalClientLogistic.AuthODMP(_command_name, _user_name,
  _user_password: string; _is_ok, _is_active, _is_kick: Boolean);
var
  p_protocal_dataset    : PBaseODMProtocalDataset;
begin
  // 建立對象
  p_protocal_dataset := TBaseODMProtocalUtils.BuildProtocalDataset(
    _command_name, False, 0);

  // 增加指令對象內(nèi)容
  TBaseODMProtocalUtils.BuildCommandAddParams(p_protocal_dataset^.Command,
    'UserName', _user_name);
  TBaseODMProtocalUtils.BuildCommandAddParams(p_protocal_dataset^.Command,
    'Password', _user_password);
  TBaseODMProtocalUtils.BuildCommandAddParams(p_protocal_dataset^.Command,
    'IsOK', _is_ok);
  TBaseODMProtocalUtils.BuildCommandAddParams(p_protocal_dataset^.Command,
    'IsActive', _is_active);
  TBaseODMProtocalUtils.BuildCommandAddParams(p_protocal_dataset^.Command,
    'IsKick', _is_kick);

  // 發(fā)送指令對象
  baseNetClient.commander.SendCommand(p_protocal_dataset);
  // 釋放指令對象
  TBaseODMProtocalUtils.ClearProtocalDataset(p_protocal_dataset);
end;

{: 發(fā)送招車指令。
  @param _caller_id       業(yè)務編號
  @param _caller_lon      經(jīng)度
  @param _caller_lat      緯度
  @param _caller_info     招車人信息
}
procedure TITaxiServiceBaseODMProtocalClientLogistic.CallODMP(_command_name: string;
  _caller_id: Integer; _caller_lon, _caller_lat: Double; _caller_info: string);
begin
//  // 建立對象
//  p_protocal_dataset := TBaseODMProtocalUtils.BuildProtocalDataset(
//    _command_name, False, 0);
//
//  // 增加指令對象內(nèi)容
//  TBaseODMProtocalUtils.BuildCommandAddParams(p_protocal_dataset^.Command,
//    'Caller_id, '');
//  TBaseODMProtocalUtils.BuildCommandAddParams(p_protocal_dataset^.Command,
//    _caller_lon, '');
//  TBaseODMProtocalUtils.BuildCommandAddParams(p_protocal_dataset^.Command,
//    _caller_lat, '');
//  TBaseODMProtocalUtils.BuildCommandAddParams(p_protocal_dataset^.Command,
//    _caller_info, _caller_info);
//
//  // 發(fā)送指令對象
//  baseNetClient.commander.SendCommand(p_protocal_dataset);
//  // 釋放指令對象
//  TBaseODMProtocalUtils.ClearProtocalDataset(p_protocal_dataset);
end;

////------------------------------------------------------------------------------
////  公有方法 -- 定義常用指令
////------------------------------------------------------------------------------
//
//{: 定義認證指令。}
//procedure TITaxiServiceBaseODMProtocalClientLogistic.defineCommandAuth;
//var
//  p_command_define: PBaseODMProtocalCommandDefine;
//begin
//  // 定義指令定義
//  p_command_define := TBaseODMProtocalUtils.DefineCommandDefine(
//    'AUTH', TBaseODMProtocalCommandDefineWithDataNo, True);
//
//  // 定義指令定義的參數(shù)
//  TBaseODMProtocalUtils.DefineCommandDefineAddParam(p_command_define,
//    'user_name', '用戶名', 'UserName', ftString);
//  TBaseODMProtocalUtils.DefineCommandDefineAddParam(p_command_define,
//    'user_password', '密碼', 'UserPassword', ftString);
//  TBaseODMProtocalUtils.DefineCommandDefineAddParam(p_command_define,
//    'is_ok', '是否成功', 'IsOK', ftBoolean);
//  TBaseODMProtocalUtils.DefineCommandDefineAddParam(p_command_define,
//    'is_active', '是否激活', 'IsActive', ftBoolean);
//  TBaseODMProtocalUtils.DefineCommandDefineAddParam(p_command_define,
//    'is_kickoff', '是否踢用戶', 'IsKickoff', ftBoolean);
//end;
//
//{: 定義召車指令。}
//procedure TITaxiServiceBaseODMProtocalClientLogistic.defineCommandCall;
//var
//  p_command_define: PBaseODMProtocalCommandDefine;
//begin
//  // 定義指令定義
//  p_command_define := TBaseODMProtocalUtils.DefineCommandDefine(
//    'CALL', TBaseODMProtocalCommandDefineWithDataNo, True);
//
//  // 定義指令定義的參數(shù)
//  TBaseODMProtocalUtils.DefineCommandDefineAddParam(p_command_define,
//    'caller_id', '業(yè)務編號', 'CallerID', ftInteger);
//  TBaseODMProtocalUtils.DefineCommandDefineAddParam(p_command_define,
//    'caller_lon', '經(jīng)度', 'CallerLon', ftFloat);
//  TBaseODMProtocalUtils.DefineCommandDefineAddParam(p_command_define,
//    'caller_lat', '緯度', 'CallerLat', ftFloat);
//  TBaseODMProtocalUtils.DefineCommandDefineAddParam(p_command_define,
//    'caller_info', '召車人信息', 'CallerInfo', ftString);
//end;
//
//{: 定義幫助指令。}
//procedure TITaxiServiceBaseODMProtocalClientLogistic.defineCommandHelp;
//begin
//  TBaseODMProtocalUtils.DefineCommandDefine(
//    'HELP', TBaseODMProtocalCommandDefineWithDataNo, True);
//end;
//
//{: 定義空指令。}
//procedure TITaxiServiceBaseODMProtocalClientLogistic.defineCommandNoop;
//begin
//  TBaseODMProtocalUtils.DefineCommandDefine(
//    'NOOP', TBaseODMProtocalCommandDefineWithDataNo, True);
//end;
//
//{: 定義退出指令。}
//procedure TITaxiServiceBaseODMProtocalClientLogistic.defineCommandQuit;
//begin
//  TBaseODMProtocalUtils.DefineCommandDefine(
//    'QUIT', TBaseODMProtocalCommandDefineWithDataNo, True);
//end;

procedure TITaxiServiceBaseODMProtocalClientLogistic.SendHelp;
begin
  baseNetClient.commander.SendCommandHelp;
end;

procedure TITaxiServiceBaseODMProtocalClientLogistic.SendNoop;
begin
  baseNetClient.commander.SendCommandNoop;
end;

procedure TITaxiServiceBaseODMProtocalClientLogistic.SendQuit;
begin
  baseNetClient.commander.SendCommandQuit;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品一区二区三区在线| 麻豆国产欧美日韩综合精品二区 | 国产精品一级片在线观看| 日韩一区二区三区四区五区六区 | 91精品国产91久久久久久一区二区| 丝袜美腿高跟呻吟高潮一区| 欧美日韩小视频| 性感美女久久精品| 欧美tk—视频vk| 波多野结衣亚洲| 亚洲免费观看高清完整版在线 | 国产久卡久卡久卡久卡视频精品| 老汉av免费一区二区三区| 国产午夜精品久久久久久久 | 一区二区三区精品视频在线| 欧美精品国产精品| 国产成人免费视| 日本成人在线不卡视频| 日韩一区欧美一区| 欧美日韩国产美| 北条麻妃国产九九精品视频| 北条麻妃国产九九精品视频| 91国产视频在线观看| 国内精品视频666| 午夜欧美一区二区三区在线播放| 国产亚洲欧美激情| 亚洲特黄一级片| 欧美国产日韩亚洲一区| 欧美一级搡bbbb搡bbbb| 2024国产精品| 日韩欧美精品三级| 国产精品免费看片| 国产日韩精品一区| 久久综合一区二区| 亚洲精品大片www| 中文字幕欧美一| 免费成人小视频| 日日摸夜夜添夜夜添亚洲女人| 久久国产人妖系列| 一本色道a无线码一区v| 国产成人免费视频网站高清观看视频 | 亚洲成人在线观看视频| 韩国中文字幕2020精品| 色综合久久88色综合天天免费| 91精品国产综合久久久久久久久久 | 久久久久久久久久久久久久久99| 91国偷自产一区二区开放时间 | 国产精品1区二区.| 欧美自拍丝袜亚洲| 91浏览器打开| 成人午夜av影视| 成人一级视频在线观看| 欧美精品vⅰdeose4hd| 日本一区二区高清| 乱中年女人伦av一区二区| 色婷婷综合五月| 中文字幕第一区第二区| 麻豆国产精品一区二区三区| 色噜噜夜夜夜综合网| 国产精品污www在线观看| 麻豆国产91在线播放| 欧美人xxxx| 亚洲不卡av一区二区三区| 成人h动漫精品一区二区| 91影视在线播放| 国产精品第13页| 亚洲v日本v欧美v久久精品| 日本大香伊一区二区三区| 国产日本一区二区| 国产精品一品视频| 久久视频一区二区| 国内精品久久久久影院色| 日韩精品一区在线| 精品在线播放午夜| 色综合天天狠狠| 亚洲特级片在线| 色婷婷国产精品久久包臀 | 欧美午夜免费电影| 欧美一区二区女人| 天堂精品中文字幕在线| 欧美日韩另类一区| 日日夜夜精品视频天天综合网| 欧美日韩一区不卡| 日韩精品福利网| 91精品国产一区二区三区| 日韩精品一区第一页| 日韩一二三四区| 久久国内精品自在自线400部| 欧美一区二区三区四区五区| 狠狠色综合播放一区二区| 久久久国产午夜精品| 成人精品高清在线| 一区二区三区成人在线视频| 欧美视频一区在线观看| 美女一区二区久久| 欧美—级在线免费片| 色成人在线视频| 日韩电影在线免费| 久久精品一区八戒影视| 91一区二区在线| 视频一区二区中文字幕| 国产日韩亚洲欧美综合| 一本一本大道香蕉久在线精品| 午夜视频在线观看一区二区| 精品国产区一区| 日本va欧美va瓶| 久久久久高清精品| 日本高清不卡在线观看| 久久9热精品视频| 国产精品福利在线播放| 欧美午夜电影网| 国产剧情av麻豆香蕉精品| 一区二区日韩av| 久久色中文字幕| 欧美日韩激情在线| 成人午夜激情片| 日韩avvvv在线播放| 国产精品毛片a∨一区二区三区| 欧美日韩精品一区二区| 国产激情一区二区三区| 亚洲福利电影网| 91麻豆精品91久久久久久清纯| 国产美女在线精品| 2020日本不卡一区二区视频| 在线视频你懂得一区| 国产在线不卡一区| 亚洲1区2区3区4区| 国产精品欧美一级免费| 欧美刺激脚交jootjob| 欧美亚洲高清一区二区三区不卡| 国产在线视视频有精品| 婷婷久久综合九色综合绿巨人 | 久久欧美一区二区| 欧美挠脚心视频网站| 91片在线免费观看| 成人在线综合网| 国产米奇在线777精品观看| 蜜臀av性久久久久av蜜臀妖精| 亚洲图片一区二区| 一区二区三区中文在线| 日本一区二区三区在线观看| 精品第一国产综合精品aⅴ| 欧美精品在线观看播放| 在线亚洲高清视频| 色婷婷久久久久swag精品| 成人动漫一区二区在线| 成人国产在线观看| 成人v精品蜜桃久久一区| 国产一区二区三区视频在线播放| 香蕉成人啪国产精品视频综合网| 亚洲综合在线视频| 亚洲另类在线制服丝袜| 日韩美女精品在线| 日韩美女精品在线| 亚洲日本在线看| 一区二区三区日韩精品视频| 亚洲三级在线观看| 亚洲观看高清完整版在线观看| 亚洲自拍偷拍麻豆| 久久嫩草精品久久久精品一| 精品三级在线观看| 精品国精品自拍自在线| 精品久久久久香蕉网| 精品国产伦一区二区三区观看方式 | 久久久久国产精品免费免费搜索| 欧美大白屁股肥臀xxxxxx| 日韩欧美一区二区不卡| 日韩视频永久免费| 国产色婷婷亚洲99精品小说| 国产精品免费人成网站| 亚洲一区二区三区四区在线免费观看| 亚洲自拍偷拍图区| 蜜臀av亚洲一区中文字幕| 国产成人精品亚洲午夜麻豆| 国产成人在线电影| 色偷偷88欧美精品久久久| 9191成人精品久久| 国产片一区二区三区| 亚洲乱码国产乱码精品精可以看| 夜夜嗨av一区二区三区 | xvideos.蜜桃一区二区| 自拍av一区二区三区| 视频一区二区不卡| 国产福利精品导航| 欧洲一区二区三区在线| 精品盗摄一区二区三区| 成人免费一区二区三区在线观看| 一区二区三区在线观看欧美| 蜜臀久久久99精品久久久久久| 国产精品一区二区久久不卡| 欧洲av在线精品| 久久久精品国产免大香伊| 亚洲国产精品久久不卡毛片| 国产福利精品导航| 69久久夜色精品国产69蝌蚪网| 国产精品久久久久四虎| 免费美女久久99| 欧美中文字幕一区| 国产精品蜜臀在线观看| 蜜臂av日日欢夜夜爽一区|