/// <summary> /// Sets the client's ICQ status -- SNAC(01,1E) /// </summary> /// <param name="flags">The ICQ flags to set</param> /// <param name="status">The ICQ status flags to set</param> internal void SetExtendedICQStatus(ICQFlags flags, ICQStatus status) { SNACHeader sh = new SNACHeader(SNAC_BOS_FAMILY, BOS_SET_EXTENDED_STATUS); ByteStream stream = new ByteStream(); uint stat = (uint)((ushort)flags << 16); stat |= (ushort)status; stream.WriteUint(0x00060004); stream.WriteUint(stat); DataPacket dp = Marshal.BuildDataPacket(parent, sh, stream); dp.ParentConnection = parent.Connections.BOSConnection; SNACFunctions.BuildFLAP(dp); }
/// <summary> /// Sets the client's extended status -- SNAC(01,1E) /// </summary> /// <param name="sess">A <see cref="Session"/> object</param> /// <param name="availablemessage">The available message to set</param> /// <param name="flags">The ICQ flags to set</param> /// <param name="status">The ICQ status to set</param> /// <remarks>Either the available message or the flags/status can be set in one call to SetExtendedStatus</remarks> private static void SetExtendedStatus(Session sess, string availablemessage, ICQFlags flags, ICQStatus status) { SNACHeader sh = new SNACHeader(); sh.FamilyServiceID = (ushort)SNACFamily.BasicOscarService; sh.FamilySubtypeID = (ushort)GenericServiceControls.SetExtendedStatus; sh.Flags = 0x0000; sh.RequestID = Session.GetNextRequestID(); ByteStream stream = new ByteStream(); if (availablemessage != null) { stream.WriteUshort(0x001D); stream.WriteUshort((ushort)(availablemessage.Length + 8)); stream.WriteUshort(0x0002); stream.WriteByte(0x04); stream.WriteByte((byte)(Encoding.ASCII.GetByteCount(availablemessage) + 4)); stream.WriteUshort((ushort)Encoding.ASCII.GetByteCount(availablemessage)); stream.WriteString(availablemessage, Encoding.ASCII); stream.WriteUshort(0x0000); } else { uint stat = (uint)((ushort)flags << 16); stat |= (ushort)status; stream.WriteUint(0x00060004); stream.WriteUint(stat); } DataPacket dp = Marshal.BuildDataPacket(sess, sh, stream); dp.ParentConnection = sess.Connections.BOSConnection; SNACFunctions.BuildFLAP(dp); }
/// <summary> /// Sets the client's ICQ status -- SNAC(01,1E) /// </summary> /// <param name="sess">A <see cref="Session"/> object</param> /// <param name="flags">The ICQ flags to set</param> /// <param name="status">The ICQ status flags to set</param> public static void SetExtendedICQStatus(Session sess, ICQFlags flags, ICQStatus status) { SetExtendedStatus(sess, null, flags, status); }