⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 msgserver.pas

📁 Delphi MsgCommunicator 2-10 component.I ve used, really good job. can be Server-Client message appl
💻 PAS
📖 第 1 页 / 共 5 页
字号:
    UserInfo:           TMsgUserInfo;
begin
 CommandHeader.CommandResult := MSG_Error_AddUserToContacts_InvalidParams;
 try
   LoadDataFromStream(UserID,SizeOf(UserID),Stream,11502);
   LoadDataFromStream(ContactNameSource,SizeOf(ContactNameSource),Stream,11503);
   LoadShortStringFromStream(ContactCustomName,Stream,11504);
   CommandHeader.CommandResult := MSG_COMMAND_OK;
 except
   on e: EMsgException do
    FServer.DoOnError(CommandHeader.CommandResult,e.NativeError,e.Message);
   on e: Exception do
    FServer.DoOnError(CommandHeader.CommandResult,-1,e.Message)
   else
    FServer.DoOnError(CommandHeader.CommandResult);
 end;
 Stream.Size := 0;
 Stream.Position := 0;
 if (CommandHeader.CommandResult = MSG_COMMAND_OK) then
  begin
   try
    CommandHeader.CommandResult := MSG_Error_AddUserToContacts_Failed;
    if (not FServer.IsUserExisting(UserID)) then
      CommandHeader.CommandResult := MSG_Error_AddUserToContacts_UserDoesNotExist
    else
     begin
      FServer.AddUserToContacts(FUserID,UserID,ContactNameSource,ContactCustomName);
      CommandHeader.CommandResult := MSG_COMMAND_OK;
     end;
   except
     on e: EMsgException do
      FServer.DoOnError(CommandHeader.CommandResult,e.NativeError,e.Message);
     on e: Exception do
      FServer.DoOnError(CommandHeader.CommandResult,-1,e.Message)
     else
      FServer.DoOnError(CommandHeader.CommandResult);
   end;
  end;
 SaveDataToStream(CommandHeader,SizeOf(CommandHeader),Stream,11505);
 if (CommandHeader.CommandResult = MSG_COMMAND_OK) then
  begin
   UserInfo := FServer.GetUserInfo(UserID);
   FServer.SaveUserInfoToStream(UserInfo,Stream);
  end;
 Buffer := Stream.Buffer;
 SendBuffer(Buffer,Stream.Size);
end; // ExecuteAddUserToContacts


//------------------------------------------------------------------------------
// update user in contacts
//------------------------------------------------------------------------------
procedure TMsgServerSession.ExecuteUpdateUserInContacts(var CommandHeader: TMsgCommandHeader; Stream: TMsgMemoryStream);
var UserID:             Cardinal;
    Buffer:             PChar;
    ContactCustomName:  ShortString;
    ContactNameSource:  TMsgContactNameSource;
begin
 CommandHeader.CommandResult := MSG_Error_UpdateUserInContacts_InvalidParams;
 try
   LoadDataFromStream(UserID,SizeOf(UserID),Stream,11509);
   LoadDataFromStream(ContactNameSource,SizeOf(ContactNameSource),Stream,11510);
   LoadShortStringFromStream(ContactCustomName,Stream,11511);
   CommandHeader.CommandResult := MSG_COMMAND_OK;
 except
   on e: EMsgException do
    FServer.DoOnError(CommandHeader.CommandResult,e.NativeError,e.Message);
   on e: Exception do
    FServer.DoOnError(CommandHeader.CommandResult,-1,e.Message)
   else
    FServer.DoOnError(CommandHeader.CommandResult);
 end;
 Stream.Size := 0;
 Stream.Position := 0;
 if (CommandHeader.CommandResult = MSG_COMMAND_OK) then
  begin
   try
    CommandHeader.CommandResult := MSG_Error_UpdateUserInContacts_Failed;
    if (not FServer.IsUserExisting(UserID)) then
      CommandHeader.CommandResult := MSG_Error_UpdateUserInContacts_UserDoesNotExist
    else
     begin
      FServer.UpdateUserInContacts(FUserID,UserID,ContactNameSource,ContactCustomName);
      CommandHeader.CommandResult := MSG_COMMAND_OK;
     end;
   except
     on e: EMsgException do
      FServer.DoOnError(CommandHeader.CommandResult,e.NativeError,e.Message);
     on e: Exception do
      FServer.DoOnError(CommandHeader.CommandResult,-1,e.Message)
     else
      FServer.DoOnError(CommandHeader.CommandResult);
   end;
  end;
 SaveDataToStream(CommandHeader,SizeOf(CommandHeader),Stream,11512);
 Buffer := Stream.Buffer;
 SendBuffer(Buffer,Stream.Size);
