//int rpc_port_parcel_burst_write(rpc_port_parcel_h h, const unsigned char *buf, unsigned int size);
[DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_burst_write")]
internal static extern ErrorCode Write(IntPtr parcelHandle, byte[] buf, int size);
+
+ //int rpc_port_parcel_get_header(rpc_port_parcel_h h, rpc_port_parcel_header_h *header);
+ [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_get_header")]
+ internal static extern ErrorCode GetHeader(IntPtr parcelHandle, out IntPtr ParcelHeaderHandle);
+
+ //int rpc_port_parcel_header_set_tag(rpc_port_parcel_header_h header, const char *tag);
+ [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_header_set_tag")]
+ internal static extern ErrorCode SetTag(IntPtr parcelHeaderHandle, string tag);
+
+ //int rpc_port_parcel_header_get_tag(rpc_port_parcel_header_h header, char **tag);
+ [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_header_get_tag")]
+ internal static extern ErrorCode GetTag(IntPtr parcelHeaderHandle, out string tag);
+
+ //int rpc_port_parcel_header_set_seq_num(rpc_port_parcel_header_h header, int seq_num);
+ [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_header_set_seq_num")]
+ internal static extern ErrorCode SetSeqNum(IntPtr parcelHeaderHandle, int seq_num);
+
+ //int rpc_port_parcel_header_get_seq_num(rpc_port_parcel_header_h header, int *seq_num);
+ [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_header_get_seq_num")]
+ internal static extern ErrorCode GetSeqNum(IntPtr parcelHeaderHandle, out int seq_num);
+
+ //int rpc_port_parcel_header_get_timestamp(rpc_port_parcel_header_h header, struct timespec *timestamp);
+ [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_header_get_timestamp")]
+ internal static extern ErrorCode GetTimeStamp(IntPtr parcelHeaderHandle, ref Libc.TimeStamp time);
}
internal static partial class Proxy
//int rpc_port_unset_private_sharing(rpc_port_h port);
[DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_unset_private_sharing")]
internal static extern ErrorCode UnsetPrivateSharing(IntPtr handle);
+
+ //int rpc_port_disconnect(rpc_port_h h);
+ [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_disconnect")]
+ internal static extern ErrorCode Disconnect(IntPtr handle);
}
}
}
*/
using System;
+using System.ComponentModel;
namespace Tizen.Applications.RPCPort
{
/// <summary>
+ /// This structure represents the time stamp.(internal)
+ /// </summary>
+ /// <since_tizen> 8 </since_tizen>
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public class TimeStamp
+ {
+ /// <summary>
+ /// Constructor with TimeStamp.
+ /// </summary>
+ /// <since_tizen> 8 </since_tizen>
+ internal TimeStamp(long second, long nanoSecond)
+ {
+ this.Second = second;
+ this.NanoSecond = nanoSecond;
+ }
+
+ /// <summary>
+ /// The second of TimeStamp.
+ /// </summary>
+ /// <since_tizen> 8 </since_tizen>
+ public long Second
+ {
+ get;
+ private set;
+ }
+
+ /// <summary>
+ /// The nano second of TimeStamp.
+ /// </summary>
+ /// <since_tizen> 8 </since_tizen>
+ public long NanoSecond
+ {
+ get;
+ private set;
+ }
+ }
+
+ /// <summary>
+ /// The class is the header that has the Parcel's information.(internal)
+ /// </summary>
+ /// <since_tizen> 8 </since_tizen>
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public class ParcelHeader
+ {
+ internal IntPtr _handle;
+
+ /// <summary>
+ /// Constructor with Header
+ /// </summary>
+ /// <since_tizen> 8 </since_tizen>
+ internal ParcelHeader()
+ {
+ }
+
+ /// <summary>
+ /// Sets tag of Header.
+ /// </summary>
+ /// <param name="tag">The tag of Header</param>
+ /// <exception cref="InvalidIOException">Thrown when an internal IO error occurs.</exception>
+ /// <since_tizen> 8 </since_tizen>
+ public void SetTag(string tag)
+ {
+ var r = Interop.LibRPCPort.Parcel.SetTag(_handle, tag);
+ if (r != Interop.LibRPCPort.ErrorCode.None)
+ throw new InvalidIOException();
+ }
+
+ /// <summary>
+ /// Gets tag of Header.
+ /// </summary>
+ /// <returns>Tag</returns>
+ /// <exception cref="InvalidIOException">Thrown when an internal IO error occurs.</exception>
+ /// <since_tizen> 8 </since_tizen>
+ public string GetTag()
+ {
+ var r = Interop.LibRPCPort.Parcel.GetTag(_handle, out string tag);
+ if (r != Interop.LibRPCPort.ErrorCode.None)
+ throw new InvalidIOException();
+
+ return tag;
+ }
+
+ /// <summary>
+ /// Sets sequence number of Header.
+ /// </summary>
+ /// <param name="sequenceNumber">The seqence number of Header</param>
+ /// <exception cref="InvalidIOException">Thrown when an internal IO error occurs.</exception>
+ /// <since_tizen> 8 </since_tizen>
+ public void SetSequenceNumber(int sequenceNumber)
+ {
+ var r = Interop.LibRPCPort.Parcel.SetSeqNum(_handle, sequenceNumber);
+ if (r != Interop.LibRPCPort.ErrorCode.None)
+ throw new InvalidIOException();
+ }
+
+ /// <summary>
+ /// Gets sequence number of Header.
+ /// </summary>
+ /// <returns>Sequence number</returns>
+ /// <exception cref="InvalidIOException">Thrown when an internal IO error occurs.</exception>
+ /// <since_tizen> 8 </since_tizen>
+ public int GetSequenceNumber()
+ {
+ var r = Interop.LibRPCPort.Parcel.GetSeqNum(_handle, out int sequenceNumber);
+ if (r != Interop.LibRPCPort.ErrorCode.None)
+ throw new InvalidIOException();
+
+ return sequenceNumber;
+ }
+
+ /// <summary>
+ /// Gets time stamp of Header.
+ /// </summary>
+ /// <returns>Time stamp</returns>
+ /// <exception cref="InvalidIOException">Thrown when an internal IO error occurs.</exception>
+ /// <since_tizen> 8 </since_tizen>
+ public TimeStamp GetTimeStamp()
+ {
+ Interop.Libc.TimeStamp time = new Interop.Libc.TimeStamp();
+
+ var r = Interop.LibRPCPort.Parcel.GetTimeStamp(_handle, ref time);
+ if (r != Interop.LibRPCPort.ErrorCode.None)
+ throw new InvalidIOException();
+
+ return new TimeStamp(time.sec.ToInt64(), time.nsec.ToInt64());
+ }
+ };
+
+ /// <summary>
/// The class that helps to perform marshalling and unmarshalling for RPC.
/// </summary>
/// <since_tizen> 5 </since_tizen>
public class Parcel : IDisposable
{
private IntPtr _handle;
+ private ParcelHeader _header;
/// <summary>
/// Constructor for this class.
return ret;
}
+ /// <summary>
+ /// Gets header of rpc port parcel.(internal)
+ /// </summary>
+ /// <returns>Parcel header</returns>
+ /// <since_tizen> 8 </since_tizen>
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public ParcelHeader GetHeader()
+ {
+ if (_header == null) {
+ Interop.LibRPCPort.Parcel.GetHeader(_handle, out IntPtr handle);
+ _header = new ParcelHeader() {
+ _handle = handle
+ };
+ }
+
+ return _header;
+ }
+
#region IDisposable Support
private bool disposedValue = false;