Next Previous Contents

## 7. Multicast

## 7.1 General Usage

@center(Not written yet)

## 7.2 Runtime Calls

@PasCall(Tag=<CreateMgrp>, CallName=`@RPC2<CreateMgrp>, Abstract=`Create a new RPC2 mgroup ID, ParmList=`@w<out @RPC2(Handle) *MgroupHandle>, @w<in @RPC2(McastIdent) *McastAddr>, @w<in @RPC2(PortalIdent) *McastPortal>, @w<in @RPC2(SubsysIdent) *Subsys>, @w<in @RPC2(Integer) SecurityLevel>, @w<in @RPC2(EncryptionKey) SessionKey>, @w<in @RPC2(Integer) EncryptionType>, @w<in long SideEffectType>, P1=`MgroupHandle, PD1=`An integer, unique to a specific client, returned by the call. When combined with the clients network address, it uniquely identifies this mgroup connection. This is not necessarily a small-valued integer., P2=`McastAddr, PD2=`The IP multicast address of the desired multicast group. This is the address that a server must use in a joingroup () system call. Only MGRPBYINETADDR is supported at present., P3=`McastPortal, PD3=`The portal at which server (s) will be listening. All servers in the multicast group must be listening at the same portal., P4=`Subsys, PD4=`The RPC2 subsystem corresponding to this multicast group. Each server in the multicast group must have exported this subsystem., P5=`SecurityLevel, PD5=`same as in @RPC2(Bind)()., P6=`SessionKey, PD6=`Encryption key to be used for all communication on this multicast channel. RPC2 will send this (securely) to each server that is added via a @RPC2(AddToMgrp)() call., P7=`EncryptionType, PD7=`same as in @RPC2(Bind)()., P8=`SideEffectType, PD8=`same as in @RPC2(Bind)()., CC1=`@RPC2(SUCCESS), CCD1=`All went well, CC2=`@RPC2(SEFAIL1), CCD2=`Side effect routines reported failure., CC3=`@RPC2(SEFAIL2), CCD3=`Side effect routines reported failure., CC4=`@RPC2(FAIL), CCD4=`Some other mishap occurred., Text=`Creates a new RPC2 mgroup identifier, unique to a particular <multicastaddr, portal, subsystem> combination, and returns it to the caller. Once the identifier has been assigned, RPC2 mgroup members may be added and deleted via the @RPC2(AddToMgrp) and @RPC2(RemoveFromMgrp) calls. The security level, encryption type and side effect types of each added connection must match the corresponding parameters of this @RPC2(CreateMgrp) call. )

@PasCall(Tag=<AddToMgrp>, CallName=`@RPC2<AddToMgrp>, Abstract=`Add a connection ID (server) to an RPC2 mgroup, ParmList =`@w<in @RPC2(Handle) MgroupHandle>, @w<in @RPC2(Handle) ConnHandle>, P1=`MgroupHandle, PD1=`identifies the mgroup to which the new server should be added, P2=`ConnHandle, PD2=`identifies the connection to be added to the mgroup, CC1=`@RPC2(SUCCESS), CCD1=`All went well, CC2=`@RPC2(NOMGROUP), CCD2=`MgroupHandle is not a valid mgroup, CC3=`@RPC2(NOCONNECTION), CCD3=`ConnHandle is not a valid connection., CC4=`@RPC2(BADSECURITY), CCD4=`SecurityLevel or EncryptionType of ConnHandle does not match that of Mgroup, CC5=`@RPC2(DUPLICATEMEMBER), CCD5=`ConnHandle is already a member of Mgroup, CC6=`@RPC2(MGRPBUSY), CCD6=`A call is in progress on MgroupHandle., CC7=`@RPC2(CONNBUSY), CCD7=`A call is in progress on ConnHandle., CC8=`@RPC2(SEFAIL1), CCD8`Error code returned by side effect routine., CC9=`@RPC2(SEFAIL2), CCD9=`Error code returned by side effect routine., CC8=`@RPC2(NAKED), CCD8=`The remote site corresponding to ConnHandle sent an explicit negative acknowledgement. This can happen if that site thought you were dead, or if someone at that site unbound your connection., CC9=`@RPC2(DEAD), CCD9=`The remote site corresponding to ConnHandle has been deemed dead or unreachable, CC10=`@RPC2(FAIL), CCD10=`Some strange mishap occurred., Text=`Adds ConnHandle to the mgroup associated with MgroupHandle. RPC2 contacts the remote site to initialize its mgroup connection information. The security level, encryption type and side effect type of the connection being added must match that specified when Mgroup was defined. )

@PasCall(Tag=<RemoveFromMgrp>, CallName=`@RPC2<RemoveFromMgrp>, Abstract=`Remove a connection from an RPC2 mgroup, ParmList =`@w<in @RPC2(Handle) MgroupHandle>, @w<in ConnHandle>, P1=`MgroupHandle, PD1=`the mgroup to be shrunk, P2=`ConnHandle, PD2=`the connection to be removed from MgroupHandle, CC1=`@RPC2(SUCCESS), CCD1=`All went well, CC2=`@RPC2(NOMGROUP), CCD2=`MgroupHandle does not refer to a valid mgroup connection, CC3=`@RPC2(NOCONNECTION), CCD3=`ConnHandle is bogus., CC4=`@RPC2(NOTGROUPMEMBER), CCD4=`ConnHandle is not a member of MgroupHandle., CC5=`@RPC2(MGRPBUSY), CCD5=`A call is in progress on MgroupHandle, CC6=`@RPC2(FAIL), CCD6=`Some strange mishap occurred, Text=`Removes ConnHandle from the mgroup associated with MgroupHandle )

@PasCall(Tag=<DeleteMgrp>, CallName=`@RPC2<DeleteMgrp>, Abstract=`Delete a RPC2 mgroup, ParmList =`@w<in @RPC2(Handle) MgroupHandle>, P1=`MgroupHandle, PD1=`the mgroup to be deleted, CC1=`@RPC2(SUCCESS), CCD1=`All went well, CC2=`@RPC2(NOMGROUP), CCD2=`MgroupHandle is bogus., CC3=`@RPC2(MGRPBUSY), CCD3=`A call is in progress on MgroupHandle., CC4=`@RPC2(FAIL), CCD4=`Some other mishap occurred., Text=`Deletes an mgroup, removing any existing members before deletion )

Next Previous Contents