unit GroupProtocols; interface uses Classes, SysUtils, GroupUtility, superobject; type TGroupProtocol = class private FProtocols: TStringList; public constructor Create(AGroupClient: TObject); destructor Destroy; override; procedure Proccess(AData: WideString); end; implementation uses GroupProcess, LoggerImport, GroupClient; { TGroupProtocol } constructor TGroupProtocol.Create(AGroupClient: TObject); var AClient: TGroupClient; begin AClient := (AGroupClient as TGroupClient); FProtocols := TStringList.Create; // FProtocols.AddObject(GROUP_CREATE_REQUEST, TBaseProcess.Create(nil)); FProtocols.AddObject(GROUP_CREATE_RESPONSE, TGroupCreateResponse.Create(AClient)); FProtocols.AddObject(GROUP_CREATE_FAIL, TBaseProcess.Create(AClient)); FProtocols.AddObject(GROUP_CREATE_BROADCAST, TGroupCreateResponse.Create(AClient)); // FProtocols.AddObject(GROUP_UPDATE_REQUEST, TBaseProcess.Create(nil)); FProtocols.AddObject(GROUP_UPDATE_RESPONSE, TGroupUpdateResponse.Create(AClient)); FProtocols.AddObject(GROUP_UPDATE_FAIL, TBaseProcess.Create(AClient)); FProtocols.AddObject(GROUP_UPDATE_BROADCAST, TGroupUpdateResponse.Create(AClient)); // FProtocols.AddObject(GROUP_DEL_REQUEST, TBaseProcess.Create(nil)); FProtocols.AddObject(GROUP_DEL_RESPONSE, TGroupDeleteResponse.Create(AClient)); FProtocols.AddObject(GROUP_DEL_FAIL, TBaseProcess.Create(AClient)); FProtocols.AddObject(GROUP_DEL_BROADCAST, TGroupDeleteResponse.Create(AClient)); // FProtocols.AddObject(GROUP_GET_REQUEST, TBaseProcess.Create(nil)); FProtocols.AddObject(GROUP_GET_RESPONSE, TGroupAsynResponse.Create(AClient)); FProtocols.AddObject(GROUP_GET_FAIL, TBaseProcess.Create(AClient)); // FProtocols.AddObject(GROUP_QUERY_REQUEST, TBaseProcess.Create(nil)); FProtocols.AddObject(GROUP_QUERY_RESPONSE, TGroupSearchResponse.Create(AClient)); FProtocols.AddObject(GROUP_QUERY_FAIL, TBaseProcess.Create(AClient)); // FProtocols.AddObject(MEMBER_QUERY_REQUEST, TBaseProcess.Create(nil)); FProtocols.AddObject(MEMBER_QUERY_RESPONSE, TBaseProcess.Create(AClient)); FProtocols.AddObject(MEMBER_QUERY_FAIL, TBaseProcess.Create(AClient)); // FProtocols.AddObject(MEMBER_ADD_REQUEST, TBaseProcess.Create(nil)); FProtocols.AddObject(MEMBER_ADD_RESPONSE, TMemberAddResponse.Create(AClient)); FProtocols.AddObject(MEMBER_ADD_FAIL, TBaseProcess.Create(AClient)); FProtocols.AddObject(MEMBER_ADD_BROADCAST, TMemberAddResponse.Create(AClient)); // FProtocols.AddObject(MEMBER_ADD_P, TBaseProcess.Create(nil)); // FProtocols.AddObject(MEMBER_DEL_REQUEST, TBaseProcess.Create(nil)); FProtocols.AddObject(MEMBER_DEL_RESPONSE, TMemberDelResponse.Create(AClient)); FProtocols.AddObject(MEMBER_DEL_FAIL, TBaseProcess.Create(AClient)); FProtocols.AddObject(MEMBER_DEL_BROADCAST, TMemberDelResponse.Create(AClient)); // FProtocols.AddObject(MEMBER_UPDATE_REQUEST, TBaseProcess.Create(nil)); FProtocols.AddObject(MEMBER_UPDATE_RESPONSE, TBaseProcess.Create(AClient)); FProtocols.AddObject(MEMBER_UPDATE_FAIL, TBaseProcess.Create(AClient)); FProtocols.AddObject(MEMBER_UPDATE_BROADCAST, TBaseProcess.Create(AClient)); // FProtocols.AddObject(MEMBER_APPLY_REQUEST, TBaseProcess.Create(nil)); FProtocols.AddObject(MEMBER_APPLY_RESPONSE, TBaseProcess.Create(AClient)); FProtocols.AddObject(MEMBER_APPLY_FAIL, TBaseProcess.Create(AClient)); FProtocols.AddObject(MEMBER_APPLY_P2P, TMemberApplyP.Create(AClient)); // FProtocols.AddObject(MEMBER_REPLY_REQUEST, TBaseProcess.Create(nil)); FProtocols.AddObject(MEMBER_REPLY_RESPONSE, TBaseProcess.Create(AClient)); FProtocols.AddObject(MEMBER_REPLY_FAIL, TBaseProcess.Create(AClient)); FProtocols.AddObject(MEMBER_REPLY_P2P, TMemberReplyP.Create(AClient)); // FProtocols.AddObject(MESSAGE_SAY_REQUEST, TBaseProcess.Create(nil)); // FProtocols.AddObject(MESSAGE_SAY_RESPONSE, TBaseProcess.Create(AClient)); FProtocols.AddObject(MESSAGE_SAY_BROADCAST, TMessageBroadcast.Create(AClient)); FProtocols.AddObject(MESSAGE_OFFLINE_RESPONSE, TOfflineMessageResponse.Create(AClient)); // FProtocols.AddObject(MARK_MK_REQUEST, TBaseProcess.Create(nil)); FProtocols.AddObject(MARK_MK_RESPONSE, TBaseProcess.Create(AClient)); FProtocols.AddObject(MARK_MK_B, TMessageMiscBroadcast.Create(AClient)); // FProtocols.AddObject(MEMBER_GS_REQUEST, TBaseProcess.Create(nil)); FProtocols.AddObject(USER_LI_RESPONSE, TGetMyGroupsResponse.Create(AClient)); FProtocols.AddObject(FILE_UPLOADED_BROADCAST, TFileDownloadBroadcast.Create(AClient)); FProtocols.AddObject(HISTORY_H_R, TNewOfflineMessageResponse.Create(AClient)); end; destructor TGroupProtocol.Destroy; begin FreeAndNil(FProtocols); inherited; end; procedure TGroupProtocol.Proccess(AData: WideString); var ja: TSuperArray; proto: string; i: Integer; begin try //GrpMonitor.ReflashLastTime; AData := Copy(AData,3,length(AData)); if AData = '' then Exit; ja := SO(AData).AsArray; i := FProtocols.IndexOf(ja.S[0]); if i < 0 then Exit; (FProtocols.Objects[i] as TBaseProcess).Excute(ja.O[1]) except on E: Exception do Error(E.Message+AData, 'TGroupProtocol.Proccess('+AData+')'); end; end; end.