/// <summary> /// 获取一个指定描述名称的群组 /// </summary> /// <param name="detail">群组的自然语言描述,(UTF-8编码)</param> /// <param name="communicateType">发起该请求的网络类型</param> /// <returns>立即返回一个GroupDevice(可能未就绪)</returns> public GroupDevice GetGroup(string detail, CommunicatType communicateType) { foreach (GroupDevice item in _localGroupDeviceBuffer) { if (detail.Equals(item.Detail)) { return(item); } } if (CommunicatType.Synchronization == communicateType) { try { return(base.CoSynGetGroup(detail)); } catch (System.Exception ex) { throw ex; } } else { return(base.CoAsynGetGroup(detail)); } }
/// <summary> /// 创建一个请求通讯包 /// </summary> /// <param name="communicateName">请求的名称</param> /// <param name="communicateType">请求执行的网络类型</param> /// <param name="reqtParamPkg">携带的参数属性包</param> /// <param name="targetDevice">目的设备</param> /// <param name="waitResponse">是否等待应答</param> /// <param name="callback">在异步情形下,收到应答后的通知事件</param> /// <returns></returns> public RequestCommunicatePackage CreateRequestCommunicatePackage(string communicationName, CommunicatType communicateType, ParamPackage reqtParamPkg, ClientDevice targetDevice, bool waitResponse, AsynReponseHandler callback) { return(base.CoCreateRequestCommunicatePackage(communicationName, communicateType, reqtParamPkg, targetDevice, waitResponse, callback)); }
protected RequestCommunicatePackage CoCreateRequestCommunicatePackage(string communicationName, CommunicatType communicateType, ParamPackage reqtParamPkg, ClientDevice targetDevice, bool waitResponse, AsynReponseHandler callback) { RequestCommunicatePackage reqtPkg = new RequestCommunicatePackage(); reqtPkg.CommunicationName = communicationName; reqtPkg.CommunicateType = communicateType; reqtPkg.ParamPackage = reqtParamPkg; reqtPkg.TargetDevice = targetDevice; reqtPkg.WaitResponse = waitResponse; reqtPkg.AsynchronousReponseCame = callback; return(reqtPkg); }
/// <summary> /// 退出一个群组 /// </summary> /// <param name="group">指定的群组</param> /// <param name="communicateType">通讯的网络形式</param> public void ExitGroup(GroupDevice group, CommunicatType communicateType) { if (CommunicatType.Synchronization == communicateType) { try { base.CoSynExitGroup(group); } catch (System.Exception ex) { throw ex; } } else { base.CoAsynExitGroup(group); } }
/// <summary> /// 加入一个群组 /// </summary> /// <param name="group">指定的群组</param> /// <param name="role">设备在群组中的角色</param> /// <param name="communicateType">通讯的网络形式</param> public void JoinGroup(GroupDevice group, GroupMemberRole role, CommunicatType communicateType) { if (CommunicatType.Synchronization == communicateType) { try { base.CoSynJoinGroup(group, role); } catch (System.Exception ex) { throw ex; } } else { base.CoAsynJoinGroup(group, role); } }
/// <summary> /// 反馈一个应答通讯包, 阻塞式 /// </summary> /// <param name="communicator">应答通讯包</param> /// <param name="timeMillionsecond">等待的上限时长</param> //public void SynFeedbackCommunicateReplyMessage(ReplyCommunicatePackage communicator, int timeMillionsecond) //{ // try // { // base.CoSynFeedbackCommunicateReplyMessage(communicator, timeMillionsecond); // } // catch (System.Exception ex) // { // throw ex; // } //} /// <summary> /// 创建一个群组 /// </summary> /// <param name="detail">群组的自然语言描述,(UTF-8编码)</param> /// <param name="communicateType">发起该请求的网络形式</param> /// <returns>立即返回一个GroupDevice(可能未就绪)</returns> public GroupDevice CreateGroup(string detail, CommunicatType communicateType) { if (CommunicatType.Synchronization == communicateType) { GroupDevice retGroupDevice = null; try { retGroupDevice = base.CoSynCreateGroup(detail); } catch (Exception ex) { throw (ex as CreateGroupExcetion); } return(retGroupDevice); } else { return(base.CoAsynCreateGroup(detail)); } }