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

📄 umeetingcenter.pas.bak

📁 自己写的用delphi封装东劲板卡api.
💻 BAK
字号:
unit uMeetingCenter;

interface

uses DjBase,Tc08a32,DjSSCx;

type

  TDjMeetingCenter = class(TObject)
  private
    MeetingList:TMeetingList;
    IsRun :boolean;
    FDjSSC:TDjSSCx;
    MeetCount:integer;
    function GetFreeMeetRes:PMeeting ;
    procedure UseMeeting(Meeting:PMeeting);
    procedure FreeMeeting(Meeting:PMeeting);
  protected
  public
    constructor Create(DjSSC :TDjSSCx);
    destructor destroy;overload;
    function StartMeet(Channel: pChannel): PMeeting;
    procedure StopMeet(MeetingID:integer);overload;
    procedure StopMeet(Channel:PChannel);overload;
    function AddChannel(Meeting:PMeeting;Channel:PChannel):integer;
    function DeleteChannel(Channel:PChannel):integer;
    function GetMeetCount:integer;
    function GetIdleMeetCount:integer;
    function GetThreeChannel(Meeting:pMeeting;Channel1,Channel2:PChannel):PChannel ;overload;
    function GetThreeChannel(Meeting:PMeeting;Channel1:PChannel):PChannel;overload;
  end;

var
  DjMC :TDjMeetingCenter;

implementation

{ TMeetingCenter }

{-------------------------------------------------------------------------------
  过程名:    TDjMeetingCenter.AddChannel
  作者:      姜亦文
  日期:      2006.09.14
  参数:      Channel: PChannel
  将一个通道加入会议中
  返回值:    integer
-------------------------------------------------------------------------------}
function TDjMeetingCenter.AddChannel(Meeting:PMeeting;Channel: PChannel): integer;
var
  i:integer;
begin
  i := DConf_GetResNumber;
  if i >0 then
  begin
    if Meeting.ChannelList.Count < 6 then
    begin
      Result := AddChnl(Meeting.MeetingID,Channel.ChannelID,-6,0);
      if Result = 0 then
      begin
        if not Meeting.IsUse then UseMeeting(Meeting);
        Meeting.ChannelList.Add(Channel);
        Channel.IsMeeting := true ;
        Channel.Meeting := Meeting ;
      end;
    end
    else
      Result := -2 ;
  end
  else
    Result := -1 ;
end;

constructor TDjMeetingCenter.Create(DjSSC :TDjSSCx);
var
  i:integer;
begin
  FDjSSC := DjSSC;
  i:= DConf_EnableConfCard;
  if i in [0,3] then
    IsRun := true
  else
    IsRun := false ;
  MeetCount := 0 ;
  MeetingList := TMeetingList.Create;
end;

function TDjMeetingCenter.DeleteChannel(Channel: PChannel): integer;
var
//  i:integer;
  Meeting:PMeeting;
begin
  Meeting := Channel.Meeting;
  if Assigned(Meeting) then
  begin
    Result:= SubChnl(Meeting.MeetingID,Channel.ChannelID);
    if Result = 0 then
    begin
      Meeting.ChannelList.Remove(Channel);
      if Meeting.ChannelList.Count = 0 then
        FreeMeeting(Meeting);
    end;
  end
  else
    Result := -1 ;
end;

destructor TDjMeetingCenter.destroy;
begin
  DConf_DisableConfCard;
end;

{-------------------------------------------------------------------------------
  过程名:    TDjMeetingCenter.GetFreeMeetRes
  作者:      姜亦文
  日期:      2006.09.14
  参数:      无
  h获取一个空闲的会议号
  返回值:    PMeeting
-------------------------------------------------------------------------------}
function TDjMeetingCenter.GetFreeMeetRes: PMeeting;
begin
  Result := MeetingList.GetFreeMeeting ;
end;

function TDjMeetingCenter.GetIdleMeetCount: integer;
begin
  Result := 10 - MeetCount ;
end;

function TDjMeetingCenter.GetMeetCount: integer;
begin
  Result := MeetCount ;
end;

{-------------------------------------------------------------------------------
  过程名:    TDjMeetingCenter.StartMeet
  作者:      姜亦文
  日期:      2006.09.14
  参数:      ChnlID1: integer
  开始一个会议
  返回值:    integer
-------------------------------------------------------------------------------}
function TDjMeetingCenter.StartMeet(Channel: pChannel): PMeeting;
var
  Meeting:PMeeting;
  i:integer;
begin
  Meeting := GetFreeMeetRes;
  if Assigned(Meeting) then
  begin
    i := AddChannel(Meeting,Channel);
    if i = 0 then
      Result := Meeting
    else
      Result := nil ;
  end
  else
    Result := nil ;
end;

procedure TDjMeetingCenter.StopMeet(MeetingID: integer);
begin

end;

procedure TDjMeetingCenter.StopMeet(Channel: PChannel);
begin

end;

procedure TDjMeetingCenter.UseMeeting(Meeting: PMeeting);
begin
  Meeting.IsUse := true ;
  Inc(MeetCount);
end;

procedure TDjMeetingCenter.FreeMeeting(Meeting: PMeeting);
begin
  Meeting.IsUse := false ;
  Dec(MeetCount);
end;

function TDjMeetingCenter.GetThreeChannel(Meeting: pMeeting;Channel1,Channel2:PChannel):PChannel;
var
  i,j:integer;
begin
  if Meeting.ChannelList.Count <> 3 then Result := nil ;
  i := Meeting.ChannelList.IndexOf(Channel1);
  j := Meeting.ChannelList.IndexOf(Channel2);
  if (i<>-1) and (j<>-1) then
  begin
    Meeting.ChannelList.Remove(Channel1);
    Meeting.ChannelList.Remove(Channel2);
    Result := Meeting.ChannelList.Items[0];
    Meeting.ChannelList.Add(Channel1);
    Meeting.ChannelList.Add(Channel2);
  end
  else
  begin
    Result := nil ;
  end;
end;

function TDjMeetingCenter.GetThreeChannel(Meeting: PMeeting;
  Channel1: PChannel): PChannel;
var
  i:integer;
begin
  if Meeting.ChannelList.Count <> 3 then Result := nil ;
  i := Meeting.ChannelList.IndexOf(Channel1);
  if (i<>-1) then
  begin
    Meeting.ChannelList.Remove(Channel1);
    Result := Meeting.ChannelList.Items[0];
    Meeting.ChannelList.Add(Channel1);
  end
  else
  begin
    Result := nil ;
  end;
end;

end.
 

⌨️ 快捷键说明

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