end; // ExecuteUpdateUserInContacts


//------------------------------------------------------------------------------
// remove user from contacts
//------------------------------------------------------------------------------
procedure TMsgServerSession.ExecuteRemoveUserFromContacts(var CommandHeader: TMsgCommandHeader; Stream: TMsgMemoryStream);
var UserID:             Cardinal;
    Buffer:             PChar;
begin
 CommandHeader.CommandResult := MSG_Error_RemoveUserFromContacts_InvalidParams;
 try
   LoadDataFromStream(UserID,SizeOf(UserID),Stream,11514);
   CommandHeader.CommandResult := MSG_COMMAND_OK;
 except
   on e: EMsgException do
    FServer.DoOnError(CommandHeader.CommandResult,e.NativeError,e.Message);
   on e: Exception do
    FServer.DoOnError(CommandHeader.CommandResult,-1,e.Message)
   else
    FServer.DoOnError(CommandHeader.CommandResult);
 end;
 Stream.Size := 0;
 Stream.Position := 0;
 if (CommandHeader.CommandResult = MSG_COMMAND_OK) then
  begin
   try
    CommandHeader.CommandResult := MSG_Error_RemoveUserFromContacts_Failed;
    if (not FServer.IsUserExisting(UserID)) then
      CommandHeader.CommandResult := MSG_Error_RemoveUserFromContacts_UserDoesNotExist
    else
     begin
      FServer.RemoveUserFromContacts(FUserID,UserID);
      CommandHeader.CommandResult := MSG_COMMAND_OK;
     end;
   except
     on e: EMsgException do
      FServer.DoOnError(CommandHeader.CommandResult,e.NativeError,e.Message);
     on e: Exception do
      FServer.DoOnError(CommandHeader.CommandResult,-1,e.Message)
     else
      FServer.DoOnError(CommandHeader.CommandResult);
   end;
  end;
 SaveDataToStream(CommandHeader,SizeOf(CommandHeader),Stream,11515);
 Buffer := Stream.Buffer;
 SendBuffer(Buffer,Stream.Size);
end; // ExecuteRemoveUserFromContacts


//------------------------------------------------------------------------------
// find users
//------------------------------------------------------------------------------
procedure TMsgServerSession.ExecuteFindUsers(var CommandHeader: TMsgCommandHeader; Stream: TMsgMemoryStream);
var
    Buffer:           PChar;
    Len:              Integer;
    Users:            TMsgUserInfoArray;
    UserNameComparison:      TMsgTextComparison;
    FirstNameComparison:     TMsgTextComparison;
    LastNameComparison:      TMsgTextComparison;
    OrganizationComparison:  TMsgTextComparison;
    DepartmentComparison:    TMsgTextComparison;
    ApplicationComparison:   TMsgTextComparison;
    HostComparison:          TMsgTextComparison;
    PortComparison:          TMsgIntegerComparison;
    Status:           TMsgUserStatus;
    UserID:           Cardinal;
    UserName:         String;
    FirstName:        String;
    LastName:         String;
    Organization:     String;
    Department:       String;
    Host:             String;
    Application:      String;
    SearchCondition:  String; // SQL WHERE clause without word WHERE
    SortBy:           TMsgUserInfoArraySortBy;
    Ascending:        Boolean;
    OrderByClause:    String;
begin
 CommandHeader.CommandResult := MSG_Error_FindUsers_InvalidParams;
 try
    // load
    LoadDataFromStream(UserNameComparison,SizeOf(UserNameComparison),Stream,11520);
    LoadDataFromStream(FirstNameComparison,SizeOf(FirstNameComparison),Stream,11521);
    LoadDataFromStream(LastNameComparison,SizeOf(LastNameComparison),Stream,11522);
    LoadDataFromStream(OrganizationComparison,SizeOf(OrganizationComparison),Stream,11523);
    LoadDataFromStream(DepartmentComparison,SizeOf(DepartmentComparison),Stream,11524);
    LoadDataFromStream(ApplicationComparison,SizeOf(ApplicationComparison),Stream,11525);
    LoadDataFromStream(HostComparison,SizeOf(HostComparison),Stream,11526);
    LoadDataFromStream(PortComparison,SizeOf(PortComparison),Stream,11527);
    LoadDataFromStream(Status,SizeOf(Status),Stream,11528);
    LoadDataFromStream(UserID,SizeOf(UserID),Stream,11529);
    LoadStringFromStream(UserName,Stream,11530);
    LoadStringFromStream(FirstName,Stream,11531);
    LoadStringFromStream(LastName,Stream,11532);
    LoadStringFromStream(Organization,Stream,11533);
    LoadStringFromStream(Department,Stream,11534);
    LoadStringFromStream(Host,Stream,11535);
    LoadStringFromStream(Application,Stream,11536);
    LoadStringFromStream(SearchCondition,Stream,11547);
    LoadDataFromStream(SortBy,SizeOf(SortBy),Stream,11540);
    LoadBooleanFromStream(Ascending,Stream,11541);
    LoadStringFromStream(OrderByClause,Stream,11542);
    CommandHeader.CommandResult := MSG_COMMAND_OK;
 except
   on e: EMsgException do
    FServer.DoOnError(CommandHeader.CommandResult,e.NativeError,e.Message);
   on e: Exception do
    FServer.DoOnError(CommandHeader.CommandResult,-1,e.Message)
   else
    FServer.DoOnError(CommandHeader.CommandResult);
 end;
 Stream.Size := 0;
 Stream.Position := 0;
 if (CommandHeader.CommandResult = MSG_COMMAND_OK) then
  begin
   try
    CommandHeader.CommandResult := MSG_Error_FindUsers_Failed;
    if (FServer.Database = nil) then
      CommandHeader.CommandResult := MSG_Error_FindUsers_DatabaseIsNotAssigned
    else
     begin
      FServer.FindUsers(
                      Users,
                      UserNameComparison,FirstNameComparison,LastNameComparison,
                      OrganizationComparison,DepartmentComparison,
                      ApplicationComparison,HostComparison,PortComparison,
                      Status,UserID,
                      UserName,
                      FirstName,
                      LastName,
                      Organization,
                      Department,
                      Host,
                      Application,
                      SearchCondition,
                      SortBy,
                      Ascending,
                      OrderByClause
                      );
      CommandHeader.CommandResult := MSG_COMMAND_OK;
     end;
   except
     on e: EMsgException do
      FServer.DoOnError(CommandHeader.CommandResult,e.NativeError,e.Message);
     on e: Exception do
      FServer.DoOnError(CommandHeader.CommandResult,-1,e.Message)
     else
      FServer.DoOnError(CommandHeader.CommandResult);
   end;
  end;
 SaveDataToStream(CommandHeader,SizeOf(CommandHeader),Stream,11519);
 if (CommandHeader.CommandResult = MSG_COMMAND_OK) then
  begin
   Len := Length(Users);
   SaveDataToStream(Len,SizeOf(Len),Stream,11544);
   if (Len > 0) then
    SaveDataToStream(Users[0],SizeOf(Users[0])*Len,Stream,11545);
  end;
 Buffer := Stream.Buffer;
 SendBuffer(Buffer,Stream.Size);
end; // ExecuteFindUsers


//------------------------------------------------------------------------------
// find users
//------------------------------------------------------------------------------
procedure TMsgServerSession.ExecuteFindMessages(var CommandHeader: TMsgCommandHeader; Stream: TMsgMemoryStream);
var
    Buffer:           PChar;
    MessageTextComparison:         TMsgTextComparison;
    MessageUnicodeTextComparison:  TMsgTextComparison;
    SendingDate:                   TMsgDateComparison;
    DeliveryDate:                  TMsgDateComparison;
    SearchDelivered:               Boolean;
    Delivered:                     Boolean;
    MessageText:                   String; // text of the message
    MessageUnicodeText:            WideString; // unicode text of the message
    SenderID:                      Cardinal;
    RecipientID:                   Cardinal;
    MessageType:                   TMsgMessageType;
    MessageDataSize:               Integer; // size of MessageData
    OrderBySendingDate:            Boolean;
    // ORDER BY columns without ORDER BY statement
    // example: SenderID DESC, SendingDate ASC
    OrderByClause:                 String;
    Command:                       Cardinal; // no condition on command field if TMsgMessageType = aamtNone
    ds:                            TDataset;
begin
 ds := nil;
 CommandHeader.CommandResult := MSG_Error_FindMessages_InvalidParams;
 try
    // load
    LoadDataFromStream(MessageTextComparison,SizeOf(MessageTextComparison),Stream,11549);
    LoadDataFromStream(MessageUnicodeText,SizeOf(MessageUnicodeText),Stream,11550);
    LoadDataFromStream(SendingDate,SizeOf(SendingDate),Stream,11551);
    LoadDataFromStream(DeliveryDate,SizeOf(DeliveryDate),Stream,11552);
    LoadBooleanFromStream(SearchDelivered,Stream,11553);
    LoadBooleanFromStream(Delivered,Stream,11554);
    LoadStringFromStream(MessageText,Stream,11555);
    LoadWideStringFromStream(MessageUnicodeText,Stream,11556);
    LoadDataFromStream(SenderID,SizeOf(SenderID),Stream,1

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -